Browse Source

20230410 17:58

wangzhuo 2 years ago
parent
commit
aacba9ea4c

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

@@ -788,4 +788,12 @@ public class OrderItems implements Serializable {
 	@TableField(exist = false)
 	private Integer showAll;
 
+	/**
+	 * 明细类型(主表明细,配件)
+	 */
+	@ApiModelProperty(value = "明细类型(主表明细,配件)")
+	private String detailType;
+
+
+
 }

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

@@ -79,6 +79,13 @@ public class OrderParts implements Serializable {
 	 */
 	@ApiModelProperty(value = "数量")
 	private BigDecimal goodNumber;
+
+	/**
+	 * 采购数量
+	 */
+	@ApiModelProperty(value = "采购数量")
+	private BigDecimal purchasesNumber;
+
 	/**
 	 * 金额
 	 */

+ 5 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/OrderItems.java

@@ -701,4 +701,9 @@ public class OrderItems extends OrderBase {
 	@ApiModelProperty(value = "采购状态")
 	private String fudaPurchaseStatus;
 
+	/**
+	 * 明细类型(主表明细,配件)
+	 */
+	@ApiModelProperty(value = "明细类型(主表明细,配件)")
+	private String detailType;
 }

+ 10 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/enums/OrderTypeEnum.java

@@ -135,6 +135,16 @@ public enum OrderTypeEnum {
 	 */
 	FINANCING("RZ"),
 
+	/**
+	 * 配件
+	 */
+	PARTSTYPE("PJ"),
+
+	/**
+	 * 明细
+	 */
+	ITEMTYPE("MX"),
+
 	;
 
 	private final String type;

+ 2 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/vo/OrderVO.java

@@ -204,4 +204,6 @@ public class OrderVO extends Order {
 	private String url;
 	private String pageStatus;
 	private String pageLabel;
+
+
 }

+ 20 - 8
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java

@@ -1345,11 +1345,11 @@ public class ExportOrderController extends BladeController {
 		}
 		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(orderItems.getCorpId()), OrderItems::getCorpId, orderItems.getCorpId());//供应商
 
-		if(orderItems.getShowAll() == 0) {//0代表不显示全部
+		if(ObjectUtils.isNotEmpty(orderItems.getShowAll()) && orderItems.getShowAll() == 0) {//0代表不显示全部
 			lambdaQueryWrapper.eq(OrderItems::getFudaPurchaseStatus, "待采购");//采购状态
 			lambdaQueryWrapper.apply("order_quantity > purchase_quantity");//销售数量大于采购数量
 		}
-		lambdaQueryWrapper.orderByDesc(OrderItems::getId);
+		lambdaQueryWrapper.orderByAsc(OrderItems::getSort);
 		List<OrderItems> pages = orderItemsService.list(lambdaQueryWrapper);
 		List<OrderItems> orderItemsList = new ArrayList<>();
 		for (OrderItems orderItems_ : pages) {
@@ -1393,10 +1393,22 @@ public class ExportOrderController extends BladeController {
 				orderItems1.setCarry(orderItems_.getCarry());
 				orderItems1.setItemId(orderParts.getGoodId());
 				orderItems1.setCname(orderParts.getGoodName());
-				orderItems1.setPrice(orderParts.getPrice());
-				orderItems1.setActualQuantity(orderParts.getGoodNumber());
+				orderItems1.setPurchaseQuantity(orderParts.getPurchasesNumber());
 				orderItems1.setOrderQuantity(orderParts.getGoodNumber());
-				orderItems1.setAmount(orderParts.getAmout());
+
+				if (ObjectUtils.isNotNull(orderParts.getPurchasesNumber())) {
+					orderItems1.setActualQuantity(orderParts.getGoodNumber().subtract(orderParts.getPurchasesNumber()));
+				} else {
+					orderItems1.setActualQuantity(orderParts.getGoodNumber());
+				}
+				if (ObjectUtils.isNotNull(orderParts.getPrice())) {
+					orderItems1.setPrice(orderParts.getPrice());
+					orderItems1.setAmount(orderParts.getPrice().multiply(orderItems1.getActualQuantity()));
+				} else {
+					orderItems1.setPrice(orderParts.getPrice());
+					orderItems1.setAmount(orderParts.getPrice().multiply(orderItems1.getActualQuantity()));
+				}
+
 				orderItems1.setPriceCategory(orderParts.getGoodTypeName());
 				orderItems1.setEname(orderParts.getEname());
 				orderItems1.setPartsCost(orderParts.getPartsCost());
@@ -1429,11 +1441,11 @@ public class ExportOrderController extends BladeController {
 		}
 		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(orderItems.getCorpId()), OrderItems::getCorpId, orderItems.getCorpId());//供应商
 
-		if(orderItems.getShowAll() == 0) {//0代表不显示全部
+		if(ObjectUtils.isNotEmpty(orderItems.getShowAll()) && orderItems.getShowAll() == 0) {//0代表不显示全部
 			lambdaQueryWrapper.eq(OrderItems::getFudaPurchaseStatus, "待采购");//采购状态
 			lambdaQueryWrapper.apply("order_quantity > purchase_quantity");//销售数量大于采购数量
 		}
-		lambdaQueryWrapper.orderByDesc(OrderItems::getId);
+		lambdaQueryWrapper.orderByAsc(OrderItems::getSort);
 		List<OrderItems> pages = orderItemsService.list(lambdaQueryWrapper);
 		List<OrderItems> orderItemsList = new ArrayList<>();
 		for (OrderItems orderItems_ : pages) {
@@ -1478,7 +1490,7 @@ public class ExportOrderController extends BladeController {
 				orderItems1.setItemId(orderParts.getGoodId());
 				orderItems1.setCname(orderParts.getGoodName());
 				orderItems1.setPrice(orderParts.getPrice());
-				orderItems1.setActualQuantity(orderParts.getGoodNumber());
+				orderItems1.setPurchaseQuantity(orderParts.getPurchasesNumber());
 				orderItems1.setOrderQuantity(orderParts.getGoodNumber());
 				orderItems1.setAmount(orderParts.getAmout());
 				orderItems1.setPriceCategory(orderParts.getGoodTypeName());

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

@@ -5169,10 +5169,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		Order order_ = new Order();
 		List<OrderItems> orderItemsListAll = new ArrayList<>();
 		List<Order> orderListAll = new ArrayList<>();
+		Order order = null;
 		for (OrderItems items : itemsList) {
 			OrderItems orderItems = orderItemsMapper.selectById(items.getId());
 			if (ObjectUtils.isNotNull(orderItems)) {
-				Order order = baseMapper.selectById(orderItems.getPid());
+				order = baseMapper.selectById(orderItems.getPid());
 				if (ObjectUtils.isNotNull(order)) {
 					OrderItems orderItems_ = new OrderItems();
 					BeanUtil.copyProperties(orderItems, orderItems_);
@@ -5184,6 +5185,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					orderItems_.setId(null);
 					orderItems_.setBillType("CG");
 					orderItems_.setOrderQuantity(items.getOrderQuantity());
+					orderItems_.setDetailType(OrderTypeEnum.ITEMTYPE.getType());//明细
 
 					if (ObjectUtils.isNotNull(orderItems_.getCorpId())) {
 						CorpsDesc corpsDesc = corpsDescClient.getCorpId(orderItems_.getCorpId());
@@ -5211,8 +5213,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						orderItems_.setPrice(orderItems_.getPrice());
 						orderItems_.setAmount(orderItems_.getPrice().multiply(orderItems_.getActualQuantity()));
 					}
+					orderItemsListAll.add(orderItems_);
 
-					LambdaQueryWrapper<OrderParts> orderPartsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+					/*LambdaQueryWrapper<OrderParts> orderPartsLambdaQueryWrapper = new LambdaQueryWrapper<>();
 					orderPartsLambdaQueryWrapper.eq(OrderParts::getIsDeleted, 0)
 						.eq(OrderParts::getTenantId, AuthUtil.getTenantId())
 						.eq(OrderParts::getPid, orderItems.getId());
@@ -5238,6 +5241,49 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						orderItems1.setEname(orderParts.getEname());
 						orderItems1.setPartsCost(orderParts.getPartsCost());
 						orderItemsListAll.add(orderItems1);
+					}*/
+
+					orderListAll.add(order);
+				}
+			}else {
+				if (ObjectUtils.isNotNull(order)) {
+					OrderItems orderItems_ = new OrderItems();
+					BeanUtil.copyProperties(items, orderItems_);
+					orderItems_.setSrcOrderNo(order.getOrderNo());
+					orderItems_.setSrcId(order.getId());
+					orderItems_.setOrgOrderNo(order.getSysNo());
+					orderItems_.setSrcItemId(orderItems_.getId());
+					orderItems_.setPid(null);
+					orderItems_.setId(null);
+					orderItems_.setBillType("CG");
+					orderItems_.setOrderQuantity(items.getOrderQuantity());
+					orderItems_.setDetailType(OrderTypeEnum.PARTSTYPE.getType());//配件
+
+					if (ObjectUtils.isNotNull(orderItems_.getCorpId())) {
+						CorpsDesc corpsDesc = corpsDescClient.getCorpId(orderItems_.getCorpId());
+						if (ObjectUtils.isNotNull(corpsDesc)) {
+							orderItems_.setCorpName(corpsDesc.getCname());
+						}
+					}
+					if (ObjectUtils.isNotNull(orderItems_.getItemId())) {
+						GoodsDesc goodsDesc = goodsDescClient.getGoodsDescDetail(orderItems_.getItemId());
+						if (ObjectUtils.isNotNull(goodsDesc)) {
+							orderItems_.setCname(goodsDesc.getCname());
+							orderItems_.setCode(goodsDesc.getCode());
+						}
+					}
+
+					if (ObjectUtils.isNotNull(orderItems_.getPurchaseQuantity())) {
+						orderItems_.setActualQuantity(orderItems_.getOrderQuantity().subtract(orderItems_.getPurchaseQuantity()));
+					} else {
+						orderItems_.setActualQuantity(orderItems_.getOrderQuantity());
+					}
+					if (ObjectUtils.isNotNull(orderItems_.getPurchasePrice())) {
+						orderItems_.setPrice(orderItems_.getPurchasePrice());
+						orderItems_.setAmount(orderItems_.getPurchasePrice().multiply(orderItems_.getActualQuantity()));
+					} else {
+						orderItems_.setPrice(orderItems_.getPrice());
+						orderItems_.setAmount(orderItems_.getPrice().multiply(orderItems_.getActualQuantity()));
 					}
 					orderItemsListAll.add(orderItems_);
 					orderListAll.add(order);
@@ -5320,16 +5366,29 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (ObjectUtils.isNotNull(orderItemsList) && orderItemsList.size() > 0) {
 			List<Long> pidList = new ArrayList<>();
 			for (OrderItems orderItems : orderItemsList) {
-				if (orderItems.getOrderQuantity().equals(orderItems.getPurchaseQuantity())) {
-					orderItems.setFudaPurchaseStatus("采购完成");
-				}
 				orderItemsMapper.updateById(orderItems);
 				if (1 == order.getPurchaseStatusType()) {//排产中
-					//更新对应销售单明细采购数量
-					OrderItems srcItems = new OrderItems();
-					srcItems.setId(orderItems.getSrcItemId());
-					srcItems.setPurchaseQuantity(orderItems.getActualQuantity());
-					orderItemsMapper.updateById(srcItems);
+					if (ObjectUtils.isNotEmpty(orderItems.getDetailType())){
+						if (OrderTypeEnum.PARTSTYPE.getType().equals(orderItems.getDetailType())){
+							//更新对应配件明细采购数量
+							OrderParts srcItems = new OrderParts();
+							srcItems.setId(orderItems.getSrcItemId());
+							srcItems.setPurchasesNumber(orderItems.getActualQuantity());
+							orderPartsMapper.updateById(srcItems);
+						}else {
+							//更新对应销售单明细采购数量
+							OrderItems srcItems = new OrderItems();
+							srcItems.setId(orderItems.getSrcItemId());
+							srcItems.setPurchaseQuantity(orderItems.getActualQuantity());
+							orderItemsMapper.updateById(srcItems);
+						}
+					}else {
+						//更新对应销售单明细采购数量
+						OrderItems srcItems = new OrderItems();
+						srcItems.setId(orderItems.getSrcItemId());
+						srcItems.setPurchaseQuantity(orderItems.getActualQuantity());
+						orderItemsMapper.updateById(srcItems);
+					}
 				}
 
 				pidList.add(orderItems.getSrcId());

+ 2 - 2
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/component/impl/DefaultOrderSaveImpl.java

@@ -321,11 +321,11 @@ public class DefaultOrderSaveImpl implements IOrderSave {
 				// 出口的毛利额=销售价 * 汇率 - (采购价+配件价格)    毛利率 =毛利额/(采购单价+配件价格)
 				// 金额求和
 //				BigDecimal amount = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getPrice().multiply(y.getOrderQuantity())), BigDecimal::add);
-				BigDecimal amount = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getOutFactoryPrice().multiply(y.getOrderQuantity())), BigDecimal::add);
+				BigDecimal amount = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(ObjectUtils.isEmpty(y.getOutFactoryPrice()) ? BigDecimal.ZERO : y.getOutFactoryPrice().multiply(y.getOrderQuantity())), BigDecimal::add);
 				// 采购金额求和
 				BigDecimal purchaseAmount = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getPurchaseAmount().multiply(y.getOrderQuantity())), BigDecimal::add);
 				// 配件金额求和
-				BigDecimal partsPrice = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getPartsPrice().multiply(y.getOrderQuantity())), BigDecimal::add);
+				BigDecimal partsPrice = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(ObjectUtils.isEmpty(y.getPartsPrice()) ? BigDecimal.ZERO : y.getPartsPrice().multiply(y.getOrderQuantity())), BigDecimal::add);
 				// 毛利额
 				order.setGrossProfit(amount.multiply(order.getExchangeRate()).subtract((purchaseAmount.add(partsPrice))).setScale(2, RoundingMode.HALF_UP));
 				BigDecimal grossProfitRate = new BigDecimal(BigInteger.ZERO);