package com.idea.oa.flow2.controller;
import com.github.pagehelper.PageInfo;
import com.idea.oa.activiti.service.ProActiService;
import com.idea.oa.apply.model.ApplyAddWorkTime;
import com.idea.oa.apply.model.ApplyAddWorkTimeExample;
import com.idea.oa.apply.model.ApplyOffWorkTime;
import com.idea.oa.apply.model.ApplyOffWorkTimeExample;
import com.idea.oa.apply.service.ApplyAddWorkTimeService;
import com.idea.oa.apply.service.ApplyOffWorkTimeService;
import com.idea.oa.apply.util.constant.ConstantFlowType;
import com.idea.oa.apply.util.service.RunerLoadOneService;
import com.idea.oa.flow2.model.FlowMain;
import com.idea.oa.flow2.model.FlowMainLog;
import com.idea.oa.flow2.model.FlowMainPush;
import com.idea.oa.flow2.model.FlowMainPushExample;
import com.idea.oa.flow2.model.in.FlowMainIn;
import com.idea.oa.flow2.model.in.PushEntrust;
import com.idea.oa.flow2.model.out.FlowHistoryInfo;
import com.idea.oa.flow2.model.out.FlowMainPushOut;
import com.idea.oa.flow2.model.out.IMGFlowHistoryInfo;
import com.idea.oa.flow2.service.FlowMainLogService;
import com.idea.oa.flow2.service.FlowMainPushService;
import com.idea.oa.flow2.service.FlowMainService;
import com.rockstar.common.base.BaseController;
import com.rockstar.common.domain.AjaxResult;
import com.rockstar.flow.exception.FlowException;
import com.rockstar.flow.model.FlowDefinition;
import com.rockstar.flow.service.FlowDefinitionService;
import com.rockstar.flow.service.FlowService;
import com.rockstar.frame.model.extend.DateTrans;
import com.rockstar.frame.model.extend.TableSplitResult;
import com.rockstar.frame.model.extend.Tablepar;
import com.rockstar.shiro.util.ShiroUtils;
import com.rockstar.util.StringUtils;
import com.rockstar.util.UUIDUtils;
import io.swagger.annotations.Api;
import org.activiti.bpmn.model.SequenceFlow;
import org.activiti.bpmn.model.UserTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.math.BigDecimal;
import java.math.MathContext;
import java.util.Date;
import java.util.List;
/**
* Created by zt
*/
@Controller
@RequestMapping(value = "FlowMainController")
@Api(value = "申请流程/主表_主申请审核表")
public class FlowMainController extends BaseController {
/* @Autowired
private WorkAttendanceLogService workAttendanceLogService;
@Autowired
private HolidayManagementService holidayManagementService;*/
@Autowired
private ApplyOffWorkTimeService applyOffWorkTimeService;
@Autowired
private ApplyAddWorkTimeService applyAddWorkTimeService;
//上面是业务中的信息,嵌入的业务信息了,以后可以考虑搬离
@Autowired
private RunerLoadOneService runerLoadOneService;
@Autowired
private FlowDefinitionService flowDefinitionService;
@Autowired
private FlowMainLogService flowMainLogService;
@Autowired
private ProActiService proActiService;
//主表
@Autowired
private FlowMainService modelService;
@Autowired
private FlowMainPushService flowMainPushService;
@Autowired
private FlowService flowService;
/**
* 通过flowMainId获取审核流程信息
* 2023年5月5日
* 先判断流程是否结束,如果没有计算就进行
*
* 作废==>增加获取本次申请的全部流程信息
* 改成:后续节点名称、处理人应该可以带出来,如果还没有审则审核结果显示为“处理中”,审核时间为空
*
* @param flowMainId
* @return
*/
@PostMapping(value = "getFlowHistroyByFlowMainId", produces = {"application/json;charset=UTF-8"})
@ResponseBody
public List getFlowHistroyByFlowMainId(String flowMainId) {
return modelService.getFlowHistroyByFlowMainId(flowMainId);
}
/**
* 通过流程id获取流程当前所在节点和其他节点对应的状态
*
* @param flowMainId
* @return
*/
@PostMapping(value = "getIMGFlowHistroyByFlowMainId", produces = {"application/json;charset=UTF-8"})
@ResponseBody
public List getIMGFlowHistroyByFlowMainId(String flowMainId) {
return modelService.getIMGFlowHistroyByFlowMainId(flowMainId);
}
/**
* 根据推送表的FlowMainPushId获取下一条线路怎么走,是返回上个节点还是返回申请人还是执行下个节点
*
* @param flowMainPushId
* @return
*/
@PostMapping(value = "getOutgoingFlowsByFlowMainPushId", produces = {"application/json;charset=UTF-8"})
@ResponseBody
public List getOutgoingFlowsByFlowMainPushId(String flowMainPushId) {
FlowMainPush flowMainPush = flowMainPushService.selectByPrimaryKey(flowMainPushId);
// List