Browse Source

2024年9月13日17:15:13

纪新园 1 year ago
parent
commit
5f069b4f0f
17 changed files with 500 additions and 123 deletions
  1. 83 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/dto/CorpBuySingular.java
  2. 1 1
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java
  3. 1 1
      blade-service/blade-client/src/main/java/org/springblade/client/lock/controller/LockController.java
  4. 4 4
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  5. 2 2
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java
  6. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/lock/controller/LockController.java
  7. 3 2
      blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AdvanceChargeServiceImpl.java
  8. 116 84
      blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AgentServiceImpl.java
  9. 7 7
      blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/InOutStorageServiceImpl.java
  10. 14 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/service/impl/BrandDescServiceImpl.java
  11. 7 7
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.java
  12. 0 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml
  13. 4 3
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java
  14. 8 10
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  15. 34 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/controller/StatisticsController.java
  16. 9 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/IStatisticsService.java
  17. 206 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java

+ 83 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/dto/CorpBuySingular.java

@@ -0,0 +1,83 @@
+package org.springblade.salesPart.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author :jixinyuan
+ * @date : 2024/3/12
+ */
+@Data
+public class CorpBuySingular {
+
+
+	/**
+	 * 客户名
+	 */
+	@ExcelProperty(value = "客户名")
+	private String corpName;
+	/**
+	 * 单量
+	 */
+	@ExcelProperty(value = "单量")
+	private BigDecimal num;
+	/**
+	 * 条数
+	 */
+	@ExcelProperty(value = "条数")
+	private BigDecimal number;
+
+	/**
+	 * 最后一次购买日期
+	 */
+	@ExcelProperty(value = "最后一次购买日期")
+	private Date date;
+
+
+	/**
+	 * 业务日期起
+	 */
+	@ExcelIgnore
+	private String startDate;
+
+	/**
+	 * 业务日期止
+	 */
+	@ExcelIgnore
+	private String endDate;
+
+	/**
+	 * 仓库
+	 */
+	@ExcelIgnore
+	private String storageName;
+
+	/**
+	 * 业务员
+	 */
+	@ExcelIgnore
+	private String salerName;
+
+	/**
+	 * 购买途径
+	 */
+	@ExcelIgnore
+	private String businessSource;
+
+	/**
+	 * 租户
+	 */
+	@ExcelIgnore
+	private String tenantId;
+	/**
+	 * 所属公司id
+	 */
+	@ExcelIgnore
+	private String salesCompanyId;
+
+
+}

+ 1 - 1
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java

@@ -355,7 +355,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 					corpsDesc.setTenantId(AuthUtil.getTenantId());
 					corpsDesc.setAccountNoFcy(e.getAccountNoFcy());
 					corpsDesc.setEnname(e.getEnname());
-
+					corpsDesc.setCountry(e.getCountry());
 					corpsDesc.setGoodtypes(e.getGoodtypes());
 					if (StringUtil.isNotBlank(e.getCompanyName())) {
 						CorpsDesc company = baseMapper.selectCorpsDescCname(e.getCompanyName(), AuthUtil.getTenantId());

+ 1 - 1
blade-service/blade-client/src/main/java/org/springblade/client/lock/controller/LockController.java

@@ -259,7 +259,7 @@ public class LockController extends BladeController {
 
 
 	//释放锁
-	@DeleteMapping("unLock")
+	@GetMapping("unLock")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "释放锁", notes = "")
 	public R unLock(@ApiParam(value = "模块名称", required = true) @RequestParam String moduleName,

+ 4 - 4
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -2784,10 +2784,10 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		feeCenter.setLineNo(1L);
 		feeCenter.setBillNo(agent.getContractNo());
 		feeCenter.setBillDate(agent.getBusinessDate());
-		feeCenter.setCorpId(agent.getDomesticConsigneeId());
-		feeCenter.setCorpCnName(agent.getDomesticConsigneeCname());
-		feeCenter.setBillCorpId(agent.getCorpId());
-		feeCenter.setBillCorpCnName(agent.getCorpName());
+		feeCenter.setCorpId(feeCenterList.get(0).getCorpId());
+		feeCenter.setCorpCnName(feeCenterList.get(0).getCorpCnName());
+		feeCenter.setBillCorpId(feeCenterList.get(0).getBillCorpId());
+		feeCenter.setBillCorpCnName(feeCenterList.get(0).getBillCorpCnName());
 		feeCenter.setPolId(agent.getPolId());
 		feeCenter.setPolCode(agent.getPolCode());
 		feeCenter.setPolCnName(agent.getPolCnName());

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

@@ -1248,11 +1248,11 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 					.apply("stl_ttl_amount != 0")
 					.orderByDesc(FeeCenter::getCreateTime));
 				BigDecimal currentStlAmount = item.getCurrentStlAmount().abs();
-				BigDecimal stlTtlAmount = feeCenters.stream().map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				/*BigDecimal stlTtlAmount = feeCenters.stream().map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 				if (item.getCurrentStlAmount().compareTo(new BigDecimal("0.00")) == 0 ||
 					item.getCurrentStlAmount().compareTo(stlTtlAmount) > 0) {
 					throw new RuntimeException("本次结算金额不能为零或大于已结算金额");
-				}
+				}*/
 				for (FeeCenter e : feeCenters) {
 					if (currentStlAmount.compareTo(new BigDecimal("0.00")) == 0) {
 						break;

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/lock/controller/LockController.java

@@ -242,7 +242,7 @@ public class LockController extends BladeController {
 
 
 	//释放锁
-	@DeleteMapping("unLock")
+	@GetMapping("unLock")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "释放锁", notes = "")
 	public R unLock(@ApiParam(value = "模块名称", required = true) @RequestParam String moduleName,

+ 3 - 2
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AdvanceChargeServiceImpl.java

@@ -27,7 +27,6 @@ import org.springblade.core.tool.api.R;
 import org.springblade.los.Util.IDeptUtils;
 import org.springblade.los.trade.entity.AdvanceCharge;
 import org.springblade.los.trade.entity.AdvanceChargeItem;
-import org.springblade.los.trade.entity.StorageFeeItems;
 import org.springblade.los.trade.mapper.AdvanceChargeMapper;
 import org.springblade.los.trade.service.IAdvanceChargeItemService;
 import org.springblade.los.trade.service.IAdvanceChargeService;
@@ -68,7 +67,9 @@ public class AdvanceChargeServiceImpl extends ServiceImpl<AdvanceChargeMapper, A
 		detail.setAdvanceChargeItemList(advanceChargeItemService.list(new LambdaQueryWrapper<AdvanceChargeItem>()
 			.eq(AdvanceChargeItem::getTenantId, AuthUtil.getTenantId())
 			.eq(AdvanceChargeItem::getIsDeleted, 0)
-			.eq(AdvanceChargeItem::getPid, detail.getId())));
+			.eq(AdvanceChargeItem::getPid, detail.getId())
+			.orderByDesc(AdvanceChargeItem::getCreateTime)
+		));
 		return detail;
 	}
 

+ 116 - 84
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AgentServiceImpl.java

@@ -1370,8 +1370,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				advanceChargeItem.setOrderNo(agent.getBusinessNo());
 				advanceChargeItem.setOverpayment(advanceChargeAmount);
 				advanceChargeItem.setOverpaymentType(1);
-				advanceChargeItem.setSrcOrderNo(agent.getBusinessNo());
-				advanceChargeItem.setBillNo(agent.getBusinessNo());
+				advanceChargeItem.setSrcOrderNo(agent.getOrderNoJoin());
+				advanceChargeItem.setBillNo(agent.getBillNoJoin());
 				advanceChargeItem.setIdentifier(0);
 				advanceChargeItem.setPid(advanceCharge.getId());
 				advanceChargeItemService.save(advanceChargeItem);
@@ -1842,50 +1842,52 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 		BigDecimal amountC = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 		if (new BigDecimal("0").compareTo(amountD) != 0 && amount.compareTo(amountD) == 0) {
 			BigDecimal amountSub = amountC.subtract(amountD);
-			AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
-				.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
-				.eq(AdvanceCharge::getIsDeleted, 0)
-				.eq(AdvanceCharge::getCorpId, agentList.get(0).getCorpId()));
-			if (advanceCharge == null) {
-				advanceCharge = new AdvanceCharge();
-				advanceCharge.setCorpId(agentList.get(0).getCorpId());
-				advanceCharge.setCorpName(agentList.get(0).getCorpName());
-				advanceCharge.setCreateUser(AuthUtil.getUserId());
-				advanceCharge.setCreateUserName(AuthUtil.getUserName());
-				advanceCharge.setCreateTime(new Date());
-				advanceCharge.setCreateDept(deptId);
-				advanceCharge.setCreateDeptName(deptName);
-				advanceCharge.setAdvancePaymentBalance(new BigDecimal("0.00"));
-				advanceCharge.setInOverpayment(new BigDecimal("0.00"));
-				advanceCharge.setOutOverpaymen(new BigDecimal("0.00"));
-			}
-			AdvanceChargeItem advanceChargeItem = new AdvanceChargeItem();
-			advanceChargeItem.setCreateUser(AuthUtil.getUserId());
-			advanceChargeItem.setCreateUserName(AuthUtil.getUserName());
-			advanceChargeItem.setCreateTime(new Date());
-			advanceChargeItem.setCreateDept(deptId);
-			advanceChargeItem.setCreateDeptName(deptName);
-			advanceChargeItem.setSrcId(agent.getId());
-			advanceChargeItem.setSrcPid(agent.getId());
-			advanceChargeItem.setOrderNo(agent.getBusinessNo());
-			advanceChargeItem.setOverpayment(amountSub);
-			advanceChargeItem.setOverpaymentType(0);
-			advanceChargeItem.setSrcOrderNo(agent.getBusinessNo());
-			advanceChargeItem.setBillNo(agent.getBusinessNo());
-			advanceChargeItem.setIdentifier(0);
-			if (amountSub.compareTo(new BigDecimal("0")) > 0) {
-				advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().add(amountSub));
-				advanceCharge.setInOverpayment(advanceCharge.getInOverpayment().add(amountSub));
-			} else if (amountSub.compareTo(new BigDecimal("0")) < 0) {
-				advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().add(amountSub));
-				advanceCharge.setOutOverpaymen(advanceCharge.getOutOverpaymen().add(amountSub.abs()));
-			} else {
-				System.out.println("无差额");
+			if (new BigDecimal("0").compareTo(amountSub) != 0){
+				AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
+					.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
+					.eq(AdvanceCharge::getIsDeleted, 0)
+					.eq(AdvanceCharge::getCorpId, agentList.get(0).getCorpId()));
+				if (advanceCharge == null) {
+					advanceCharge = new AdvanceCharge();
+					advanceCharge.setCorpId(agentList.get(0).getCorpId());
+					advanceCharge.setCorpName(agentList.get(0).getCorpName());
+					advanceCharge.setCreateUser(AuthUtil.getUserId());
+					advanceCharge.setCreateUserName(AuthUtil.getUserName());
+					advanceCharge.setCreateTime(new Date());
+					advanceCharge.setCreateDept(deptId);
+					advanceCharge.setCreateDeptName(deptName);
+					advanceCharge.setAdvancePaymentBalance(new BigDecimal("0.00"));
+					advanceCharge.setInOverpayment(new BigDecimal("0.00"));
+					advanceCharge.setOutOverpaymen(new BigDecimal("0.00"));
+				}
+				AdvanceChargeItem advanceChargeItem = new AdvanceChargeItem();
+				advanceChargeItem.setCreateUser(AuthUtil.getUserId());
+				advanceChargeItem.setCreateUserName(AuthUtil.getUserName());
+				advanceChargeItem.setCreateTime(new Date());
+				advanceChargeItem.setCreateDept(deptId);
+				advanceChargeItem.setCreateDeptName(deptName);
+				advanceChargeItem.setSrcId(agent.getId());
+				advanceChargeItem.setSrcPid(agent.getId());
+				advanceChargeItem.setOrderNo(agent.getBusinessNo());
+				advanceChargeItem.setOverpayment(amountSub);
+				advanceChargeItem.setOverpaymentType(0);
+				advanceChargeItem.setSrcOrderNo(agent.getBusinessNo());
+				advanceChargeItem.setBillNo(agent.getBusinessNo());
+				advanceChargeItem.setIdentifier(0);
+				if (amountSub.compareTo(new BigDecimal("0")) > 0) {
+					advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().add(amountSub));
+					advanceCharge.setInOverpayment(advanceCharge.getInOverpayment().add(amountSub));
+				} else if (amountSub.compareTo(new BigDecimal("0")) < 0) {
+					advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().add(amountSub));
+					advanceCharge.setOutOverpaymen(advanceCharge.getOutOverpaymen().add(amountSub.abs()));
+				} else {
+					System.out.println("无差额");
+				}
+				agent.setPendingPrepayment(amountSub);
+				advanceChargeService.saveOrUpdate(advanceCharge);
+				advanceChargeItem.setPid(advanceCharge.getId());
+				advanceChargeItemService.save(advanceChargeItem);
 			}
-			agent.setPendingPrepayment(amountSub);
-			advanceChargeService.saveOrUpdate(advanceCharge);
-			advanceChargeItem.setPid(advanceCharge.getId());
-			advanceChargeItemService.save(advanceChargeItem);
 		}
 		Date date = new Date();
 		LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
@@ -2589,9 +2591,9 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			throw new RuntimeException("缺少必要参数");
 		}
 		Agent declare = baseMapper.selectById(agent.getId());
-		if ("审核通过".equals(declare.getFirstStatus())) {
+		/*if ("审核通过".equals(declare.getFirstStatus())) {
 			throw new SecurityException("审核已通过,撤销失败");
-		}
+		}*/
 		declare.setFirstStatus("录入");
 		declare.setOrderStatus("录入");
 		String status = sysClient.getParamServiceByDept("whether.apply.for.payment", AuthUtil.getTenantId(), AuthUtil.getDeptId());
@@ -3107,11 +3109,21 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			if ("YDF".equals(item.getFeeCode())) {
 				item.setAmount(stlAgent.getPostElectricFee().divide(new BigDecimal(ydfCount), 2, RoundingMode.HALF_UP));
 				item.setPrice(item.getAmount());
+				item.setStlExrate(new BigDecimal("1"));
+				item.setDiscountExrate(new BigDecimal("1"));
+				item.setExrate(new BigDecimal("1"));
 			}
 			if ("SXF".equals(item.getFeeCode())) {
 				item.setAmount(stlAgent.getServiceCharge().divide(new BigDecimal(sxfCount), 2, RoundingMode.HALF_UP));
 				item.setPrice(item.getAmount());
-				item.setStlExrate(stlAgent.getExchangeRate());
+				item.setStlExrate(new BigDecimal("1"));
+				item.setDiscountExrate(new BigDecimal("1"));
+				item.setExrate(new BigDecimal("1"));
+			}
+			if ("YFK".equals(item.getFeeCode())) {
+				item.setStlExrate(new BigDecimal("1"));
+				item.setDiscountExrate(new BigDecimal("1"));
+				item.setExrate(new BigDecimal("1"));
 			}
 			item.setAuditStatus("5");
 			item.setStlPid(stlAgent.getId());
@@ -3939,6 +3951,19 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				advanceChargeItemService.save(advanceChargeItem);
 			}
 		}
+		List<Long> accBillId = feeCenterList.stream().map(FeeCenter::getAccBillId).collect(Collectors.toList());
+		if (!accBillId.isEmpty()) {
+			List<FinStlBillsItems> stlBillsItemsList = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
+				.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
+				.eq(FinStlBillsItems::getIsDeleted, 0)
+				.in(FinStlBillsItems::getAccBillId, accBillId));
+			if (!stlBillsItemsList.isEmpty()) {
+				List<Long> stlPid = stlBillsItemsList.stream().map(FinStlBillsItems::getPid).distinct().collect(Collectors.toList());
+				finStlBillsService.removeByIds(stlPid);
+				finStlBillsItemsService.removeByIds(stlBillsItemsList.stream().map(FinStlBillsItems::getId).collect(Collectors.toList()));
+			}
+			finAccBillsService.removeByIds(accBillId);
+		}
 		List<FeeCenter> feeCenters = new ArrayList<>();
 		for (FeeCenter item : feeCenterList) {
 			if (0 == item.getStlStatus()) {
@@ -3949,7 +3974,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			item.setAccBillNo("");
 			item.setAccDate(null);
 			item.setAccAmount(item.getAmount());
-			item.setAccStatus(1);
+			item.setAccStatus(0);
 			item.setAccById(0L);
 			item.setAccByName("");
 			item.setStlOrgAmount(new BigDecimal("0.00"));
@@ -3967,19 +3992,6 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			feeCenters.add(item);
 		}
 		feeCenterService.updateBatchById(feeCenters);
-		List<Long> accBillId = feeCenterList.stream().map(FeeCenter::getAccBillId).collect(Collectors.toList());
-		if (!accBillId.isEmpty()) {
-			List<FinStlBillsItems> stlBillsItemsList = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
-				.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
-				.eq(FinStlBillsItems::getIsDeleted, 0)
-				.in(FinStlBillsItems::getAccBillId, accBillId));
-			if (!stlBillsItemsList.isEmpty()) {
-				List<Long> stlPid = stlBillsItemsList.stream().map(FinStlBillsItems::getPid).collect(Collectors.toList());
-				finStlBillsService.removeByIds(stlPid);
-				finStlBillsItemsService.removeByIds(stlBillsItemsList.stream().map(FinStlBillsItems::getId).collect(Collectors.toList()));
-			}
-			finAccBillsService.removeByIds(accBillId);
-		}
 		updateById(agent);
 		this.updateBatchById(agentList);
 		return agent;
@@ -4141,6 +4153,19 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			}
 			agentItemsService.updateBatchById(agentItemsList);
 		}
+		List<Long> accBillId = feeCenterList.stream().map(FeeCenter::getAccBillId).collect(Collectors.toList());
+		if (!accBillId.isEmpty()) {
+			List<FinStlBillsItems> stlBillsItemsList = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
+				.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
+				.eq(FinStlBillsItems::getIsDeleted, 0)
+				.in(FinStlBillsItems::getAccBillId, accBillId));
+			if (!stlBillsItemsList.isEmpty()) {
+				List<Long> stlPid = stlBillsItemsList.stream().map(FinStlBillsItems::getPid).collect(Collectors.toList());
+				finStlBillsService.removeByIds(stlPid);
+				finStlBillsItemsService.removeByIds(stlBillsItemsList.stream().map(FinStlBillsItems::getId).collect(Collectors.toList()));
+			}
+			finAccBillsService.removeByIds(accBillId);
+		}
 		List<FeeCenter> feeCenters1 = new ArrayList<>();
 		for (FeeCenter item : feeCenterList) {
 			if (0 == item.getStlStatus()) {
@@ -4151,7 +4176,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			item.setAccBillNo("");
 			item.setAccDate(null);
 			item.setAccAmount(item.getAmount());
-			item.setAccStatus(1);
+			item.setAccStatus(0);
 			item.setAccById(0L);
 			item.setAccByName("");
 			item.setStlOrgAmount(new BigDecimal("0.00"));
@@ -4169,19 +4194,6 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			feeCenters1.add(item);
 		}
 		feeCenterService.saveOrUpdateBatch(feeCenters1);
-		List<Long> accBillId = feeCenters1.stream().map(FeeCenter::getAccBillId).collect(Collectors.toList());
-		if (!accBillId.isEmpty()) {
-			List<FinStlBillsItems> stlBillsItemsList = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
-				.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
-				.eq(FinStlBillsItems::getIsDeleted, 0)
-				.in(FinStlBillsItems::getAccBillId, accBillId));
-			if (!stlBillsItemsList.isEmpty()) {
-				List<Long> stlPid = stlBillsItemsList.stream().map(FinStlBillsItems::getPid).collect(Collectors.toList());
-				finStlBillsService.removeByIds(stlPid);
-				finStlBillsItemsService.removeByIds(stlBillsItemsList.stream().map(FinStlBillsItems::getId).collect(Collectors.toList()));
-			}
-			finAccBillsService.removeByIds(accBillId);
-		}
 		this.updateBatchById(agentList);
 		agent.setOrderStatus("审核通过");
 		updateById(agent);
@@ -4253,6 +4265,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			return feeCenter;
 		} else if ("YDF".equals(type)) {
 			feeCenter.setQuantity(new BigDecimal("1"));
+			feeCenter.setExrate(new BigDecimal("1"));
+			feeCenter.setDiscountExrate(new BigDecimal("1"));
 			String postElectricFee = sysClient.getParamServiceByDept("post.electric.fee", AuthUtil.getTenantId(), AuthUtil.getDeptId());
 			if (ObjectUtils.isNotNull(postElectricFee)) {
 				BigDecimal postElectricFeeAmount = new BigDecimal(postElectricFee);
@@ -4265,8 +4279,9 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			return feeCenter;
 		} else if ("SXF".equals(type)) {
 			feeCenter.setQuantity(new BigDecimal("1"));
-			feeCenter.setStlExrate(detail.getExchangeRate());
-			feeCenter.setDiscountExrate(detail.getExchangeRate());
+//			feeCenter.setStlExrate(detail.getExchangeRate());
+			feeCenter.setExrate(new BigDecimal("1"));
+			feeCenter.setDiscountExrate(new BigDecimal("1"));
 			BigDecimal prepaidAmount = detail.getPrepaidAmount().multiply(detail.getExchangeRate());
 			String serviceCharge = sysClient.getParamServiceByDept("service.charge", AuthUtil.getTenantId(), AuthUtil.getDeptId());
 			if (ObjectUtils.isNotNull(serviceCharge)) {
@@ -4298,6 +4313,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			}
 			return feeCenter;
 		} else if ("YFK".equals(type)) {
+			feeCenter.setExrate(new BigDecimal("1"));
+			feeCenter.setDiscountExrate(new BigDecimal("1"));
 			feeCenter.setQuantity(new BigDecimal("1"));
 			AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
 				.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
@@ -4386,6 +4403,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			return feeCenter;
 		} else if ("YDF".equals(type)) {
 			feeCenter.setQuantity(new BigDecimal("1"));
+			feeCenter.setExrate(new BigDecimal("1"));
+			feeCenter.setDiscountExrate(new BigDecimal("1"));
 			String postElectricFee = sysClient.getParamServiceByDept("post.electric.fee", AuthUtil.getTenantId(), AuthUtil.getDeptId());
 			if (ObjectUtils.isNotNull(postElectricFee)) {
 				BigDecimal postElectricFeeAmount = new BigDecimal(postElectricFee);
@@ -4400,8 +4419,9 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			feeCenter.setQuantity(new BigDecimal("1"));
 			BigDecimal amount = agentItemsRList.stream().map(AgentItemsR::getThisSettlementAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 			BigDecimal prepaidAmount = amount.multiply(detail.getExchangeRate());
-			feeCenter.setStlExrate(detail.getExchangeRate());
-			feeCenter.setDiscountExrate(detail.getExchangeRate());
+//			feeCenter.setStlExrate(detail.getExchangeRate());
+			feeCenter.setExrate(new BigDecimal("1"));
+			feeCenter.setDiscountExrate(new BigDecimal("1"));
 			String serviceCharge = sysClient.getParamServiceByDept("service.charge", AuthUtil.getTenantId(), AuthUtil.getDeptId());
 			if (ObjectUtils.isNotNull(serviceCharge)) {
 				BigDecimal serviceChargeAmount = new BigDecimal("1").divide(new BigDecimal(serviceCharge), serviceCharge.length(), RoundingMode.HALF_UP);
@@ -4433,6 +4453,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			return feeCenter;
 		} else if ("YFK".equals(type)) {
 			feeCenter.setQuantity(new BigDecimal("1"));
+			feeCenter.setExrate(new BigDecimal("1"));
+			feeCenter.setDiscountExrate(new BigDecimal("1"));
 			AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
 				.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
 				.eq(AdvanceCharge::getIsDeleted, 0)
@@ -4514,6 +4536,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			return feeCenter;
 		} else if ("YDF".equals(type)) {
 			feeCenter.setQuantity(new BigDecimal("1"));
+			feeCenter.setExrate(new BigDecimal("1"));
+			feeCenter.setDiscountExrate(new BigDecimal("1"));
 			String postElectricFee = sysClient.getParamServiceByDept("post.electric.fee", AuthUtil.getTenantId(), AuthUtil.getDeptId());
 			if (ObjectUtils.isNotNull(postElectricFee)) {
 				BigDecimal postElectricFeeAmount = new BigDecimal(postElectricFee);
@@ -4527,8 +4551,9 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 		} else if ("SXF".equals(type)) {
 			feeCenter.setQuantity(new BigDecimal("1"));
 			BigDecimal prepaidAmount = detail.getPrepaidAmount().multiply(detail.getExchangeRate());
-			feeCenter.setStlExrate(detail.getExchangeRate());
-			feeCenter.setDiscountExrate(detail.getExchangeRate());
+//			feeCenter.setStlExrate(detail.getExchangeRate());
+			feeCenter.setExrate(new BigDecimal("1"));
+			feeCenter.setDiscountExrate(new BigDecimal("1"));
 			String serviceCharge = sysClient.getParamServiceByDept("service.charge", AuthUtil.getTenantId(), AuthUtil.getDeptId());
 			if (ObjectUtils.isNotNull(serviceCharge)) {
 				BigDecimal serviceChargeAmount = new BigDecimal("1").divide(new BigDecimal(serviceCharge), serviceCharge.length(), RoundingMode.HALF_UP);
@@ -4560,6 +4585,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			return feeCenter;
 		} else if ("YFK".equals(type)) {
 			feeCenter.setQuantity(new BigDecimal("1"));
+			feeCenter.setExrate(new BigDecimal("1"));
+			feeCenter.setDiscountExrate(new BigDecimal("1"));
 			AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
 				.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
 				.eq(AdvanceCharge::getIsDeleted, 0)
@@ -4647,6 +4674,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			return feeCenter;
 		} else if ("YDF".equals(type)) {
 			feeCenter.setQuantity(new BigDecimal("1"));
+			feeCenter.setExrate(new BigDecimal("1"));
+			feeCenter.setDiscountExrate(new BigDecimal("1"));
 			String postElectricFee = sysClient.getParamServiceByDept("post.electric.fee", AuthUtil.getTenantId(), AuthUtil.getDeptId());
 			if (ObjectUtils.isNotNull(postElectricFee)) {
 				BigDecimal postElectricFeeAmount = new BigDecimal(postElectricFee);
@@ -4661,8 +4690,9 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			feeCenter.setQuantity(new BigDecimal("1"));
 			BigDecimal amount = agentItemsRList.stream().map(AgentItemsR::getThisSettlementAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 			BigDecimal prepaidAmount = amount.multiply(detail.getExchangeRate());
-			feeCenter.setStlExrate(detail.getExchangeRate());
-			feeCenter.setDiscountExrate(detail.getExchangeRate());
+//			feeCenter.setStlExrate(detail.getExchangeRate());
+			feeCenter.setExrate(new BigDecimal("1"));
+			feeCenter.setDiscountExrate(new BigDecimal("1"));
 			String serviceCharge = sysClient.getParamServiceByDept("service.charge", AuthUtil.getTenantId(), AuthUtil.getDeptId());
 			if (ObjectUtils.isNotNull(serviceCharge)) {
 				BigDecimal serviceChargeAmount = new BigDecimal("1").divide(new BigDecimal(serviceCharge), serviceCharge.length(), RoundingMode.HALF_UP);
@@ -4694,6 +4724,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			return feeCenter;
 		} else if ("YFK".equals(type)) {
 			feeCenter.setQuantity(new BigDecimal("1"));
+			feeCenter.setExrate(new BigDecimal("1"));
+			feeCenter.setDiscountExrate(new BigDecimal("1"));
 			AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
 				.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
 				.eq(AdvanceCharge::getIsDeleted, 0)

+ 7 - 7
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/InOutStorageServiceImpl.java

@@ -131,11 +131,11 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 					.eq(FeeCenter::getIsDeleted, 0)
 					.eq(FeeCenter::getDc, "C")
 					.apply("find_in_set(fee_code,'SXF,YDF')")
-					.apply("find_in_set('" + bills.getMblno() + "',mblno)"));
+					.apply("find_in_set('" + bills.getRefno() + "',bill_no)"));
 				if (feeCenterTradeList.isEmpty()) {
 					throw new RuntimeException("未查到提单号:" + bills.getMblno() + "对应贸易代理费用信息");
 				}
-				List<Long> ids = feeCenterTradeList.stream().map(FeeCenter::getPid).filter(Objects::nonNull)
+				/*List<Long> ids = feeCenterTradeList.stream().map(FeeCenter::getPid).filter(Objects::nonNull)
 					.distinct().collect(Collectors.toList());
 				List<FeeCenter> feeCenterTradeList1 = feeCenterMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
@@ -145,7 +145,7 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 					.apply("find_in_set(fee_code,'SXF,YDF') and (mblno IS NULL or mblno = '')"));
 				if (!feeCenterTradeList1.isEmpty()) {
 					feeCenterTradeList.addAll(feeCenterTradeList1);
-				}
+				}*/
 				List<AgentItems> agentItemsList = agentItemsMapper.selectList(new LambdaQueryWrapper<AgentItems>()
 					.eq(AgentItems::getPid, feeCenterTradeList.get(0).getPid())
 					.eq(AgentItems::getTenantId, AuthUtil.getTenantId())
@@ -467,11 +467,11 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 					.eq(FeeCenter::getIsDeleted, 0)
 					.eq(FeeCenter::getDc, "C")
 					.apply("find_in_set(fee_code,'SXF,YDF')")
-					.apply("find_in_set('" + bills.getMblno() + "',mblno)"));
+					.apply("find_in_set('" + bills.getRefno() + "',bill_no)"));
 				if (feeCenterTradeList.isEmpty()) {
 					throw new RuntimeException("未查到提单号:" + bills.getMblno() + "对应贸易代理费用信息");
 				}
-				List<Long> ids = feeCenterTradeList.stream().map(FeeCenter::getPid).filter(Objects::nonNull)
+				/*List<Long> ids = feeCenterTradeList.stream().map(FeeCenter::getPid).filter(Objects::nonNull)
 					.distinct().collect(Collectors.toList());
 				List<FeeCenter> feeCenterTradeList1 = feeCenterMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
@@ -481,7 +481,7 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 					.apply("find_in_set(fee_code,'SXF,YDF') and (mblno IS NULL or mblno = '')"));
 				if (!feeCenterTradeList1.isEmpty()) {
 					feeCenterTradeList.addAll(feeCenterTradeList1);
-				}
+				}*/
 				List<AgentItems> agentItemsList = agentItemsMapper.selectList(new LambdaQueryWrapper<AgentItems>()
 					.eq(AgentItems::getPid, feeCenterTradeList.get(0).getPid())
 					.eq(AgentItems::getTenantId, AuthUtil.getTenantId())
@@ -595,7 +595,7 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getIsDeleted, 0)
 					.eq(FeeCenter::getDc, "C")
-					.apply("find_in_set('" + bills.getMblno() + "',mblno)"));
+					.apply("find_in_set('" + bills.getRefno() + "',bill_no)"));
 				if (feeCenterTradeList.isEmpty()) {
 					throw new RuntimeException("未查到提单号:" + bills.getMblno() + "对应贸易代理费用信息");
 				}

+ 14 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/service/impl/BrandDescServiceImpl.java

@@ -19,8 +19,10 @@ package org.springblade.salesPart.brand.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.ObjectUtil;
@@ -31,6 +33,7 @@ import org.springblade.salesPart.brand.service.IBrandFilesService;
 import org.springblade.salesPart.entity.BrandFigure;
 import org.springblade.salesPart.entity.PjBrandDesc;
 import org.springblade.salesPart.entity.PjBrandFiles;
+import org.springblade.salesPart.entity.PjGoodsDesc;
 import org.springblade.salesPart.vo.BrandDescVO;
 import org.springblade.system.entity.Dept;
 import org.springblade.system.feign.ISysClient;
@@ -87,7 +90,15 @@ public class BrandDescServiceImpl extends ServiceImpl<BrandDescMapper, PjBrandDe
 	 */
 	@Override
 	public PjBrandDesc saveMessage(PjBrandDesc brandDesc) {
+		Integer count = baseMapper.selectCount(Wrappers.<PjBrandDesc>lambdaQuery()
+			.eq(PjBrandDesc::getCname, brandDesc.getCname())
+			.eq(PjBrandDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjBrandDesc::getIsDeleted, 0)
+		);
 		if (brandDesc.getId() != null) {
+			if (count > 0) {
+				throw new ServiceException("品牌已存在");
+			}
 			if (!brandDesc.getCreateDept().equals(Long.valueOf(AuthUtil.getDeptId()))) {
 				throw new RuntimeException("无权限修改");
 			}
@@ -97,6 +108,9 @@ public class BrandDescServiceImpl extends ServiceImpl<BrandDescMapper, PjBrandDe
 			brandDesc.setEnableOrNot(1);
 			baseMapper.updateById(brandDesc);
 		} else {
+			if (count > 1) {
+				throw new ServiceException("品牌已存在");
+			}
 			//获得所属公司
 			R<Dept> dept = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId()));
 			if (ObjectUtil.isNotEmpty(dept)) {

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

@@ -22,7 +22,6 @@ import org.apache.ibatis.annotations.Param;
 import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.salesPart.dto.FinancingProcurement;
 import org.springblade.salesPart.dto.SaleDetail;
-import org.springblade.salesPart.dto.SaleDetailDto;
 import org.springblade.salesPart.dto.SalespersonCustomer;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.excel.PjOrderStatisticsExcel;
@@ -90,19 +89,20 @@ public interface OrderMapper extends BaseMapper<PjOrder> {
 														@Param("deptId") String deptId, @Param("tenantId") String tenantId,
 														@Param("goodsSize") String goodsSize);
 
-	int coreCorp(@Param("tenantId")String tenantId, @Param("bsType")String bsType, @Param("deptId")String deptId);
+	int coreCorp(@Param("tenantId") String tenantId, @Param("bsType") String bsType, @Param("deptId") String deptId);
 
-    List<SalespersonCustomer> salespersonCustomerDetail(@Param("page")IPage<SalespersonCustomer> page, @Param("sale")SaleDetail saleDetailDto);
+	List<SalespersonCustomer> salespersonCustomerDetail(@Param("page") IPage<SalespersonCustomer> page, @Param("sale") SaleDetail saleDetailDto);
 
-	List<SalespersonCustomer> salespersonCustomerSum(@Param("sale")SaleDetail saleDetailDto);
+	List<SalespersonCustomer> salespersonCustomerSum(@Param("sale") SaleDetail saleDetailDto);
 
 	@TenantIgnore
-    List<PjOrder> selectListAll(@Param("param")String param);
+	List<PjOrder> selectListAll(@Param("param") String param);
 
 	Map<String, BigDecimal> columnarRz(@Param("firstDay") LocalDate firstDay, @Param("lastDay") LocalDate lastDay,
 									   @Param("tenantId") String tenantId, @Param("salesCompanyId") Long salesCompanyId);
 
-	List<FinancingProcurement> financingProcurement(@Param("page")IPage<FinancingProcurement> page, @Param("sale")FinancingProcurement financingProcurement);
+	List<FinancingProcurement> financingProcurement(@Param("page") IPage<FinancingProcurement> page, @Param("sale") FinancingProcurement financingProcurement);
+
+	List<FinancingProcurement> financingProcurementList(@Param("sale") FinancingProcurement financingProcurement);
 
-	List<FinancingProcurement> financingProcurementList(@Param("sale")FinancingProcurement financingProcurement);
 }

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

@@ -835,5 +835,4 @@
             and DATEDIFF( CURDATE(), busines_date ) &gt; 90
         </if>
     </select>
-
 </mapper>

+ 4 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java

@@ -18,16 +18,17 @@ package org.springblade.salesPart.order.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
-import feign.Param;
 import org.springblade.core.tool.api.R;
 import org.springblade.salesPart.dto.FinancingProcurement;
 import org.springblade.salesPart.dto.SaleDetail;
-import org.springblade.salesPart.dto.SaleDetailDto;
 import org.springblade.salesPart.dto.SalespersonCustomer;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.entity.PjOrderItems;
 import org.springblade.salesPart.entity.PjProductLaunch;
-import org.springblade.salesPart.excel.*;
+import org.springblade.salesPart.excel.InventoryExportExcel;
+import org.springblade.salesPart.excel.PjOrderStatisticsExcel;
+import org.springblade.salesPart.excel.ShipItemImportXSCodeExcel;
+import org.springblade.salesPart.excel.ShipItemImportXSExcel;
 import org.springblade.salesPart.vo.OrderStatistics;
 import org.springblade.salesPart.vo.OrderVO;
 import org.springblade.salesPart.vo.PjOrderStatisticsWeb;

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

@@ -3565,9 +3565,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					BigDecimal balanceQuantity = new BigDecimal("0.00");
 					BigDecimal inventoryAmount = new BigDecimal("0.00");
 					item.setSendNum(new BigDecimal("0.00"));
-					if (new BigDecimal("0.00").compareTo(item.getPrice()) == 0) {
+					/*if (new BigDecimal("0.00").compareTo(item.getPrice()) == 0) {
 						throw new RuntimeException("商品:" + item.getGoodsName() + "单价为零");
-					}
+					}*/
 					if (!pjStockDescList.isEmpty()) {
 						balanceQuantity = pjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull)
 							.reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -3673,8 +3673,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				order.setSalesAmount(new BigDecimal("0.00"));
 				order.setTotalMoney(new BigDecimal("0.00"));
 			}
-		}
-		else if (order.getBsType().equals(OrderTypeEnum.PURCHASE.getType())) {
+		} else if (order.getBsType().equals(OrderTypeEnum.PURCHASE.getType())) {
 			//采购
 			if (ObjectUtils.isNotNull(order.getStorageId())) {
 				order.setStorageName(storageDescMapper.selectById(order.getStorageId()).getCname());
@@ -3736,9 +3735,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					if ("1".equals(goodsDesc.getWhether()) && ObjectUtils.isNull(item.getDot())) {
 						throw new RuntimeException("商品:" + goodsDesc.getCname() + ",请选择批次号");
 					}
-					if (new BigDecimal("0.00").compareTo(item.getPrice()) == 0) {
+					/*if (new BigDecimal("0.00").compareTo(item.getPrice()) == 0) {
 						throw new RuntimeException("商品:" + item.getGoodsName() + "单价为零");
-					}
+					}*/
 					item.setBizType(order.getBsType());
 					item.setBillNo(order.getOrdNo());
 					goodsName.append(item.getGoodsName()).append(",");
@@ -3791,8 +3790,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				order.setSalesAmount(new BigDecimal("0.00"));
 				order.setTotalMoney(new BigDecimal("0.00"));
 			}
-		}
-		else if (order.getBsType().equals(OrderTypeEnum.FINANCING.getType())) {
+		} else if (order.getBsType().equals(OrderTypeEnum.FINANCING.getType())) {
 			//仓库名称
 			if (ObjectUtils.isNotNull(order.getStorageId())) {
 				order.setStorageName(storageDescMapper.selectById(order.getStorageId()).getCname());
@@ -3857,9 +3855,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					item.setBizType(order.getBsType());
 					item.setBillNo(order.getOrdNo());
 					goodsName.append(item.getGoodsName()).append(",");
-					if (new BigDecimal("0.00").compareTo(item.getPrice()) == 0) {
+					/*if (new BigDecimal("0.00").compareTo(item.getPrice()) == 0) {
 						throw new RuntimeException("商品:" + item.getGoodsName() + "单价为零");
-					}
+					}*/
 					//计算小计
 					item.setSubTotalMoney(item.getGoodsNum().multiply(item.getPrice()));
 					item.setGoodsTotalShipAmount((ObjectUtils.isNotNull(item.getSendNum()) ? item.getSendNum() : new BigDecimal("0")).multiply(item.getPrice()));

+ 34 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/controller/StatisticsController.java

@@ -177,4 +177,38 @@ public class StatisticsController {
 		ExcelUtil.export(response, "融资采购统计", "融资采购统计", financingProcurementList, FinancingProcurement.class);
 	}
 
+
+	/**
+	 * 客户购买单数统计
+	 */
+	@GetMapping("/corpBuySingularDetail")
+	public R<IPage<CorpBuySingular>> corpBuySingularDetail(CorpBuySingular corpBuySingular, Query query) {
+		return statisticsService.corpBuySingularDetail(corpBuySingular,query );
+	}
+
+	/**
+	 * 客户购买单数统计合计
+	 */
+	@GetMapping("/corpBuySingularSum")
+	public R corpBuySingularSum(CorpBuySingular corpBuySingular) {
+		return statisticsService.corpBuySingularSum(corpBuySingular);
+	}
+
+	/**
+	 * 客户购买单数统计导出
+	 */
+	@GetMapping("/corpBuySingularExport")
+	public void corpBuySingularExport(CorpBuySingular corpBuySingular, HttpServletResponse response) {
+		List<CorpBuySingular> corpBuySingularExport = statisticsService.corpBuySingularExport(corpBuySingular);
+		ExcelUtil.export(response, "客户购买单数统计", "客户购买单数统计", corpBuySingularExport, CorpBuySingular.class);
+	}
+
+	/**
+	 * 客户购买单数统计柱状
+	 */
+	@GetMapping("/corpBuySingularStatistics")
+	public R corpBuySingularStatistics(CorpBuySingular corpBuySingular) {
+		return statisticsService.corpBuySingularStatistics(corpBuySingular);
+	}
+
 }

+ 9 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/IStatisticsService.java

@@ -17,6 +17,7 @@
 package org.springblade.salesPart.statistics.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.salesPart.dto.*;
 
@@ -104,4 +105,12 @@ public interface IStatisticsService {
 	R financingProcurementSum(FinancingProcurement financingProcurement);
 
 	List<FinancingProcurement> financingProcurementExport(FinancingProcurement financingProcurement);
+
+	R<IPage<CorpBuySingular>> corpBuySingularDetail(CorpBuySingular corpBuySingular, Query query);
+
+	R corpBuySingularSum(CorpBuySingular corpBuySingular);
+
+	List<CorpBuySingular> corpBuySingularExport(CorpBuySingular corpBuySingular);
+
+	R corpBuySingularStatistics(CorpBuySingular corpBuySingular);
 }

+ 206 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java

@@ -19,10 +19,15 @@ package org.springblade.salesPart.statistics.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
+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.salesPart.corps.service.ICorpsDescService;
 import org.springblade.salesPart.dto.*;
+import org.springblade.salesPart.entity.PjCorpsDesc;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.entity.PjOrderItems;
 import org.springblade.salesPart.entity.PjShip;
@@ -50,6 +55,8 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class StatisticsServiceImpl implements IStatisticsService {
 
+	private final ICorpsDescService corpsDescService;
+
 	private final IOrderService orderService;
 
 	private final IOrderItemsService orderItemsService;
@@ -1300,4 +1307,203 @@ public class StatisticsServiceImpl implements IStatisticsService {
 		financingProcurement.setSalesCompanyId(AuthUtil.getDeptId());
 		return orderService.financingProcurementList(financingProcurement);
 	}
+
+	@Override
+	public R<IPage<CorpBuySingular>> corpBuySingularDetail(CorpBuySingular corpBuySingular, Query query) {
+		List<CorpBuySingular> corpBuySingularList = new ArrayList<>();
+		LambdaQueryWrapper<PjCorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsDesc::getIsDeleted, 0)
+			.like(ObjectUtils.isNotNull(corpBuySingular), PjCorpsDesc::getCname, corpBuySingular.getCorpName())
+			.eq(PjCorpsDesc::getCorpType, "KH");
+		IPage<PjCorpsDesc> corpsDescIPage = corpsDescService.page(Condition.getPage(query), lambdaQueryWrapper);
+		if (!corpsDescIPage.getRecords().isEmpty()) {
+			List<Long> ids = corpsDescIPage.getRecords().stream().map(PjCorpsDesc::getId).distinct().collect(Collectors.toList());
+			List<PjOrder> orderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.eq(ObjectUtils.isNotNull(corpBuySingular.getBusinessSource()), PjOrder::getBusinessSource, corpBuySingular.getBusinessSource())
+				.like(ObjectUtils.isNotNull(corpBuySingular.getSalerName()), PjOrder::getSalerName, corpBuySingular.getSalerName())
+				.like(ObjectUtils.isNotNull(corpBuySingular.getStorageName()), PjOrder::getStorageName, corpBuySingular.getStorageName())
+				.gt(ObjectUtils.isNotNull(corpBuySingular.getStartDate()), PjOrder::getBusinesDate, corpBuySingular.getStartDate())
+				.lt(ObjectUtils.isNotNull(corpBuySingular.getEndDate()), PjOrder::getBusinesDate, corpBuySingular.getEndDate())
+				.in(PjOrder::getCustomerId, ids)
+				.orderByDesc(PjOrder::getBusinesDate)
+			);
+			for (PjCorpsDesc item : corpsDescIPage.getRecords()) {
+				CorpBuySingular corpBuySingular1 = new CorpBuySingular();
+				corpBuySingular1.setCorpName(item.getCname());
+				if (!orderList.isEmpty()) {
+					List<PjOrder> orders = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())).collect(Collectors.toList());
+					if (!orders.isEmpty()) {
+						corpBuySingular1.setNum(new BigDecimal(orders.size()));
+						corpBuySingular1.setNumber(orders.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add));
+						corpBuySingular1.setDate(orders.get(0).getBusinesDate());
+					}
+				}
+				corpBuySingularList.add(corpBuySingular1);
+			}
+		}
+		IPage<CorpBuySingular> page = new Page<>();
+		page.setRecords(corpBuySingularList);
+		page.setPages(corpsDescIPage.getPages());
+		page.setCurrent(corpsDescIPage.getCurrent());
+		page.setSize(corpsDescIPage.getSize());
+		page.setTotal(corpsDescIPage.getTotal());
+		return R.data(page);
+	}
+
+	@Override
+	public R corpBuySingularSum(CorpBuySingular corpBuySingular) {
+		Map<String, Object> map = new HashMap<>();
+		List<CorpBuySingular> corpBuySingularList = new ArrayList<>();
+		LambdaQueryWrapper<PjCorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsDesc::getIsDeleted, 0)
+			.like(ObjectUtils.isNotNull(corpBuySingular), PjCorpsDesc::getCname, corpBuySingular.getCorpName())
+			.eq(PjCorpsDesc::getCorpType, "KH");
+		List<PjCorpsDesc> corpsDescIPage = corpsDescService.list(lambdaQueryWrapper);
+		if (!corpsDescIPage.isEmpty()) {
+			List<Long> ids = corpsDescIPage.stream().map(PjCorpsDesc::getId).distinct().collect(Collectors.toList());
+			List<PjOrder> orderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.eq(ObjectUtils.isNotNull(corpBuySingular.getBusinessSource()), PjOrder::getBusinessSource, corpBuySingular.getBusinessSource())
+				.like(ObjectUtils.isNotNull(corpBuySingular.getSalerName()), PjOrder::getSalerName, corpBuySingular.getSalerName())
+				.like(ObjectUtils.isNotNull(corpBuySingular.getStorageName()), PjOrder::getStorageName, corpBuySingular.getStorageName())
+				.gt(ObjectUtils.isNotNull(corpBuySingular.getStartDate()), PjOrder::getBusinesDate, corpBuySingular.getStartDate())
+				.lt(ObjectUtils.isNotNull(corpBuySingular.getEndDate()), PjOrder::getBusinesDate, corpBuySingular.getEndDate())
+				.in(PjOrder::getCustomerId, ids)
+				.orderByDesc(PjOrder::getBusinesDate)
+			);
+			for (PjCorpsDesc item : corpsDescIPage) {
+				CorpBuySingular corpBuySingular1 = new CorpBuySingular();
+				corpBuySingular1.setCorpName(item.getCname());
+				if (!orderList.isEmpty()) {
+					List<PjOrder> orders = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())).collect(Collectors.toList());
+					if (!orders.isEmpty()) {
+						corpBuySingular1.setNum(new BigDecimal(orders.size()));
+						corpBuySingular1.setNumber(orders.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add));
+						corpBuySingular1.setDate(orders.get(0).getBusinesDate());
+					}
+				}
+				corpBuySingularList.add(corpBuySingular1);
+			}
+		}
+		if (!corpBuySingularList.isEmpty()) {
+			map.put("num", corpBuySingularList.stream().map(CorpBuySingular::getNum).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("number", corpBuySingularList.stream().map(CorpBuySingular::getNumber).reduce(BigDecimal.ZERO, BigDecimal::add));
+		} else {
+			map.put("num", new BigDecimal("0"));
+			map.put("number", new BigDecimal("0"));
+		}
+		return R.data(map);
+	}
+
+	@Override
+	public List<CorpBuySingular> corpBuySingularExport(CorpBuySingular corpBuySingular) {
+		List<CorpBuySingular> corpBuySingularList = new ArrayList<>();
+		LambdaQueryWrapper<PjCorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsDesc::getIsDeleted, 0)
+			.like(ObjectUtils.isNotNull(corpBuySingular), PjCorpsDesc::getCname, corpBuySingular.getCorpName())
+			.eq(PjCorpsDesc::getCorpType, "KH");
+		List<PjCorpsDesc> corpsDescIPage = corpsDescService.list(lambdaQueryWrapper);
+		if (!corpsDescIPage.isEmpty()) {
+			List<Long> ids = corpsDescIPage.stream().map(PjCorpsDesc::getId).distinct().collect(Collectors.toList());
+			List<PjOrder> orderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.eq(ObjectUtils.isNotNull(corpBuySingular.getBusinessSource()), PjOrder::getBusinessSource, corpBuySingular.getBusinessSource())
+				.like(ObjectUtils.isNotNull(corpBuySingular.getSalerName()), PjOrder::getSalerName, corpBuySingular.getSalerName())
+				.like(ObjectUtils.isNotNull(corpBuySingular.getStorageName()), PjOrder::getStorageName, corpBuySingular.getStorageName())
+				.gt(ObjectUtils.isNotNull(corpBuySingular.getStartDate()), PjOrder::getBusinesDate, corpBuySingular.getStartDate())
+				.lt(ObjectUtils.isNotNull(corpBuySingular.getEndDate()), PjOrder::getBusinesDate, corpBuySingular.getEndDate())
+				.in(PjOrder::getCustomerId, ids)
+				.orderByDesc(PjOrder::getBusinesDate)
+			);
+			for (PjCorpsDesc item : corpsDescIPage) {
+				CorpBuySingular corpBuySingular1 = new CorpBuySingular();
+				corpBuySingular1.setCorpName(item.getCname());
+				if (!orderList.isEmpty()) {
+					List<PjOrder> orders = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())).collect(Collectors.toList());
+					if (!orders.isEmpty()) {
+						corpBuySingular1.setNum(new BigDecimal(orders.size()));
+						corpBuySingular1.setNumber(orders.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add));
+						corpBuySingular1.setDate(orders.get(0).getBusinesDate());
+					}
+				}
+				corpBuySingularList.add(corpBuySingular1);
+			}
+		}
+		return corpBuySingularList;
+	}
+
+	@Override
+	public R corpBuySingularStatistics(CorpBuySingular corpBuySingular) {
+		Map<String, Object> map = new HashMap<>();
+		List<CorpBuySingular> corpBuySingularList = new ArrayList<>();
+		LambdaQueryWrapper<PjCorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsDesc::getIsDeleted, 0)
+			.like(ObjectUtils.isNotNull(corpBuySingular), PjCorpsDesc::getCname, corpBuySingular.getCorpName())
+			.eq(PjCorpsDesc::getCorpType, "KH");
+		List<PjCorpsDesc> corpsDescIPage = corpsDescService.list(lambdaQueryWrapper);
+		if (!corpsDescIPage.isEmpty()) {
+			List<Long> ids = corpsDescIPage.stream().map(PjCorpsDesc::getId).distinct().collect(Collectors.toList());
+			List<PjOrder> orderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.eq(ObjectUtils.isNotNull(corpBuySingular.getBusinessSource()), PjOrder::getBusinessSource, corpBuySingular.getBusinessSource())
+				.like(ObjectUtils.isNotNull(corpBuySingular.getSalerName()), PjOrder::getSalerName, corpBuySingular.getSalerName())
+				.like(ObjectUtils.isNotNull(corpBuySingular.getStorageName()), PjOrder::getStorageName, corpBuySingular.getStorageName())
+				.gt(ObjectUtils.isNotNull(corpBuySingular.getStartDate()), PjOrder::getBusinesDate, corpBuySingular.getStartDate())
+				.lt(ObjectUtils.isNotNull(corpBuySingular.getEndDate()), PjOrder::getBusinesDate, corpBuySingular.getEndDate())
+				.in(PjOrder::getCustomerId, ids)
+				.orderByDesc(PjOrder::getBusinesDate)
+			);
+			for (PjCorpsDesc item : corpsDescIPage) {
+				CorpBuySingular corpBuySingular1 = new CorpBuySingular();
+				corpBuySingular1.setCorpName(item.getCname());
+				if (!orderList.isEmpty()) {
+					List<PjOrder> orders = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())).collect(Collectors.toList());
+					if (!orders.isEmpty()) {
+						corpBuySingular1.setNum(new BigDecimal(orders.size()));
+						corpBuySingular1.setNumber(orders.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add));
+						corpBuySingular1.setDate(orders.get(0).getBusinesDate());
+					}
+				}
+				corpBuySingularList.add(corpBuySingular1);
+			}
+		}
+		List<String> list = new ArrayList<>();
+		list.add("0次");
+		list.add("1次");
+		list.add("2-3次");
+		list.add("4-5次");
+		list.add("6-10次");
+		list.add("10次以上");
+		List<Long> numberList = new ArrayList<>();
+		if (!corpBuySingularList.isEmpty()) {
+			numberList.add(corpBuySingularList.stream().filter(e -> e.getNum().compareTo(new BigDecimal("0")) == 0).count());
+			numberList.add(corpBuySingularList.stream().filter(e -> e.getNum().compareTo(new BigDecimal("1")) == 0).count());
+			numberList.add(corpBuySingularList.stream().filter(e -> e.getNum().compareTo(new BigDecimal("2")) == 0 ||
+				e.getNum().compareTo(new BigDecimal("3")) == 0).count());
+			numberList.add(corpBuySingularList.stream().filter(e -> e.getNum().compareTo(new BigDecimal("3")) == 0 ||
+				e.getNum().compareTo(new BigDecimal("4")) == 0).count());
+			numberList.add(corpBuySingularList.stream().filter(e -> e.getNum().compareTo(new BigDecimal("5")) >= 0 ||
+				e.getNum().compareTo(new BigDecimal("10")) <= 0).count());
+			numberList.add(corpBuySingularList.stream().filter(e -> e.getNum().compareTo(new BigDecimal("10")) >= 0).count());
+		} else {
+			numberList.add(0L);
+			numberList.add(0L);
+			numberList.add(0L);
+			numberList.add(0L);
+			numberList.add(0L);
+			numberList.add(0L);
+		}
+		map.put("frequency", list);
+		map.put("number", numberList);
+		return R.data(map);
+	}
 }