|
|
@@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
18
|
18
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
|
19
|
19
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
20
|
20
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
21
|
+import com.srm.bpm.facde.oa.OfsTodoDataWebServicePortType_OfsTodoDataWebServiceHttpPort_Client;
|
|
21
|
22
|
import com.srm.bpm.facde.oa.ReceiveRequestInfoByJsonDto;
|
|
22
|
23
|
import com.srm.bpm.infra.entity.BillBizDataEntity;
|
|
23
|
24
|
import com.srm.bpm.infra.entity.BillDataJsonEntity;
|
|
|
@@ -1523,6 +1524,7 @@ public class BillLogicImpl implements BillLogic {
|
|
1523
|
1524
|
*/
|
|
1524
|
1525
|
@Override
|
|
1525
|
1526
|
public void transferUser(long billId, String taskId, String transferUser, String userCode, String opinion) {
|
|
|
1527
|
+ // 查找当前用户的任务(只查找状态为APPROVAL的任务)
|
|
1526
|
1528
|
final Optional<BillTaskEntity> taskOpt = billBpmnLogic
|
|
1527
|
1529
|
.findTaskBybillAndEmployeeAndTaskId(billId, taskId, userCode);
|
|
1528
|
1530
|
|
|
|
@@ -1534,6 +1536,7 @@ public class BillLogicImpl implements BillLogic {
|
|
1534
|
1536
|
final int taskNodeStatus = task.getNodeStatus();
|
|
1535
|
1537
|
BillTaskStatus billTaskStatus = BillTaskStatus.valueTo(taskNodeStatus);
|
|
1536
|
1538
|
|
|
|
1539
|
+ // 只允许状态为APPROVAL的任务进行转办
|
|
1537
|
1540
|
if (billTaskStatus != BillTaskStatus.APPROVAL) {
|
|
1538
|
1541
|
throw new RbException(BillCode.BILL_TASK_HAS_APPROVED);
|
|
1539
|
1542
|
}
|
|
|
@@ -1546,29 +1549,55 @@ public class BillLogicImpl implements BillLogic {
|
|
1546
|
1549
|
List<BillTaskEntity> insertLists = Lists.newArrayList();
|
|
1547
|
1550
|
|
|
1548
|
1551
|
for (String targetUser : split) {
|
|
|
1552
|
+ // 检查目标用户是否已经是当前节点的审批人(包括转办任务)
|
|
1549
|
1553
|
List<BillTaskEntity> existingTasks = billTaskService
|
|
1550
|
1554
|
.findApprovingByBillAndTaskId(billId, taskId);
|
|
1551
|
1555
|
boolean isExistingApprover = existingTasks.stream()
|
|
1552
|
|
- .anyMatch(t -> targetUser.equals(t.getUserCode()));
|
|
|
1556
|
+ .anyMatch(t -> targetUser.equals(t.getUserCode()) &&
|
|
|
1557
|
+ t.getNodeStatus() == BillTaskStatus.APPROVAL.getStatus());
|
|
1553
|
1558
|
|
|
1554
|
1559
|
if (isExistingApprover) {
|
|
1555
|
1560
|
throw new RbException("不能转办给当前节点已有的审批人");
|
|
1556
|
1561
|
}
|
|
1557
|
1562
|
|
|
1558
|
|
- final BillTaskEntity transferTask = BeanUtil.sourceToTarget(task, BillTaskEntity.class);
|
|
1559
|
|
- transferTask.setSourceTaskId(task.getId());
|
|
|
1563
|
+ //
|
|
|
1564
|
+ BillTaskEntity transferTask = new BillTaskEntity();
|
|
|
1565
|
+
|
|
|
1566
|
+ transferTask.setBillId(billId);
|
|
|
1567
|
+ transferTask.setUserCode(targetUser);
|
|
1560
|
1568
|
transferTask.setSourceUserCode(userCode);
|
|
|
1569
|
+ transferTask.setSourceTaskId(task.getId());
|
|
|
1570
|
+
|
|
|
1571
|
+ transferTask.setTransferId(null);
|
|
|
1572
|
+
|
|
1561
|
1573
|
transferTask.setTaskType(BillTaskType.TRANSFER.getValue());
|
|
1562
|
|
- transferTask.setUserCode(targetUser);
|
|
1563
|
|
- transferTask.setId(null);
|
|
1564
|
|
- transferTask.setCreationTime(LocalDateTime.now());
|
|
|
1574
|
+ transferTask.setProcessId(task.getProcessId());
|
|
|
1575
|
+
|
|
|
1576
|
+ transferTask.setNodeApproverId(task.getNodeApproverId());
|
|
|
1577
|
+
|
|
|
1578
|
+ transferTask.setNodeName(task.getNodeName());
|
|
|
1579
|
+ transferTask.setNodeStatus(BillTaskStatus.APPROVAL.getStatus());
|
|
|
1580
|
+ transferTask.setDateline(0); // 清空原任务时间戳
|
|
|
1581
|
+
|
|
|
1582
|
+
|
|
|
1583
|
+ transferTask.setOpinion(null); // 清空原任务意见
|
|
|
1584
|
+ transferTask.setAction(BillAction.transfer.name()); // 清空原任务操作
|
|
|
1585
|
+
|
|
|
1586
|
+ transferTask.setTaskId(taskId);
|
|
|
1587
|
+ transferTask.setLastTaskId(task.getTaskId());
|
|
|
1588
|
+ transferTask.setSort(System.currentTimeMillis());
|
|
|
1589
|
+
|
|
|
1590
|
+ transferTask.setTaskNodeKey(task.getTaskNodeKey());
|
|
|
1591
|
+ transferTask.setLastNodeKey(task.getTaskNodeKey());
|
|
|
1592
|
+
|
|
1565
|
1593
|
insertLists.add(transferTask);
|
|
1566
|
1594
|
}
|
|
1567
|
1595
|
|
|
1568
|
1596
|
billTaskService.saveBatch(insertLists);
|
|
1569
|
1597
|
|
|
|
1598
|
+ // 更新原任务状态为已转办
|
|
1570
|
1599
|
task.setNodeStatus(BillTaskStatus.TRANSFER.getStatus());
|
|
1571
|
|
- task.setOpinion(Strings.isNullOrEmpty(opinion) ? "转办" : opinion);
|
|
|
1600
|
+ task.setOpinion(opinion);
|
|
1572
|
1601
|
task.setDateline(DateTimeUtil.unixTime());
|
|
1573
|
1602
|
billTaskService.upldate(task);
|
|
1574
|
1603
|
|
|
|
@@ -1576,6 +1605,30 @@ public class BillLogicImpl implements BillLogic {
|
|
1576
|
1605
|
sends.addAll(insertLists);
|
|
1577
|
1606
|
sends.add(task);
|
|
1578
|
1607
|
flowMsgLogic.sendMsg(sends);
|
|
|
1608
|
+
|
|
|
1609
|
+
|
|
|
1610
|
+ //链接OA统一待办审批
|
|
|
1611
|
+ BillItemVO billItemVO = new BillItemVO();
|
|
|
1612
|
+ OfsTodoDataWebServicePortType_OfsTodoDataWebServiceHttpPort_Client o1 = new OfsTodoDataWebServicePortType_OfsTodoDataWebServiceHttpPort_Client();
|
|
|
1613
|
+ billItemVO.setId(billId);
|
|
|
1614
|
+ //给已转发的发送已办
|
|
|
1615
|
+ billItemVO.setStatus(14);
|
|
|
1616
|
+ billItemVO.setTaskid(taskId);
|
|
|
1617
|
+ List<ReceiveRequestInfoByJsonDto> requestInfoByJsonDtos2 = this.findrequestInfo(billItemVO);
|
|
|
1618
|
+ String token =this.getToken4();
|
|
|
1619
|
+ for (ReceiveRequestInfoByJsonDto requestInfoByJsonDto:requestInfoByJsonDtos2){
|
|
|
1620
|
+ String requestdata =o1.getRequestData(requestInfoByJsonDto,"2");
|
|
|
1621
|
+ o1.ofsTodoDatabyEten(requestdata,token);
|
|
|
1622
|
+ }
|
|
|
1623
|
+
|
|
|
1624
|
+ //给审批中的发送待办
|
|
|
1625
|
+ billItemVO.setStatus(1);
|
|
|
1626
|
+ billItemVO.setTaskid(taskId);
|
|
|
1627
|
+ List<ReceiveRequestInfoByJsonDto> requestInfoByJsonDtos1 = this.findrequestInfo(billItemVO);
|
|
|
1628
|
+ for (ReceiveRequestInfoByJsonDto requestInfoByJsonDto:requestInfoByJsonDtos1){
|
|
|
1629
|
+ String requestdata =o1.getRequestData(requestInfoByJsonDto,"0");
|
|
|
1630
|
+ o1.ofsTodoDatabyEten(requestdata,token);
|
|
|
1631
|
+ }
|
|
1579
|
1632
|
}
|
|
1580
|
1633
|
|
|
1581
|
1634
|
/**
|