Commit c7fbb7d1 authored by 332784038@qq.com's avatar 332784038@qq.com

重构费用申请审批和费用批量申请审批的业务逻辑结构

parent e94db012
...@@ -40,6 +40,7 @@ public enum OrderApprovalTypeEnum { ...@@ -40,6 +40,7 @@ public enum OrderApprovalTypeEnum {
DISCOUNT_APPLY_BATCH(31, "批量优惠申请", Arrays.asList(1, 2, 6, 11, 14, 23, 28, 32)), // 拆单申请/合单申请/订单修改/退仓/撤销拆单审批/优惠申请(当前商品有在途申请)/批量管理折扣申请(当前商品有在途申请)/管理优惠(当前商品有在途申请) DISCOUNT_APPLY_BATCH(31, "批量优惠申请", Arrays.asList(1, 2, 6, 11, 14, 23, 28, 32)), // 拆单申请/合单申请/订单修改/退仓/撤销拆单审批/优惠申请(当前商品有在途申请)/批量管理折扣申请(当前商品有在途申请)/管理优惠(当前商品有在途申请)
ADMIN_DISCOUNT_BATCH(32, "批量管理折扣申请", Arrays.asList(1, 2, 6, 11, 14, 23, 28, 31)), // 拆单申请/合单申请/订单修改/退仓/撤销拆单审批/优惠申请(当前商品有在途申请)/批量优惠申请(当前商品有在途申请)/管理优惠(当前商品有在途申请) ADMIN_DISCOUNT_BATCH(32, "批量管理折扣申请", Arrays.asList(1, 2, 6, 11, 14, 23, 28, 31)), // 拆单申请/合单申请/订单修改/退仓/撤销拆单审批/优惠申请(当前商品有在途申请)/批量优惠申请(当前商品有在途申请)/管理优惠(当前商品有在途申请)
expense_apply_BATCH(41, "批量费用申请", Arrays.asList(6, 11, 28)), // 拆单申请/合单申请/撤销拆单审批
//分拣 //分拣
sorting(50, "分拣审批", Arrays.asList(6, 11, 13, 14, 22, 23, 28)), // 自编号全部申请互斥,跟原本一致,不修改, 自编号下订单除拆单申请/合单申请/调仓申请/订单修改/入仓申请/退仓申请外,其他申请不受限制,允许封柜反审批 sorting(50, "分拣审批", Arrays.asList(6, 11, 13, 14, 22, 23, 28)), // 自编号全部申请互斥,跟原本一致,不修改, 自编号下订单除拆单申请/合单申请/调仓申请/订单修改/入仓申请/退仓申请外,其他申请不受限制,允许封柜反审批
......
...@@ -153,6 +153,11 @@ public enum OrderApprovalTypeResultEnum implements IntArrayValuable { ...@@ -153,6 +153,11 @@ public enum OrderApprovalTypeResultEnum implements IntArrayValuable {
admin_discount_batch_reject(32,3, "admin.discount.batch.reject"), admin_discount_batch_reject(32,3, "admin.discount.batch.reject"),
admin_discount_batch_cancel(32,4, "admin.discount.batch.cancel"), admin_discount_batch_cancel(32,4, "admin.discount.batch.cancel"),
//批量费用申请
expense_apply_batch_processing(41,1, "fee.application.processing"),
expense_apply_batch_pass(41,2, "fee.application.pass"),
expense_apply_batch_reject(41,3, "fee.application.reject"),
expense_apply_batch_cancel(41,4, "fee.application.cancel"),
//分拣 //分拣
sorting_processing(50,1, "shipment.sorting.processing"), sorting_processing(50,1, "shipment.sorting.processing"),
......
...@@ -38,8 +38,11 @@ import cn.iocoder.yudao.module.system.service.user.AdminUserService; ...@@ -38,8 +38,11 @@ import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import cn.iocoder.yudao.module.wealth.dal.dataobject.receivable.ReceivableDO; import cn.iocoder.yudao.module.wealth.dal.dataobject.receivable.ReceivableDO;
import cn.iocoder.yudao.module.wealth.service.receivable.ReceivableService; import cn.iocoder.yudao.module.wealth.service.receivable.ReceivableService;
import cn.iocoder.yudao.module.wealth.vo.receivable.ReceivableCreateReqVO; import cn.iocoder.yudao.module.wealth.vo.receivable.ReceivableCreateReqVO;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -55,8 +58,7 @@ import java.util.Objects; ...@@ -55,8 +58,7 @@ import java.util.Objects;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.order.enums.ErrorCodeConstants.*; import static cn.iocoder.yudao.module.order.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.module.order.enums.OrderApprovalTypeEnum.ORDER_UPDATE; import static cn.iocoder.yudao.module.order.enums.OrderApprovalTypeEnum.*;
import static cn.iocoder.yudao.module.order.enums.OrderApprovalTypeEnum.expense_apply;
/** /**
* 订单费用申请 Service 实现类 * 订单费用申请 Service 实现类
...@@ -182,19 +184,18 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl ...@@ -182,19 +184,18 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl
orderApprovalDO.setFollowUpSalesmanId(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); orderApprovalDO.setFollowUpSalesmanId(String.valueOf(SecurityFrameworkUtils.getLoginUserId()));
orderApprovalDO.setOrderId(createReqVO.getOrderId()); orderApprovalDO.setOrderId(createReqVO.getOrderId());
//批量费用申请 //批量费用申请
orderApprovalDO.setType(expense_apply.getValue()); orderApprovalDO.setType(expense_apply_BATCH.getValue());
orderApprovalDO.setStatus(ApprovalResultStatusEnum.processing.getValue()); orderApprovalDO.setStatus(ApprovalResultStatusEnum.processing.getValue());
Long bpmProcessId = orderApprovalService.applyAndCreate(orderApprovalDO, WorkFlowEmus.ORDER_BATCH_FREE_APPLY, createReqVO.getCopyUserId()); Long bpmProcessId = orderApprovalService.applyAndCreate(orderApprovalDO, WorkFlowEmus.ORDER_BATCH_FREE_APPLY, createReqVO.getCopyUserId());
//创建审批流 //创建审批流
OrderDO orderDO = orderService.selectOne(OrderDO::getOrderId, createReqVO.getOrderId()); OrderDO orderDO = orderService.selectOne(OrderDO::getOrderId, createReqVO.getOrderId());
orderService.updateStatus(orderDO.getOrderId(), null, null, null, null, null, OrderApprovalTypeResultEnum.expense_apply_processing.getType(), OrderApprovalTypeResultEnum.expense_apply_processing.getDesc()); orderService.updateStatus(orderDO.getOrderId(), null, null, null, null, null, OrderApprovalTypeResultEnum.expense_apply_batch_processing.getType(), OrderApprovalTypeResultEnum.expense_apply_batch_processing.getDesc());
//更新费用列表对应的流程申请ID //更新费用列表对应的流程申请ID
for (OrderFeeApplicationDO feeApplication : batchFeeList) { for (OrderFeeApplicationDO feeApplication : batchFeeList) {
feeApplication.setBatchBpmBusinessId(String.valueOf(bpmProcessId)); feeApplication.setBatchBpmBusinessId(String.valueOf(bpmProcessId));
feeApplication.setBpmProcessId(String.valueOf(bpmProcessId));
feeApplication.setStatus(ApprovalResultStatusEnum.processing.getValue()); feeApplication.setStatus(ApprovalResultStatusEnum.processing.getValue());
feeApplicationMapper.updateById(feeApplication); feeApplicationMapper.updateById(feeApplication);
} }
...@@ -216,19 +217,19 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl ...@@ -216,19 +217,19 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl
} }
// 更新 // 更新
OrderFeeApplicationDO updateObj = OrderFeeApplicationConvert.INSTANCE.convert(updateReqVO); OrderFeeApplicationDO updateObj = OrderFeeApplicationConvert.INSTANCE.convert(updateReqVO);
Long userId = SecurityFrameworkUtils.getLoginUserId();
//创建审批单,发起流程 //创建审批单,发起流程
OrderApprovalDO orderApprovalDO = new OrderApprovalDO(); OrderApprovalDO orderApprovalDO = new OrderApprovalDO();
orderApprovalDO.setFollowUpSalesmanId(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); orderApprovalDO.setFollowUpSalesmanId(String.valueOf(SecurityFrameworkUtils.getLoginUserId()));
orderApprovalDO.setOrderId(updateReqVO.getOrderId()); orderApprovalDO.setOrderId(updateReqVO.getOrderId());
//批量费用申请 //费用申请
orderApprovalDO.setType(expense_apply.getValue()); orderApprovalDO.setType(expense_apply.getValue());
orderApprovalDO.setStatus(ApprovalResultStatusEnum.processing.getValue()); orderApprovalDO.setStatus(ApprovalResultStatusEnum.processing.getValue());
Long bpmProcessId = orderApprovalService.applyAndCreate(orderApprovalDO, WorkFlowEmus.ORDER_BATCH_FREE_APPLY, updateReqVO.getCopyUserId()); orderApprovalDO.setDetails(JSONObject.toJSONString(updateObj));
Long bpmProcessId = orderApprovalService.applyAndCreate(orderApprovalDO, WorkFlowEmus.ORDER_FREE_APPLY, updateReqVO.getCopyUserId());
Integer auditType = OrderApprovalTypeResultEnum.expense_apply_processing.getType(); Integer auditType = OrderApprovalTypeResultEnum.expense_apply_processing.getType();
orderService.updateStatus(orderDO.getOrderId(), null, null, null, null, null, auditType, OrderApprovalTypeResultEnum.expense_apply_processing.getDesc()); orderService.updateStatus(orderDO.getOrderId(), null, null, null, null, null, auditType, OrderApprovalTypeResultEnum.expense_apply_processing.getDesc());
updateObj.setBpmProcessId(String.valueOf(bpmProcessId)); orderFeeApplicationDOOld.setBpmProcessId(String.valueOf(bpmProcessId));
feeApplicationMapper.updateById(updateObj); feeApplicationMapper.updateById(orderFeeApplicationDOOld);
DictDataRespDTO dictDataFromCacheOld = DictFrameworkUtils.getDictDataFromCache(DictTypeConstants.RECEIVABLE_FEE_TYPE, String.valueOf(orderFeeApplicationDOOld.getFeeType())); DictDataRespDTO dictDataFromCacheOld = DictFrameworkUtils.getDictDataFromCache(DictTypeConstants.RECEIVABLE_FEE_TYPE, String.valueOf(orderFeeApplicationDOOld.getFeeType()));
DictDataRespDTO dictDataFromCache = DictFrameworkUtils.getDictDataFromCache(DictTypeConstants.RECEIVABLE_FEE_TYPE, String.valueOf(updateReqVO.getFeeType())); DictDataRespDTO dictDataFromCache = DictFrameworkUtils.getDictDataFromCache(DictTypeConstants.RECEIVABLE_FEE_TYPE, String.valueOf(updateReqVO.getFeeType()));
CurrencyDO currency = currencyService.getCurrency(updateReqVO.getApplicationFeeCurrency()); CurrencyDO currency = currencyService.getCurrency(updateReqVO.getApplicationFeeCurrency());
...@@ -261,7 +262,7 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl ...@@ -261,7 +262,7 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl
} }
// 当费用金额为0时,可以不经审批直接删除 // 当费用金额为0时,可以不经审批直接删除
// 判断金额是否为0 // 判断金额是否为0
if (orderFeeApplicationDO.getApplicationFee().compareTo(BigDecimal.ZERO) != 0){ if (orderFeeApplicationDO.getApplicationFee().compareTo(BigDecimal.ZERO) != 0) {
throw exception(FEE_APPLICATION_NOT_IS_ZERO); throw exception(FEE_APPLICATION_NOT_IS_ZERO);
} }
// 删除可能的应收单 // 删除可能的应收单
...@@ -269,7 +270,7 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl ...@@ -269,7 +270,7 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl
orderFeeApplicationDO.getReceivableId() > 0) { orderFeeApplicationDO.getReceivableId() > 0) {
long idTemp = (long) orderFeeApplicationDO.getReceivableId(); long idTemp = (long) orderFeeApplicationDO.getReceivableId();
ReceivableDO rDo = receivableService.getReceivable(idTemp); ReceivableDO rDo = receivableService.getReceivable(idTemp);
if(Objects.nonNull(rDo)){ if (Objects.nonNull(rDo)) {
receivableService.removeById(rDo.getId()); receivableService.removeById(rDo.getId());
} }
} }
...@@ -323,8 +324,14 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl ...@@ -323,8 +324,14 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateFeeApproveResult(String id, int result) { public void updateFeeApproveResult(String id, int result) {
OrderFeeApplicationDO orderFeeApplicationDO = OrderApprovalDO orderApprovalDO = orderApprovalService.getApproval(Long.parseLong(id));
feeApplicationMapper.selectById(id); if (Objects.isNull(orderApprovalDO)){
throw exception(ORDER_APPROVAL_INFO_NOT_FIND);
}
orderApprovalDO.setStatus(result);
orderApprovalService.updateById(orderApprovalDO);
// 这里已经将修改后的内容更新到原数据中去了
OrderFeeApplicationDO orderFeeApplicationDO = JSONObject.parseObject(orderApprovalDO.getDetails(), OrderFeeApplicationDO.class);
if (orderFeeApplicationDO != null) { if (orderFeeApplicationDO != null) {
orderFeeApplicationDO.setStatus(result); orderFeeApplicationDO.setStatus(result);
feeApplicationMapper.updateById(orderFeeApplicationDO); feeApplicationMapper.updateById(orderFeeApplicationDO);
...@@ -423,7 +430,9 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl ...@@ -423,7 +430,9 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateFeeApproveBatchResult(String id, int result) { public void updateFeeApproveBatchResult(String id, int result) {
OrderApprovalDO orderApprovalDO = orderApprovalService.getApproval(Long.parseLong(id)); OrderApprovalDO orderApprovalDO = orderApprovalService.getApproval(Long.parseLong(id));
if (orderApprovalDO != null) { if (Objects.isNull(orderApprovalDO)){
throw exception(ORDER_APPROVAL_INFO_NOT_FIND);
}
orderApprovalDO.setStatus(result); orderApprovalDO.setStatus(result);
orderApprovalService.updateById(orderApprovalDO); orderApprovalService.updateById(orderApprovalDO);
if (result == ApprovalResultStatusEnum.pass.getValue()) { if (result == ApprovalResultStatusEnum.pass.getValue()) {
...@@ -509,7 +518,6 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl ...@@ -509,7 +518,6 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl
orderService.updateStatus(orderApprovalDO.getOrderId(), null, null, null, null, null, 0, OrderApprovalTypeResultEnum.expense_apply_cancel.getDesc()); orderService.updateStatus(orderApprovalDO.getOrderId(), null, null, null, null, null, 0, OrderApprovalTypeResultEnum.expense_apply_cancel.getDesc());
} }
} }
}
@Override @Override
public List<OrderFeeApplicationDO> getFeeApplicationListByOrderId(Long orderId) { public List<OrderFeeApplicationDO> getFeeApplicationListByOrderId(Long orderId) {
...@@ -526,6 +534,13 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl ...@@ -526,6 +534,13 @@ public class OrderFeeApplicationServiceImpl extends AbstractService<OrderFeeAppl
} else { } else {
item.setReceiveFlag(0); item.setReceiveFlag(0);
} }
if (item.getStatus() == 1 && StringUtils.isNotBlank(item.getBpmProcessId())){
OrderApprovalDO approvalDO = orderApprovalService.getApproval(Long.valueOf(item.getBpmProcessId()));
if (Objects.nonNull(approvalDO) && Objects.nonNull(approvalDO.getDetails())){
OrderFeeApplicationDO feeApplicationDO = JSONObject.parseObject(approvalDO.getDetails(), OrderFeeApplicationDO.class);
BeanUtils.copyProperties(feeApplicationDO, item);
}
}
}); });
return feeApplicationList; return feeApplicationList;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment