TblContractController.java 8.4 KB
package com.ruoyi.compliancemanagement.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Arrays;
import java.util.Map;

import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.compliancemanagement.domain.TblContract;
import com.ruoyi.compliancemanagement.domain.bo.TblBusinessWorkflowBo;
import com.ruoyi.compliancemanagement.model.TblContractModel;
import com.ruoyi.compliancemanagement.service.ITblBusinessWorkflowService;
import com.ruoyi.workflow.service.IWfProcessService;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.compliancemanagement.domain.vo.TblContractVo;
import com.ruoyi.compliancemanagement.domain.bo.TblContractBo;
import com.ruoyi.compliancemanagement.service.ITblContractService;
import com.ruoyi.common.core.page.TableDataInfo;

/**
 * 【请填写功能名称】
 *
 * @author ruoyi
 * @date 2024-07-05
 */
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/contract")
public class TblContractController extends BaseController {

    private final ITblContractService iTblContractService;
    private final  IWfProcessService iWfProcessService;
    private final ITblBusinessWorkflowService iTblBusinessWorkflowService;

    /**
     * 查询【请填写功能名称】列表
     */
    @SaCheckPermission("system:contract:list")
    @GetMapping("/list")
    public TableDataInfo<TblContractModel> list(TblContractBo bo, PageQuery pageQuery) {
        return iTblContractService.queryPageList(bo, pageQuery);
    }

    /**
     * 导出【请填写功能名称】列表
     */
    @SaCheckPermission("system:contract:export")
    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(TblContractBo bo, HttpServletResponse response) {
        List<TblContractVo> list = iTblContractService.queryList(bo);
        ExcelUtil.exportExcel(list, "【请填写功能名称】", TblContractVo.class, response);
    }

    /**
     * 获取【请填写功能名称】详细信息
     *
     * @param id 主键
     */
    @SaCheckPermission("system:contract:query")
    @GetMapping("/{id}")
    public R<TblContractVo> getInfo(@NotNull(message = "主键不能为空")
                                     @PathVariable Long id) {
        return R.ok(iTblContractService.queryById(id));
    }

    /**
     * 新增【请填写功能名称】
     */
//    @SaCheckPermission("system:contract:add")
//    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
//    @RepeatSubmit()
//    @PostMapping()
//    public R<Void> add(@Validated(AddGroup.class) @RequestBody TblContractBo bo) {
//        return toAjax(iTblContractService.insertByBo(bo));
//    }

    /**
     * 新增合同起草数据并启动流程
     */
//    @SaCheckPermission("system:contract:addAndStart")
//    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
//    @RepeatSubmit()
//    @PostMapping()
//    public R<Void> addAnd(@Validated(AddGroup.class) @RequestBody TblContractBo bo) {
//        return toAjax(iTblContractService.insertByBo(bo));
//    }

    @Transactional(rollbackFor = Exception.class)
    @SaCheckPermission("system:contract:addAndStart")
    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping()
    public R<Void> addAndStart(
                               @Validated(AddGroup.class) @RequestBody TblContractBo bo) {
//        Matter matter = new Matter();
        String procDefId = "Process_18tcmzu:1:040fd586-433c-11ef-b955-421c839c76ba";
        iTblContractService.insertByBo(bo);
        Long id = bo.getId();
        //Long id = sLeaveService.create(studentLeave,matterKey);
        if (id > 0 || id != null){
            Map<String, Object> variables = new HashMap<>();
            // fromSource用来标识此事项是提交来源是客户端还是移动端
            //合同编号
            variables.put("contractno", bo.getContractno());
            // 合同名称
            variables.put("contractName",bo.getContractName());
            // 合同类型
            variables.put("contractType",Long.valueOf(bo.getContractType()));
            // 合同金额
            variables.put("contractAmount", bo.getContractAmount());
            // 生效日期
            variables.put("effectiveDate", bo.getEffectiveDate());
            // 到期日期
            variables.put("expirationDate", bo.getExpirationDate());
            // 甲方
            variables.put("partyA", bo.getPartyA());
            // 甲方链接地址
            variables.put("partyAAddress", bo.getPartyAAddress());
            // 乙方
            variables.put("partyB", bo.getPartyB());
            // 乙方链接地址
            variables.put("partyBAddress", bo.getPartyBAddress());
            // 付款方式
            variables.put("paymentMethod", bo.getPaymentMethod());
            // 签订日期
            variables.put("signingDate", bo.getSigningDate());
            // 标的物信息
            variables.put("subjectInformation", bo.getSubjectInformation());
            // 附件
            variables.put("attachments", bo.getAttachments());
            // 变更原因
            variables.put("reasonChange", bo.getReasonChange());
            // 变更内容
            variables.put("reasonText", bo.getReasonText());
            // 启动流程
            // CollegeMatters mat = iCollegeMattersService.getMatter(matterKey);
//            matter.setMatterDept(mat.getMatterDepartmentId());
//            variables.put("department", mat.getMatterDepartmentId());
//            matter.setMatterKey(procDefId);
//            matter.setBusinessKey(procDefId + "." + id);
//            matter.setVariables(variables);
//            matter.setProcessId("Process_18tcmzu:1:216d90ff-3f8a-11ef-b7e7-70b5e84e8ddf");
//            iWfProcessService.startProcess(matter);
            ProcessInstance processInstance = iWfProcessService.startProcessByDefId(procDefId, variables);

            if(null != processInstance){
                TblBusinessWorkflowBo tblBusinessWorkflowBo = new TblBusinessWorkflowBo();
                tblBusinessWorkflowBo.setBusinessId(id);
                tblBusinessWorkflowBo.setProcInsId(processInstance.getProcessInstanceId());
                tblBusinessWorkflowBo.setProcDefId(procDefId);
                tblBusinessWorkflowBo.setDeployId(processInstance.getDeploymentId());
                TableName table = TblContract.class.getAnnotation(TableName.class);
                tblBusinessWorkflowBo.setTableName(table.value());
                iTblBusinessWorkflowService.insertByBo(tblBusinessWorkflowBo);
//                iTblContractService.updateProcInsIdById(processInstance.getProcessInstanceId(),id);
            }
            return R.ok("成功");
        }else{
            return R.fail("系统故障!");
        }

    }

    /**
     * 修改【请填写功能名称】
     */
    @SaCheckPermission("system:contract:edit")
    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
    @RepeatSubmit()
    @PutMapping()
    public R<Void> edit(@Validated(EditGroup.class) @RequestBody TblContractBo bo) {
        return toAjax(iTblContractService.updateByBo(bo));
    }

    /**
     * 删除【请填写功能名称】
     *
     * @param ids 主键串
     */
    @SaCheckPermission("system:contract:remove")
    @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public R<Void> remove(@NotEmpty(message = "主键不能为空")
                          @PathVariable Long[] ids) {
        return toAjax(iTblContractService.deleteWithValidByIds(Arrays.asList(ids), true));
    }
}