|
|
@@ -347,6 +347,179 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
return baseMapper.corpAnalysis(order);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void appUpdate(PjOrder order) {
|
|
|
+ if (order.getId() == null || ObjectUtils.isNotNull(order.getCustomerId())) {
|
|
|
+ throw new RuntimeException("缺少必要参数");
|
|
|
+ }
|
|
|
+ PjCorpsDesc corpsDesc = corpsDescMapper.selectById(order.getCustomerId());
|
|
|
+ if (corpsDesc == null) {
|
|
|
+ throw new RuntimeException("未查到客户信息");
|
|
|
+ }
|
|
|
+ PjCorpsDesc reference = null;
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc.getReferenceId())) {
|
|
|
+ reference = corpsDescMapper.selectById(corpsDesc.getReferenceId());
|
|
|
+ }
|
|
|
+ User user = null;
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc.getSalesmanId())) {
|
|
|
+ R<User> r = userClient.userInfoById(corpsDesc.getSalesmanId());
|
|
|
+ if (r.isSuccess()) {
|
|
|
+ user = r.getData();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<PjOrderItems> pjOrderItemsList = orderItemsMapper.selectList(new LambdaQueryWrapper<PjOrderItems>()
|
|
|
+ .eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjOrderItems::getIsDeleted, 0)
|
|
|
+ .eq(PjOrderItems::getPid, order.getId()));
|
|
|
+ if (pjOrderItemsList.size() > 0) {
|
|
|
+ List<Long> goodsIds = pjOrderItemsList.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)
|
|
|
+ .eq(PjGoodsDesc::getEnableOrNot, 0)
|
|
|
+ .in(PjGoodsDesc::getId, goodsIds));
|
|
|
+ for (PjOrderItems item : pjOrderItemsList) {
|
|
|
+ PjGoodsDesc goodsDesc = pjGoodsDescList.stream().filter(e -> e.getId().equals(item.getGoodsId())).findFirst().orElse(null);
|
|
|
+ if (goodsDesc != null) {
|
|
|
+ //业务员积分
|
|
|
+ if (user != null && ObjectUtils.isNotNull(goodsDesc.getSalesmanIntegral())) {
|
|
|
+ user.setPointsBalance(user.getPointsBalance().add(goodsDesc.getSalesmanIntegral().multiply(item.getGoodsNum())));
|
|
|
+ }
|
|
|
+ //推荐人积分
|
|
|
+ if (reference != null && ObjectUtils.isNotNull(goodsDesc.getReferenceIntegral())) {
|
|
|
+ reference.setPointsBalance(reference.getPointsBalance().add(goodsDesc.getReferenceIntegral().multiply(item.getGoodsNum())));
|
|
|
+ }
|
|
|
+ //客户门店积分
|
|
|
+ corpsDesc.setPointsBalance(corpsDesc.getPointsBalance().add(goodsDesc.getIntegral().multiply(item.getGoodsNum())));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (reference != null) {
|
|
|
+ corpsDescMapper.updateById(reference);
|
|
|
+ }
|
|
|
+ if (user != null) {
|
|
|
+ userClient.updateUser(user);
|
|
|
+ }
|
|
|
+ corpsDescMapper.updateById(corpsDesc);
|
|
|
+ baseMapper.updateById(order);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R integralExchange(PjOrder order) {
|
|
|
+ //客户名称
|
|
|
+ PjCorpsDesc corpsDesc = corpsDescMapper.selectById(order.getCustomerId());
|
|
|
+ order.setCustomerName(corpsDesc.getCname());
|
|
|
+
|
|
|
+ // 获取系统编号
|
|
|
+ R billNo = serialClient.getBillNo(order.getBsType(), order.getBsType(), order.getBsType());
|
|
|
+ if (billNo.getCode() != 200) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return R.fail(500, "生成系统编号失败");
|
|
|
+ }
|
|
|
+ if (order.getId() == null) {
|
|
|
+ if (ObjectUtils.isNull(order.getBillType())) {
|
|
|
+ if (ObjectUtils.isNotNull(order.getStorageId())) {
|
|
|
+ order.setBillType(0);
|
|
|
+ //仓库名称
|
|
|
+ order.setStorageName(storageDescMapper.selectById(order.getStorageId()).getCname());
|
|
|
+ } else {
|
|
|
+ order.setBillType(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ order.setWhetherIntegral("1");
|
|
|
+ order.setOrdNo((String) billNo.getData());
|
|
|
+ order.setSrcOrdNo((String) billNo.getData());
|
|
|
+ order.setCreateTime(new Date());
|
|
|
+ order.setCreateUser(AuthUtil.getUserId());
|
|
|
+ order.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
+ order.setTenantId(AuthUtil.getTenantId());
|
|
|
+ order.setStatus(OrderTypeEnum.XSLR.getType());
|
|
|
+ order.setBusinessSource(OrderTypeEnum.WEB.getType());
|
|
|
+ order.setActualPaymentStatus(1);
|
|
|
+ baseMapper.insert(order);
|
|
|
+ } else {
|
|
|
+ order.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ order.setUpdateTime(new Date());
|
|
|
+ baseMapper.updateById(order);
|
|
|
+ }
|
|
|
+ // 保存订单明细
|
|
|
+ if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
|
|
|
+ //所属公司
|
|
|
+ R<Dept> dept = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
+ if (ObjectUtil.isNotEmpty(dept)) {
|
|
|
+ order.setSalesCompanyId(dept.getData().getId());
|
|
|
+ order.setSalesCompanyName(dept.getData().getFullName());
|
|
|
+ if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()) {
|
|
|
+ order.setSharedCompanyId(dept.getData().getId());
|
|
|
+ order.setSharedCompanyName(dept.getData().getFullName());
|
|
|
+ } else {
|
|
|
+ order.setSharedCompanyId(order.getSharedCompanyId());
|
|
|
+ order.setSharedCompanyName(order.getSharedCompanyName());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new SecurityException("未维护所属公司");
|
|
|
+ }
|
|
|
+ StringBuilder goodsName = new StringBuilder();
|
|
|
+ StringBuilder retrieval = new StringBuilder();
|
|
|
+ for (PjOrderItems item : order.getOrderItemsList()) {
|
|
|
+ item.setBizType(order.getBsType());
|
|
|
+ item.setBillNo(order.getOrdNo());
|
|
|
+ if (item.getId() == null) {
|
|
|
+ item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
+ item.setCreateTime(new Date());
|
|
|
+ item.setCreateUser(AuthUtil.getUserId());
|
|
|
+ item.setPid(order.getId());
|
|
|
+ item.setTenantId(AuthUtil.getTenantId());
|
|
|
+ orderItemsMapper.insert(item);
|
|
|
+ } else {
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setPid(order.getId());
|
|
|
+ orderItemsMapper.updateById(item);
|
|
|
+ }
|
|
|
+ //计算小计
|
|
|
+ item.setSubTotalMoney(item.getGoodsNum().multiply(item.getPrice()));
|
|
|
+
|
|
|
+ //获得商品
|
|
|
+ PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
|
|
|
+ if (ObjectUtil.isEmpty(goodsDesc)) {
|
|
|
+ throw new RuntimeException("商品数据异常");
|
|
|
+ }
|
|
|
+ item.setBrandName(goodsDesc.getBrandName());
|
|
|
+ goodsName = goodsName.append(goodsDesc.getCname()).append(",");
|
|
|
+ retrieval = retrieval.append(goodsDesc.getCnameInt()).append(",");
|
|
|
+ orderItemsMapper.updateById(item);
|
|
|
+ }
|
|
|
+ if (goodsName.length() > 0) {
|
|
|
+ order.setGoodsNameJoin(goodsName.substring(0, goodsName.length() - 1));
|
|
|
+ }
|
|
|
+ if (retrieval.length() > 0) {
|
|
|
+ order.setShortcutJoin(retrieval.substring(0, retrieval.length() - 1));
|
|
|
+ }
|
|
|
+ BigDecimal totalMoney = BigDecimal.ZERO;
|
|
|
+ order.setNumberRows(order.getOrderItemsList().size());//行数
|
|
|
+ //总数量
|
|
|
+ order.setGoodsTotalNum(order.getOrderItemsList().stream().filter(e -> e.getGoodsNum() != null).map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ //总已发数量
|
|
|
+ order.setGoodsTotalShipNum(order.getOrderItemsList().stream().filter(e -> e.getSendNum() != null).map(PjOrderItems::getSendNum).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ //总金额
|
|
|
+ totalMoney = order.getOrderItemsList().stream().reduce(BigDecimal.ZERO, (x, y) -> {
|
|
|
+ return x.add(y.getGoodsNum().multiply(y.getPrice()));
|
|
|
+ }, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+
|
|
|
+ if (totalMoney.compareTo(corpsDesc.getPointsBalance()) > 0) {
|
|
|
+ throw new RuntimeException("积分余额不足,兑换失败");
|
|
|
+ } else {
|
|
|
+ corpsDesc.setPointsBalance(corpsDesc.getPointsBalance().subtract(totalMoney));
|
|
|
+ }
|
|
|
+ order.setSalesAmount(totalMoney);
|
|
|
+ order.setTotalMoney(totalMoney);
|
|
|
+ }
|
|
|
+ corpsDescMapper.updateById(corpsDesc);
|
|
|
+ baseMapper.updateById(order);
|
|
|
+ return R.data(order);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 保存订单信息
|
|
|
*
|
|
|
@@ -1094,6 +1267,54 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
throw new SecurityException("审批通过失败");
|
|
|
}
|
|
|
if ("XS".equals(order.getBsType())) {
|
|
|
+ PjCorpsDesc corpsDesc = corpsDescMapper.selectById(order.getCustomerId());
|
|
|
+ if (corpsDesc == null) {
|
|
|
+ throw new RuntimeException("未查到客户信息");
|
|
|
+ }
|
|
|
+ PjCorpsDesc reference = null;
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc.getReferenceId())) {
|
|
|
+ reference = corpsDescMapper.selectById(corpsDesc.getReferenceId());
|
|
|
+ }
|
|
|
+ User user = null;
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc.getSalesmanId())) {
|
|
|
+ R<User> r = userClient.userInfoById(corpsDesc.getSalesmanId());
|
|
|
+ if (r.isSuccess()) {
|
|
|
+ user = r.getData();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //根据主表id获得明细数据
|
|
|
+ List<PjOrderItems> list = orderItemsMapper.selectList(new QueryWrapper<PjOrderItems>()
|
|
|
+ .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());
|
|
|
+ List<PjGoodsDesc> pjGoodsDescList = goodsDescMapper.selectList(new LambdaQueryWrapper<PjGoodsDesc>()
|
|
|
+ .eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjGoodsDesc::getIsDeleted, 0)
|
|
|
+ .eq(PjGoodsDesc::getEnableOrNot, 0)
|
|
|
+ .in(PjGoodsDesc::getId, goodsIds));
|
|
|
+ for (PjOrderItems e : list) {
|
|
|
+ PjGoodsDesc goodsDesc = pjGoodsDescList.stream().filter(item -> item.getId().equals(e.getGoodsId())).findFirst().orElse(null);
|
|
|
+ if (goodsDesc != null) {
|
|
|
+ //业务员积分
|
|
|
+ if (user != null && ObjectUtils.isNotNull(goodsDesc.getSalesmanIntegral())) {
|
|
|
+ user.setPointsBalance(user.getPointsBalance().subtract(goodsDesc.getSalesmanIntegral().multiply(e.getGoodsNum())));
|
|
|
+ }
|
|
|
+ //推荐人积分
|
|
|
+ if (reference != null && ObjectUtils.isNotNull(goodsDesc.getReferenceIntegral())) {
|
|
|
+ reference.setPointsBalance(reference.getPointsBalance().subtract(goodsDesc.getReferenceIntegral().multiply(e.getGoodsNum())));
|
|
|
+ }
|
|
|
+ //客户门店积分
|
|
|
+ corpsDesc.setPointsBalance(corpsDesc.getPointsBalance().subtract(goodsDesc.getIntegral().multiply(e.getGoodsNum())));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (reference != null) {
|
|
|
+ corpsDescMapper.updateById(reference);
|
|
|
+ }
|
|
|
+ if (user != null) {
|
|
|
+ userClient.updateUser(user);
|
|
|
+ }
|
|
|
+ corpsDescMapper.updateById(corpsDesc);
|
|
|
if (OrderTypeEnum.SHIPED.getType().equals(order.getOriginalStatus())
|
|
|
|| OrderTypeEnum.RECEIVEDGOODS.getType().equals(order.getOriginalStatus())) {//已发货
|
|
|
if ("已取消".equals(order.getStatus())) {
|
|
|
@@ -1129,13 +1350,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
pjShip.setCreateUser(AuthUtil.getUserId());
|
|
|
pjShip.setCreateTime(new Date());
|
|
|
shipMapper.insert(pjShip);
|
|
|
- //根据主表id获得明细数据
|
|
|
- List<PjOrderItems> list = orderItemsMapper.selectList(new QueryWrapper<PjOrderItems>()
|
|
|
- .eq("pid", order.getId())
|
|
|
- .eq("is_deleted", 0)
|
|
|
- .eq("tenant_id", AuthUtil.getTenantId()));
|
|
|
if (ObjectUtil.isNotEmpty(list)) {
|
|
|
for (PjOrderItems e : list) {
|
|
|
+ PjGoodsDesc goodsDesc = pjGoodsDescList.stream().filter(item -> item.getId().equals(e.getGoodsId())).findFirst().orElse(null);
|
|
|
+ if (goodsDesc != null) {
|
|
|
+ //业务员积分
|
|
|
+ if (user != null && ObjectUtils.isNotNull(goodsDesc.getSalesmanIntegral())) {
|
|
|
+ user.setPointsBalance(user.getPointsBalance().add(goodsDesc.getSalesmanIntegral().multiply(e.getGoodsNum())));
|
|
|
+ }
|
|
|
+ //推荐人积分
|
|
|
+ if (reference != null && ObjectUtils.isNotNull(goodsDesc.getReferenceIntegral())) {
|
|
|
+ reference.setPointsBalance(reference.getPointsBalance().add(goodsDesc.getReferenceIntegral().multiply(e.getGoodsNum())));
|
|
|
+ }
|
|
|
+ //客户门店积分
|
|
|
+ corpsDesc.setPointsBalance(corpsDesc.getPointsBalance().add(goodsDesc.getIntegral().multiply(e.getGoodsNum())));
|
|
|
+ }
|
|
|
if (ObjectUtils.isNull(e.getSendNum()) || e.getSendNum().compareTo(new BigDecimal("0.00")) == 0) {
|
|
|
continue;
|
|
|
} else {
|
|
|
@@ -1174,13 +1403,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
List<Long> ids = shipList.stream().map(PjShip::getId).collect(Collectors.toList());
|
|
|
shipMapper.deleteBatchIds(ids);
|
|
|
}
|
|
|
-
|
|
|
//修改库存账信息
|
|
|
- //根据主表id获得明细数据
|
|
|
- List<PjOrderItems> list = orderItemsMapper.selectList(new QueryWrapper<PjOrderItems>()
|
|
|
- .eq("pid", order.getId())
|
|
|
- .eq("is_deleted", 0)
|
|
|
- .eq("tenant_id", AuthUtil.getTenantId()));
|
|
|
if (CollectionUtils.isNotEmpty(list)) {
|
|
|
list.forEach(item -> {
|
|
|
if (item.getId() == null) {
|
|
|
@@ -1342,7 +1565,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
BigDecimal amount = orderList.stream().map(PjOrder::getTotalMoney).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
List<PjOrderItems> pjOrderItems = orderItemsMapper.selectList(new LambdaQueryWrapper<PjOrderItems>().in(PjOrderItems::getPid, ids));
|
|
|
String goodsNames = pjOrderItems.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining());
|
|
|
- return payService.payPrepay(orderId.substring(0, orderId.length() - 1), amount, srcOrderNo, 1, goodsNames,null);
|
|
|
+ return payService.payPrepay(orderId.substring(0, orderId.length() - 1), amount, srcOrderNo, 1, goodsNames, null);
|
|
|
}
|
|
|
|
|
|
/**
|