mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-18 13:08:04 +08:00
接入司机开票申请待办流程
This commit is contained in:
@@ -61,7 +61,7 @@ public interface OrderInvoiceRecordService {
|
||||
* @param orderInvoiceRecord 申请开票
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateOrderInvoiceRecord(OrderInvoiceRecord orderInvoiceRecord);
|
||||
public int updateOrderInvoiceRecord(OrderInvoiceRecord orderInvoiceRecord, Long operatorId, String operatorName);
|
||||
|
||||
/**
|
||||
* 批量删除申请开票
|
||||
@@ -69,7 +69,7 @@ public interface OrderInvoiceRecordService {
|
||||
* @param ids 需要删除的申请开票主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteOrderInvoiceRecordByIds(Integer[] ids);
|
||||
public int deleteOrderInvoiceRecordByIds(Integer[] ids, String operatorName);
|
||||
|
||||
/**
|
||||
* 删除申请开票信息
|
||||
@@ -77,5 +77,5 @@ public interface OrderInvoiceRecordService {
|
||||
* @param id 申请开票主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteOrderInvoiceRecordById(Integer id);
|
||||
public int deleteOrderInvoiceRecordById(Integer id, String operatorName);
|
||||
}
|
||||
|
||||
@@ -2,21 +2,31 @@ package com.jsowell.pile.service.impl;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.jsowell.common.core.domain.vo.AuthorizedDeptVO;
|
||||
import com.jsowell.common.util.StringUtils;
|
||||
import com.jsowell.pile.domain.OrderInvoiceRecord;
|
||||
import com.jsowell.pile.domain.PileMerchantInfo;
|
||||
import com.jsowell.pile.dto.GetInvoiceInfoDTO;
|
||||
import com.jsowell.pile.dto.QueryInvoiceRecordDTO;
|
||||
import com.jsowell.pile.mapper.OrderInvoiceRecordMapper;
|
||||
import com.jsowell.pile.service.MemberInvoiceTitleService;
|
||||
import com.jsowell.pile.service.OrderInvoiceRecordService;
|
||||
import com.jsowell.pile.service.OrderBasicInfoService;
|
||||
import com.jsowell.pile.service.PileMerchantInfoService;
|
||||
import com.jsowell.pile.util.UserUtils;
|
||||
import com.jsowell.pile.vo.base.OrderAmountDetailVO;
|
||||
import com.jsowell.pile.vo.uniapp.customer.InvoiceTitleVO;
|
||||
import com.jsowell.pile.vo.web.InvoiceRecordVO;
|
||||
import com.jsowell.pile.vo.web.OrderInvoiceRecordVO;
|
||||
import com.jsowell.system.constant.TodoTaskConstants;
|
||||
import com.jsowell.system.domain.dto.TodoTaskCreateCommand;
|
||||
import com.jsowell.system.service.TodoTaskAssigneeService;
|
||||
import com.jsowell.system.service.TodoTaskService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
@@ -30,6 +40,11 @@ import java.util.List;
|
||||
*/
|
||||
@Service
|
||||
public class OrderInvoiceRecordServiceImpl implements OrderInvoiceRecordService {
|
||||
private static final Logger log = LoggerFactory.getLogger(OrderInvoiceRecordServiceImpl.class);
|
||||
private static final String TODO_TASK_TYPE = "INVOICE_REVIEW";
|
||||
private static final String TODO_BUSINESS_TYPE = "ORDER_INVOICE_RECORD";
|
||||
private static final String TODO_ROUTE_NAME = "invoiceDetail";
|
||||
|
||||
@Autowired
|
||||
private OrderInvoiceRecordMapper orderInvoiceRecordMapper;
|
||||
|
||||
@@ -39,6 +54,15 @@ public class OrderInvoiceRecordServiceImpl implements OrderInvoiceRecordService
|
||||
@Autowired
|
||||
private OrderBasicInfoService orderBasicInfoService;
|
||||
|
||||
@Autowired
|
||||
private PileMerchantInfoService pileMerchantInfoService;
|
||||
|
||||
@Autowired
|
||||
private TodoTaskAssigneeService todoTaskAssigneeService;
|
||||
|
||||
@Autowired
|
||||
private TodoTaskService todoTaskService;
|
||||
|
||||
/**
|
||||
* 查询申请开票
|
||||
*
|
||||
@@ -132,8 +156,13 @@ public class OrderInvoiceRecordServiceImpl implements OrderInvoiceRecordService
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int insertOrderInvoiceRecord(OrderInvoiceRecord orderInvoiceRecord) {
|
||||
return orderInvoiceRecordMapper.insertOrderInvoiceRecord(orderInvoiceRecord);
|
||||
int rows = orderInvoiceRecordMapper.insertOrderInvoiceRecord(orderInvoiceRecord);
|
||||
if (rows > 0) {
|
||||
createInvoiceReviewTodos(orderInvoiceRecord);
|
||||
}
|
||||
return rows;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -143,8 +172,14 @@ public class OrderInvoiceRecordServiceImpl implements OrderInvoiceRecordService
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateOrderInvoiceRecord(OrderInvoiceRecord orderInvoiceRecord) {
|
||||
return orderInvoiceRecordMapper.updateOrderInvoiceRecord(orderInvoiceRecord);
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int updateOrderInvoiceRecord(OrderInvoiceRecord orderInvoiceRecord, Long operatorId, String operatorName) {
|
||||
int rows = orderInvoiceRecordMapper.updateOrderInvoiceRecord(orderInvoiceRecord);
|
||||
if (rows > 0 && "1".equals(orderInvoiceRecord.getStatus())) {
|
||||
todoTaskService.completeByBusiness(TODO_BUSINESS_TYPE, String.valueOf(orderInvoiceRecord.getId()),
|
||||
null, operatorId, operatorName);
|
||||
}
|
||||
return rows;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -154,8 +189,18 @@ public class OrderInvoiceRecordServiceImpl implements OrderInvoiceRecordService
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteOrderInvoiceRecordByIds(Integer[] ids) {
|
||||
return orderInvoiceRecordMapper.deleteOrderInvoiceRecordByIds(ids);
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int deleteOrderInvoiceRecordByIds(Integer[] ids, String operatorName) {
|
||||
int rows = orderInvoiceRecordMapper.deleteOrderInvoiceRecordByIds(ids);
|
||||
if (rows > 0 && ids != null) {
|
||||
for (Integer id : ids) {
|
||||
if (id != null) {
|
||||
todoTaskService.cancelByBusiness(TODO_BUSINESS_TYPE, String.valueOf(id), null,
|
||||
operatorName, "开票申请已关闭");
|
||||
}
|
||||
}
|
||||
}
|
||||
return rows;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -165,7 +210,71 @@ public class OrderInvoiceRecordServiceImpl implements OrderInvoiceRecordService
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteOrderInvoiceRecordById(Integer id) {
|
||||
return orderInvoiceRecordMapper.deleteOrderInvoiceRecordById(id);
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int deleteOrderInvoiceRecordById(Integer id, String operatorName) {
|
||||
int rows = orderInvoiceRecordMapper.deleteOrderInvoiceRecordById(id);
|
||||
if (rows > 0) {
|
||||
todoTaskService.cancelByBusiness(TODO_BUSINESS_TYPE, String.valueOf(id), null,
|
||||
operatorName, "开票申请已关闭");
|
||||
}
|
||||
return rows;
|
||||
}
|
||||
|
||||
private void createInvoiceReviewTodos(OrderInvoiceRecord invoiceRecord) {
|
||||
if (invoiceRecord.getId() == null || StringUtils.isBlank(invoiceRecord.getMerchantId())) {
|
||||
log.warn("开票申请缺少主键或运营商,无法创建待办,invoiceId={}, merchantId={}",
|
||||
invoiceRecord.getId(), invoiceRecord.getMerchantId());
|
||||
return;
|
||||
}
|
||||
|
||||
PileMerchantInfo merchantInfo;
|
||||
try {
|
||||
merchantInfo = pileMerchantInfoService.selectPileMerchantInfoById(Long.parseLong(invoiceRecord.getMerchantId()));
|
||||
} catch (NumberFormatException exception) {
|
||||
log.warn("开票申请运营商 ID 非法,无法创建待办,invoiceId={}, merchantId={}",
|
||||
invoiceRecord.getId(), invoiceRecord.getMerchantId());
|
||||
return;
|
||||
}
|
||||
|
||||
if (merchantInfo == null || StringUtils.isBlank(merchantInfo.getDeptId())) {
|
||||
log.warn("开票申请运营商未配置部门,无法创建待办,invoiceId={}, merchantId={}",
|
||||
invoiceRecord.getId(), invoiceRecord.getMerchantId());
|
||||
return;
|
||||
}
|
||||
|
||||
Long merchantDeptId;
|
||||
try {
|
||||
merchantDeptId = Long.parseLong(merchantInfo.getDeptId());
|
||||
} catch (NumberFormatException exception) {
|
||||
log.warn("开票申请运营商部门 ID 非法,无法创建待办,invoiceId={}, deptId={}",
|
||||
invoiceRecord.getId(), merchantInfo.getDeptId());
|
||||
return;
|
||||
}
|
||||
|
||||
List<Long> assigneeUserIds = todoTaskAssigneeService.findActiveUserIdsByDeptTree(merchantDeptId);
|
||||
if (CollectionUtils.isEmpty(assigneeUserIds)) {
|
||||
log.warn("开票申请运营商部门下没有正常用户,无法创建待办,invoiceId={}, deptId={}",
|
||||
invoiceRecord.getId(), merchantInfo.getDeptId());
|
||||
return;
|
||||
}
|
||||
|
||||
for (Long assigneeUserId : assigneeUserIds) {
|
||||
String idempotentKey = TODO_TASK_TYPE + ":" + TODO_BUSINESS_TYPE + ":"
|
||||
+ invoiceRecord.getId() + ":" + assigneeUserId;
|
||||
todoTaskService.createTask(TodoTaskCreateCommand.builder()
|
||||
.taskType(TODO_TASK_TYPE)
|
||||
.title("司机开票申请")
|
||||
.summary("有新的司机开票申请需要处理,申请单号:" + invoiceRecord.getId())
|
||||
.businessType(TODO_BUSINESS_TYPE)
|
||||
.businessId(String.valueOf(invoiceRecord.getId()))
|
||||
.routeName(TODO_ROUTE_NAME)
|
||||
.routeParams("{\"params\":{\"id\":\"" + invoiceRecord.getId() + "\"}}")
|
||||
.assigneeUserId(assigneeUserId)
|
||||
.assigneeMerchantId(invoiceRecord.getMerchantId())
|
||||
.priority(TodoTaskConstants.PRIORITY_IMPORTANT)
|
||||
.idempotentKey(idempotentKey)
|
||||
.createBy("invoice-system")
|
||||
.build());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user