package com.chinaweal.aiccs.common.util;

import com.chinaweal.aiccs.aiccs.auditing.entity.TSOpinion;
import com.chinaweal.aiccs.aiccs.business.entity.TSTaskList;
import com.chinaweal.aiccs.aiccs.business.entity.XrTaskList;
import com.chinaweal.aiccs.aiccs.revoke.entity.Tsrevtasklist;
import com.chinaweal.aiccs.common.constant.BaseDataConstant;
import com.chinaweal.aiccs.common.constant.CommonConstants;
import com.chinaweal.aicorg.model.AICUser;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: zhu
 * Date: 15-1-12
 * Time: ����3:14
 * To change this template use File | Settings | File Templates.
 */
public class HandleWorkFlowUtil {

    /**
     * 创建tasklist
     * @param taskListModel tasklist
     * @param user 创建用户
     * @return tasklist
     * @author lroyia
     * @since 2021年1月22日 13:41:37
     */
    public static TSTaskList createTaskList(TSTaskList taskListModel, AICUser user) {
//        LocalDate now = LocalDate.now();
        LocalDateTime now = LocalDateTime.now();
        //设置待办业务状态为 "0"在办 还有： "-1"待签收 "1"挂起 "2"结束 "3"强制结束
        taskListModel.setBusstatus(BaseDataConstant.BUSINESS_STATUS_TRANSACT);
        //设置是否签收： 是
        taskListModel.setIssignon(BaseDataConstant.YES);
        //签收者id
        taskListModel.setSignuserid(user.getPrimaryKey());
        //签收者登录名
        taskListModel.setSignloginname(user.getName());
        //签收/受理时间
        if (taskListModel.getSigntime() == null) {
            taskListModel.setSigntime(now);
        }
        //发送者ID
        taskListModel.setSenderuserid(user.getPrimaryKey());
        //发送机构ID
        taskListModel.setSenderorgid(user.getOrgID());
        //发送者中文名
        taskListModel.setSendername(user.getName());
        //发送时间
        if (taskListModel.getSendertime() == null) {
            taskListModel.setSendertime(now);
        }
        //创建者id
        taskListModel.setCreateUserid(user.getPrimaryKey());
        //创建者中文名
        taskListModel.setCreateUsername(user.getName());
        //创建时间
        taskListModel.setCreateTime(LocalDateTime.now());
        return taskListModel;
    }

    /**
     * 创建接收单位为组的待办
     * @param taskListModel
     * @return
     */
    public static TSTaskList createTaskList(TSTaskList taskListModel) {
        LocalDateTime now = LocalDateTime.now();
        //设置待办业务状态为 "0"在办 还有： "-1"待签收 "1"挂起 "2"结束 "3"强制结束
        taskListModel.setBusstatus(BaseDataConstant.BUSINESS_STATUS_TRANSACT);
        //设置是否签收： 是
        taskListModel.setIssignon(BaseDataConstant.YES);
        //签收/受理时间
        if (taskListModel.getSigntime() == null) {
            taskListModel.setSigntime(now);
        }
        //发送时间
        if (taskListModel.getSendertime() == null) {
            taskListModel.setSendertime(now);
        }
        //创建者中文名
        taskListModel.setCreateUsername("系统发起");
        //创建时间
        taskListModel.setCreateTime(LocalDateTime.now());
        return taskListModel;
    }

    /**
     * 创建revtasklist
     * @param revtaskListModel Tsrevtasklist
     * @param user 创建用户
     * @return tasklist
     */
    public static Tsrevtasklist createRevTaskList(Tsrevtasklist revtaskListModel, AICUser user) {
        LocalDate now = LocalDate.now();
        LocalDateTime nowDateTime = LocalDateTime.now();
        //设置待办业务状态为 "0"在办  还有： "-1"待签收 "1"挂起 "2"结束 "3"强制结束
        revtaskListModel.setBusstatus(BaseDataConstant.BUSINESS_STATUS_TRANSACT);//"0"在办
        //设置是否签收： 是
        revtaskListModel.setIssignon(BaseDataConstant.YES);
        //签收者id
        revtaskListModel.setSignuserid(user.getPrimaryKey());
        //签收者登录名
        revtaskListModel.setSignloginname(user.getName());
        //签收/受理时间
        revtaskListModel.setSigntime(now);
        //发送者ID
        revtaskListModel.setSenderuserid(user.getPrimaryKey());
        //发送机构ID
        revtaskListModel.setSenderorgid(user.getOrgID());
        //发送者中文名
        revtaskListModel.setSendername(user.getName());
        //发送时间
        revtaskListModel.setSendertime(nowDateTime);
        //创建者id
        revtaskListModel.setCreateUserid(user.getPrimaryKey());
        //创建者中文名
        revtaskListModel.setCreateUsername(user.getName());
        //创建时间
        revtaskListModel.setCreateTime(nowDateTime);
        return revtaskListModel;
    }
    /**
     * 创建处办意见
     * @param workflowId 工作流id
     * @param opinionType 意见类型
     * @param handler 处理人
     * @param opinion 处理意见
     * @return 处办意见对象
     * @author lroyia
     * @since 2021年2月7日 15:10:34
     */
    public static TSOpinion createOpinion(String workflowId, String opinionType, AICUser handler, String opinion) {
        LocalDateTime now = LocalDateTime.now();
        return new TSOpinion()
                .setWorkflowid(workflowId)
                .setHandledate(now)
                .setHandler(handler.getName())
                .setHandlerid(handler.getPrimaryKey())
                .setLauptime(now)
                .setOpinioncontent(opinion)
                .setOpiniontype(opinionType);
    }

    /**
     * 创建tasklist
     * @param taskListModel tasklist
     * @return tasklist
     * @author lroyia
     * @since 2021年1月22日 13:41:37
     */
    public static TSTaskList createTaskListApp(TSTaskList taskListModel) {
//        LocalDate now = LocalDate.now();
        LocalDateTime now = LocalDateTime.now();
        //设置待办业务状态为 "0"在办 还有： "-1"待签收 "1"挂起 "2"结束 "3"强制结束
        taskListModel.setBusstatus(BaseDataConstant.BUSINESS_STATUS_TRANSACT);
        //设置是否签收： 是
        taskListModel.setIssignon(BaseDataConstant.YES);
        //签收者id
//        taskListModel.setSignuserid(user.getPrimaryKey());
        //签收者登录名
//        taskListModel.setSignloginname(user.getName());
        //签收/受理时间
        taskListModel.setSigntime(now);
        //发送者ID
//        taskListModel.setSenderuserid(user.getPrimaryKey());
        //发送机构ID
//        taskListModel.setSenderorgid(user.getOrgID());
        //发送者中文名
//        taskListModel.setSendername(user.getName());
        //发送时间
        taskListModel.setSendertime(now);
        return taskListModel;
    }

    public static XrTaskList createXrTaskList(XrTaskList taskListModel, AICUser user) {
        LocalDateTime now = LocalDateTime.now();
        //设置待办业务状态为 "0"在办 还有： "-1"待签收 "1"挂起 "2"结束 "3"强制结束
        taskListModel.setBusStatus(BaseDataConstant.BUSINESS_STATUS_TRANSACT);
        if (!StringUtils.isNotBlank(taskListModel.getWorkFlowId())) {
//            taskListModel.setWorkFlowId(FlowUtil.COMMON_WORK_FLOW);
            taskListModel.setWorkFlowId("commonWorkFlow");
        }
        //设置是否签收： 是
        taskListModel.setIsSignon(CommonConstants.TRUE_1);
        //签收者id
        taskListModel.setSignUserId(user.getPrimaryKey());
        //签收/受理时间
        taskListModel.setSignTime(now);
        //发送机构ID
        taskListModel.setSenderOrgId(user.getOrgID());
        //下一步签收用户ID
        taskListModel.setSenderUserId(user.getPrimaryKey());
        //下一步签收用户机构ID
        taskListModel.setSendToOrgId(user.getOrgID());
        //发送时间
        if (taskListModel.getSenderTime() == null) {
            taskListModel.setSenderTime(now);
        }
        // 发起机构代码
        if (!StringUtils.isNotBlank(taskListModel.getApplyOrgId())) {
            taskListModel.setApplyOrgId(user.getOrgID());
        }
        // 发起机构代码
        if (!StringUtils.isNotBlank(taskListModel.getSource())) {
//            taskListModel.setSource(BaseDataConstant.SOURCE_PC);
            taskListModel.setSource("pc");
        }
        return taskListModel;
    }
}
