Browse Source

2022年8月24日18点16分

纪新园 3 years ago
parent
commit
87263210e6

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.trade.purchase.order.enums.OrderTypeEnum;
@@ -288,6 +289,13 @@ public class ExportOrderController extends BladeController {
 		if (order.getId() == null){
 			return R.fail(500,"参数缺失");
 		}
+		/*Order order1 = orderService.getById(order.getId());
+		if (ObjectUtils.isNotNull(order1)){
+			List<Order> orderList = orderService.list(new QueryWrapper<Order>().eq("org_order_no",order1.getOrderNo()).eq("bill_type","CG").eq("is_deleted",0).eq("tenant_id",SecureUtil.getTenantId()));
+			if (0 != orderList.size()){
+				return R.fail(500,"该销售已生成采购订单,不允许重复生成");
+			}
+		}*/
 		order.setBillType(OrderTypeEnum.PURCHASE.getType());
 		order.setTradeType(OrderTypeEnum.EXPORT.getType());
 		return R.data(orderService.createMarket(order));

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

@@ -16,6 +16,7 @@
  */
 package org.springblade.purchase.sales.service.impl;
 
+import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -52,6 +53,7 @@ import org.springblade.purchase.sales.excel.*;
 import org.springblade.purchase.sales.mapper.OrderFeesMapper;
 import org.springblade.purchase.sales.mapper.OrderItemsMapper;
 import org.springblade.purchase.sales.mapper.OrderMapper;
+import org.springblade.purchase.sales.mapper.OrderPartsMapper;
 import org.springblade.purchase.sales.service.IOrderService;
 import org.springblade.purchase.sales.vo.*;
 import org.springblade.stock.entity.StockGoods;
@@ -121,6 +123,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	private final IMessageClient messageClient;//消息
 	private final IFeesDescClient feesDescClient;//费用
 
+	private final OrderPartsMapper orderPartsMapper;
+
 	@Override
 	public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
 		List<OrderVO> orderVOList = baseMapper.selectOrderPage(page, order);
@@ -264,7 +268,7 @@ 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));
+			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());
 			if (CollectionUtils.isNotEmpty(list) && order.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())) {
@@ -486,6 +490,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		List<OrderItems> orderItemsList = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", order.getId()).eq("good_type", 0).eq("is_deleted", 0).groupBy("corp_id"));
 		if (CollectionUtils.isNotEmpty(orderItemsList)) {
 			orderItemsList.forEach(item -> {
+
 				Order selectById = baseMapper.selectById(order.getId());
 				if (selectById == null) {
 					throw new RuntimeException("找不到单据信息");
@@ -510,7 +515,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						selectById.setOrgOrderNo((selectById.getOrderNo()));
 					}
 					selectById.setOrderNo((String) clientBillNo.getData());
-				}else {
+				} else {
 					throw new SecurityException("未找到供应商信息");
 				}
 				selectById.setCorpAttn(corpMessage.getData().getAttn());
@@ -549,6 +554,26 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					.eq("good_type", 0).eq("corp_id", item.getCorpId()));
 				if (CollectionUtils.isNotEmpty(orderList)) {
 					orderList.forEach(items -> {
+
+						List<OrderParts> orderPartsList = orderPartsMapper.selectList(new QueryWrapper<OrderParts>().eq("pid", items.getId()).eq("is_deleted", 0)
+							.eq("tenant_id", AuthUtil.getTenantId()).eq("status", 0));
+						for (OrderParts orderParts : orderPartsList) {
+							OrderItems orderItems = new OrderItems();
+							orderItems.setPrice(orderParts.getPrice());
+							orderItems.setAmount(orderParts.getAmout());
+							orderItems.setPriceCategory(orderParts.getGoodTypeName());
+							orderItems.setItemId(orderParts.getGoodId());
+							orderItems.setOrderQuantity(orderParts.getGoodNumber());
+							orderItems.setPurchaseAmount(orderParts.getAmout());
+							orderItems.setTenantId(AuthUtil.getTenantId());
+							orderItems.setCreateUser(AuthUtil.getUserId());
+							orderItems.setCreateTime(new Date());
+							orderItems.setCorpId(orderParts.getCorpId());
+							orderItems.setCorpName(orderParts.getCorpName());
+							orderItems.setPurchaseCost(orderParts.getPartsCost());
+							orderItems.setPid(selectById.getId());
+							orderItemsService.save(orderItems);
+						}
 						items.setAmount(items.getPurchaseAmount().multiply(items.getOrderQuantity()));
 						items.setPid(selectById.getId());
 						items.setId(null);
@@ -568,7 +593,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					//应付今额
 					selectById.setDebitAmount(itemTotalAmount);
 					//国内订单需要体积和重量
-					if (StringUtils.isNotBlank(selectById.getTradeType()) && selectById.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())){
+					if (StringUtils.isNotBlank(selectById.getTradeType()) && selectById.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())) {
 						//总重量求和
 						selectById.setCntrVolumn(orderList.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getCntrVolumn().multiply(y.getOrderQuantity())), BigDecimal::add));
 						//总体积求和
@@ -577,7 +602,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					baseMapper.updateById(selectById);
 				}
 			});
-		}else {
+		} else {
 			throw new SecurityException("订单明细为空,生成采购单失败");
 		}
 
@@ -794,7 +819,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			List<AuditPathsLevels> auditPathsLevels;
 			if (checkFlag == 1) {
 				auditPathsLevels = iCheckClient.listLevelsByActId(4, "status");
-			} else if (checkFlag == 2){
+			} else if (checkFlag == 2) {
 				auditPathsLevels = iCheckClient.listLevelsByActId(3, "status");
 			} else {
 				auditPathsLevels = iCheckClient.listLevelsByActId(13, "status");
@@ -936,7 +961,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 				/**===========================End 审核通过生成账单 发送消息=============================*/
 				//todo 国内贸易销售订单审批通过自动生成账单 同时给角色为财务的用户推送消息
-				this.paymentApply(order,"收费","销售");
+				this.paymentApply(order, "收费", "销售");
 				/**===========================start 审核通过操作返利信息=============================*/
 				//不需要计算返利
 				if ((order.getThisUsedProfit() == null || order.getThisUsedProfit().compareTo(new BigDecimal("0")) == 0) && (order.getCreateProfit() == null || order.getCreateProfit().compareTo(new BigDecimal("0")) == 0)) {
@@ -1003,7 +1028,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 		} else if (OrderTypeEnum.DEALER.getType().equals(order.getTradeType())) {
 			if (OrderTypeEnum.SALES.getType().equals(order.getBillType())) {
-				this.paymentApply(order,"收费","销售");
+				this.paymentApply(order, "收费", "销售");
 			}
 		}
 
@@ -1432,7 +1457,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	 * 统计分析 销售明细对账
 	 */
 	@Override
-	public IPage<OrderReconciliationVo> reconciliationDetailed(IPage<OrderReconciliationVo> page,OrderReconciliationVo order){
+	public IPage<OrderReconciliationVo> reconciliationDetailed(IPage<OrderReconciliationVo> page, OrderReconciliationVo order) {
 		return page.setRecords(baseMapper.reconciliationDetailed(page, order));
 	}
 
@@ -1440,7 +1465,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	 * 销售明细对账导出
 	 */
 	@Override
-	public List<OrderDetailedExcel> orderDetailedExport(OrderReconciliationVo order){
+	public List<OrderDetailedExcel> orderDetailedExport(OrderReconciliationVo order) {
 		return baseMapper.orderDetailedExport(order);
 	}
 
@@ -1478,7 +1503,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (order.getStatus() == 3) {
 			throw new SecurityException("订单已审批通过请勿重复审批");
 		}
-		if (order.getGenerate() == 1){
+		if (order.getGenerate() == 1) {
 			throw new SecurityException("订单已生成销售订单请勿重复审批");
 		}
 		//修改采购合同信息
@@ -1488,7 +1513,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		baseMapper.updateOrderMessage(purchase);
 		//生成平台销售订单
 		Order market = new Order();
-		BeanUtil.copy(order,market);
+		BeanUtil.copy(order, market);
 		market.setId(null);//id置为空
 		market.setSrcId(order.getId());//来源id
 		market.setSrcOrderNo(order.getOrderNo());//来源单号
@@ -1520,12 +1545,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		baseMapper.insert(market);
 		//保存销售订单明细信息
 		LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(OrderItems::getPid,order.getId());
-		lambdaQueryWrapper.eq(OrderItems::getIsDeleted,0);
-		lambdaQueryWrapper.eq(OrderItems::getTenantId,order.getTenantId());
+		lambdaQueryWrapper.eq(OrderItems::getPid, order.getId());
+		lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0);
+		lambdaQueryWrapper.eq(OrderItems::getTenantId, order.getTenantId());
 		List<OrderItems> orderItemsList = orderItemsMapper.selectList(lambdaQueryWrapper);
-		if (CollectionUtils.isNotEmpty(orderItemsList)){
-			orderItemsList.stream().forEach(item ->{
+		if (CollectionUtils.isNotEmpty(orderItemsList)) {
+			orderItemsList.stream().forEach(item -> {
 				item.setId(null);
 				item.setStatus(0);
 				item.setPid(market.getId());
@@ -1539,7 +1564,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				stockGoods.setTradeType(market.getTradeType());
 				stockGoods.setStorageId(market.getStorageId());
 				StockGoods stock = stockGoodsClient.getOneStock(stockGoods);
-				if (stock != null){
+				if (stock != null) {
 					item.setStorageQuantity(stock.getSurplusRouteQuantity());
 				}
 				orderItemsMapper.insert(item);
@@ -1547,7 +1572,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		}
 
 		// 生成毛利润 毛利额
-		List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", market.getId()).eq("good_type",0).eq("is_deleted", 0));
+		List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", market.getId()).eq("good_type", 0).eq("is_deleted", 0));
 		Order orderMessage = new Order();
 		orderMessage.setId(market.getId());
 		if (CollectionUtils.isNotEmpty(list)) {
@@ -1654,22 +1679,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 	/**
 	 * 订单生成账单 并且推送财务消息
-	 * @param order  订单信息
-	 * @param billType  货款类型: 申请 收费 付费
+	 *
+	 * @param order    订单信息
+	 * @param billType 货款类型: 申请 收费 付费
 	 * @param itemType 付款类型: 采购 销售 收货 发货
 	 */
-	public void paymentApply(Order order,String billType,String itemType){
+	public void paymentApply(Order order, String billType, String itemType) {
 		//获取所属公司中文名
-		if (order.getBelongToCorpId() != null){
+		if (order.getBelongToCorpId() != null) {
 			R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getBelongToCorpId());
-			if (corpMessage.isSuccess() && corpMessage.getData() != null){
+			if (corpMessage.isSuccess() && corpMessage.getData() != null) {
 				order.setBelongToCorpName(corpMessage.getData().getCname());
 			}
 		}
 		//获取客户中文名
-		if (order.getCorpId() != null){
+		if (order.getCorpId() != null) {
 			R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getCorpId());
-			if (corpMessage.isSuccess() && corpMessage.getData() != null){
+			if (corpMessage.isSuccess() && corpMessage.getData() != null) {
 				order.setCorpsName(corpMessage.getData().getCname());
 			}
 		}
@@ -1689,27 +1715,27 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		List<Items> itemsList = new ArrayList<>();
 		//获取订单明细信息
 		LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		orderItemsLambdaQueryWrapper.eq(OrderItems::getIsDeleted,0);
-		orderItemsLambdaQueryWrapper.eq(OrderItems::getPid,order.getId());
-		orderItemsLambdaQueryWrapper.eq(OrderItems::getGoodType,0);
+		orderItemsLambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0);
+		orderItemsLambdaQueryWrapper.eq(OrderItems::getPid, order.getId());
+		orderItemsLambdaQueryWrapper.eq(OrderItems::getGoodType, 0);
 		List<OrderItems> orderItemsList = orderItemsService.list(orderItemsLambdaQueryWrapper);
-		if (CollectionUtils.isNotEmpty(orderItemsList)){
+		if (CollectionUtils.isNotEmpty(orderItemsList)) {
 			amount = amount.add(orderItemsList.stream().map(OrderItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 			quantity = quantity.add(orderItemsList.stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
 		}
 		//获取订单收款信息
 		LambdaQueryWrapper<OrderFees> orderFeesLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		orderFeesLambdaQueryWrapper.eq(OrderFees::getIsDeleted,0);
-		orderFeesLambdaQueryWrapper.eq(OrderFees::getPid,order.getId());
-		orderFeesLambdaQueryWrapper.eq(OrderFees::getFeesType,1);
+		orderFeesLambdaQueryWrapper.eq(OrderFees::getIsDeleted, 0);
+		orderFeesLambdaQueryWrapper.eq(OrderFees::getPid, order.getId());
+		orderFeesLambdaQueryWrapper.eq(OrderFees::getFeesType, 1);
 		List<OrderFees> orderFeesList = orderFeesService.list(orderFeesLambdaQueryWrapper);
-		if (CollectionUtils.isNotEmpty(orderFeesList)){
+		if (CollectionUtils.isNotEmpty(orderFeesList)) {
 			amount = amount.add(orderFeesList.stream().map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 		}
-		if (order.getThisUsedProfit() != null){
+		if (order.getThisUsedProfit() != null) {
 			amount = amount.subtract(order.getThisUsedProfit());
 		}
-		if (quantity.compareTo(BigDecimal.ZERO) > 0){
+		if (quantity.compareTo(BigDecimal.ZERO) > 0) {
 			price = amount.divide(quantity, 5, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP);
 		}
 		Items items = new Items();
@@ -1731,7 +1757,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		//items.setSrcFeesId(orderItems.getId());
 		//获取费用id
 		R<FeesDesc> fees = feesDescClient.getFeesByName("货款");
-		if (fees.isSuccess() && fees.getData() != null){
+		if (fees.isSuccess() && fees.getData() != null) {
 			items.setCostType(fees.getData().getId().toString());
 		}
 		itemsList.add(items);
@@ -1796,17 +1822,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 		}*/
 		applyDTO.setItemsList(itemsList);
-		if (CollectionUtils.isNotEmpty(itemsList)){
+		if (CollectionUtils.isNotEmpty(itemsList)) {
 			//生成账单
 			R paymentApply = financeClient.paymentApply(applyDTO);
-			if (!paymentApply.isSuccess()){
+			if (!paymentApply.isSuccess()) {
 				throw new RuntimeException(paymentApply.getMsg());
 			}
 			//给角色为财务的人发送消息
 			R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
-			if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())){
+			if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
 				R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()));
-				if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())){
+				if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
 					for (User datum : userList.getData()) {
 						//循环发送消息
 						Message sendMessage = new Message();
@@ -1822,7 +1848,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						sendMessage.setUrl(order.getUrl());
 						sendMessage.setPageLabel(order.getPageLabel());
 						sendMessage.setPageStatus(order.getPageStatus());
-						sendMessage.setMessageBody(order.getBelongToCorpName()+" 您的客户:"+order.getCorpsName() + "的销售订单 "+ order.getOrderNo() +"审核通过,请查看");
+						sendMessage.setMessageBody(order.getBelongToCorpName() + " 您的客户:" + order.getCorpsName() + "的销售订单 " + order.getOrderNo() + "审核通过,请查看");
 						R save = messageClient.save(sendMessage);
 						if (!save.isSuccess()) {
 							throw new SecurityException("发送消息失败");