Your Name
2023-03-15 cab3425bb92d01f3494eb25c1f299038dc634c65
service-common/src/main/java/com/java110/common/bmo/workflow/impl/QueryWorkFlowFirstStaffBMOImpl.java
@@ -15,14 +15,18 @@
import com.java110.dto.oaWorkflowForm.OaWorkflowFormDto;
import com.java110.dto.oaWorkflowXml.OaWorkflowXmlDto;
import com.java110.dto.org.OrgDto;
import com.java110.dto.org.OrgStaffRelDto;
import com.java110.dto.workflow.WorkflowDto;
import com.java110.dto.workflow.WorkflowModelDto;
import com.java110.intf.common.IOaWorkflowActivitiInnerServiceSMO;
import com.java110.intf.oa.IOaWorkflowFormInnerServiceSMO;
import com.java110.intf.oa.IOaWorkflowInnerServiceSMO;
import com.java110.intf.oa.IOaWorkflowXmlInnerServiceSMO;
import com.java110.intf.store.IOrgStaffRelV1InnerServiceSMO;
import com.java110.intf.user.IOrgInnerServiceSMO;
import com.java110.po.oaWorkflow.OaWorkflowPo;
import com.java110.po.oaWorkflowXml.OaWorkflowXmlPo;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.StringUtil;
@@ -79,6 +83,13 @@
    private IOaWorkflowFormInnerServiceSMO oaWorkflowFormInnerServiceSMOImpl;
    @Autowired
    private IOrgStaffRelV1InnerServiceSMO orgStaffRelV1InnerServiceSMOImpl;
    @Autowired
    private IOaWorkflowActivitiInnerServiceSMO oaWorkflowActivitiInnerServiceSMOImpl;
    @Autowired
    private RepositoryService repositoryService;
    @Autowired
@@ -129,16 +140,19 @@
        Map staffInfo = workflowStepStaffs.get(0);
        String staffId = staffInfo.get("staffId") + "";
        OrgDto orgDto = new OrgDto();
        OrgStaffRelDto orgDto = new OrgStaffRelDto();
        if (staffId.startsWith("${")) {
            return ResultVo.createResponseEntity(orgDto);
        }
        orgDto.setStaffId(staffId);
        List<OrgDto> orgDtos = orgInnerServiceSMOImpl.queryOrgs(orgDto);
        if (orgDtos == null || orgDtos.size() < 1) {
        OrgStaffRelDto orgStaffRelDto = new OrgStaffRelDto();
        orgStaffRelDto.setStaffId(staffId);
        List<OrgStaffRelDto> orgStaffRelDtos = orgStaffRelV1InnerServiceSMOImpl.queryStaffOrgNames(orgStaffRelDto);
        if (orgStaffRelDtos == null || orgStaffRelDtos.size() < 1) {
            return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "未查询到员工组织信息");
        }
        orgDto = orgDtos.get(0);
        orgDto = orgStaffRelDtos.get(0);
        orgDto.setStaffName(staffInfo.get("staffName") + "");
        return ResultVo.createResponseEntity(orgDto);
@@ -155,14 +169,20 @@
        Assert.listOnlyOne(oaWorkflowDtos, "未包含流程");
        //表单 部署
        deployForm(oaWorkflowDtos.get(0));
        //普通流程需要部署 表单 其他类型不需要部署
        if (OaWorkflowDto.FLOW_TYPE_PUBLIC.equals(oaWorkflowDtos.get(0).getFlowType())) {
            //表单 部署
            deployForm(oaWorkflowDtos.get(0));
        }
        String deploymentid = "";
        try {
            Model modelData = repositoryService.getModel(workflowModelDto.getModelId());
            byte[] bpmnBytes = null;
            bpmnBytes = repositoryService.getModelEditorSource(workflowModelDto.getModelId());
            if (bpmnBytes == null || bpmnBytes.length < 1) {
                throw new CmdException("未设置流程");
            }
            String processName = modelData.getName() + ".bpmn20.xml";
            ByteArrayInputStream in = new ByteArrayInputStream(bpmnBytes);
            Deployment deployment = repositoryService.createDeployment().name(oaWorkflowDtos.get(0).getFlowName())
@@ -176,6 +196,7 @@
                .createProcessDefinitionQuery()
                .deploymentId(deploymentid)
                .singleResult();
        //更新部门流程关系表
        workflowModelDto.setDeploymentId(deploymentid);
@@ -254,7 +275,7 @@
                sql.append(" varchar");
                isVarchar = true;
            } else if ("textarea".equals(component.getString("type"))) {
                sql.append(" longtext");
                sql.append(" longtext CHARACTER SET utf8");
            } else if ("textdate".equals(component.getString("type"))) {
                sql.append(" date");
            } else if ("textdatetime".equals(component.getString("type"))) {
@@ -322,6 +343,9 @@
        //这里决定对bpmn xml 文件做过滤处理
        dealBpmnXml(workflowModelDto);
        //业务校验
        businessCheck(oaWorkflowDtos.get(0), workflowModelDto);
        OaWorkflowXmlPo oaWorkflowXmlPo = new OaWorkflowXmlPo();
        oaWorkflowXmlPo.setStoreId(oaWorkflowDtos.get(0).getStoreId());
        oaWorkflowXmlPo.setBpmnXml(workflowModelDto.getJson_xml());
@@ -389,6 +413,45 @@
        return ResultVo.success();
    }
    //业务校验
    private void businessCheck(OaWorkflowDto oaWorkflowDto, WorkflowModelDto workflowModelDto) {
        if (OaWorkflowDto.FLOW_TYPE_VISIT.equals(oaWorkflowDto.getFlowType())) {
            businessFirstAuditCheck(oaWorkflowDto, workflowModelDto);
        }
        if(OaWorkflowDto.FLOW_TYPE_OWNER_SETTLED.equals(oaWorkflowDto.getFlowType())){
            businessFirstAuditCheck(oaWorkflowDto, workflowModelDto);
        }
    }
    /**
     * 第一审批人必须要固定
     *
     * @param oaWorkflowDto
     * @param workflowModelDto
     */
    private void businessFirstAuditCheck(OaWorkflowDto oaWorkflowDto, WorkflowModelDto workflowModelDto) {
        OaWorkflowXmlDto oaWorkflowXmlDto = new OaWorkflowXmlDto();
        oaWorkflowXmlDto.setBpmnXml(workflowModelDto.getJson_xml());
        List<JSONObject> outs = oaWorkflowActivitiInnerServiceSMOImpl.queryFirstAuditStaff(oaWorkflowXmlDto);
        if (outs == null || outs.size() < 1) {
            throw new IllegalArgumentException("提交者之后,第一审批人必须要指定具体审批人");
        }
        String assignee = outs.get(0).getString("assignee");
        if (StringUtil.isEmpty(assignee)) {
            throw new IllegalArgumentException("提交者之后,第一审批人必须要指定具体审批人");
        }
        if (assignee.startsWith("-")) {
            throw new IllegalArgumentException("提交者之后,第一审批人必须要指定具体审批人");
        }
    }
    /**
     * 过滤BpmnXml
     *