Browse Source

2024年4月28日08:43:01

纪新园 1 year ago
parent
commit
499534c0f1

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

@@ -92,6 +92,16 @@ public class SaleDetailDto {
 	@ExcelProperty(value = "金额")
 	private BigDecimal subTotalMoney;
 	/**
+	 * 运费
+	 */
+	@ExcelProperty(value = "运费")
+	private BigDecimal freight;
+	/**
+	 * 余额
+	 */
+	@ExcelProperty(value = "余额")
+	private BigDecimal balanceAmount;
+	/**
 	 * 成本
 	 */
 	@ExcelProperty(value = "成本")

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

@@ -186,6 +186,7 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 			goodsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 			goodsDesc.setTenantId(AuthUtil.getTenantId());
 			goodsDesc.setSalesCompanyName(iSysClient.getDeptName(goodsDesc.getSalesCompanyId()).getData());
+			goodsDesc.setCnameInt(getCnameInt(goodsDesc.getCname()));
 			baseMapper.updateById(goodsDesc);
 		}
 		this.saveType(goodsDesc.getId(), goodsDesc.getGoodsTypeId());
@@ -479,6 +480,7 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 				if (balanceQuantity.compareTo(new BigDecimal("0")) != 0) {
 					goodsDesc.setWhether(null);
 				}
+				goodsDesc.setCnameInt(getCnameInt(goodsDesc.getCname()));
 				goodsDesc.setUpdateTime(new Date());
 				goodsDesc.setUpdateUser(AuthUtil.getUserId());
 				goodsDesc.setId(one.getId());

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

@@ -48,6 +48,7 @@
         po.storage_name AS storageName,
         poi.goods_no AS code,
         po.ord_no AS ordNo,
+        po.freight AS freight,
         DATE_FORMAT(po.busines_date,'%Y-%m-%d') AS businesDate,
         CASE
         po.actual_payment_status
@@ -118,7 +119,8 @@
             and FIND_IN_SET(po.`status`,'已发货,退款请核,已取消,已退款,售后中,已收货')
         </if>
         ORDER BY
-        po.busines_date
+        po.busines_date desc,
+        po.ord_no desc
     </select>
     <select id="saleDetailList" resultType="org.springblade.salesPart.dto.SaleDetailDto">
         SELECT
@@ -127,6 +129,7 @@
         po.storage_name AS storageName,
         poi.goods_no AS code,
         po.ord_no AS ordNo,
+        po.freight AS freight,
         DATE_FORMAT(po.busines_date,'%Y-%m-%d') AS businesDate,
         CASE
         po.actual_payment_status

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

@@ -201,7 +201,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 					}
 					pjCorpsDescs.add(pjCorpsDesc);
 					pjOrder.setActualPaymentStatus(2);
-				}else{
+				} else {
 					if (ObjectUtils.isNotNull(pjOrder.getPaymentAmountTl())) {
 						if (pjOrder.getPaymentAmountTl().add(item.getThisAmount()).compareTo(pjOrder.getTotalMoney()) > 0) {
 							throw new RuntimeException("当前结算金额大于订单金额");
@@ -285,7 +285,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 				item.setUpdateTime(new Date());
 				item.setUpdateUser(AuthUtil.getUserId());
 				item.setSettlmentAmount(new BigDecimal("0.00"));
-				PjOrder pjOrder = pjOrderList.stream().findFirst().orElse(null);
+				PjOrder pjOrder = pjOrderList.stream().filter(e -> e.getId().equals(item.getSrcParentId())).findFirst().orElse(null);
 				if (pjOrder == null) {
 					continue;
 				}
@@ -312,7 +312,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 					}
 					pjCorpsDescs.add(pjCorpsDesc);
 					pjOrder.setActualPaymentStatus(1);
-				}else{
+				} else {
 					if (ObjectUtils.isNotNull(pjOrder.getPaymentAmountTl())) {
 						pjOrder.setPaymentAmountTl(pjOrder.getPaymentAmountTl().subtract(item.getThisAmount()));
 					} else {

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

@@ -489,7 +489,35 @@ public class StatisticsServiceImpl implements IStatisticsService {
 	public R<IPage<SaleDetailDto>> saleDetail(SaleDetail saleDetailDto, IPage<SaleDetailDto> page) {
 		saleDetailDto.setTenantId(AuthUtil.getTenantId());
 		saleDetailDto.setSalesCompanyId(AuthUtil.getDeptId());
-		return R.data(orderItemsService.saleDetail(saleDetailDto, page));
+		IPage<SaleDetailDto> saleDetailDtoIPage = orderItemsService.saleDetail(saleDetailDto, page);
+		if (!saleDetailDtoIPage.getRecords().isEmpty()) {
+			String billNo = saleDetailDtoIPage.getRecords().stream().map(SaleDetailDto::getOrdNo).distinct().collect(Collectors.joining(","));
+			List<PjOrder> pjOrderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())
+				.apply("find_in_set(ord_no,'" + billNo + "')"));
+			for (PjOrder item : pjOrderList) {
+				List<SaleDetailDto> saleDetailDtoList = saleDetailDtoIPage.getRecords().stream()
+					.filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
+				if (!saleDetailDtoList.isEmpty()) {
+					BigDecimal amount = item.getPaymentAmountTl();
+					for (SaleDetailDto items : saleDetailDtoList) {
+						if (saleDetailDtoList.size() == 1) {
+							items.setSubTotalMoney(items.getSubTotalMoney().add(new BigDecimal("5.00")));
+						}
+						if (amount.compareTo(items.getSubTotalMoney()) >= 0) {
+							items.setBalanceAmount(amount.subtract(items.getSubTotalMoney()));
+							amount = amount.subtract(items.getSubTotalMoney());
+						} else {
+							items.setBalanceAmount(items.getSubTotalMoney().subtract(amount));
+							amount = new BigDecimal("0.00");
+						}
+					}
+				}
+			}
+		}
+		return R.data(saleDetailDtoIPage);
 	}
 
 	@Override
@@ -540,6 +568,34 @@ public class StatisticsServiceImpl implements IStatisticsService {
 	public List<SaleDetailDto> saleDetailExport(SaleDetail saleDetailDto) {
 		saleDetailDto.setTenantId(AuthUtil.getTenantId());
 		saleDetailDto.setSalesCompanyId(AuthUtil.getDeptId());
+		List<SaleDetailDto> saleDetailDtoIPage = orderItemsService.saleDetailList(saleDetailDto);
+		if (!saleDetailDtoIPage.isEmpty()) {
+			String billNo = saleDetailDtoIPage.stream().map(SaleDetailDto::getOrdNo).distinct().collect(Collectors.joining(","));
+			List<PjOrder> pjOrderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getTenantId, AuthUtil.getDeptId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())
+				.apply("find_in_set(ord_no,'" + billNo + "')"));
+			for (PjOrder item : pjOrderList) {
+				List<SaleDetailDto> saleDetailDtoList = saleDetailDtoIPage.stream()
+					.filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
+				if (!saleDetailDtoList.isEmpty()) {
+					BigDecimal amount = item.getPaymentAmountTl();
+					for (SaleDetailDto items : saleDetailDtoList) {
+						if (saleDetailDtoList.size() == 1) {
+							items.setSubTotalMoney(items.getSubTotalMoney().add(new BigDecimal("5.00")));
+						}
+						if (amount.compareTo(items.getSubTotalMoney()) >= 0) {
+							items.setBalanceAmount(amount.subtract(items.getSubTotalMoney()));
+							amount = amount.subtract(items.getSubTotalMoney());
+						} else {
+							items.setBalanceAmount(items.getSubTotalMoney().subtract(amount));
+							amount = new BigDecimal("0.00");
+						}
+					}
+				}
+			}
+		}
 		return orderItemsService.saleDetailList(saleDetailDto);
 	}
 }