|
|
@@ -28,12 +28,13 @@ import org.springblade.check.dto.AuditProecessDTO;
|
|
|
import org.springblade.check.entity.AuditPathsActs;
|
|
|
import org.springblade.check.entity.AuditPathsLevels;
|
|
|
import org.springblade.check.feign.ICheckClient;
|
|
|
-import org.springblade.client.entity.CorpsDesc;
|
|
|
import org.springblade.client.feign.ISerialClient;
|
|
|
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.ObjectUtil;
|
|
|
+import org.springblade.pay.tonglianPayment.entity.WechatMark;
|
|
|
+import org.springblade.pay.tonglianPayment.fegin.IPaymentClient;
|
|
|
import org.springblade.salesPart.corps.mapper.CorpsDescMapper;
|
|
|
import org.springblade.salesPart.entity.*;
|
|
|
import org.springblade.salesPart.enums.OrderTypeEnum;
|
|
|
@@ -45,6 +46,9 @@ import org.springblade.salesPart.order.service.IOrderService;
|
|
|
import org.springblade.salesPart.payMethod.PayService;
|
|
|
import org.springblade.salesPart.payment.mapper.PaymentMapper;
|
|
|
import org.springblade.salesPart.productLaunch.mapper.ProductLaunchMapper;
|
|
|
+import org.springblade.salesPart.settlement.mapper.SettlementMapper;
|
|
|
+import org.springblade.salesPart.settlement.service.ISettlementItemsService;
|
|
|
+import org.springblade.salesPart.settlement.service.ISettlementService;
|
|
|
import org.springblade.salesPart.ship.mapper.ShipItemsMapper;
|
|
|
import org.springblade.salesPart.ship.mapper.ShipMapper;
|
|
|
import org.springblade.salesPart.stock.mapper.StockDescMapper;
|
|
|
@@ -54,17 +58,13 @@ import org.springblade.salesPart.vo.OrderVO;
|
|
|
import org.springblade.system.entity.Dept;
|
|
|
import org.springblade.system.feign.ISysClient;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.MathContext;
|
|
|
-import java.math.RoundingMode;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
-import java.util.Objects;
|
|
|
|
|
|
import static org.springblade.core.secure.utils.AuthUtil.getUser;
|
|
|
|
|
|
@@ -89,13 +89,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
private final ShipItemsMapper shipItemsMapper;
|
|
|
private final CorpsDescMapper corpsDescMapper;
|
|
|
private final StorageDescMapper storageDescMapper;
|
|
|
- private final PaymentMapper paymentMapper;
|
|
|
private final StockDescMapper stockDescMapper;
|
|
|
private final ProductLaunchMapper productLaunchMapper;
|
|
|
private final GoodsDescMapper goodsDescMapper;
|
|
|
private final ISysClient sysClient;
|
|
|
private final HistoryMapper historyMapper;
|
|
|
private final PayService payService;
|
|
|
+ private final ISettlementItemsService settlementItemsService;
|
|
|
+ private final SettlementMapper settlementMapper;
|
|
|
+ private final IPaymentClient paymentClient;
|
|
|
|
|
|
/**
|
|
|
* 获取销售订单详情
|
|
|
@@ -115,11 +117,40 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
detail.setOrderItemsList(orderItemsMapper.selectList(itemsLambdaQueryWrapper));
|
|
|
|
|
|
//获得支付记录
|
|
|
- LambdaQueryWrapper<PjPayment> paymentLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- paymentLambdaQueryWrapper.eq(PjPayment::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(PjPayment::getIsDeleted, 0)
|
|
|
- .in(PjPayment::getOrderId, detail.getId());
|
|
|
- detail.setPaymentRecordsList(paymentMapper.selectList(paymentLambdaQueryWrapper));
|
|
|
+ List<WechatMark> wechatMarkList = new ArrayList<>();
|
|
|
+ if ("内部销售".equals(detail.getBusinessSource())) {
|
|
|
+ R<List<WechatMark>> res = paymentClient.getWechatMarkDetail(detail.getOrdNo(), detail.getOrdNo());
|
|
|
+ if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
|
|
|
+ wechatMarkList.addAll(res.getData());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ R<List<WechatMark>> res = paymentClient.getWechatMarkDetail(detail.getOrdNo(), detail.getSrcOrdNo());
|
|
|
+ if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
|
|
|
+ wechatMarkList.addAll(res.getData());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<PjSettlementItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(PjSettlementItems::getSrcParentId, detail.getId())
|
|
|
+ .eq(PjSettlementItems::getIsDeleted, 0)
|
|
|
+ .ne(PjSettlementItems::getSettlmentAmount, 0.00)
|
|
|
+ .eq(PjSettlementItems::getTenantId, AuthUtil.getTenantId());
|
|
|
+ List<PjSettlementItems> pjSettlementList = settlementItemsService.list(lambdaQueryWrapper);
|
|
|
+ String sysNo = "";
|
|
|
+ if (pjSettlementList.size() > 0) {
|
|
|
+ PjSettlement pjSettlement = settlementMapper.selectById(pjSettlementList.get(0).getPid());
|
|
|
+ if (ObjectUtils.isNotNull(pjSettlement)) {
|
|
|
+ sysNo = pjSettlement.getSysNo();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (PjSettlementItems item : pjSettlementList) {
|
|
|
+ WechatMark wechatMark = new WechatMark();
|
|
|
+ wechatMark.setSerialNumber(sysNo);
|
|
|
+ wechatMark.setAmount(item.getSettlmentAmount());
|
|
|
+ wechatMark.setType("支付");
|
|
|
+ wechatMark.setCreateTime(item.getUpdateTime());
|
|
|
+ wechatMarkList.add(wechatMark);
|
|
|
+ }
|
|
|
+ detail.setPaymentRecordsList(wechatMarkList);
|
|
|
|
|
|
//获得出入库记录
|
|
|
LambdaQueryWrapper<PjShip> shipLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
@@ -141,7 +172,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
|
|
|
return page.setRecords(baseMapper.selectOrderPage(page, order));
|
|
|
}
|
|
|
-/**
|
|
|
+
|
|
|
+ /**
|
|
|
* 自定义分页
|
|
|
*
|
|
|
* @param page
|
|
|
@@ -288,9 +320,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId())
|
|
|
.eq(PjProductLaunch::getSourceCompanyId, order.getSharedCompanyId());
|
|
|
PjProductLaunch productLaunch = productLaunchMapper.selectOne(lambdaQueryWrapper);
|
|
|
- if (ObjectUtils.isNotNull(productLaunch)){
|
|
|
+ if (ObjectUtils.isNotNull(productLaunch)) {
|
|
|
item.setCostprie(item.getGoodsNum().multiply(productLaunch.getShareCost()));
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
throw new RuntimeException("请维护共享商品成本价格");
|
|
|
}
|
|
|
}
|
|
|
@@ -333,7 +365,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
}
|
|
|
} else if (order.getBsType().equals(OrderTypeEnum.PURCHASE.getType())) {//采购
|
|
|
//仓库名称
|
|
|
- order.setStorageName(storageDescMapper.selectById(order.getStorageId()).getCname());
|
|
|
+ if (ObjectUtils.isNotNull(order.getStorageId())) {
|
|
|
+ order.setStorageName(storageDescMapper.selectById(order.getStorageId()).getCname());
|
|
|
+ }
|
|
|
if (order.getId() == null) {
|
|
|
order.setOrdNo((String) billNo.getData());
|
|
|
order.setCreateTime(new Date());
|
|
|
@@ -438,8 +472,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
//修改销售状态为待发货
|
|
|
pjOrder.setStatus(OrderTypeEnum.XSDFH.getType());
|
|
|
pjOrder.setGenerateTask(OrderTypeEnum.SCRW.getType());
|
|
|
+ pjOrder.setActualPaymentStatus(1);
|
|
|
baseMapper.updateById(pjOrder);
|
|
|
-
|
|
|
+ if ("挂账".equals(pjOrder.getReceivableType())) {
|
|
|
+ PjCorpsDesc pjCorpsDesc = corpsDescMapper.selectById(pjOrder.getCustomerId());
|
|
|
+ if (ObjectUtils.isNotNull(pjCorpsDesc)) {
|
|
|
+ if (ObjectUtils.isNotNull(pjCorpsDesc.getUseCreditLimit())) {
|
|
|
+ if (pjCorpsDesc.getCreditLimit().compareTo(pjCorpsDesc.getUseCreditLimit().add(pjOrder.getTotalMoney())) < 0) {
|
|
|
+ throw new RuntimeException("信用额度余额不足");
|
|
|
+ } else {
|
|
|
+ pjCorpsDesc.setUseCreditLimit(pjCorpsDesc.getUseCreditLimit().add(pjOrder.getTotalMoney()));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ pjCorpsDesc.setUseCreditLimit(pjOrder.getTotalMoney());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ corpsDescMapper.updateById(pjCorpsDesc);
|
|
|
+ }
|
|
|
//内部销售修改上架管理的库存
|
|
|
if (pjOrder.getBusinessSource().equals(OrderTypeEnum.WEB.getType())) {
|
|
|
LambdaQueryWrapper<PjOrderItems> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
@@ -472,6 +521,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
public R revokeGenerateShipTask(PjOrder order) {
|
|
|
+ if (settlementItemsService.count(new LambdaQueryWrapper<PjSettlementItems>()
|
|
|
+ .eq(PjSettlementItems::getIsDeleted, 0)
|
|
|
+ .eq(PjSettlementItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjSettlementItems::getSrcParentId, order.getId())) > 0) {
|
|
|
+ throw new RuntimeException("已有收费记录,撤销失败");
|
|
|
+ }
|
|
|
PjOrder pjOrder = baseMapper.selectById(order.getId());
|
|
|
PjShip pjShip = shipMapper.selectOne(new LambdaQueryWrapper<PjShip>().eq(PjShip::getIsDeleted, 0)
|
|
|
.eq(PjShip::getOrdId, order.getId())
|
|
|
@@ -487,6 +542,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
pjOrder.setGenerateTask(OrderTypeEnum.NSCRW.getType());
|
|
|
baseMapper.updateById(pjOrder);
|
|
|
|
|
|
+ if ("挂账".equals(pjOrder.getReceivableType())) {
|
|
|
+ PjCorpsDesc pjCorpsDesc = corpsDescMapper.selectById(pjOrder.getCustomerId());
|
|
|
+ if (ObjectUtils.isNotNull(pjCorpsDesc)) {
|
|
|
+ if (ObjectUtils.isNotNull(pjCorpsDesc.getUseCreditLimit())) {
|
|
|
+ pjCorpsDesc.setUseCreditLimit(pjCorpsDesc.getUseCreditLimit().subtract(pjOrder.getTotalMoney()));
|
|
|
+ } else {
|
|
|
+ pjCorpsDesc.setUseCreditLimit(new BigDecimal("0.00"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ corpsDescMapper.updateById(pjCorpsDesc);
|
|
|
+ }
|
|
|
+
|
|
|
//内部销售修改上架管理的库存
|
|
|
if (pjOrder.getBusinessSource().equals(OrderTypeEnum.WEB.getType())) {
|
|
|
LambdaQueryWrapper<PjOrderItems> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
@@ -653,7 +720,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
if (order == null) {
|
|
|
throw new SecurityException("审批通过失败");
|
|
|
}
|
|
|
- if ("XS".equals(order.getBsType())){
|
|
|
+ if ("XS".equals(order.getBsType())) {
|
|
|
if (OrderTypeEnum.SHIPED.getType().equals(order.getOriginalStatus()) || OrderTypeEnum.RECEIVEDGOODS.getType().equals(order.getOriginalStatus())) {//已发货
|
|
|
if ("退款中".equals(order.getStatus())) {
|
|
|
throw new SecurityException("订单已审批通过请勿重复审批");
|
|
|
@@ -832,7 +899,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
order.setStatus("待确认");
|
|
|
}
|
|
|
|
|
|
@@ -870,10 +937,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
if (order == null) {
|
|
|
throw new SecurityException("审批驳回失败");
|
|
|
}
|
|
|
- if ("XS".equals(order.getBsType())){
|
|
|
+ if ("XS".equals(order.getBsType())) {
|
|
|
order.setStatus(order.getOriginalStatus());
|
|
|
order.setCheckStatus("审批驳回");
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
order.setStatus("录入");
|
|
|
}
|
|
|
baseMapper.updateById(order);
|
|
|
@@ -948,9 +1015,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
if (!financeProcess.isSuccess()) {
|
|
|
throw new SecurityException("操作失败,请联系管理员");
|
|
|
}
|
|
|
- if ("XS".equals(declare.getBsType())){
|
|
|
+ if ("XS".equals(declare.getBsType())) {
|
|
|
declare.setStatus(declare.getOriginalStatus());
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
declare.setStatus("录入");
|
|
|
}
|
|
|
declare.setCheckStatus("审核撤销");
|