Browse Source

2025年2月18日17:18:43

纪新园 11 months ago
parent
commit
d4dd2e1c6f

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

@@ -537,6 +537,12 @@ public class PjOrder implements Serializable {
 	private BigDecimal rebateAmount;
 
 	/**
+	 * 发票金额
+	 */
+	@ApiModelProperty(value = "发票金额")
+	private BigDecimal invoiceAmount;
+
+	/**
 	 * 默认不显示已完成
 	 */
 	@TableField(exist = false)

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

@@ -182,6 +182,18 @@ public class PjSettlement implements Serializable {
 	private String billType;
 
 	/**
+	 * 发票金额
+	 */
+	@ApiModelProperty(value = "发票金额")
+	private BigDecimal invoiceAmount;
+
+	/**
+	 * 发票号
+	 */
+	@ApiModelProperty(value = "发票号")
+	private String invoiceNo;
+
+	/**
 	 * 明细
 	 */
 	@TableField(exist = false)

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

@@ -160,5 +160,23 @@ public class PjSettlementItems implements Serializable {
 	@ApiModelProperty(value = "业务类型")
 	private String businesType;
 
+	/**
+	 * 发票金额
+	 */
+	@ApiModelProperty(value = "发票金额")
+	private BigDecimal invoiceAmount;
+
+	/**
+	 * 发票号
+	 */
+	@ApiModelProperty(value = "发票号")
+	private String invoiceNo;
+
+	/**
+	 * 发票日期
+	 */
+	@ApiModelProperty(value = "发票日期")
+	private Date invoiceDate;
+
 
 }

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

@@ -123,6 +123,12 @@ public class PjOrderExportExcelCG implements Serializable {
 	private Date updateTime;
 
 	/**
+	 * 商品名称拼接
+	 */
+	@ExcelProperty(value = "商品名称")
+	private String goodsNameJoin;
+
+	/**
 	 * 商品IDS
 	 */
 	@ExcelProperty(value = "商品IDS")

+ 7 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/excel/PjOrderExportExcelXS.java

@@ -22,6 +22,7 @@ import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.ContentRowHeight;
 import com.alibaba.excel.annotation.write.style.HeadRowHeight;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -174,6 +175,12 @@ public class PjOrderExportExcelXS implements Serializable {
 	private Date updateTime;
 
 	/**
+	 * 商品名称拼接
+	 */
+	@ExcelProperty(value = "商品名称")
+	private String goodsNameJoin;
+
+	/**
 	 * 商品IDS
 	 */
 	@ExcelProperty(value = "商品IDS")

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

@@ -326,6 +326,7 @@ public class OrderController extends BladeController {
 			}
 		}
 		List<PjOrder> pages = orderService.list(lambdaQueryWrapper);
+		List<PjOrderExportExcelXS> list = new ArrayList<>();
 		if (CollectionUtils.isNotEmpty(pages)) {
 			List<Long> userIds = new ArrayList<>();
 			List<Long> createUser = pages.stream().map(PjOrder::getCreateUser).filter(Objects::nonNull).distinct().collect(Collectors.toList());
@@ -344,46 +345,31 @@ public class OrderController extends BladeController {
 			if (ObjectUtils.isNotNull(user.toString())) {
 				userList = iUserClient.selectUserList(user.substring(0, user.length() - 1));
 			}
-			List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
-				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
-				.eq(PjOrderItems::getIsDeleted, 0)
-				.in(PjOrderItems::getPid, pages.stream().map(PjOrder::getId).distinct().collect(Collectors.toList())));
 			for (PjOrder item : pages) {
+				PjOrderExportExcelXS orderExportExcelXS = new PjOrderExportExcelXS();
+				BeanUtil.copyProperties(item,orderExportExcelXS);
 				if (ObjectUtil.isNotEmpty(userList)) {
 					if (ObjectUtils.isNotNull(item.getUpdateUser())) {
 						userList.stream().filter(e -> e.getId().equals(item.getUpdateUser()))
-							.findFirst().ifPresent(users -> item.setUpdateUserName(users.getRealName()));
+							.findFirst().ifPresent(users -> orderExportExcelXS.setUpdateUserName(users.getRealName()));
 					}
 					if (ObjectUtils.isNotNull(item.getCreateUser())) {
 						userList.stream().filter(e -> e.getId().equals(item.getCreateUser()))
-							.findFirst().ifPresent(users -> item.setCreateUserName(users.getRealName()));
+							.findFirst().ifPresent(users -> orderExportExcelXS.setCreateUserName(users.getRealName()));
 					}
-
 				}
-				List<Long> pjOrderItems = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId()))
-					.map(PjOrderItems::getGoodsId).filter(Objects::nonNull).collect(Collectors.toList());
-				item.setGoodsIds(pjOrderItems.stream().map(Object::toString).collect(Collectors.joining(",")));
-				if (item.getGoodsTotalNum().compareTo(item.getReturnsNumber()) == 0) {
-					item.setReturnsStatus("全退");
-				} else if (item.getGoodsTotalNum().compareTo(item.getReturnsNumber()) > 0 && new BigDecimal("0.00").compareTo(item.getReturnsNumber()) != 0) {
-					item.setReturnsStatus("部分");
+				if (1 == item.getActualPaymentStatus()) {
+					orderExportExcelXS.setPaymentStatus("未收款");
+				} else if (2 == item.getActualPaymentStatus()) {
+					orderExportExcelXS.setPaymentStatus("已收款");
+				} else if (3 == item.getActualPaymentStatus()) {
+					orderExportExcelXS.setPaymentStatus("尾款");
+				} else if (4 == item.getActualPaymentStatus()) {
+					orderExportExcelXS.setPaymentStatus("已退款");
 				} else {
-					item.setReturnsStatus("无");
+					orderExportExcelXS.setPaymentStatus("-");
 				}
-			}
-		}
-		List<PjOrderExportExcelXS> list = BeanUtil.copy(pages, PjOrderExportExcelXS.class);
-		for (PjOrderExportExcelXS item : list) {
-			if (1 == item.getActualPaymentStatus()) {
-				item.setPaymentStatus("待付款");
-			} else if (2 == item.getActualPaymentStatus()) {
-				item.setPaymentStatus("已付款");
-			} else if (3 == item.getActualPaymentStatus()) {
-				item.setPaymentStatus("尾款");
-			} else if (4 == item.getActualPaymentStatus()) {
-				item.setPaymentStatus("已退款");
-			} else {
-				item.setPaymentStatus("-");
+				list.add(orderExportExcelXS);
 			}
 		}
 		if ("XS".equals(order.getBsType())) {
@@ -1481,4 +1467,14 @@ public class OrderController extends BladeController {
 		return R.data(mapList);
 	}
 
+	/**
+	 * 单据复制
+	 */
+	@GetMapping("/copy")
+	@ApiOperationSupport(order = 8)
+	@RepeatSubmit
+	public R copy(@RequestParam Long id) {
+		return orderService.copy(id);
+	}
+
 }

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

@@ -271,9 +271,9 @@ public class ReturnsController {
 		List<PjOrderExportExcelReturnsXS> list1 = BeanUtil.copy(list, PjOrderExportExcelReturnsXS.class);
 		for (PjOrderExportExcelReturnsXS item : list1) {
 			if (1 == item.getActualPaymentStatus()) {
-				item.setPaymentStatus("待付款");
+				item.setPaymentStatus("未收款");
 			} else if (2 == item.getActualPaymentStatus()) {
-				item.setPaymentStatus("已款");
+				item.setPaymentStatus("已款");
 			} else if (3 == item.getActualPaymentStatus()) {
 				item.setPaymentStatus("尾款");
 			} else if (4 == item.getActualPaymentStatus()) {

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

@@ -258,9 +258,9 @@ public class ShareSalesController {
 		List<PjOrderExportExcelXS> list = BeanUtil.copy(pages, PjOrderExportExcelXS.class);
 		for (PjOrderExportExcelXS item : list) {
 			if (1 == item.getActualPaymentStatus()) {
-				item.setPaymentStatus("待付款");
+				item.setPaymentStatus("未收款");
 			} else if (2 == item.getActualPaymentStatus()) {
-				item.setPaymentStatus("已款");
+				item.setPaymentStatus("已款");
 			} else if (3 == item.getActualPaymentStatus()) {
 				item.setPaymentStatus("尾款");
 			} else if (4 == item.getActualPaymentStatus()) {

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

@@ -127,9 +127,9 @@
         CASE
         po.actual_payment_status
         WHEN '1' THEN
-        '待付款'
+        '未收款'
         WHEN '2' THEN
-        '已款'
+        '已款'
         WHEN '3' THEN
         '尾款'
         WHEN '4' THEN
@@ -341,9 +341,9 @@
         CASE
         po.actual_payment_status
         WHEN '1' THEN
-        '待付款'
+        '未收款'
         WHEN '2' THEN
-        '已款'
+        '已款'
         WHEN '3' THEN
         '尾款'
         WHEN '4' THEN

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

@@ -273,4 +273,6 @@ public interface IOrderService extends IService<PjOrder> {
 	R<List<PjOrderItems>> importItemFinancing(List<InventoryFinancingExcel> excelList);
 
 	PjOrder appShareDetail(PjOrder order);
+
+	R copy(Long id);
 }

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

@@ -4712,6 +4712,43 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		return detail;
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R copy(Long id) {
+		PjOrder order = new PjOrder();
+		PjOrder detail = baseMapper.selectById(id);
+		BeanUtil.copyProperties(detail,order);
+		order.setId(null);
+		order.setStatus("");
+		order.setXcxStatus("");
+		order.setOriginalStatus("");
+		order.setCheckStatus("");
+		order.setPaymentAmountTl(new BigDecimal("0.00"));
+		order.setActualPaymentStatus(1);
+		order.setReturnsAmount(new BigDecimal("0.00"));
+		order.setReturnsNumber(new BigDecimal("0"));
+		order.setReturnsStatus("");
+		order.setOrdNo("");
+		order.setSrcOrdNo("");
+		order.setDeliveryBusinesDate(null);
+		//获得销售明细
+		LambdaQueryWrapper<PjOrderItems> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		itemsLambdaQueryWrapper.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+			.eq(PjOrderItems::getIsDeleted, 0)
+			.eq(PjOrderItems::getPid, id);
+		List<PjOrderItems> list = orderItemsService.list(itemsLambdaQueryWrapper);
+		for (PjOrderItems item : list){
+			item.setId(null);
+			item.setUpdateTime(null);
+			item.setUpdateUser(0L);
+			item.setPid(0L);
+			item.setReturnsAmount(new BigDecimal("0.00"));
+			item.setReturnsNumber(new BigDecimal("0"));
+		}
+		order.setOrderItemsList(list);
+		return this.saveOrderMessage(order);
+	}
+
 	/**
 	 * 保存订单信息
 	 */

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

@@ -108,6 +108,10 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 			BigDecimal thisAmount = settlement.getSettlementItemsList().stream().map(PjSettlementItems::getThisAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			BigDecimal thisRefundAmount = settlement.getSettlementItemsList().stream().map(PjSettlementItems::getThisRefundAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			settlement.setAmount(thisAmount.subtract(thisRefundAmount));
+			settlement.setInvoiceAmount(settlement.getSettlementItemsList().stream().map(PjSettlementItems::getInvoiceAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add));
+			settlement.setInvoiceNo(settlement.getSettlementItemsList().stream().map(PjSettlementItems::getInvoiceNo)
+				.collect(Collectors.joining(",")));
 			for (PjSettlementItems item : settlement.getSettlementItemsList()) {
 				stringBuilder.append(item.getSrcBillNo()).append(",");
 				if (item.getId() == null) {
@@ -157,6 +161,10 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 			if (ObjectUtils.isNull(ids) || ids.isEmpty()) {
 				throw new RuntimeException("未找到订单");
 			}
+			settlement.setInvoiceAmount(settlement.getSettlementItemsList().stream().map(PjSettlementItems::getInvoiceAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add));
+			settlement.setInvoiceNo(settlement.getSettlementItemsList().stream().map(PjSettlementItems::getInvoiceNo)
+				.collect(Collectors.joining(",")));
 			List<PjOrder> pjOrderList = orderService.list(new LambdaQueryWrapper<PjOrder>().in(PjOrder::getId, ids));
 			if (ObjectUtils.isNull(pjOrderList) || pjOrderList.isEmpty()) {
 				throw new RuntimeException("未找到订单信息");
@@ -244,6 +252,11 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 				}
 				pjOrder.setUpdateTime(new Date());
 				pjOrder.setUpdateUser(AuthUtil.getUserId());
+				if (pjOrder.getInvoiceAmount().add(item.getInvoiceAmount()).compareTo(pjOrder.getTotalMoney()) > 0) {
+					throw new RuntimeException("当前发票金额大于订单金额");
+				} else {
+					pjOrder.setInvoiceAmount(pjOrder.getInvoiceAmount().add(item.getInvoiceAmount()));
+				}
 				orderArrayList.add(pjOrder);
 			}
 			corpsDescService.updateBatchById(pjCorpsDescs);
@@ -352,8 +365,14 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 						throw new RuntimeException("数据错误,请删除明细重新添加");
 					}
 				}
+
 				pjOrder.setUpdateTime(new Date());
 				pjOrder.setUpdateUser(AuthUtil.getUserId());
+				if (pjOrder.getInvoiceAmount().subtract(item.getInvoiceAmount()).compareTo(pjOrder.getTotalMoney()) < 0) {
+					throw new RuntimeException("销售单据已开发票金额不能小于零");
+				} else {
+					pjOrder.setInvoiceAmount(pjOrder.getInvoiceAmount().subtract(item.getInvoiceAmount()));
+				}
 				orderArrayList.add(pjOrder);
 			}
 			corpsDescService.updateBatchById(pjCorpsDescs);