mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-18 21:18:01 +08:00
接入司机开票申请待办流程
This commit is contained in:
@@ -90,7 +90,7 @@ public class OrderInvoiceRecordController extends BaseController {
|
||||
@Log(title = "申请开票", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody OrderInvoiceRecord orderInvoiceRecord) {
|
||||
return toAjax(orderInvoiceRecordService.updateOrderInvoiceRecord(orderInvoiceRecord));
|
||||
return toAjax(orderInvoiceRecordService.updateOrderInvoiceRecord(orderInvoiceRecord, getUserId(), getUsername()));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -100,6 +100,6 @@ public class OrderInvoiceRecordController extends BaseController {
|
||||
@Log(title = "申请开票", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable Integer[] ids) {
|
||||
return toAjax(orderInvoiceRecordService.deleteOrderInvoiceRecordByIds(ids));
|
||||
return toAjax(orderInvoiceRecordService.deleteOrderInvoiceRecordByIds(ids, getUsername()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
package com.jsowell.pile.service;
|
||||
|
||||
import com.jsowell.pile.domain.OrderInvoiceRecord;
|
||||
import com.jsowell.pile.domain.PileMerchantInfo;
|
||||
import com.jsowell.pile.mapper.OrderInvoiceRecordMapper;
|
||||
import com.jsowell.pile.service.impl.OrderInvoiceRecordServiceImpl;
|
||||
import com.jsowell.system.constant.TodoTaskConstants;
|
||||
import com.jsowell.system.domain.SysTodoTask;
|
||||
import com.jsowell.system.domain.dto.TodoTaskCreateCommand;
|
||||
import com.jsowell.system.service.TodoTaskAssigneeService;
|
||||
import com.jsowell.system.service.TodoTaskService;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.doAnswer;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
class OrderInvoiceRecordTodoTest {
|
||||
@Test
|
||||
void insert_shouldCreateTodoForEachMerchantUser() {
|
||||
OrderInvoiceRecordMapper mapper = mock(OrderInvoiceRecordMapper.class);
|
||||
PileMerchantInfoService merchantService = mock(PileMerchantInfoService.class);
|
||||
TodoTaskAssigneeService assigneeService = mock(TodoTaskAssigneeService.class);
|
||||
TodoTaskService todoTaskService = mock(TodoTaskService.class);
|
||||
OrderInvoiceRecordServiceImpl service = newService(mapper, merchantService, assigneeService, todoTaskService);
|
||||
|
||||
OrderInvoiceRecord invoiceRecord = new OrderInvoiceRecord();
|
||||
invoiceRecord.setMerchantId("100");
|
||||
doAnswer(invocation -> {
|
||||
OrderInvoiceRecord record = invocation.getArgument(0);
|
||||
record.setId(55);
|
||||
return 1;
|
||||
}).when(mapper).insertOrderInvoiceRecord(invoiceRecord);
|
||||
|
||||
PileMerchantInfo merchantInfo = new PileMerchantInfo();
|
||||
merchantInfo.setDeptId("200");
|
||||
when(merchantService.selectPileMerchantInfoById(100L)).thenReturn(merchantInfo);
|
||||
when(assigneeService.findActiveUserIdsByDeptTree(200L)).thenReturn(Arrays.asList(8L, 9L));
|
||||
when(todoTaskService.createTask(any(TodoTaskCreateCommand.class))).thenReturn(new SysTodoTask());
|
||||
|
||||
service.insertOrderInvoiceRecord(invoiceRecord);
|
||||
|
||||
ArgumentCaptor<TodoTaskCreateCommand> captor = ArgumentCaptor.forClass(TodoTaskCreateCommand.class);
|
||||
verify(todoTaskService, times(2)).createTask(captor.capture());
|
||||
List<TodoTaskCreateCommand> commands = captor.getAllValues();
|
||||
assertEquals(Arrays.asList(8L, 9L), Arrays.asList(
|
||||
commands.get(0).getAssigneeUserId(), commands.get(1).getAssigneeUserId()));
|
||||
assertEquals("ORDER_INVOICE_RECORD", commands.get(0).getBusinessType());
|
||||
assertEquals("55", commands.get(0).getBusinessId());
|
||||
assertEquals("invoiceDetail", commands.get(0).getRouteName());
|
||||
assertEquals(TodoTaskConstants.PRIORITY_IMPORTANT, commands.get(0).getPriority());
|
||||
assertEquals("INVOICE_REVIEW:ORDER_INVOICE_RECORD:55:8", commands.get(0).getIdempotentKey());
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateCompleted_shouldCompleteBusinessTodos() {
|
||||
OrderInvoiceRecordMapper mapper = mock(OrderInvoiceRecordMapper.class);
|
||||
TodoTaskService todoTaskService = mock(TodoTaskService.class);
|
||||
OrderInvoiceRecordServiceImpl service = newService(mapper, mock(PileMerchantInfoService.class),
|
||||
mock(TodoTaskAssigneeService.class), todoTaskService);
|
||||
OrderInvoiceRecord invoiceRecord = new OrderInvoiceRecord();
|
||||
invoiceRecord.setId(55);
|
||||
invoiceRecord.setStatus("1");
|
||||
when(mapper.updateOrderInvoiceRecord(invoiceRecord)).thenReturn(1);
|
||||
|
||||
service.updateOrderInvoiceRecord(invoiceRecord, 1L, "admin");
|
||||
|
||||
verify(todoTaskService).completeByBusiness("ORDER_INVOICE_RECORD", "55", null, 1L, "admin");
|
||||
}
|
||||
|
||||
@Test
|
||||
void delete_shouldCancelBusinessTodos() {
|
||||
OrderInvoiceRecordMapper mapper = mock(OrderInvoiceRecordMapper.class);
|
||||
TodoTaskService todoTaskService = mock(TodoTaskService.class);
|
||||
OrderInvoiceRecordServiceImpl service = newService(mapper, mock(PileMerchantInfoService.class),
|
||||
mock(TodoTaskAssigneeService.class), todoTaskService);
|
||||
Integer[] ids = { 55, 56 };
|
||||
when(mapper.deleteOrderInvoiceRecordByIds(ids)).thenReturn(2);
|
||||
|
||||
service.deleteOrderInvoiceRecordByIds(ids, "admin");
|
||||
|
||||
verify(todoTaskService).cancelByBusiness("ORDER_INVOICE_RECORD", "55", null,
|
||||
"admin", "开票申请已关闭");
|
||||
verify(todoTaskService).cancelByBusiness("ORDER_INVOICE_RECORD", "56", null,
|
||||
"admin", "开票申请已关闭");
|
||||
}
|
||||
|
||||
private static OrderInvoiceRecordServiceImpl newService(OrderInvoiceRecordMapper mapper,
|
||||
PileMerchantInfoService merchantService, TodoTaskAssigneeService assigneeService,
|
||||
TodoTaskService todoTaskService) {
|
||||
OrderInvoiceRecordServiceImpl service = new OrderInvoiceRecordServiceImpl();
|
||||
setField(service, "orderInvoiceRecordMapper", mapper);
|
||||
setField(service, "pileMerchantInfoService", merchantService);
|
||||
setField(service, "todoTaskAssigneeService", assigneeService);
|
||||
setField(service, "todoTaskService", todoTaskService);
|
||||
return service;
|
||||
}
|
||||
|
||||
private static void setField(Object target, String fieldName, Object value) {
|
||||
try {
|
||||
Field field = target.getClass().getDeclaredField(fieldName);
|
||||
field.setAccessible(true);
|
||||
field.set(target, value);
|
||||
} catch (Exception exception) {
|
||||
throw new RuntimeException(exception);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user