Просмотр исходного кода

开发审批流程

release_toaliyun_real
luozukai 7 лет назад
Родитель
Сommit
f8ad32d541
12 измененных файлов: 140 добавлений и 39 удалений
  1. +42
    -10
      mallinkAdmin/src/main/java/com/iformall/controller/FlowAbleController.java
  2. +0
    -12
      mallinkAdmin/src/main/java/com/iformall/flowable/BossTaskHandler.java
  3. +28
    -0
      mallinkAdmin/src/main/java/com/iformall/flowable/ContractTaskFinishHandler.java
  4. +0
    -13
      mallinkAdmin/src/main/java/com/iformall/flowable/ManagerTaskHandler.java
  5. +1
    -1
      mallinkAdmin/src/main/resources/processes/ExpenseProcess.bpmn20.xml
  6. +3
    -0
      mallinkAdmin/src/main/resources/processes/contractflow.bpmn20.xml
  7. +11
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java
  8. +38
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumRentContractAppStatus.java
  9. +2
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxRentContractMapper.java
  10. +2
    -0
      mallinkService/src/main/java/com/iformall/service/WxRentContractService.java
  11. +4
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java
  12. +9
    -3
      mallinkService/src/main/resources/mapper/WxRentContractMapper.xml

+ 42
- 10
mallinkAdmin/src/main/java/com/iformall/controller/FlowAbleController.java Просмотреть файл

@@ -1,14 +1,17 @@
package com.iformall.controller;

import com.iformall.common.ResultData;
import com.iformall.domain.po.WxRentContract;
import com.iformall.enums.EnumFlowKey;
import com.iformall.service.FlowableService;
import com.iformall.enums.EnumRentContractAppStatus;
import com.iformall.service.WxRentContractService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections.map.HashedMap;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.common.engine.impl.identity.Authentication;
import org.flowable.engine.*;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.runtime.Execution;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.engine.task.Comment;
@@ -38,6 +41,22 @@ public class FlowAbleController extends BaseController {
private RepositoryService repositoryService;
@Autowired
private ProcessEngine processEngine;
@Autowired
private WxRentContractService wxRentContractService;

/**
* 1合同 2账单
* @param flowType
* @return
*/
public String getFlowKeyByType(int flowType){
if(1 == flowType){
return EnumFlowKey.CONTRACT.getCode();
}else if(2 == flowType){
return EnumFlowKey.BILL.getCode();
}
return null;
}

@ApiOperation("启动流程")
@PostMapping("/start")
@@ -50,6 +69,8 @@ public class FlowAbleController extends BaseController {
String firstTaskUserId = params.get("firstTaskUserId");
String secondTaskUserId = params.get("secondTaskUserId");
String remark = params.get("remark");
Long businessId = Long.parseLong(params.get("businessId"));
Integer flowType = Integer.parseInt(params.get("flowType"));
HashMap<String, Object> map = new HashMap<>();

// 设置节点处理人
@@ -60,9 +81,16 @@ public class FlowAbleController extends BaseController {
map.put("starter", super.getUser().getName());
map.put("startTime",new Date().getTime());
map.put("remark",remark);
map.put("businessId",businessId);

ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(EnumFlowKey.CONTRACT.getCode(), map);
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(getFlowKeyByType(flowType), map);
logger.debug("流程启动,流程id:{}",processInstance.getId());

// 合同审核状态改为审核中
WxRentContract wxRentContract = new WxRentContract();
wxRentContract.setId(businessId);
wxRentContract.setApplyStatus(EnumRentContractAppStatus.APPLYING.getCode());
wxRentContractService.updateApplyStatus(wxRentContract);
return new ResultData();
}catch (Exception e){
logger.error("启动流程发生错误",e);
@@ -80,13 +108,8 @@ public class FlowAbleController extends BaseController {
@ResponseBody
public Object list(@RequestBody Map<String, Object> params) {
String userId = (String)params.get("userId");
Integer flowType = (Integer)params.get("flowType"); //1合同审批 2账单审批
String flowKey = "";
if(1 == flowType){
flowKey = EnumFlowKey.CONTRACT.getCode();
}else if(2 == flowType){
flowKey = EnumFlowKey.BILL.getCode();
}
Integer flowType = (Integer)params.get("flowType");
String flowKey = getFlowKeyByType(flowType);

List<Task> tasks = taskService.createTaskQuery().processDefinitionKey(flowKey).taskCandidateUser(userId).orderByTaskCreateTime().desc().list();
List<Map<String,Object>> result = new ArrayList<>();
@@ -130,9 +153,17 @@ public class FlowAbleController extends BaseController {
String taskId = params.get("taskId");
String processInstanceId = params.get("processInstanceId");
String remark = params.get("remark");
String businessId = params.get("businessId");

taskService.addComment(taskId,processInstanceId,remark);
runtimeService.deleteProcessInstance(processInstanceId, "驳回");

// 修改合同审核状态为驳回
WxRentContract wxRentContract = new WxRentContract();
wxRentContract.setId(Long.parseLong(businessId));
wxRentContract.setApplyStatus(EnumRentContractAppStatus.REJECT.getCode());
wxRentContractService.updateApplyStatus(wxRentContract);

return new ResultData();
}

@@ -142,7 +173,7 @@ public class FlowAbleController extends BaseController {
* @param processInstanceId 流程实例ID
*/
@ApiOperation("审批记录")
@PostMapping(value = "applyHistory")
@GetMapping(value = "applyHistory")
@ResponseBody
public String applyHistory(String processInstanceId) {
List<HistoricTaskInstance> list = processEngine.getHistoryService()
@@ -162,6 +193,7 @@ public class FlowAbleController extends BaseController {
System.out.println("====================================");
}
}

return "ok!";
}



+ 0
- 12
mallinkAdmin/src/main/java/com/iformall/flowable/BossTaskHandler.java Просмотреть файл

@@ -1,12 +0,0 @@
package com.iformall.flowable;

import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;
public class BossTaskHandler implements TaskListener {

@Override
public void notify(DelegateTask delegateTask) {
delegateTask.setAssignee("老板");
}

}

+ 28
- 0
mallinkAdmin/src/main/java/com/iformall/flowable/ContractTaskFinishHandler.java Просмотреть файл

@@ -0,0 +1,28 @@
package com.iformall.flowable;

import com.iformall.domain.po.WxRentContract;
import com.iformall.enums.EnumRentContractAppStatus;
import com.iformall.service.WxRentContractService;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
* 合同审批完成,修改状态
*/
@Component(value="contractTaskFinishListener")
public class ContractTaskFinishHandler implements TaskListener {
@Autowired
private WxRentContractService wxRentContractService;

@Override
public void notify(DelegateTask delegateTask) {
Long businessId = (Long)delegateTask.getVariable("businessId");
WxRentContract wxRentContract = new WxRentContract();
wxRentContract.setId(businessId);
wxRentContract.setApplyStatus(EnumRentContractAppStatus.FINISH.getCode());
wxRentContractService.updateApplyStatus(wxRentContract);
}

}

+ 0
- 13
mallinkAdmin/src/main/java/com/iformall/flowable/ManagerTaskHandler.java Просмотреть файл

@@ -1,13 +0,0 @@
package com.iformall.flowable;

import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;

public class ManagerTaskHandler implements TaskListener {

@Override
public void notify(DelegateTask delegateTask) {
delegateTask.setAssignee("经理");
}

}

+ 1
- 1
mallinkAdmin/src/main/resources/processes/ExpenseProcess.bpmn20.xml Просмотреть файл

@@ -23,7 +23,7 @@
<userTask id="bossTask" name="老板审批">
<extensionElements>
<flowable:taskListener event="create"
class="com.iformall.flowable.BossTaskHandler"></flowable:taskListener>
class="com.iformall.flowable.ContractTaskFinishHandler"></flowable:taskListener>
</extensionElements>
</userTask>
<endEvent id="end" name="结束"></endEvent>


+ 3
- 0
mallinkAdmin/src/main/resources/processes/contractflow.bpmn20.xml Просмотреть файл

@@ -12,6 +12,9 @@
<sequenceFlow id="sid-9FCAF465-99E7-4EFE-BEEA-7D59481E684C" sourceRef="secondTask" targetRef="sid-9692A856-E39A-4B8C-95C2-7C04A3646D6F"></sequenceFlow>
<userTask id="secondTask" name="复审" flowable:candidateUsers="${secondTaskUser}">
<documentation>复审</documentation>
<extensionElements>
<flowable:taskListener event="complete" delegateExpression="${contractTaskFinishListener}"></flowable:taskListener>
</extensionElements>
</userTask>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_contract_flow">


+ 11
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java Просмотреть файл

@@ -180,6 +180,17 @@ public class WxRentContract implements Serializable {
@io.swagger.annotations.ApiModelProperty(value = "起租结束时间", name = "rentalEndDate")
private Date endDate;

@io.swagger.annotations.ApiModelProperty(value = "审核状态", name = "applyStatus")
private Integer applyStatus;

public Integer getApplyStatus() {
return applyStatus;
}

public void setApplyStatus(Integer applyStatus) {
this.applyStatus = applyStatus;
}

public Long getMerchantId() {
return merchantId;
}


+ 38
- 0
mallinkService/src/main/java/com/iformall/enums/EnumRentContractAppStatus.java Просмотреть файл

@@ -0,0 +1,38 @@
package com.iformall.enums;

/**
* Created by luozukai
* 合同工作流审核状态
*/
public enum EnumRentContractAppStatus {
DEFAULT(0, "未审核"),
APPLYING(1, "审核中"),
FINISH(2, "审核完成"),
REJECT(3, "驳回")
;

public static EnumRentContractAppStatus getEnum(Integer code) {
for (EnumRentContractAppStatus value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumRentContractAppStatus(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 2
- 0
mallinkService/src/main/java/com/iformall/mapper/WxRentContractMapper.java Просмотреть файл

@@ -37,4 +37,6 @@ public interface WxRentContractMapper extends CommonMapper<WxRentContract, Strin

void updateStatusForUnsign(WxRentContract wxRentContract);

void updateApplyStatus(WxRentContract wxRentContract);

}

+ 2
- 0
mallinkService/src/main/java/com/iformall/service/WxRentContractService.java Просмотреть файл

@@ -63,4 +63,6 @@ public interface WxRentContractService {

ResultData updateRentContractStatus(Long id);

void updateApplyStatus(WxRentContract wxRentContract);

}

+ 4
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java Просмотреть файл

@@ -1190,4 +1190,8 @@ public class WxRentContractServiceImpl implements WxRentContractService {
return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整");
}

@Override
public void updateApplyStatus(WxRentContract wxRentContract) {
wxRentContractMapper.updateApplyStatus(wxRentContract);
}
}

+ 9
- 3
mallinkService/src/main/resources/mapper/WxRentContractMapper.xml Просмотреть файл

@@ -35,7 +35,8 @@
<result column="pay_ratio" jdbcType="INTEGER" property="payRatio"/>
<result column="start_date" jdbcType="TIMESTAMP" property="startDate"/>
<result column="end_date" jdbcType="TIMESTAMP" property="endDate"/>
<result column="apply_status" jdbcType="INTEGER" property="applyStatus"/>

</resultMap>
<sql id="allColumns">
@@ -43,7 +44,7 @@
`tenant_id`,`filepath`,`status`,`contract_number`,`deposit`,`pay_date`,`is_del`,`merchant_name`,
`brand`,`business_id`,`shop_type`,`shop_id`,`updatetime`,`createtime`,`link_person`,`link_phone`,
`pay_account`,`filename`,`lease`,`type`,`revenue`,`adjust_ratio`,`adjust_period`,`pay_ratio`,
`start_date`,`end_date`
`start_date`,`end_date`,`apply_status`
</sql>
<sql id="dynamicWhereConditions">
@@ -148,7 +149,12 @@
<update id="updateRentWaitSignStatus" parameterType="com.iformall.domain.po.WxRentContract">
update wx_rent_contract set status=#{status} where tenant_id=#{tenantId} and status!=7 and merchant_id is null
</update>

<update id="updateApplyStatus" parameterType="com.iformall.domain.po.WxRentContract">
update wx_rent_contract set apply_status=#{applyStatus} where id=#{id}
</update>


<update id="updateRentInvalidStatus" parameterType="com.iformall.domain.po.WxRentContract">
update wx_rent_contract set status=#{status} where shop_id in (
select s.shop_id from (SELECT shop_id FROM wx_rent_contract WHERE tenant_id = #{tenantId} and status in(2,3,4)


Загрузка…
Отмена
Сохранить