Browse Source

任务结算-审核

master
chentaiyu 4 years ago
parent
commit
dc6d3ba06b
  1. 32
      xm-core/src/main/java/com/xm/core/ctrl/XmTaskSbillController.java
  2. 104
      xm-core/src/main/java/com/xm/core/service/XmTaskSbillService.java

32
xm-core/src/main/java/com/xm/core/ctrl/XmTaskSbillController.java

@ -6,6 +6,7 @@ import java.util.*;
import com.mdp.core.utils.LogUtils;
import com.mdp.safe.client.entity.User;
import com.mdp.safe.client.utils.LoginUtils;
import com.mdp.tpa.client.entity.AppShopConfig;
import com.mysql.cj.protocol.x.XMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -222,4 +223,35 @@ public class XmTaskSbillController {
return m;
}
*/
@ApiOperation( value = "流程审批信息,审批通过则更新sbill审批状态",notes="从workflow传过来")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/processApprova",method=RequestMethod.POST)
public Map<String,Object> sbillProcessApprova(@RequestBody Map<String,Object> paramMap) {
Map<String,Object> map=new HashMap<>();
Tips tips=new Tips("成功更新结算单状态");
String sbillId= (String) paramMap.get("sbillId");
if( !StringUtils.hasText(sbillId)){
tips.setFailureMsg("结算单ID必传");
map.put("tips", tips);
return map;
}
map.putAll(paramMap);
try{
this.xmTaskSbillService.processApprova(map);
logger.debug("procInstId====="+paramMap.get("procInstId"));
}catch (BizException e) {
tips=e.getTips();
logger.error("执行异常",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("执行异常",e);
}
map.put("tips", tips);
return map;
}
}

104
xm-core/src/main/java/com/xm/core/service/XmTaskSbillService.java

@ -1,10 +1,16 @@
package com.xm.core.service;
import com.mdp.core.utils.BaseUtils;
import com.mdp.core.utils.DateUtils;
import com.xm.core.entity.XmTaskWorkload;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -15,6 +21,7 @@ import com.mdp.core.err.BizException;
import com.xm.core.entity.XmTaskSbill;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
/**
* 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br>
@ -37,5 +44,102 @@ public class XmTaskSbillService extends BaseService {
xmTaskWorkloadService.update("updateSomeFieldByWhere",xmTaskWorkload);
}
/**
* 流程审批过程中回调该接口更新业务数据
* 如果发起流程时上送了restUrl则无论流程中是否配置了监听器都会在流程发生以下事件时推送数据过来
* eventName: PROCESS_STARTED 流程启动完成 全局
* PROCESS_COMPLETED 流程正常结束 全局
* PROCESS_CANCELLED 流程删除 全局
* create 人工任务启动
* complete 人工任务完成更新表中流转内容
* assignment 人工任务分配给了具体的人
* delete 人工任务被删除
* TASK_COMPLETED_FORM_DATA_UPDATE 人工任务提交完成后智能表单数据更新
*
* 其中 create/complete/assignment/delete事件是需要在模型中人工节点上配置了委托代理表达式 ${taskBizCallListener}才会推送过来
* 在人工任务节点上配置 任务监听器 建议事件为 complete,其它assignment/create/complete/delete也可以一般建议在complete,委托代理表达式 ${taskBizCallListener}
*
* @param flowVars {flowBranchId,agree,procInstId,startUserid,assignee,actId,taskName,mainTitle,branchId,bizKey,commentMsg,eventName,modelKey}
**/
@Transactional(rollbackFor = Exception.class)
public void processApprova(Map<String, Object> flowVars) {
String eventName=(String) flowVars.get("eventName");
String agree=(String) flowVars.get("agree");
String branchId=(String) flowVars.get("branchId");
String bizKey=(String) flowVars.get("bizKey");
if("xm_task_sbill".equals(bizKey) ) {
String id= (String) flowVars.get("sbillId");
XmTaskSbill xmTaskSbill = new XmTaskSbill();
xmTaskSbill.setId(id);
xmTaskSbill = this.selectOneObject(xmTaskSbill);
if("complete".equals(eventName)) {
if("1".equals(agree)) {
this.updateFlowStateByProcInst("2",xmTaskSbill, flowVars);
}else {
this.updateFlowStateByProcInst("",xmTaskSbill, flowVars);
}
}else {
//新增结算单审批流程
if("PROCESS_STARTED".equals(eventName)) {
this.updateFlowStateByProcInst("1", xmTaskSbill,flowVars);
}else if("PROCESS_COMPLETED".equals(eventName)) {
if("1".equals(agree)) {
this.updateFlowStateByProcInst("2",xmTaskSbill, flowVars);
}else {
this.updateFlowStateByProcInst("3",xmTaskSbill, flowVars);
}
}else if("PROCESS_CANCELLED".equals(eventName)) {
this.updateFlowStateByProcInst("4", xmTaskSbill,flowVars);
}
}
}else {
throw new BizException("不支持的业务,请上送业务编码【bizKey】参数");
}
}
/**
* update流程表信息
* 工时表结算状态0-无需结算1-待结算2-已提交3-已通过4-已结算
* 此处工时表只有两种状态2-已提交3-已通过提交结算时候初始为2
*/
public void updateFlowStateByProcInst(String bizFlowState,XmTaskSbill xmTaskSbill,Map<String, Object> flowVars) {
xmTaskSbill.setBizFlowState(bizFlowState);
String bizProcInstId = (String) flowVars.get("procInstId");
xmTaskSbill.setBizProcInstId(bizProcInstId);
Date toDay = new Date();
xmTaskSbill.setLtime(toDay);
xmTaskSbill.setBizMonth(DateUtils.format(toDay,"yyyy-MM"));
xmTaskSbill.setBizDate(DateUtils.format(toDay,"yyyy-MM-dd"));
xmTaskSbill.setBizDate(bizFlowState);
if("1".equals(bizFlowState)){
//发起审核更新sbill表状态工时登记表状态无需更新
xmTaskSbill.setStatus("1");
}else if("2".equals(bizFlowState)){
//审核通过工时登记表更新为已通过-3
xmTaskSbill.setStatus("2");//结算单状态-已通过
XmTaskWorkload queryMap =new XmTaskWorkload();
queryMap.setSbillId(xmTaskSbill.getId());
List<XmTaskWorkload> xmTaskWorkloadList = xmTaskWorkloadService.selectListByWhere(queryMap);
if(xmTaskWorkloadList.size()>0){
xmTaskWorkloadList.forEach(item->item.setSstatus("3"));
xmTaskWorkloadService.batchUpdate(xmTaskWorkloadList);
}
}else if("3".equals(bizFlowState)){
//3为审批不通过退回发起人可继续向上提交工时表无需修改
xmTaskSbill.setStatus("1");//结算单状态-已提交
}else if("4".equals(bizFlowState)){
//4为流程删除或者取消sbill可重新发起审批/删除工时表无需修改
xmTaskSbill.setStatus("0");//结算单状态-待提交
}
this.updateSomeFieldByPk(xmTaskSbill);
}
}
Loading…
Cancel
Save