|
@@ -76,6 +76,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
|
|
|
|
+import javax.sql.rowset.serial.SerialException;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.math.BigInteger;
|
|
import java.math.BigInteger;
|
|
|
import java.math.MathContext;
|
|
import java.math.MathContext;
|
|
@@ -1132,6 +1133,122 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
|
|
+ public void checkChargeBack(Order order) {
|
|
|
|
|
+ Order salesOrder = baseMapper.selectById(order.getId());
|
|
|
|
|
+
|
|
|
|
|
+ if (ObjectUtil.isEmpty(salesOrder)){//判断单据是否存在
|
|
|
|
|
+ throw new SecurityException("单据信息异常");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (salesOrder.getChargebackStatus() == 1){
|
|
|
|
|
+ throw new SecurityException("订单已开启审核,请勿重复提交");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //根据销售订单id获得采购订单
|
|
|
|
|
+ Order orderPurchase = baseMapper.selectOne(new LambdaQueryWrapper<Order>()
|
|
|
|
|
+ .eq(Order::getIsDeleted, 0)
|
|
|
|
|
+ .eq(Order::getTenantId, AuthUtil.getTenantId())
|
|
|
|
|
+ .eq(Order::getSrcId, salesOrder.getId()));
|
|
|
|
|
+ if (ObjectUtil.isNotEmpty(orderPurchase)){//判断采购订单是否存在
|
|
|
|
|
+ throw new SecurityException("采购订单已存在,禁止撤销");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //根据订单号获得收发货
|
|
|
|
|
+ List<Delivery> deliveryList = deliveryClient.getOrgMessage(salesOrder.getOrderNo(), OrderTypeEnum.DOMESTIC.getType());
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(deliveryList)) {//判断收发货是否存在
|
|
|
|
|
+ throw new SecurityException("收发货单据已存在,禁止撤销");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //获得财务收款信息
|
|
|
|
|
+ List<Settlement> settlementList = financeClient.selectSrcOrderNo(salesOrder.getOrderNo());
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(settlementList)) {//判断收款是否存在
|
|
|
|
|
+ throw new SecurityException("收款单据已存在,禁止撤销");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //审批数据
|
|
|
|
|
+ AuditProecessDTO auditProecessDTO = new AuditProecessDTO();
|
|
|
|
|
+ //获取审批级次
|
|
|
|
|
+ List<AuditPathsLevels> auditPathsLevels = null;
|
|
|
|
|
+ // 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
|
|
|
|
|
+ AuditPathsActs pathsActs = null;
|
|
|
|
|
+ //是否开启流程
|
|
|
|
|
+ pathsActs = iCheckClient.getActsByActId(21, "status");
|
|
|
|
|
+ //获取审批信息
|
|
|
|
|
+ auditPathsLevels = iCheckClient.listLevelsByActId(21, "status");
|
|
|
|
|
+ auditProecessDTO.setTimes(1);
|
|
|
|
|
+
|
|
|
|
|
+ // 没开启审批流直接走 通过流程
|
|
|
|
|
+ if (pathsActs == null || pathsActs.getIsEnable() == 2) {
|
|
|
|
|
+ throw new SecurityException("当前租户未查询到审批流配置");
|
|
|
|
|
+ } else {
|
|
|
|
|
+
|
|
|
|
|
+ if (CollectionUtils.isEmpty(auditPathsLevels)) {
|
|
|
|
|
+ throw new SecurityException("开启审批失败:未查询到审批信息");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //增加审批类型
|
|
|
|
|
+ auditProecessDTO.setProcessType("退单审批");
|
|
|
|
|
+
|
|
|
|
|
+ LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ orderItemsLambdaQueryWrapper
|
|
|
|
|
+ .eq(OrderItems::getGoodType, 0)
|
|
|
|
|
+ .eq(OrderItems::getPid, salesOrder.getId())
|
|
|
|
|
+ .eq(OrderItems::getIsDeleted, 0);
|
|
|
|
|
+ List<OrderItems> orderItems = orderItemsMapper.selectList(orderItemsLambdaQueryWrapper);
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(orderItems)) {
|
|
|
|
|
+ auditProecessDTO.setOrderQuantity(orderItems.stream().map(OrderItems::getOrderQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
|
|
+ auditProecessDTO.setAmount(orderItems.stream().map(OrderItems::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ auditProecessDTO.setOrderQuantity(BigDecimal.ZERO);
|
|
|
|
|
+ auditProecessDTO.setAmount(BigDecimal.ZERO);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 绑定审核类型
|
|
|
|
|
+ auditProecessDTO.setCheckType("XSTD");//代理订单
|
|
|
|
|
+ // 追加跳转路由url
|
|
|
|
|
+ auditProecessDTO.setUrl(salesOrder.getUrl());
|
|
|
|
|
+ auditProecessDTO.setPageStatus(salesOrder.getPageStatus());
|
|
|
|
|
+ auditProecessDTO.setPageLabel(salesOrder.getPageLabel());
|
|
|
|
|
+ auditProecessDTO.setOrderRemark(salesOrder.getOrderRemark());//订单备注
|
|
|
|
|
+ auditProecessDTO.setPathsLevelsList(auditPathsLevels);
|
|
|
|
|
+ auditProecessDTO.setActId(1);
|
|
|
|
|
+ auditProecessDTO.setSrcBillId(salesOrder.getId());//申请表id
|
|
|
|
|
+ auditProecessDTO.setBillId(salesOrder.getId());//业务id
|
|
|
|
|
+ auditProecessDTO.setBillNo(salesOrder.getOrderNo());//业务编号
|
|
|
|
|
+ auditProecessDTO.setSendUserId(AuthUtil.getUserId());//请核人id
|
|
|
|
|
+ auditProecessDTO.setSendName(AuthUtil.getUserName());//请核人名称
|
|
|
|
|
+ auditProecessDTO.setSendTime(new Date());//请核时间
|
|
|
|
|
+ auditProecessDTO.setBillTime(salesOrder.getCreateTime());//业务日期
|
|
|
|
|
+ auditProecessDTO.setTenantId(AuthUtil.getTenantId());//租户id
|
|
|
|
|
+ R financeProcess = iCheckClient.createFinanceProcess(auditProecessDTO);
|
|
|
|
|
+ if (!financeProcess.isSuccess()) {
|
|
|
|
|
+ throw new SecurityException("操作失败,请联系管理员");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ salesOrder.setChargebackStatus(1);
|
|
|
|
|
+ salesOrder.setChargebackUser(AuthUtil.getUserName());
|
|
|
|
|
+ salesOrder.setChargebackTime(new Date());
|
|
|
|
|
+ baseMapper.updateById(salesOrder);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 申请退单审批中
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void underChargeBackReview(Long id) {
|
|
|
|
|
+ Order order = baseMapper.selectById(id);
|
|
|
|
|
+ if (order == null) {
|
|
|
|
|
+ throw new SecurityException("审批失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ order.setChargebackStatus(2);
|
|
|
|
|
+ baseMapper.updateById(order);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
public void passCheck(Long id) {
|
|
public void passCheck(Long id) {
|
|
|
|
|
|
|
|
// ===========================start 审核通过修改销售订单信息==========================
|
|
// ===========================start 审核通过修改销售订单信息==========================
|
|
@@ -1370,27 +1487,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
throw new SecurityException("撤销失败");
|
|
throw new SecurityException("撤销失败");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //根据销售订单id获得采购订单
|
|
|
|
|
- Order orderPurchase = baseMapper.selectOne(new LambdaQueryWrapper<Order>()
|
|
|
|
|
- .eq(Order::getIsDeleted, 0)
|
|
|
|
|
- .eq(Order::getTenantId, AuthUtil.getTenantId())
|
|
|
|
|
- .eq(Order::getSrcId, orderMessage.getId()));
|
|
|
|
|
- if (ObjectUtil.isNotEmpty(orderPurchase)){//判断采购订单是否存在
|
|
|
|
|
- throw new SecurityException("采购订单已存在,禁止撤销");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //根据订单号获得工厂发货
|
|
|
|
|
- List<Delivery> deliveryList = deliveryClient.getOrderMessage(orderMessage.getOrderNo(), OrderTypeEnum.DOMESTIC.getType());
|
|
|
|
|
- if (CollectionUtils.isNotEmpty(deliveryList)) {//判断收发货是否存在
|
|
|
|
|
- throw new SecurityException("收发货单据已存在,禁止撤销");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //获得财务收款信息
|
|
|
|
|
- List<Settlement> settlementList = financeClient.selectSrcOrderNo(orderMessage.getOrderNo());
|
|
|
|
|
- if (CollectionUtils.isNotEmpty(settlementList)) {//判断收款是否存在
|
|
|
|
|
- throw new SecurityException("收款单据已存在,禁止撤销");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
// 销售释放库存
|
|
// 销售释放库存
|
|
|
if ("XS".equals(orderMessage.getBillType()) && orderMessage.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())) {
|
|
if ("XS".equals(orderMessage.getBillType()) && orderMessage.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())) {
|
|
|
// ===========================Start 审核撤销释放库存=============================
|
|
// ===========================Start 审核撤销释放库存=============================
|
|
@@ -1514,6 +1610,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 申请退单审批不通过
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void passChargeBackCancel(Long id) {
|
|
|
|
|
+ Order order = baseMapper.selectById(id);
|
|
|
|
|
+ if (order == null) {
|
|
|
|
|
+ throw new SecurityException("审批失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ baseMapper.update(null, new LambdaUpdateWrapper<Order>()
|
|
|
|
|
+ .set(Order::getChargebackStatus, 0)
|
|
|
|
|
+ .set(Order::getChargebackUser, null)
|
|
|
|
|
+ .set(Order::getChargebackTime, null)
|
|
|
|
|
+ .eq(Order::getId, id)
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public void passSpecialCheck(Long id) {
|
|
public void passSpecialCheck(Long id) {
|
|
|
Order order = baseMapper.selectById(id);
|
|
Order order = baseMapper.selectById(id);
|