Browse Source

2023年6月30日17:48:05

纪新园 2 years ago
parent
commit
2004c05045
28 changed files with 649 additions and 45 deletions
  1. 6 0
      blade-service-api/blade-land-api/src/main/java/org/springblade/land/entity/OrderItem.java
  2. 6 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Biding.java
  3. 32 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjCorpsDesc.java
  4. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjSettlement.java
  5. 11 2
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/enums/OrderTypeEnum.java
  6. 2 2
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java
  7. 4 4
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/AllotController.java
  8. 10 0
      blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderController.java
  9. 11 0
      blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderItemController.java
  10. 7 0
      blade-service/blade-land/src/main/java/org/springblade/land/service/IOrderService.java
  11. 1 1
      blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderItemServiceImpl.java
  12. 32 6
      blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java
  13. 87 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java
  14. 6 1
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/BidingMapper.xml
  15. 17 17
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  16. 124 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsStatisticsController.java
  17. 4 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.java
  18. 96 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.xml
  19. 4 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/ICorpsDescService.java
  20. 59 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java
  21. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/impl/GoodsDescServiceImpl.java
  22. 1 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java
  23. 2 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.java
  24. 69 3
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml
  25. 4 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  26. 4 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/settlement/controller/SettlementController.java
  27. 15 3
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/settlement/service/impl/SettlementServiceImpl.java
  28. 27 3
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java

+ 6 - 0
blade-service-api/blade-land-api/src/main/java/org/springblade/land/entity/OrderItem.java

@@ -453,4 +453,10 @@ public class OrderItem implements Serializable {
 	@TableField(exist = false)
 	private String source;
 
+	/**
+	 * 大件预估明细
+	 */
+	@TableField(exist = false)
+	private List<OrderEstimate> orderEstimateList;
+
 }

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

@@ -312,4 +312,10 @@ public class Biding implements Serializable {
 	 */
 	@TableField(exist = false)
 	private Integer distinguish;
+
+	/**
+	 * 小程序状态区分
+	 */
+	@TableField(exist = false)
+	private String type;
 }

+ 32 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjCorpsDesc.java

@@ -215,4 +215,36 @@ public class PjCorpsDesc implements Serializable {
 	@TableField(exist = false)
 	private String details;
 
+	/**
+	 * 分类id集合
+	 */
+	@TableField(exist = false)
+	private List<Long> typeList;
+
+	/**
+	 * 未付款
+	 */
+	@TableField(exist = false)
+	private BigDecimal unpaidAmount;
+
+
+	/**
+	 * 已付款
+	 */
+	@TableField(exist = false)
+	private BigDecimal paidAmount;
+
+	/**
+	 * 总金额
+	 */
+	@TableField(exist = false)
+	private BigDecimal totalAmount;
+
+
+	/**
+	 * 账期
+	 */
+	@TableField(exist = false)
+	private BigDecimal accountPeriodAmount;
+
 }

+ 6 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjSettlement.java

@@ -145,6 +145,12 @@ public class PjSettlement implements Serializable {
 	 */
 	@ApiModelProperty(value = "结算日期")
 	private Date settlementDate;
+
+	/**
+	 * 结算日期(查询)
+	 */
+	@TableField(exist = false)
+	private List<String> settlementDateList;
 	/**
 	 * 系统编号
 	 */

+ 11 - 2
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/enums/OrderTypeEnum.java

@@ -155,12 +155,21 @@ public enum OrderTypeEnum {
 	/**
 	 * 待付款
 	 */
-	WAITPAYMENT("待付款"),
+	WAITPAYMENTC("待付款"),
 
 	/**
+	 * 待付款
+	 */
+	WAITPAYMENTD("待收款"),
+
+	/**
+	 * 已付款
+	 */
+	PAIDC("已付款"),
+	/**
 	 * 已付款
 	 */
-	PAID("已付款"),
+	PAIDD("已收款"),
 
 	/**
 	 * 收款

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

@@ -257,10 +257,10 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 				if ("BUY".equals(tradingBox.getType())) {
 					tradingBoxItem.setBoxSource("购买");
 					tradingBoxItem.setStatus("待使用");
-					if (archivesMapper.selectCount(new LambdaQueryWrapper<Archives>()
+					/*if (archivesMapper.selectCount(new LambdaQueryWrapper<Archives>()
 						.eq(Archives::getCode, tradingBoxItem.getCode())) > 0) {
 						throw new RuntimeException("箱号:"+tradingBoxItem.getCode()+"已存在,操作失败!");
-					}
+					}*/
 				} else {
 					if (tradingBoxItem.getBoxSource().equals("购买")) {
 						tradingBoxItem.setStatus("卖出");

+ 4 - 4
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/AllotController.java

@@ -291,12 +291,12 @@ public class AllotController extends BladeController {
 		List<StockGoods> stockGoodsList = stockGoodsClient.selectStockGoodsAll();
 		for (StockGoods stockGoods : stockGoodsList) {
 			List<StockInventory> stockInventoryList = deliveryService.selectStockInventory(stockGoods.getStorageId() + "", stockGoods.getGoodsId() + "");
-			BigDecimal addQuantity = stockInventoryList.stream().map(StockInventory::getAddQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-			BigDecimal subQuantity = stockInventoryList.stream().map(StockInventory::getSubQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal addQuantity = stockInventoryList.stream().filter(e-> "已确认".equals(e.getStatus())).map(StockInventory::getAddQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal subQuantity = stockInventoryList.stream().filter(e-> "已确认".equals(e.getStatus())).map(StockInventory::getSubQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			List<StockInventory> stockInventoryListNew = deliveryService.selectStockInventoryList(null, stockGoods.getStorageId() + "", stockGoods.getGoodsId() + "");
-			BigDecimal addDBQuantity = stockInventoryListNew.stream().map(StockInventory::getAddQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal addDBQuantity = stockInventoryListNew.stream().filter(e-> "已确认".equals(e.getStatus())).map(StockInventory::getAddQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			List<StockInventory> stockInventoryListOld = deliveryService.selectStockInventoryList(stockGoods.getStorageId() + "", null, stockGoods.getGoodsId() + "");
-			BigDecimal subDBQuantity = stockInventoryListOld.stream().map(StockInventory::getSubQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal subDBQuantity = stockInventoryListOld.stream().filter(e-> "已确认".equals(e.getStatus())).map(StockInventory::getSubQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			BigDecimal stockQuantity = addQuantity.add(addDBQuantity).subtract(subQuantity).subtract(subDBQuantity);
 			stockGoods.setBalanceQuantity(stockQuantity);
 			stockGoods.setSurplusRouteQuantity(stockQuantity);

+ 10 - 0
blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderController.java

@@ -386,4 +386,14 @@ public class OrderController extends BladeController {
 		return R.data(orderService.generateBill(order));
 	}
 
+	/**
+	 * 新增 陆运订单表
+	 */
+	@PostMapping("/addOrderEstimate")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入order")
+	public R addOrderEstimate(@Valid @RequestBody LandOrder order) {
+		return R.data(orderService.addOrderEstimate(order));
+	}
+
 }

+ 11 - 0
blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderItemController.java

@@ -17,6 +17,7 @@
 package org.springblade.land.controller;
 
 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;
@@ -25,15 +26,23 @@ import lombok.AllArgsConstructor;
 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;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.land.entity.OrderEstimate;
 import org.springblade.land.entity.OrderItem;
+import org.springblade.land.service.IOrderEstimateService;
 import org.springblade.land.service.IOrderItemService;
 import org.springblade.land.vo.OrderItemVO;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 陆运订单明细表 控制器
@@ -49,6 +58,8 @@ public class OrderItemController extends BladeController {
 
 	private final IOrderItemService orderItemService;
 
+	private final IOrderEstimateService orderEstimateService;
+
 	/**
 	 * 详情
 	 */

+ 7 - 0
blade-service/blade-land/src/main/java/org/springblade/land/service/IOrderService.java

@@ -95,6 +95,13 @@ public interface IOrderService extends IService<LandOrder> {
 	 * @return
 	 */
 	Long saveOrder(LandOrder order);
+/**
+	 * 保存订单
+	 *
+	 * @param order
+	 * @return
+	 */
+LandOrder addOrderEstimate(LandOrder order);
 
 	/**
 	 * 提交 陆运散货提交

+ 1 - 1
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderItemServiceImpl.java

@@ -179,7 +179,7 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
 			.in(CollectionUtil.isNotEmpty(orderIdList), OrderItem::getOrderId, orderIdList)
 			.eq(OrderItem::getTenantId, AuthUtil.getTenantId())
 			.eq(OrderItem::getIsDeleted, 0)
-			.ne(OrderItem::getShippingMode, "散货")
+			.eq(OrderItem::getShippingMode, orderItem.getShippingMode())
 			.between(StringUtil.isNotBlank(orderItem.getBeginArrivalTime()) && StringUtil.isNotBlank(orderItem.getEndArrivalTime()),
 				OrderItem::getArrivalTime, orderItem.getBeginArrivalTime(), orderItem.getEndArrivalTime());
 

+ 32 - 6
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java

@@ -212,11 +212,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, LandOrder> implem
 			} else {
 				detail.setFileList(Collections.emptyList());
 			}
-
-			detail.setOrderEstimateList(orderEstimateService.list(new LambdaQueryWrapper<OrderEstimate>()
-				.eq(OrderEstimate::getPid, order.getId())));
-
 		}
+		detail.setOrderEstimateList(orderEstimateService.list(new LambdaQueryWrapper<OrderEstimate>()
+			.eq(OrderEstimate::getPid, order.getId())));
 		return detail;
 	}
 
@@ -705,7 +703,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, LandOrder> implem
 			if (ObjectUtils.isNotNull(itemList)) {
 				landAmountD = itemList.stream().map(OrderItem::getLandAmountD).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 				List<OrderEstimate> orderEstimates = new ArrayList<>();
-				if (ObjectUtils.isNotNull(order.getOrderEstimateList())){
+				if (ObjectUtils.isNotNull(order.getOrderEstimateList())) {
 					for (OrderEstimate orderEstimate : order.getOrderEstimateList()) {
 						if (ObjectUtil.isEmpty(orderEstimate.getId())) {
 							orderEstimate.setPid(order.getId());
@@ -754,6 +752,34 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, LandOrder> implem
 		return order.getId();
 	}
 
+	@Override
+	public LandOrder addOrderEstimate(LandOrder order) {
+		BigDecimal landAmountD = new BigDecimal("0.00");
+		if (ObjectUtils.isNotNull(order.getItemList())) {
+			landAmountD = order.getItemList().stream().map(OrderItem::getLandAmountD).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			List<OrderEstimate> orderEstimates = new ArrayList<>();
+			if (ObjectUtils.isNotNull(order.getOrderEstimateList())) {
+				for (OrderEstimate orderEstimate : order.getOrderEstimateList()) {
+					if (ObjectUtil.isEmpty(orderEstimate.getId())) {
+						orderEstimate.setPid(order.getItemList().get(0).getOrderId());
+						orderEstimate.setTenantId(AuthUtil.getTenantId());
+						orderEstimate.setCreateUser(AuthUtil.getUserId());
+						orderEstimate.setCreateTime(new Date());
+					} else {
+						orderEstimate.setUpdateUser(AuthUtil.getUserId());
+						orderEstimate.setUpdateTime(new Date());
+					}
+					orderEstimate.setProfitAmount(landAmountD.subtract(orderEstimate.getFreightAmount()).subtract(orderEstimate.getMiscellaneousAmount()));
+					orderEstimates.add(orderEstimate);
+				}
+				if (ObjectUtils.isNotNull(orderEstimates)) {
+					orderEstimateService.saveOrUpdateBatch(orderEstimates);
+				}
+			}
+		}
+		return order;
+	}
+
 	/**
 	 * 提交 陆运散货提交
 	 */
@@ -1827,7 +1853,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, LandOrder> implem
 					i++;
 				}
 			}
-		}else if (order.getShippingMode().equals("散货")) {
+		} else if (order.getShippingMode().equals("散货")) {
 			//装货
 			int sort = 1;
 			for (OrderAddress address : order.getLoadingAddressList()) {

+ 87 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java

@@ -1618,5 +1618,92 @@ public class ExportOrderController extends BladeController {
 		return orderService.salesList(order);
 	}
 
+	/**
+	 * 详情
+	 */
+	@GetMapping("/getCopy")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入order")
+	public R<Order> getCopy(Order order) {
+		order.setIsDeleted(0);
+		order.setTenantId(SecureUtil.getTenantId());
+		Order detail = orderService.getOrderMessage(order);
+		Order order1 = new Order();
+		BeanUtil.copyProperties(detail,order1);
+		order1.setId(null);
+		order1.setSysNo(null);
+		order1.setOrderNo(null);
+		order1.setMorderNo(null);
+		order1.setOrderNo(null);
+		order1.setSrcOrderNo(null);
+		order1.setSrcId(null);
+		order1.setOrderAmount(new BigDecimal("0.00"));
+		order1.setOtherAmount(new BigDecimal("0.00"));
+		order1.setDebitAmount(new BigDecimal("0.00"));
+		order1.setSettlmentAmount(new BigDecimal("0.00"));
+		order1.setBalanceAmount(new BigDecimal("0.00"));
+		order1.setAdvancePayment(new BigDecimal("0.00"));
+		order1.setOverPayment(new BigDecimal("0.00"));
+		order1.setDeposit(new BigDecimal("0.00"));
+		order1.setOverDueAccounts(new BigDecimal("0.00"));
+		order1.setGrossProfitRate(new BigDecimal("0.00"));
+		order1.setGrossProfit(new BigDecimal("0.00"));
+		order1.setSalesProfit(new BigDecimal("0.00"));
+		order1.setFreightAmountHistory(new BigDecimal("0.00"));
+		order1.setPurchaseAmount(new BigDecimal("0.00"));
+		order1.setStorageQuantity(new BigDecimal("0.00"));
+		order1.setPurchaseQuantity(new BigDecimal("0.00"));
+		order1.setPointMutiple(new BigDecimal("0.00"));
+		order1.setSalesPrice(new BigDecimal("0.00"));
+		order1.setInvoiceWeight(new BigDecimal("0.00"));
+		order1.setBillWeight(new BigDecimal("0.00"));
+		order1.setOceanFreight(new BigDecimal("0.00"));
+		order1.setRmbAmount(new BigDecimal("0.00"));
+		order1.setContractWeight(new BigDecimal("0.00"));
+		order1.setPredictOceanFreight(new BigDecimal("0.00"));
+		order1.setReferenceOceanFreight(new BigDecimal("0.00"));
+		order1.setOrderQuantity(new BigDecimal("0.00"));
+		order1.setAmount(new BigDecimal("0.00"));
+		order1.setActualQuantity(new BigDecimal("0.00"));
+		order1.setInvoiceAmount(new BigDecimal("0.00"));
+		order1.setSpecialOfferOf(new BigDecimal("0.00"));
+		order1.setForeignSettlmentAmount(new BigDecimal("0.00"));
+		order1.setSingleTicketMargin(new BigDecimal("0.00"));
+		order1.setConvertIntegral(new BigDecimal("0.00"));
+		order1.setPresenterIntegral(new BigDecimal("0.00"));
+		order1.setCaseOverPayment(new BigDecimal("0.00"));
+		order1.setThisUsedProfit(new BigDecimal("0.00"));
+		order1.setCreateProfit(new BigDecimal("0.00"));
+		order1.setPaymentGoods(new BigDecimal("0.00"));
+		order1.setCorpDebt(new BigDecimal("0.00"));
+		order1.setPaymentAmountTl(new BigDecimal("0.00"));
+		order1.setStatus(null);
+		order1.setConfirmStatus(null);
+		order1.setOrderFeesList(new ArrayList<>());
+		order1.setOrderFilesList(new ArrayList<>());
+		order1.setOrderItemsList(new ArrayList<>());
+		order1.setOrderModifyList(new ArrayList<>());
+		order1.setOrderItemIds(new ArrayList<>());
+		order1.setSettlementList(new ArrayList<>());
+		order1.setOrderStatus("");
+		order1.setBillNo("");
+		order1.setLotNo("");
+		order1.setNumToEnglish("");
+		order1.setSrcSysNo("");
+		order1.setPurchaseStatus("");
+		order1.setFudaPurchaseStatus("");
+		order1.setProductionScheduling("");
+		order1.setEstimateGoodGoods("");
+		order1.setDocumentaryStatus("");
+		order1.setBillLadingNo("");
+		order1.setBalancePayment("");
+		order1.setFudaPurchaseDate(null);
+		order1.setProductionSchedulingDate(null);
+		order1.setEstimateGoodGoodsDate(null);
+		order1.setDocumentaryDate(null);
+		order1.setCheckDate(null);
+		return R.data(order1);
+	}
+
 
 }

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

@@ -56,7 +56,12 @@
         <where>
             BB.is_deleted = 0
             and BBA.is_deleted = 0
-            and BB.status = 4
+            <if test="biding.type != null and biding.type != '' and biding.type == 1">
+                and BB.status = 4
+            </if>
+            <if test="biding.type != null and biding.type != '' and biding.type == 2">
+                and BB.status = 8
+            </if>
             <if test="biding.deadlineBeginTime != null and biding.deadlineBeginTime != ''">
                 and BB.deadline_time >= #{biding.deadlineBeginTime}
             </if>

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

@@ -464,8 +464,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (!order.getTradeType().equals(OrderTypeEnum.IMPORT.getType())) {
 			// 生成毛利润 毛利额
 			List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", order.getId()).eq("good_type", 0).eq("is_deleted", 0));
-			Order orderMessage = new Order();
-			orderMessage.setId(order.getId());
+//			Order orderMessage = new Order();
+//			orderMessage.setId(order.getId());
 			if (CollectionUtils.isNotEmpty(list) && order.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())) {
 				BigDecimal correctCreateProfit = BigDecimal.ZERO;//是销售政策产生返利
 				BigDecimal faultCreateProfit = BigDecimal.ZERO;//不是销售政策产生返利
@@ -534,17 +534,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					grossProfitRate = (grossProfit.divide(amount, RoundingMode.CEILING)).multiply(new BigDecimal(100));
 				}
 				//产生返利
-				orderMessage.setCreateProfit(order.getCreateProfit());
+				order.setCreateProfit(order.getCreateProfit());
 				// 毛利额
-				orderMessage.setGrossProfit(grossProfit);
+				order.setGrossProfit(grossProfit);
 				// 毛利率=毛利额/销售价
-				orderMessage.setGrossProfitRate(grossProfitRate);
+				order.setGrossProfitRate(grossProfitRate);
 				//总重量
-				orderMessage.setCntrVolumn(cntrVolumn);
+				order.setCntrVolumn(cntrVolumn);
 				//总提价
-				orderMessage.setCartonWeight(cartonWeight);
+				order.setCartonWeight(cartonWeight);
 				//总采购金额
-				orderMessage.setPurchaseAmount(reduce);
+				order.setPurchaseAmount(reduce);
 			} else if (CollectionUtils.isNotEmpty(list) && order.getTradeType().equals(OrderTypeEnum.EXPORT.getType())) {
 				// 出口的毛利额=销售价 * 汇率 - (采购价+配件价格)    毛利率 =毛利额/(采购单价+配件价格)
 				// 金额求和
@@ -555,24 +555,24 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				// 配件金额求和
 				BigDecimal partsPrice = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getPartsPrice().multiply(y.getOrderQuantity())), BigDecimal::add);
 				// 毛利额
-				orderMessage.setGrossProfit(amount.multiply(order.getExchangeRate()).subtract((purchaseAmount.add(partsPrice))).setScale(2, RoundingMode.HALF_UP));
+				order.setGrossProfit(amount.multiply(order.getExchangeRate()).subtract((purchaseAmount.add(partsPrice))).setScale(2, RoundingMode.HALF_UP));
 				BigDecimal grossProfitRate = new BigDecimal(BigInteger.ZERO);
 				if ((amount.compareTo(BigDecimal.ZERO)) > 0) {
 					BigDecimal multiply = amount.multiply(order.getExchangeRate());
-					grossProfitRate = orderMessage.getGrossProfit().divide(multiply, 5, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP);
+					grossProfitRate = order.getGrossProfit().divide(multiply, 5, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP);
 				}
 				// 毛利率
-				orderMessage.setGrossProfitRate(grossProfitRate);
+				order.setGrossProfitRate(grossProfitRate);
 			} else {
 				// 毛利额
-				orderMessage.setGrossProfit(new BigDecimal(BigInteger.ZERO));
+				order.setGrossProfit(new BigDecimal(BigInteger.ZERO));
 				// 毛利率
-				orderMessage.setGrossProfitRate(new BigDecimal(BigInteger.ZERO));
+				order.setGrossProfitRate(new BigDecimal(BigInteger.ZERO));
 			}
-			orderMessage.setStorageQuantity(order.getOrderItemsList().stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
-			baseMapper.updateById(orderMessage);
-			order.setGrossProfit(orderMessage.getGrossProfit());
-			order.setGrossProfitRate(orderMessage.getGrossProfitRate());
+			order.setStorageQuantity(order.getOrderItemsList().stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
+			baseMapper.updateById(order);
+			order.setGrossProfit(order.getGrossProfit());
+			order.setGrossProfitRate(order.getGrossProfitRate());
 		}
 		if (order.getTradeType().equals(OrderTypeEnum.EXPORT.getType())) {
 			this.numToEnglish(order);

+ 124 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsStatisticsController.java

@@ -0,0 +1,124 @@
+package org.springblade.salesPart.corps.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.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.salesPart.corps.service.ICorpsDescService;
+import org.springblade.salesPart.entity.PjCorpsDesc;
+import org.springblade.salesPart.entity.PjOrder;
+import org.springblade.salesPart.order.service.IOrderService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * @author :jixinyuan
+ * @date : 2023/6/30
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/statisticsCorp")
+public class CorpsStatisticsController {
+
+	private final ICorpsDescService corpsDescService;
+
+	private final IOrderService orderService;
+
+
+	/**
+	 * 自定义分页 客户详情
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入corpsDesc")
+	public R<IPage<PjCorpsDesc>> page(PjCorpsDesc corpsDescDto, Query query) {
+		corpsDescDto.setIsDeleted(0);//默认查有效的
+		corpsDescDto.setEnableOrNot(0);//默认查有效的
+		corpsDescDto.setTenantId(SecureUtil.getTenantId());
+		IPage<PjCorpsDesc> pages = corpsDescService.selectPartsCorpsDescPage(Condition.getPage(query), corpsDescDto);
+		for (PjCorpsDesc corpsDescDto1 : pages.getRecords()) {
+			LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(PjOrder::getCustomerId, corpsDescDto1.getId());
+			if (corpsDescDto1.getCorpType().equals("KH")) {
+				lambdaQueryWrapper.eq(PjOrder::getBsType, "XS");
+			} else {
+				lambdaQueryWrapper.eq(PjOrder::getBsType, "CG");
+			}
+			List<PjOrder> orderList = orderService.list(lambdaQueryWrapper);
+			if (ObjectUtils.isNotNull(orderList)) {
+				BigDecimal totalAmount = orderList.stream().map(PjOrder::getTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				//已付
+				corpsDescDto1.setPaidAmount(orderList.stream().map(PjOrder::getPaymentAmountTl).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				//未付
+				corpsDescDto1.setUnpaidAmount(totalAmount.subtract(corpsDescDto1.getPaidAmount()));
+				corpsDescDto1.setTotalAmount(totalAmount);
+			} else {
+				//已付
+				corpsDescDto1.setPaidAmount(new BigDecimal("0.00"));
+				//未付
+				corpsDescDto1.setUnpaidAmount(new BigDecimal("0.00"));
+				corpsDescDto1.setTotalAmount(new BigDecimal("0.00"));
+			}
+		}
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 客户详情(统计)
+	 */
+	@GetMapping("/pageStatistics")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入corpsDesc")
+	public R<Map<String, Object>> pageStatistics(PjCorpsDesc corpsDescDto) {
+		corpsDescDto.setIsDeleted(0);//默认查有效的
+		corpsDescDto.setEnableOrNot(0);//默认查有效的
+		corpsDescDto.setTenantId(SecureUtil.getTenantId());
+		List<PjCorpsDesc> corpsDescDtoList = corpsDescService.selectPartsCorpsStatistics(corpsDescDto);
+		Map<String, Object> map = new HashMap<>();
+		//未付
+		BigDecimal paidAmount = new BigDecimal("0.00");
+		//已付
+		BigDecimal unpaidAmount = new BigDecimal("0.00");
+		//总金额
+		BigDecimal totalAmount = new BigDecimal("0.00");
+		for (PjCorpsDesc corpsDescDto1 : corpsDescDtoList) {
+			LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(PjOrder::getCustomerId, corpsDescDto1.getId());
+			if (corpsDescDto1.getCorpType().equals("KH")) {
+				lambdaQueryWrapper.eq(PjOrder::getBsType, "XS");
+			} else {
+				lambdaQueryWrapper.eq(PjOrder::getBsType, "CG");
+			}
+			List<PjOrder> orderList = orderService.list(lambdaQueryWrapper);
+			if (ObjectUtils.isNotNull(orderList)) {
+				BigDecimal sumAmount = orderList.stream().map(PjOrder::getTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				totalAmount = totalAmount.add(orderList.stream().map(PjOrder::getTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				//已付
+				unpaidAmount = unpaidAmount.add(orderList.stream().map(PjOrder::getPaymentAmountTl).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				//未付
+				paidAmount = paidAmount.add(sumAmount.subtract(unpaidAmount));
+			}
+		}
+		//已付
+		map.put("unpaidAmount", unpaidAmount);
+		//未付
+		map.put("paidAmount", paidAmount);
+		//总金额
+		map.put("totalAmount", totalAmount);
+		return R.data(map);
+	}
+
+}

+ 4 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.java

@@ -59,4 +59,8 @@ public interface CorpsDescMapper extends BaseMapper<PjCorpsDesc> {
 	 */
 	@SqlParser(filter=true)
 	PjCorpsDesc getCorpId(@Param("id") Long id);
+
+	List<PjCorpsDesc> selectPartsCorpsDescPage(IPage<PjCorpsDesc> page, @Param("CorpsDesc")PjCorpsDesc corpsDescDto);
+
+	List<PjCorpsDesc> selectPartsCorpsStatistics(@Param("CorpsDesc")PjCorpsDesc corpsDescDto);
 }

+ 96 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.xml

@@ -120,4 +120,100 @@
         where is_deleted = 0
           and id = #{id}
     </select>
+    <select id="selectPartsCorpsDescPage" resultType="org.springblade.salesPart.entity.PjCorpsDesc">
+        select
+        *
+        from
+        pjpf_corps_desc
+        where
+        1 = 1
+        <if test="CorpsDesc.id!=null">
+            and id = #{CorpsDesc.id}
+        </if>
+        <if test="CorpsDesc.isDeleted!=null">
+            and is_deleted = #{CorpsDesc.isDeleted}
+        </if>
+        <if test="CorpsDesc.corpType!=null and CorpsDesc.corpType != ''">
+            and corp_type like CONCAT(CONCAT('%', #{CorpsDesc.corpType}), '%')
+        </if>
+        <if test="CorpsDesc.cname!=null and CorpsDesc.cname != ''">
+            and cname like CONCAT(CONCAT('%', #{CorpsDesc.cname}), '%')
+        </if>
+        <if test="CorpsDesc.tel!=null and CorpsDesc.tel != ''">
+            and tel = #{CorpsDesc.tel}
+        </if>
+        <if test="CorpsDesc.tenantId!=null and CorpsDesc.tenantId != ''">
+            and tenant_id = #{CorpsDesc.tenantId}
+        </if>
+        <if test="CorpsDesc.status!=null">
+            and status = #{CorpsDesc.status}
+        </if>
+        <if test="CorpsDesc.enableOrNot != null">
+            and enable_or_not = #{CorpsDesc.enableOrNot}
+        </if>
+        <if test='CorpsDesc.typeList !=null and CorpsDesc.typeList.size>0'>
+            and id in (
+            SELECT
+            DISTINCT
+            corp_id
+            FROM
+            pjpf_corps_type_desc
+            WHERE
+            status = 0
+            AND corp_type_id in
+            <foreach collection="CorpsDesc.typeList" index="index" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            )
+        </if>
+        ORDER BY cname ASC
+    </select>
+    <select id="selectPartsCorpsStatistics" resultType="org.springblade.salesPart.entity.PjCorpsDesc">
+        select
+       *
+        from
+        pjpf_corps_desc
+        where
+        1 = 1
+        <if test="CorpsDesc.id!=null">
+            and id = #{CorpsDesc.id}
+        </if>
+        <if test="CorpsDesc.isDeleted!=null">
+            and is_deleted = #{CorpsDesc.isDeleted}
+        </if>
+        <if test="CorpsDesc.corpType!=null and CorpsDesc.corpType != ''">
+            and corp_type like CONCAT(CONCAT('%', #{CorpsDesc.corpType}), '%')
+        </if>
+        <if test="CorpsDesc.cname!=null and CorpsDesc.cname != ''">
+            and cname like CONCAT(CONCAT('%', #{CorpsDesc.cname}), '%')
+        </if>
+        <if test="CorpsDesc.tel!=null and CorpsDesc.tel != ''">
+            and tel = #{CorpsDesc.tel}
+        </if>
+        <if test="CorpsDesc.tenantId!=null and CorpsDesc.tenantId != ''">
+            and tenant_id = #{CorpsDesc.tenantId}
+        </if>
+        <if test="CorpsDesc.status!=null">
+            and status = #{CorpsDesc.status}
+        </if>
+        <if test="CorpsDesc.enableOrNot != null">
+            and enable_or_not = #{CorpsDesc.enableOrNot}
+        </if>
+        <if test='CorpsDesc.typeList !=null and CorpsDesc.typeList.size>0'>
+            and id in (
+            SELECT
+            DISTINCT
+            corp_id
+            FROM
+            pjpf_corps_type_desc
+            WHERE
+            status = 0
+            AND corp_type_id in
+            <foreach collection="CorpsDesc.typeList" index="index" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            )
+        </if>
+        ORDER BY cname ASC
+    </select>
 </mapper>

+ 4 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/ICorpsDescService.java

@@ -110,4 +110,8 @@ public interface ICorpsDescService extends IService<PjCorpsDesc> {
 	 * 小程序客户详情
 	 */
 	R getDetails();
+
+    IPage<PjCorpsDesc> selectPartsCorpsDescPage(IPage<PjCorpsDesc> page, PjCorpsDesc corpsDescDto);
+
+	List<PjCorpsDesc> selectPartsCorpsStatistics(PjCorpsDesc corpsDescDto);
 }

+ 59 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java

@@ -29,6 +29,7 @@ import lombok.AllArgsConstructor;
 import org.springblade.client.entity.CorpsAddr;
 import org.springblade.client.entity.CorpsAttn;
 import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.entity.CorpsType;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
@@ -541,6 +542,64 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 		}
 	}
 
+	@Override
+	public IPage<PjCorpsDesc> selectPartsCorpsDescPage(IPage<PjCorpsDesc> page, PjCorpsDesc corpsDescDto) {
+		//获取客户子类别
+		if (StringUtils.isNotBlank(corpsDescDto.getCorpsTypeId())) {
+			Long corpsTypeId = Long.parseLong(corpsDescDto.getCorpsTypeId());
+			List<Long> corpsTypeIdList = new ArrayList<>();
+			corpsTypeService.selectChildById(corpsTypeId, corpsTypeIdList);
+			corpsTypeIdList.add(corpsTypeId);
+			corpsDescDto.setTypeList(corpsTypeIdList);
+		} else if (StringUtils.isNotBlank(corpsDescDto.getCorpsTypeName())) {
+			LambdaQueryWrapper<PjCorpsType> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(PjCorpsType::getCname, corpsDescDto.getCorpsTypeName());
+			lambdaQueryWrapper.eq(PjCorpsType::getIsDeleted, 0);
+			lambdaQueryWrapper.eq(PjCorpsType::getTenantId, SecureUtil.getTenantId());
+			List<PjCorpsType> corpsTypeList = corpsTypeMapper.selectList(lambdaQueryWrapper);
+			if (CollectionUtils.isNotEmpty(corpsTypeList)) {
+				List<Long> corpsTypeIdList = new ArrayList<>();
+				corpsTypeList.stream().forEach(item -> {
+					corpsTypeService.selectChildById(item.getId(), corpsTypeIdList);
+					corpsTypeIdList.add(item.getId());
+				});
+				corpsDescDto.setTypeList(corpsTypeIdList);
+			}
+		}
+		corpsDescDto.setTenantId(AuthUtil.getTenantId());
+		corpsDescDto.setId(corpsDescDto.getId());
+		return page.setRecords(baseMapper.selectPartsCorpsDescPage(page, corpsDescDto));
+	}
+
+	@Override
+	public List<PjCorpsDesc> selectPartsCorpsStatistics(PjCorpsDesc corpsDescDto) {
+		//获取客户子类别
+		if (StringUtils.isNotBlank(corpsDescDto.getCorpsTypeId())) {
+			Long corpsTypeId = Long.parseLong(corpsDescDto.getCorpsTypeId());
+			List<Long> corpsTypeIdList = new ArrayList<>();
+			corpsTypeService.selectChildById(corpsTypeId, corpsTypeIdList);
+			corpsTypeIdList.add(corpsTypeId);
+			corpsDescDto.setTypeList(corpsTypeIdList);
+		} else if (StringUtils.isNotBlank(corpsDescDto.getCorpsTypeName())) {
+			LambdaQueryWrapper<PjCorpsType> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(PjCorpsType::getCname, corpsDescDto.getCorpsTypeName());
+			lambdaQueryWrapper.eq(PjCorpsType::getIsDeleted, 0);
+			lambdaQueryWrapper.eq(PjCorpsType::getTenantId, SecureUtil.getTenantId());
+			List<PjCorpsType> corpsTypeList = corpsTypeMapper.selectList(lambdaQueryWrapper);
+			if (CollectionUtils.isNotEmpty(corpsTypeList)) {
+				List<Long> corpsTypeIdList = new ArrayList<>();
+				corpsTypeList.stream().forEach(item -> {
+					corpsTypeService.selectChildById(item.getId(), corpsTypeIdList);
+					corpsTypeIdList.add(item.getId());
+				});
+				corpsDescDto.setTypeList(corpsTypeIdList);
+			}
+		}
+		corpsDescDto.setTenantId(AuthUtil.getTenantId());
+		corpsDescDto.setId(corpsDescDto.getId());
+		return baseMapper.selectPartsCorpsStatistics(corpsDescDto);
+	}
+
 	/**
 	 * 小程序新增或修改 客户详情
 	 * @param corpsDesc

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/impl/GoodsDescServiceImpl.java

@@ -223,6 +223,8 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 				stock.setBrandName(goodsDesc.getBrandName());
 				stock.setBrandItem(goodsDesc.getBrandItem());
 				stock.setProductDescription(goodsDesc.getGoodsDescription());
+				stock.setGoodsTypeId(goodsDesc.getGoodsTypeId());
+				stock.setGoodsTypeName(goodsDesc.getGoodsTypeName());
 			});
 			stockDescService.updateBatchById(stockDescList);
 		}

+ 1 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java

@@ -104,8 +104,7 @@ public class OrderController extends BladeController {
 			.like(ObjectUtils.isNotEmpty(order.getOrdNo()), PjOrder::getOrdNo, order.getOrdNo())//来源单号
 			.ne(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), PjOrder::getActualPaymentStatus, order.getActualPaymentStatus())//来源单号
 			.like(ObjectUtils.isNotEmpty(order.getBusinessSource()), PjOrder::getBusinessSource, order.getBusinessSource())//来源
-			.eq(ObjectUtils.isNotEmpty(order.getStatus()), PjOrder::getStatus, order.getStatus());//状态
-
+			.apply(ObjectUtils.isNotEmpty(order.getStatus()),"find_in_set(status,'"+order.getStatus()+"')");
 		if (order.getCreateTimeList() != null && order.getCreateTimeList().size() > 1) {//创建日期
 			lambdaQueryWrapper.ge(PjOrder::getCreateTime, order.getCreateTimeList().get(0));
 			lambdaQueryWrapper.le(PjOrder::getCreateTime, order.getCreateTimeList().get(1));

+ 2 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.java

@@ -18,6 +18,7 @@ package org.springblade.salesPart.order.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.vo.OrderStatistics;
 import org.springblade.salesPart.vo.OrderVO;
@@ -47,6 +48,6 @@ public interface OrderMapper extends BaseMapper<PjOrder> {
 	 * @param order
 	 * @return
 	 */
-	List<OrderStatistics> collectionStatistics(IPage page, OrderVO order);
+	List<OrderStatistics> collectionStatistics(IPage page, @Param("order") OrderVO order);
 
 }

+ 69 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml

@@ -49,9 +49,75 @@
         where is_deleted = 0
     </select>
     <select id="collectionStatistics" resultType="org.springblade.salesPart.vo.OrderStatistics">
-        select *
-        from pjpf_order
-        where is_deleted = 0
+        SELECT DISTINCT
+        pcd.id AS customerId,
+        pcd.cname AS customerName,
+        SUBSTRING_INDEX(SUBSTRING_INDEX(pca.belongtoarea, ',', 2), ',', -1) AS region,
+        IF(po2.total_money,po2.total_money,0.00 ) AS opening ,
+        IF(po1.addAmount,po1.addAmount,0.00 ) AS addAmount ,
+        IF(po1.chargeAmount,po1.chargeAmount,0.00 ) AS chargeAmount ,
+        IF(po1.addAmount - po1.chargeAmount,po1.addAmount - po1.chargeAmount,0.00 ) AS unpaidAmount ,
+        IF(IF(po2.total_money,po2.total_money,0.00 ) +IF(po1.addAmount,po1.addAmount,0.00
+        ),IF(po2.total_money,po2.total_money,0.00 ) +IF(po1.addAmount,po1.addAmount,0.00 ),0.00 ) AS closingAmount
+        FROM
+        pjpf_corps_desc pcd
+        LEFT JOIN pjpf_corps_addr pca ON pcd.id = pca.pid
+        LEFT JOIN (SELECT
+        sum( po.total_money ) as addAmount,
+        sum( po.payment_amount_tl ) as chargeAmount ,
+        sum( po.total_money ) -sum( po.payment_amount_tl ) as unpaidAmount,
+        po.customer_id as customer_id
+        FROM
+        pjpf_order po
+        WHERE
+        DATE_FORMAT(po.create_time, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')
+        AND po.is_deleted = 0
+        AND po.tenant_id = '883868'
+        AND po.bs_type = 'XS'
+        AND po.business_source ='内部销售'
+        and FIND_IN_SET(po.`status`,'待确认,待发货,已发货,退款请核')
+        <if test="order.salesCompanyId!=null">
+            and po.sales_company_id = #{order.salesCompanyId}
+        </if>
+        <if test="order.createTimeList != null and order.createTimeList[0] != null and order.createTimeList[0]!= ''">
+            and po.create_time &gt;= #{order.createTimeList[0]}
+        </if>
+        <if test="order.createTimeList != null and order.createTimeList[1] != null and order.createTimeList[1]!= ''">
+            and po.create_time &lt;= #{order.createTimeList[1]}
+        </if>
+        GROUP BY po.customer_id) as po1 on pcd.id = po1.customer_id
+        LEFT JOIN (SELECT
+        sum( po.total_money ) as total_money,
+        po.customer_id as customer_id
+        FROM
+        pjpf_order po
+        WHERE
+        DATE_FORMAT(po.create_time, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')
+        AND po.is_deleted = 0
+        AND po.tenant_id = '883868'
+        AND po.bs_type = 'XS'
+        AND po.business_source ='内部销售'
+        and FIND_IN_SET(po.`status`,'待确认,待发货,已发货,退款请核')
+        <if test="order.salesCompanyId!=null">
+            and po.sales_company_id = #{order.salesCompanyId}
+        </if>
+        <if test="order.createTimeList != null and order.createTimeList[0] != null and order.createTimeList[0]!= ''">
+            and po.create_time &gt;= #{order.createTimeList[0]}
+        </if>
+        <if test="order.createTimeList != null and order.createTimeList[1] != null and order.createTimeList[1]!= ''">
+            and po.create_time &lt;= #{order.createTimeList[1]}
+        </if>
+        GROUP BY po.customer_id) as po2 on pcd.id = po2.customer_id
+        where pcd.corp_type = 'KH'
+        and pcd.enable_or_not = '0'
+        and pcd.is_deleted = '0'
+        and (po2.total_money is not null or po1.addAmount is not null or  po1.chargeAmount is not null)
+        <if test="order.customerId!=null">
+            and pcd.id = #{order.customerId}
+        </if>
+        <if test="order.salerId!=null">
+            and pcd.salesman_id = #{order.salerId}
+        </if>
     </select>
 
 </mapper>

+ 4 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -386,6 +386,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				}, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
 
 				order.setSalesAmount(totalMoney);
+				order.setTotalMoney(totalMoney);
 
 			}
 		}
@@ -824,6 +825,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 								throw new RuntimeException("退款失败!原因:" + returnMsg);
 							}
 						}
+						order.setPaymentAmountTl(new BigDecimal("0.00"));
+
 					} else {
 						throw new RuntimeException("退款失败!服务器错误");
 					}
@@ -927,6 +930,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						throw new RuntimeException("退款失败!原因:" + returnMsg);
 					}
 				} else if ("SUCCESS".equalsIgnoreCase(returnCode)) {
+					order.setPaymentAmountTl(new BigDecimal("0.00"));
 					baseMapper.updateById(order);
 					return R.data("退款成功");
 				}

+ 4 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/settlement/controller/SettlementController.java

@@ -101,6 +101,10 @@ public class SettlementController extends BladeController {
 		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(settlement.getSettlementDate()), PjSettlement::getSettlementDate, settlement.getSettlementDate());
 		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(settlement.getSalesCompanyId()), PjSettlement::getSalesCompanyId, settlement.getSalesCompanyId());
 		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(settlement.getDc()), PjSettlement::getDc, settlement.getDc());
+		if (ObjectUtils.isNotNull(settlement.getSettlementItemsList()) && settlement.getSettlementItemsList().size()>0){
+			lambdaQueryWrapper.le(PjSettlement::getDueDate,settlement.getSettlementItemsList().get(0));
+			lambdaQueryWrapper.ge(PjSettlement::getDueDate,settlement.getSettlementItemsList().get(1));
+		}
 		IPage<PjSettlement> pages = settlementService.page(Condition.getPage(query), lambdaQueryWrapper);
 		for (PjSettlement item : pages.getRecords()) {
 			R<Dept> res = sysClient.getDept(item.getSalesCompanyId());

+ 15 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/settlement/service/impl/SettlementServiceImpl.java

@@ -83,7 +83,11 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 			settlement.setCreateUser(AuthUtil.getUserId());
 			settlement.setTenantId(AuthUtil.getTenantId());
 			settlement.setSalesCompanyId(Long.parseLong(AuthUtil.getDeptId()));
-			settlement.setFinanceStatus(OrderTypeEnum.WAITPAYMENT.getType());
+			if ("D".equals(settlement.getDc())) {
+				settlement.setFinanceStatus(OrderTypeEnum.WAITPAYMENTD.getType());
+			}else{
+				settlement.setFinanceStatus(OrderTypeEnum.WAITPAYMENTC.getType());
+			}
 		} else {
 			settlement.setUpdateTime(new Date());
 			settlement.setUpdateUser(AuthUtil.getUserId());
@@ -169,7 +173,11 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 				accountManagementService.updateById(pjAccountManagement);
 			}
 		}
-		settlement.setFinanceStatus(OrderTypeEnum.PAID.getType());
+		if ("D".equals(settlement.getDc())) {
+			settlement.setFinanceStatus(OrderTypeEnum.PAIDD.getType());
+		}else{
+			settlement.setFinanceStatus(OrderTypeEnum.PAIDC.getType());
+		}
 		baseMapper.updateById(settlement);
 		return R.data(settlement);
 	}
@@ -228,7 +236,11 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 				accountManagementService.updateById(pjAccountManagement);
 			}
 		}
-		settlement.setFinanceStatus(OrderTypeEnum.WAITPAYMENT.getType());
+		if ("D".equals(settlement.getDc())) {
+			settlement.setFinanceStatus(OrderTypeEnum.WAITPAYMENTD.getType());
+		}else{
+			settlement.setFinanceStatus(OrderTypeEnum.WAITPAYMENTC.getType());
+		}
 		baseMapper.updateById(settlement);
 		return R.data(settlement);
 	}

+ 27 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java

@@ -619,12 +619,13 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			ship.setUpdateTime(new Date());
 			baseMapper.updateById(ship);
 		}
-
+		BigDecimal number = new BigDecimal("0.00");
 		// 保存订单明细
 		if (CollectionUtils.isNotEmpty(ship.getShipItemsList())) {
 			List<PjShipItems> shipItemsList = new ArrayList<>();
 			List<PjStockDesc> pjStockDescArrayList = new ArrayList<>();
 			List<PjProductLaunch> pjProductLaunchList = new ArrayList<>();
+			List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
 			ship.getShipItemsList().forEach(item -> {
 				if (item.getId() == null) {
 					item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
@@ -645,6 +646,14 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					throw new RuntimeException("商品数据异常");
 				}
 
+				PjOrderItems orderItems = orderItemsService.getById(item.getSrcItemId());
+				if (ObjectUtil.isNotEmpty(orderItems)) {
+					orderItems.setSendNum(orderItems.getSendNum().add(item.getSendNum()));
+					pjOrderItemsList.add(orderItems);
+				} else {
+					throw new RuntimeException("数据异常请联系管理员");
+				}
+
 
 				//生成库存账
 				PjStockDesc stockDesc = new PjStockDesc();
@@ -716,7 +725,9 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			});
 			shipItemsService.saveOrUpdateBatch(shipItemsList);
 			iStockDescService.saveOrUpdateBatch(pjStockDescArrayList);
-			ship.getShipItemsList().forEach(item -> {
+			orderItemsService.updateBatchById(pjOrderItemsList);
+			for (PjShipItems item : ship.getShipItemsList()) {
+				number = number.add(item.getSendNum());
 				//获得商品
 				PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
 				if (ObjectUtil.isEmpty(goodsDesc)) {
@@ -751,7 +762,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				}
 
 				/** ----------------------修改上架库存---------------------- */
-			});
+			}
+			;
 			productLaunchService.updateBatchById(pjProductLaunchList);
 			ship.setShipItemsList(ship.getShipItemsList());
 			ship.setNumberRows(ship.getShipItemsList().size());
@@ -762,6 +774,18 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 
 		ship.setStatusName(OrderTypeEnum.RECEIVED.getType());
 		baseMapper.updateById(ship);
+		//修改任务发货数量
+		PjShip rwShip = baseMapper.selectById(ship.getTaskId());
+		if (ObjectUtils.isNotNull(rwShip)) {
+			if (ObjectUtils.isNotNull(rwShip.getSendTotalNum())) {
+				rwShip.setSendTotalNum(rwShip.getSendTotalNum().add(number));
+			} else {
+				rwShip.setSendTotalNum(number);
+			}
+			rwShip.setUpdateUser(AuthUtil.getUserId());
+			rwShip.setUpdateTime(new Date());
+			baseMapper.updateById(rwShip);
+		}
 
 		return R.data(ship);
 	}