24282 8 місяців тому
батько
коміт
e5b4b2aad5

+ 9 - 0
jy-business/src/main/java/com/jy/business/payment/controller/PaymentRequestsController.java

@@ -6,6 +6,7 @@ import com.jy.business.payment.model.dto.PaymentRequestsSelectDto;
 import com.jy.business.payment.model.entity.PaymentRemit;
 import com.jy.business.payment.model.vo.PaymentRequestsVo;
 import com.jy.business.payment.service.PaymentRequestsService;
+import com.jy.flow.model.dto.RetrieveDto;
 import com.jy.framework.model.base.BaseSelectDto;
 import jakarta.annotation.Resource;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -85,4 +86,12 @@ public class PaymentRequestsController {
         paymentRequestsService.remit(dto);
     }
 
+    /**
+     * 撤回流程
+     */
+    @PostMapping("/retrieve")
+    public void retrieve(@RequestBody RetrieveDto dto) {
+        paymentRequestsService.retrieve(dto);
+    }
+
 }

+ 1 - 1
jy-business/src/main/java/com/jy/business/payment/dao/PaymentRequestsDao.java

@@ -130,7 +130,7 @@ public class PaymentRequestsDao extends BaseDao<PaymentRequestsMapper, PaymentRe
                 .leftJoin(ca).on(pr.capitalAccountId.eq(ca.id))
                 .where(
                         pr.createUser.in(authService.getUserPermissionSet()),
-                        pr.approvalStatus.eq(FlowStatusEnum.COMPLETED.getKey()),
+                        pr.approvalStatus.eq(FlowStatusEnum.PASS.getKey()),
                         pr.corporationId.eq(dto.getCorporationId()),
                         pr.deptId.eq(dto.getDeptId()),
                         pr.type.eq(dto.getType()),

+ 6 - 0
jy-business/src/main/java/com/jy/business/payment/service/PaymentRequestsService.java

@@ -5,6 +5,7 @@ import com.jy.business.payment.model.dto.PaymentRequestsDto;
 import com.jy.business.payment.model.dto.PaymentRequestsSelectDto;
 import com.jy.business.payment.model.entity.PaymentRemit;
 import com.jy.business.payment.model.vo.PaymentRequestsVo;
+import com.jy.flow.model.dto.RetrieveDto;
 
 import java.util.List;
 
@@ -53,4 +54,9 @@ public interface PaymentRequestsService {
      */
     void remit(PaymentRemit dto);
 
+    /**
+     * 撤回流程
+     */
+    void retrieve(RetrieveDto dto);
+
 }

+ 8 - 2
jy-business/src/main/java/com/jy/business/payment/service/impl/PaymentRequestsServiceImpl.java

@@ -13,6 +13,7 @@ import com.jy.business.payment.model.entity.PaymentRequests;
 import com.jy.business.payment.model.entity.PaymentRequestsDetail;
 import com.jy.business.payment.model.vo.PaymentRequestsVo;
 import com.jy.business.payment.service.PaymentRequestsService;
+import com.jy.flow.model.dto.RetrieveDto;
 import com.jy.flow.model.enums.FlowStatusEnum;
 import com.jy.flow.utils.FlowUtil;
 import com.jy.framework.model.constants.CommonConstant;
@@ -66,7 +67,7 @@ public class PaymentRequestsServiceImpl implements PaymentRequestsService {
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(PaymentRequestsDto dto) {
-        dto.setApprovalStatus(FlowStatusEnum.UNDER_WAY.getKey());
+        dto.setApprovalStatus(FlowStatusEnum.APPROVAL.getKey());
         dto.setPaymentStatus(CommonConstant.NO);
         dto.setRemitAmount(BigDecimal.ZERO);
         paymentRequestsDao.save(dto);
@@ -82,7 +83,7 @@ public class PaymentRequestsServiceImpl implements PaymentRequestsService {
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void edit(PaymentRequestsDto dto) {
-        dto.setApprovalStatus(FlowStatusEnum.UNDER_WAY.getKey());
+        dto.setApprovalStatus(FlowStatusEnum.APPROVAL.getKey());
         paymentRequestsDao.updateById(dto);
         List<PaymentRequestsDetail> paymentRequestsDetailList = dto.getPaymentRequestsDetailList();
         paymentRequestsDetailList.forEach(item -> item.setPaymentRequestsId(dto.getId()));
@@ -136,4 +137,9 @@ public class PaymentRequestsServiceImpl implements PaymentRequestsService {
         capitalTransactionsService.add(capitalTransactionsDto);
     }
 
+    @Override
+    public void retrieve(RetrieveDto dto) {
+        paymentRequestsDao.updateFlowStatus(dto.getBusinessId(), FlowStatusEnum.RETRIEVE.getKeyStr());
+    }
+
 }

+ 4 - 4
jy-flow/src/main/java/com/jy/flow/controller/ExecuteController.java

@@ -228,7 +228,7 @@ public class ExecuteController {
         Task task = taskService.getById(dto.getTaskId());
         Long definitionId = task.getDefinitionId();
         String nodeCode = null;
-        FlowStatusEnum flowStatus = FlowStatusEnum.UNDER_WAY;
+        FlowStatusEnum flowStatus = FlowStatusEnum.APPROVAL;
 
         Integer handleType = dto.getHandleType();
         String skipType = switch (handleType) {
@@ -237,7 +237,7 @@ public class ExecuteController {
                 nodeCode = nextNode.getNodeCode();
                 // 如果是结束节点
                 if (nextNode.getNodeType() == 2) {
-                    flowStatus = FlowStatusEnum.COMPLETED;
+                    flowStatus = FlowStatusEnum.PASS;
                 }
                 yield SkipType.PASS.getKey();
             }
@@ -272,7 +272,7 @@ public class ExecuteController {
                         if (ObjectUtil.notEqual(skip.getNowNodeType(), 3)) {
                             // 回退到开始节点
                             if (skip.getNowNodeType() == 0) {
-                                flowStatus = FlowStatusEnum.PRIMED_FOR_ACTION;
+                                flowStatus = FlowStatusEnum.TOBESUBMIT;
                             }
                             break;
                         }
@@ -292,7 +292,7 @@ public class ExecuteController {
                 yield SkipType.REJECT.getKey();
             }
             case 3 -> {
-                flowStatus = FlowStatusEnum.DECLINED;
+                flowStatus = FlowStatusEnum.TERMINATE;
                 yield null;
             }
             default -> throw new ServiceException("办理类型不存在");

+ 20 - 0
jy-flow/src/main/java/com/jy/flow/model/dto/RetrieveDto.java

@@ -0,0 +1,20 @@
+package com.jy.flow.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class RetrieveDto {
+
+    /**
+     * 实例id
+     */
+    private Long instanceId;
+
+    /**
+     * 业务id
+     */
+    private String businessId;
+
+}

+ 6 - 5
jy-flow/src/main/java/com/jy/flow/model/enums/FlowStatusEnum.java

@@ -7,11 +7,12 @@ import lombok.Getter;
 @AllArgsConstructor
 public enum FlowStatusEnum {
 
-    PRIMED_FOR_ACTION(0, "待发起"),
-    UNDER_WAY(1, "进行中"),
-    COMPLETED(2, "已通过"),
-    DECLINED(3, "已驳回"),
-    CANCELLED(4, "已撤销");
+    TOBESUBMIT(0, "待提交"),
+    APPROVAL(1, "审批中"),
+    PASS(2, "审批通过"),
+    TERMINATE(4, "驳回"),
+    CANCEL(6, "撤销"),
+    RETRIEVE(7, "取回");
 
     private final int key;
     private final String desc;

+ 10 - 0
jy-flow/src/main/java/com/jy/flow/service/ExecuteService.java

@@ -23,4 +23,14 @@ public interface ExecuteService {
      */
     Page<FlowHisTask> copyPage(FlowTaskDto dto);
 
+    /**
+     * 撤回
+     */
+    void retrieveByInstanceId(Long instanceId);
+    /**
+     * 撤回
+     */
+    void retrieveByBusinessId(Long businessId);
+
+
 }

+ 36 - 0
jy-flow/src/main/java/com/jy/flow/service/impl/ExecuteServiceImpl.java

@@ -1,13 +1,22 @@
 package com.jy.flow.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jy.flow.mapper.WarmFlowMapper;
 import com.jy.flow.model.dto.FlowHisTaskDto;
 import com.jy.flow.model.dto.FlowTaskDto;
+import com.jy.flow.model.enums.FlowStatusEnum;
 import com.jy.flow.model.vo.FlowTaskVo;
 import com.jy.flow.service.ExecuteService;
+import com.jy.framework.exception.ServiceException;
+import com.jy.framework.satoken.LoginContext;
 import jakarta.annotation.Resource;
+import org.dromara.warm.flow.core.dto.FlowParams;
+import org.dromara.warm.flow.core.entity.Instance;
+import org.dromara.warm.flow.core.service.InsService;
+import org.dromara.warm.flow.core.service.TaskService;
 import org.dromara.warm.flow.orm.entity.FlowHisTask;
+import org.dromara.warm.flow.orm.entity.FlowInstance;
 import org.springframework.stereotype.Service;
 
 @Service
@@ -16,6 +25,12 @@ public class ExecuteServiceImpl implements ExecuteService {
     @Resource
     private WarmFlowMapper flowMapper;
 
+    @Resource
+    private TaskService taskService;
+
+    @Resource
+    private InsService insService;
+
     @Override
     public Page<FlowTaskVo> toDoPage(FlowTaskDto dto) {
         return flowMapper.toDoPage(dto.getPage(), dto);
@@ -31,4 +46,25 @@ public class ExecuteServiceImpl implements ExecuteService {
         return flowMapper.copyPage(dto.getPage(), dto);
     }
 
+    @Override
+    public void retrieveByInstanceId(Long instanceId) {
+        FlowParams flowParams = new FlowParams();
+        flowParams.flowStatus(FlowStatusEnum.RETRIEVE.getKeyStr());
+        flowParams.hisStatus(FlowStatusEnum.RETRIEVE.getKeyStr());
+        flowParams.handler(LoginContext.getUserId().toString());
+        taskService.retrieve(instanceId, flowParams);
+    }
+
+    @Override
+    public void retrieveByBusinessId(Long businessId) {
+        String businessIdStr = businessId + "";
+
+        Instance instance = insService.getOne(new FlowInstance().setBusinessId(businessIdStr));
+        if (instance == null || ObjectUtil.notEqual(instance.getBusinessId(), businessIdStr)) {
+            throw new ServiceException("未知流程实例");
+        }
+
+        retrieveByInstanceId(instance.getId());
+    }
+
 }

+ 2 - 2
jy-flow/src/main/java/com/jy/flow/utils/FlowUtil.java

@@ -28,7 +28,7 @@ public class FlowUtil {
         FlowParams flowParams = FlowParams.build()
                 .flowCode(flowCode)
                 .handler(LoginContext.getUserId().toString())
-                .flowStatus(FlowStatusEnum.UNDER_WAY.getKeyStr());
+                .flowStatus(FlowStatusEnum.APPROVAL.getKeyStr());
 
         insService.start(businessId.toString(), flowParams);
     }
@@ -41,7 +41,7 @@ public class FlowUtil {
                 .flowCode(flowCode)
                 .handler(LoginContext.getUserId().toString())
                 .variable(variable)
-                .flowStatus(FlowStatusEnum.UNDER_WAY.getKeyStr());
+                .flowStatus(FlowStatusEnum.APPROVAL.getKeyStr());
 
         insService.start(businessId.toString(), flowParams);
     }

+ 6 - 0
jy-ui/src/api/business/payment/requests.ts

@@ -35,3 +35,9 @@ export function getRemitPageApi(params: StrAnyObj): Promise<PageType<StrAnyObj>>
 export function remitApi(data: StrAnyObj): Promise<PageType<StrAnyObj>> {
   return request.post('/paymentRequests/remit', data)
 }
+
+
+// 取回流程
+export function retrieveApi(data: StrAnyObj): Promise<void> {
+  return request.post(`/paymentRequests/retrieve`,data)
+}

+ 0 - 1
jy-ui/src/components/ATable/HandleColumn.vue

@@ -76,7 +76,6 @@ function getText(config: HandleConfigType) {
           v-permissions="item.permissions"
           :key="index"
           :disabled="getResult(item.disabled ?? false)"
-          :icon="getIcon(item)"
           link
           type="primary"
           @click="() => item.click?.(scope.row, scope.$index)"

+ 41 - 13
jy-ui/src/views/business/payment/requests/index.vue

@@ -10,12 +10,12 @@ import {
   deleteApi,
   editApi,
   getDetailApi,
-  getPageApi
+  getPageApi,
+  retrieveApi
 } from '@/api/business/payment/requests'
 import { getPageApi as getCorporationPageApi } from '@/api/business/corporation/corporation'
 import DeptTreeSelect from '@/views/components/DeptTreeSelect/index.vue'
 import { getPageApi as getCapitalAccountPageApi } from '@/api/business/capital/account'
-import FileUpload from '@/components/FlieUpload/index.vue'
 import { getDictByCode } from '@/utils/dict'
 import MoneyPDF from '@/components/PDF/moneyPDF.vue'
 import { getPdf } from '@/utils/getPdf.js'
@@ -78,19 +78,27 @@ const queryConfig: FormConfigType[] = [
     option: [
       {
         key: 0,
-        label: '待发起'
+        label: '待提交'
       },
       {
         key: 1,
-        label: '进行中'
+        label: '审批中'
       },
       {
         key: 2,
-        label: '通过'
+        label: '审批通过'
       },
       {
-        key: 3,
-        label: '已驳回'
+        key: 4,
+        label: '终止'
+      },
+      {
+        key: 6,
+        label: '撤销'
+      },
+      {
+        key: 7,
+        label: '取回'
       }
     ]
   },
@@ -191,13 +199,19 @@ const columnConfig: ColumnConfigType[] = [
     formatter(row) {
       switch (row.approvalStatus) {
         case 0:
-          return '待发起'
+          return '待提交'
         case 1:
-          return '进行中'
+          return '审批中'
         case 2:
-          return '已通过'
-        case 3:
-          return '已驳回'
+          return '审批通过'
+        case 4:
+          return '驳回'
+        case 6:
+          return '撤销'
+        case 7:
+          return '取回'
+        default:
+          return ''
       }
     }
   },
@@ -212,6 +226,8 @@ const columnConfig: ColumnConfigType[] = [
           return '部分打款'
         case 2:
           return '已打款'
+        default:
+          return ''
       }
     }
   },
@@ -219,9 +235,21 @@ const columnConfig: ColumnConfigType[] = [
     width: 250,
     handleConfig: [
       {
+        text: '取回',
+        if(row){
+          return row.approvalStatus == 1
+        },
+        click(row) {
+          retrieveApi({ businessId: row.id }).then(() => {
+            ElMessage.success('取回成功')
+            getPage()
+          })
+        }
+      },
+      {
         text: '重新发起',
         if(row) {
-          return row.approvalStatus == 0
+          return row.approvalStatus == 0 || row.approvalStatus == 7
         },
         click(row) {
           dialogVisible.value = true

+ 26 - 21
jy-ui/src/views/flow/taskDone/index.vue

@@ -93,28 +93,24 @@ const columnConfig: ColumnConfigType[] = [
     label: '节点名称'
   },
   {
-    prop: 'cooperateType',
-    label: '协作类型'
-  },
-  {
-    prop: 'collaborator',
-    label: '协作人'
-  },
-  {
     prop: 'flowStatus',
     label: '流程状态',
     formatter: (row) => {
-      console.log(row)
-      console.log(row.flowStatus)
       switch (row.flowStatus) {
         case '0':
-          return '待发起'
+          return '待提交'
         case '1':
-          return '进行中'
+          return '审批中'
         case '2':
-          return '已通过'
-        case '3':
-          return '已驳回'
+          return '审批通过'
+        case '4':
+          return '驳回'
+        case '6':
+          return '撤销'
+        case '7':
+          return '取回'
+        default:
+          return ''
       }
     }
   },
@@ -182,13 +178,22 @@ const doneListColumnConfig: ColumnConfigType[] = [
     prop: 'type',
     label: '审批类型',
     formatter(row) {
-      if (row.flowStatus == 3) {
-        return '驳回'
-      }
-      if (row.skipType == 'PASS') {
-        return '通过'
+      switch (row.flowStatus) {
+        case '0':
+          return '待提交'
+        case '1':
+          return '审批中'
+        case '2':
+          return '审批通过'
+        case '4':
+          return '驳回'
+        case '6':
+          return '撤销'
+        case '7':
+          return '取回'
+        default:
+          return ''
       }
-      return '退回'
     }
   },
   {

+ 26 - 11
jy-ui/src/views/flow/taskTodo/index.vue

@@ -113,13 +113,19 @@ const columnConfig: ColumnConfigType[] = [
     formatter: (row) => {
       switch (row.flowStatus) {
         case '0':
-          return '待发起'
+          return '待提交'
         case '1':
-          return '进行中'
+          return '审批中'
         case '2':
-          return '已通过'
-        case '3':
-          return '已驳回'
+          return '审批通过'
+        case '4':
+          return '驳回'
+        case '6':
+          return '撤销'
+        case '7':
+          return '取回'
+        default:
+          return ''
       }
     }
   },
@@ -184,13 +190,22 @@ const doneListColumnConfig: ColumnConfigType[] = [
     prop: 'type',
     label: '审批类型',
     formatter(row) {
-      if (row.flowStatus == 3) {
-        return '驳回'
-      }
-      if (row.skipType == 'PASS') {
-        return '通过'
+      switch (row.flowStatus) {
+        case '0':
+          return '待提交'
+        case '1':
+          return '审批中'
+        case '2':
+          return '审批通过'
+        case '4':
+          return '驳回'
+        case '6':
+          return '撤销'
+        case '7':
+          return '取回'
+        default:
+          return ''
       }
-      return '退回'
     }
   },
   {