Kaynağa Gözat

2023年11月22日13:52:51

纪新园 1 yıl önce
ebeveyn
işleme
7366308628

+ 33 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IIntegralClient.java

@@ -0,0 +1,33 @@
+package org.springblade.purchase.sales.feign;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.ApiParam;
+import org.springblade.common.constant.LauncherConstant;
+import org.springblade.core.tool.api.R;
+import org.springblade.purchase.sales.entity.IntegralDetail;
+import org.springblade.purchase.sales.entity.OrderItems;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+@FeignClient(
+	value = LauncherConstant.APPLICATION_PURCHASE_SALES_NAME
+)
+public interface IIntegralClient {
+	String API_PREFIX = "/integralDetail";
+	String SAVE = API_PREFIX + "/add";
+	String SELECT_PAGE = API_PREFIX + "/selectPage";
+
+	@PostMapping(SAVE)
+	R submit(@RequestBody IntegralDetail integralDetail);
+
+	@GetMapping(SELECT_PAGE)
+	R<IPage<IntegralDetail>> slectPage(IPage<IntegralDetail> page, LambdaQueryWrapper<IntegralDetail> lambdaQueryWrapper);
+}

+ 8 - 4
blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescController.java

@@ -118,8 +118,11 @@ public class CorpsDescController extends BladeController {
 			String lists = Arrays.stream(ids.split(",")).distinct().collect(Collectors.joining(","));
 			updateUserList = userClient.selectUserIds(lists);
 		}
-		List<CorpsTypeDesc> corpsTypeDescList = corpsTypeDescService.list(new LambdaQueryWrapper<CorpsTypeDesc>()
-			.in(CorpsTypeDesc::getCorpId, corpIds));
+		List<CorpsTypeDesc> corpsTypeDescList = new ArrayList<>();
+		if (corpIds.size() > 0) {
+			corpsTypeDescList = corpsTypeDescService.list(new LambdaQueryWrapper<CorpsTypeDesc>()
+				.in(CorpsTypeDesc::getCorpId, corpIds));
+		}
 		List<Long> typeIdList = corpsTypeDescList.stream().map(CorpsTypeDesc::getCorpTypeId).collect(Collectors.toList());
 		List<CorpsType> corpsTypeList = new ArrayList<>();
 		if (CollectionUtil.isNotEmpty(typeIdList)) {
@@ -132,6 +135,7 @@ public class CorpsDescController extends BladeController {
 			List<User> finalUpdateUserList = updateUserList;
 			List<CorpsType> finalCorpsTypeList = corpsTypeList;
 			List<CorpsAddr> finalCorpsAddrList = corpsAddrList;
+			List<CorpsTypeDesc> finalCorpsTypeDescList = corpsTypeDescList;
 			pages.getRecords().forEach(item -> {
 				if (StringUtils.isNotBlank(item.getAdminProfiles())) {
 					StringBuilder adminProfilesName = new StringBuilder();
@@ -148,7 +152,7 @@ public class CorpsDescController extends BladeController {
 						item.setBelongCompany(corpsDescList.stream().filter(e -> e.getId().toString().equals(item.getBelongtocompany())).findFirst().get().getCname());
 					}
 				}
-				List<Long> corpsTypeDescList1 = corpsTypeDescList.stream().filter(e -> e.getCorpId().equals(item.getId()))
+				List<Long> corpsTypeDescList1 = finalCorpsTypeDescList.stream().filter(e -> e.getCorpId().equals(item.getId()))
 					.distinct().map(CorpsTypeDesc::getCorpTypeId).collect(Collectors.toList());
 				if (finalCorpsTypeList.size() > 0 && corpsTypeDescList1.size() > 0) {
 					String corpTypeName = finalCorpsTypeList.stream().filter(e -> corpsTypeDescList1.contains(e.getId()))
@@ -157,7 +161,7 @@ public class CorpsDescController extends BladeController {
 				}
 				if (!"577435".equals(AuthUtil.getTenantId())) {
 					//获取客户地址
-					if (finalCorpsAddrList.size()>0){
+					if (finalCorpsAddrList.size() > 0) {
 						List<CorpsAddr> corpsAddrs = finalCorpsAddrList.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
 						if (corpsAddrs.size() > 0) {
 							item.setAddr(corpsAddrs.get(0).getDetailedAddress());

+ 47 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/controller/BCorpsController.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
@@ -35,6 +36,7 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.los.basic.corps.entity.BCorps;
 import org.springblade.los.basic.corps.entity.BCorpsTypes;
 import org.springblade.los.basic.corps.service.IBCorpsService;
@@ -296,5 +298,50 @@ public class BCorpsController extends BladeController {
 		return bCorpsService.importBCorps(excelList);
 	}
 
+	/**
+	 * 分页 物流-基础资料-往来单位
+	 */
+	@GetMapping("/selectList")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入bCorps")
+	public R<IPage<BCorps>> selectList(BCorps bCorps, Query query) {
+		LambdaQueryWrapper<BCorps> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(BCorps::getTenantId, AuthUtil.getTenantId())
+			.eq(BCorps::getIsDeleted, 0)
+			.like(ObjectUtils.isNotNull(bCorps.getCode()), BCorps::getCode, bCorps.getCode())
+			.eq(ObjectUtils.isNotNull(bCorps.getStatus()), BCorps::getStatus, bCorps.getStatus())
+			.and(ObjectUtils.isNotNull(bCorps.getCnName()), i -> i.like(BCorps::getCnName, bCorps.getCnName()).or()
+				.like(BCorps::getEnName, bCorps.getCnName()).or().like(BCorps::getCode, bCorps.getCnName()))
+			.like(ObjectUtils.isNotNull(bCorps.getEnName()), BCorps::getEnName, bCorps.getEnName())
+			.like(ObjectUtils.isNotNull(bCorps.getUscc()), BCorps::getUscc, bCorps.getUscc())
+			.like(ObjectUtils.isNotNull(bCorps.getCnAddr()), BCorps::getCnAddr, bCorps.getCnAddr())
+			.like(ObjectUtils.isNotNull(bCorps.getCnAddr()), BCorps::getCnAddr, bCorps.getCnAddr())
+			.like(ObjectUtils.isNotNull(bCorps.getEnAddr()), BCorps::getEnAddr, bCorps.getEnAddr())
+			.like(ObjectUtils.isNotNull(bCorps.getCntyCode()), BCorps::getCntyCode, bCorps.getCntyCode())
+			.like(ObjectUtils.isNotNull(bCorps.getCntyName()), BCorps::getCntyName, bCorps.getCntyName())
+			.like(ObjectUtils.isNotNull(bCorps.getTel()), BCorps::getTel, bCorps.getTel())
+			.like(ObjectUtils.isNotNull(bCorps.getAdminProfiles()), BCorps::getAdminProfiles, bCorps.getAdminProfiles())
+			.apply(ObjectUtils.isNotNull(bCorps.getCorpType()), "find_in_set('" + bCorps.getCorpType() + "',corp_type)");
+		if (AuthUtil.getUserRole().contains("admin") || AuthUtil.getUserRole().contains("secondaryAdmin")) {
+			//管理员、次级管理员查看全部数据
+		} else {
+			lambdaQueryWrapper.apply("find_in_set('" + AuthUtil.getDeptId() + "',branch_id)");
+		}
+		lambdaQueryWrapper.orderByAsc(BCorps::getInitials);
+		IPage<BCorps> pages = bCorpsService.page(Condition.getPage(query), lambdaQueryWrapper);
+		for (BCorps item : pages.getRecords()) {
+			if (ObjectUtils.isNotNull(item.getExtendedData())) {
+				Gson gson = new Gson();
+				List<ExtendedData> list = gson.fromJson(item.getExtendedData(), new TypeToken<List<ExtendedData>>() {
+				}.getType());
+				if (ObjectUtils.isNotNull(list)) {
+					item.setExtendedDataArr(list);
+				} else {
+					item.setExtendedDataArr(new ArrayList<>());
+				}
+			}
+		}
+		return R.data(pages);
+	}
 
 }

+ 31 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/IntegralClient.java

@@ -0,0 +1,31 @@
+package org.springblade.purchase.sales.feign;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.purchase.sales.entity.IntegralDetail;
+import org.springblade.purchase.sales.service.IIntegralDetailService;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+@NonDS
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class IntegralClient implements IIntegralClient {
+
+	private IIntegralDetailService integralDetailService;
+
+
+	@Override
+	public R submit(IntegralDetail integralDetail) {
+		return R.data(integralDetailService.saveOrUpdate(integralDetail));
+	}
+
+	@Override
+	public R<IPage<IntegralDetail>> slectPage(IPage<IntegralDetail> page, LambdaQueryWrapper<IntegralDetail> lambdaQueryWrapper) {
+		return R.data(integralDetailService.page(page,lambdaQueryWrapper));
+	}
+}

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

@@ -511,7 +511,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (!order.getTradeType().equals(OrderTypeEnum.IMPORT.getType())) {
 			String status = sysClient.getParamService("rebateRate");
 			BigDecimal rebateRate = new BigDecimal(status).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP);
-			if (order.getAmount().multiply(rebateRate).compareTo(order.getThisUsedProfit()) >= 0) {
+			if (order.getOrderAmount().multiply(rebateRate).compareTo(order.getThisUsedProfit()) < 0) {
 				throw new RuntimeException("使用返利超限" + status + "%");
 			}
 			// 生成毛利润 毛利额

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

@@ -26,6 +26,8 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import org.springblade.client.entity.CorpsAttn;
+import org.springblade.client.entity.CorpsDesc;
 import org.springblade.common.annotation.RepeatSubmit;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.excel.util.ExcelUtil;
@@ -36,8 +38,12 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.purchase.sales.entity.IntegralDetail;
+import org.springblade.purchase.sales.entity.Order;
+import org.springblade.purchase.sales.feign.IIntegralClient;
 import org.springblade.salesPart.brand.service.IBrandFilesService;
 import org.springblade.salesPart.corps.service.ICorpsAttnService;
+import org.springblade.salesPart.corps.service.ICorpsDescService;
 import org.springblade.salesPart.entity.*;
 import org.springblade.salesPart.enums.OrderTypeEnum;
 import org.springblade.salesPart.excel.*;
@@ -47,10 +53,13 @@ import org.springblade.salesPart.order.service.IOrderService;
 import org.springblade.salesPart.vo.OrderStatistics;
 import org.springblade.salesPart.vo.OrderVO;
 import org.springblade.salesPart.vo.PjOrderStatisticsWeb;
+import org.springblade.system.entity.Tenant;
+import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.math.BigDecimal;
@@ -78,8 +87,11 @@ public class OrderController extends BladeController {
 	//获取用户信息
 	private final IUserClient iUserClient;
 	private final ICorpsAttnService corpsAttnService;
+	private final ICorpsDescService corpsDescService;
 	private final IGoodsFilesService goodsFilesService;
 	private final IBrandFilesService brandFilesService;
+	private final ISysClient sysClient;
+	private final IIntegralClient iIntegralClient;
 
 	/**
 	 * 销售详情
@@ -853,4 +865,104 @@ public class OrderController extends BladeController {
 		return orderService.todayIncome(order);
 	}
 
+	/**
+	 * 积分兑换记录
+	 */
+	@GetMapping("/integralExchangeRecord")
+	public R<IPage<IntegralDetail>> integralExchangeRecord(HttpServletRequest request, Query query, @RequestParam(value = "corpId", required = false) Long corpId) {
+		LambdaQueryWrapper<IntegralDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		if (corpId == null) {
+			if (ObjectUtils.isNull(request.getHeader("Blade-Auth"))) {
+				// 获取租户信息
+				R<Tenant> tenant = sysClient.getTenantByAppId(request.getHeader("appId"));
+				if (tenant.isSuccess() && ObjectUtils.isNotNull(tenant.getData())) {
+					lambdaQueryWrapper.eq(IntegralDetail::getTenantId, tenant.getData().getTenantId());
+				} else {
+					throw new RuntimeException("获取数据失败");
+				}
+			} else {
+				lambdaQueryWrapper.eq(IntegralDetail::getTenantId, AuthUtil.getTenantId());
+			}
+			if (AuthUtil.getUserRole().equals("客户")) {
+				PjCorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<PjCorpsAttn>()
+					.eq(PjCorpsAttn::getUserId, AuthUtil.getUserId())
+					.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+					.eq(PjCorpsAttn::getIsDeleted, 0));
+				if (ObjectUtils.isNull(corpsAttn)) {
+					throw new RuntimeException("未查到用户信息");
+				} else {
+					PjCorpsDesc corpsDesc = corpsDescService.getById(corpsAttn.getPid());
+					if (ObjectUtils.isNull(corpsDesc)) {
+						throw new RuntimeException("未查到用户信息");
+					} else {
+						corpId = corpsDesc.getId();
+					}
+				}
+			}
+		} else {
+			lambdaQueryWrapper.eq(IntegralDetail::getTenantId, AuthUtil.getTenantId());
+		}
+		lambdaQueryWrapper.eq(IntegralDetail::getCorpId, corpId)
+			.eq(IntegralDetail::getType, "积分兑换")
+			.ne(IntegralDetail::getIntegral, 0);
+		return iIntegralClient.slectPage(Condition.getPage(query), lambdaQueryWrapper);
+	}
+
+	/**
+	 * 积分获取记录
+	 */
+	@GetMapping("/integralRecord")
+	public R<IPage<IntegralDetail>> integralRecord(HttpServletRequest request, Query query, @RequestParam(value = "corpId", required = false) Long corpId) {
+		LambdaQueryWrapper<IntegralDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		if (corpId == null) {
+			if (ObjectUtils.isNull(request.getHeader("Blade-Auth"))) {
+				// 获取租户信息
+				R<Tenant> tenant = sysClient.getTenantByAppId(request.getHeader("appId"));
+				if (tenant.isSuccess() && ObjectUtils.isNotNull(tenant.getData())) {
+					lambdaQueryWrapper.eq(IntegralDetail::getTenantId, tenant.getData().getTenantId());
+				} else {
+					throw new RuntimeException("获取数据失败");
+				}
+			} else {
+				lambdaQueryWrapper.eq(IntegralDetail::getTenantId, AuthUtil.getTenantId());
+			}
+			if (AuthUtil.getUserRole().equals("客户")) {
+				PjCorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<PjCorpsAttn>()
+					.eq(PjCorpsAttn::getUserId, AuthUtil.getUserId())
+					.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+					.eq(PjCorpsAttn::getIsDeleted, 0));
+				if (ObjectUtils.isNull(corpsAttn)) {
+					throw new RuntimeException("未查到用户信息");
+				} else {
+					PjCorpsDesc corpsDesc = corpsDescService.getById(corpsAttn.getPid());
+					if (ObjectUtils.isNull(corpsDesc)) {
+						throw new RuntimeException("未查到用户信息");
+					} else {
+						corpId = corpsDesc.getId();
+					}
+				}
+			}
+		} else {
+			lambdaQueryWrapper.eq(IntegralDetail::getTenantId, AuthUtil.getTenantId());
+		}
+		lambdaQueryWrapper.eq(IntegralDetail::getCorpId, corpId)
+			.apply("find_in_set(type,'购买获取,退款退货')")
+			.ne(IntegralDetail::getIntegral, 0);
+		return iIntegralClient.slectPage(Condition.getPage(query), lambdaQueryWrapper);
+	}
+
+	/**
+	 * 消费记录
+	 */
+	@GetMapping("/consumptionRecords")
+	public R<IPage<PjOrder>> consumptionRecords(PjOrder order, Query query) {
+		LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+			.eq(PjOrder::getIsDeleted, 0)
+			.eq(PjOrder::getBsType, "XS")
+			.eq(PjOrder::getWhetherIntegral, "0")
+			.eq(PjOrder::getCustomerId, order.getCustomerId());
+		return R.data(orderService.page(Condition.getPage(query), lambdaQueryWrapper));
+	}
+
 }

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

@@ -38,6 +38,8 @@ import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.pay.tonglianPayment.entity.WechatMark;
 import org.springblade.pay.tonglianPayment.fegin.IPaymentClient;
+import org.springblade.purchase.sales.entity.IntegralDetail;
+import org.springblade.purchase.sales.feign.IIntegralClient;
 import org.springblade.salesPart.brand.service.IBrandFilesService;
 import org.springblade.salesPart.check.dto.PjAuditProecessDTO;
 import org.springblade.salesPart.check.entity.PjAuditPathsActs;
@@ -120,6 +122,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	private final ISettlementItemsService settlementItemsService;
 	private final SettlementMapper settlementMapper;
 	private final IPaymentClient paymentClient;
+	private final IIntegralClient iIntegralClient;
 	//消息
 	private final IMessageClient messageClient;
 	/**
@@ -393,6 +396,25 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					corpsDesc.setPointsBalance(corpsDesc.getPointsBalance().add(goodsDesc.getIntegral().multiply(item.getGoodsNum())));
 				}
 			}
+			IntegralDetail integralDetail = new IntegralDetail();
+			integralDetail.setCreateTime(new Date());
+			integralDetail.setCreateUserName(AuthUtil.getUserName());
+			integralDetail.setCreateUser(AuthUtil.getUserId());
+			integralDetail.setType("购买获取");
+			integralDetail.setSrcId(order.getId());
+			integralDetail.setSrcNo(order.getOrdNo());
+			integralDetail.setCorpId(corpsDesc.getId());
+			integralDetail.setCorpName(corpsDesc.getCname());
+			integralDetail.setIntegral(order.getTotalMoney());
+			integralDetail.setGoodsName(order.getGoodsNameJoin());
+			StringBuilder goodsId = new StringBuilder();
+			for (Long item: goodsIds){
+				goodsId.append(item).append(",");
+			}
+			if (goodsId.length() > 0) {
+				integralDetail.setGoodsId(goodsId.substring(0, goodsId.length() - 1));
+			}
+			iIntegralClient.submit(integralDetail);
 		}
 		if (reference != null) {
 			corpsDescMapper.updateById(reference);
@@ -460,6 +482,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				throw new SecurityException("未维护所属公司");
 			}
 			StringBuilder goodsName = new StringBuilder();
+			StringBuilder goodsIds = new StringBuilder();
 			StringBuilder retrieval = new StringBuilder();
 			for (PjOrderItems item : order.getOrderItemsList()) {
 				item.setBizType(order.getBsType());
@@ -487,6 +510,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				}
 				item.setBrandName(goodsDesc.getBrandName());
 				goodsName = goodsName.append(goodsDesc.getCname()).append(",");
+				goodsIds = goodsIds.append(goodsDesc.getId()).append(",");
 				retrieval = retrieval.append(goodsDesc.getCnameInt()).append(",");
 				orderItemsMapper.updateById(item);
 			}
@@ -514,6 +538,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			}
 			order.setSalesAmount(totalMoney);
 			order.setTotalMoney(totalMoney);
+			IntegralDetail integralDetail = new IntegralDetail();
+			integralDetail.setCreateTime(new Date());
+			integralDetail.setCreateUserName(AuthUtil.getUserName());
+			integralDetail.setCreateUser(AuthUtil.getUserId());
+			integralDetail.setType("积分兑换");
+			integralDetail.setSrcId(order.getId());
+			integralDetail.setSrcNo(order.getOrdNo());
+			integralDetail.setCorpId(corpsDesc.getId());
+			integralDetail.setCorpName(corpsDesc.getCname());
+			integralDetail.setIntegral(order.getTotalMoney());
+			integralDetail.setGoodsName(order.getGoodsNameJoin());
+			if (goodsIds.length() > 0) {
+				integralDetail.setGoodsId(goodsIds.substring(0, goodsIds.length() - 1));
+			}
+			iIntegralClient.submit(integralDetail);
 		}
 		corpsDescMapper.updateById(corpsDesc);
 		baseMapper.updateById(order);
@@ -1266,6 +1305,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (order == null) {
 			throw new SecurityException("审批通过失败");
 		}
+		List<Long> goodsIds = new ArrayList<>();
 		if ("XS".equals(order.getBsType())) {
 			PjCorpsDesc corpsDesc = corpsDescMapper.selectById(order.getCustomerId());
 			if (corpsDesc == null) {
@@ -1287,7 +1327,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				.eq("pid", order.getId())
 				.eq("is_deleted", 0)
 				.eq("tenant_id", AuthUtil.getTenantId()));
-			List<Long> goodsIds = list.stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+			 goodsIds = list.stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 			List<PjGoodsDesc> pjGoodsDescList = goodsDescMapper.selectList(new LambdaQueryWrapper<PjGoodsDesc>()
 				.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
 				.eq(PjGoodsDesc::getIsDeleted, 0)
@@ -1500,13 +1540,31 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				}
 			}
 			order.setActualPaymentStatus(4);
+			IntegralDetail integralDetail = new IntegralDetail();
+			integralDetail.setCreateTime(new Date());
+			integralDetail.setCreateUserName(AuthUtil.getUserName());
+			integralDetail.setCreateUser(AuthUtil.getUserId());
+			integralDetail.setType("退款退货");
+			integralDetail.setSrcId(order.getId());
+			integralDetail.setSrcNo(order.getOrdNo());
+			integralDetail.setCorpId(order.getCustomerId());
+			integralDetail.setCorpName(order.getCustomerName());
+			integralDetail.setIntegral(order.getTotalMoney());
+			integralDetail.setGoodsName(order.getGoodsNameJoin());
+			StringBuilder goodsId = new StringBuilder();
+			for (Long item: goodsIds){
+				goodsId.append(item).append(",");
+			}
+			if (goodsId.length() > 0) {
+				integralDetail.setGoodsId(goodsId.substring(0, goodsId.length() - 1));
+			}
+			iIntegralClient.submit(integralDetail);
 		} else {
 			order.setStatus("待确认");
 		}
 
 		order.setCheckStatus("审核完成");
 		baseMapper.updateById(order);
-
 		return R.success("操作成功");
 	}
 

+ 6 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java

@@ -418,7 +418,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					gdShip.setDate(date1);
 					if (goodsNames.length() > 8) {
 						gdShip.setGoodsNames(goodsNames.substring(0, 8));
-					}else{
+					} else {
 						gdShip.setGoodsNames(goodsNames.toString());
 					}
 					if (gdShip.getCustomerName().length() > 8) {
@@ -576,6 +576,9 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 
 				PjStockDesc stockOne = iStockDescService.getOne(lambdaQueryWrapper);
 				if (ObjectUtil.isNotEmpty(stockOne)) {
+					if (stockOne.getBalanceQuantity().compareTo(item.getSendNum()) < 0) {
+						throw new RuntimeException("库存不足,出库失败");
+					}
 					stockOne.setBalanceQuantity(stockOne.getBalanceQuantity().subtract(item.getSendNum()));
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
 					stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(item.getSendNum().multiply(stockOne.getInventoryCostPrice())));
@@ -1723,9 +1726,9 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOneR.setInventoryAmount(stockOneR.getInventoryAmount().subtract(orderItems.getGoodsNum()
 						.multiply(stockOneR.getInventoryCostPrice())));
 					if (stockOneR.getInventoryAmount().compareTo(new BigDecimal("0.00")) == 0 ||
-						stockOneR.getBalanceQuantity().compareTo(new BigDecimal("0.00")) == 0){
+						stockOneR.getBalanceQuantity().compareTo(new BigDecimal("0.00")) == 0) {
 						stockOneR.setInventoryCostPrice(new BigDecimal("0.00"));
-					}else{
+					} else {
 						stockOneR.setInventoryCostPrice(stockOneR.getInventoryAmount().divide(stockOneR.getBalanceQuantity(), 2, RoundingMode.HALF_UP));
 					}
 					stockOneR.setDot("");