| | |
| | | import com.java110.core.factory.GenerateCodeFactory; |
| | | import com.java110.core.log.LoggerFactory; |
| | | import com.java110.dto.oaWorkflow.OaWorkflowDto; |
| | | import com.java110.dto.oaWorkflowForm.OaWorkflowFormDto; |
| | | import com.java110.dto.oaWorkflowXml.OaWorkflowXmlDto; |
| | | import com.java110.dto.org.OrgDto; |
| | | import com.java110.dto.workflow.WorkflowDto; |
| | | import com.java110.dto.workflow.WorkflowModelDto; |
| | | import com.java110.dto.oaWorkflow.OaWorkflowFormDto; |
| | | import com.java110.dto.oaWorkflow.OaWorkflowXmlDto; |
| | | import com.java110.dto.org.OrgStaffRelDto; |
| | | import com.java110.dto.oaWorkflow.WorkflowDto; |
| | | import com.java110.dto.oaWorkflow.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.po.oaWorkflow.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; |
| | |
| | | private IOaWorkflowFormInnerServiceSMO oaWorkflowFormInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IOrgStaffRelV1InnerServiceSMO orgStaffRelV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IOaWorkflowActivitiInnerServiceSMO oaWorkflowActivitiInnerServiceSMOImpl; |
| | | |
| | | |
| | | @Autowired |
| | | private RepositoryService repositoryService; |
| | | |
| | | @Autowired |
| | |
| | | List<Map> workflows = workflowServiceDaoImpl.getWorkflowInfo(BeanConvertUtil.beanCovertMap(workflowDto)); |
| | | |
| | | if (workflows == null || workflows.size() < 1) { |
| | | return null; |
| | | return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "未查询到流程"); |
| | | } |
| | | |
| | | WorkflowDto tmpWorkflowDto = BeanConvertUtil.covertBean(workflows.get(0), WorkflowDto.class); |
| | |
| | | |
| | | 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); |
| | |
| | | |
| | | 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()) |
| | | .addInputStream(processName, in).deploy(); |
| | | deploymentid = deployment.getId(); |
| | | } catch (Exception e) { |
| | | throw new IllegalArgumentException(e); |
| | | e.printStackTrace(); |
| | | throw new IllegalArgumentException("流程未保存或者设置错误"); |
| | | } |
| | | Assert.isTrue(!StringUtil.isEmpty(deploymentid), "流程部署出错"); |
| | | ProcessDefinition processDefinition = repositoryService |
| | | .createProcessDefinitionQuery() |
| | | .deploymentId(deploymentid) |
| | | .singleResult(); |
| | | |
| | | //更新部门流程关系表 |
| | | workflowModelDto.setDeploymentId(deploymentid); |
| | | |
| | |
| | | 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"))) { |
| | |
| | | sql.append("state varchar(12) not null COMMENT '状态 1001 申请 1002 待审核 1003 退回 1004 委托 1005 办结',"); |
| | | sql.append("create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',"); |
| | | sql.append("status_cd varchar(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考c_status表,S 保存,0, 在用 1失效'"); |
| | | sql.append(")"); |
| | | sql.append(") DEFAULT CHARSET=utf8"); |
| | | logger.debug("部署表单sql" + sql.toString()); |
| | | oaWorkflowFormInnerServiceSMOImpl.createTable(sql.toString()); |
| | | |
| | |
| | | |
| | | //这里决定对bpmn xml 文件做过滤处理 |
| | | dealBpmnXml(workflowModelDto); |
| | | |
| | | //业务校验 |
| | | businessCheck(oaWorkflowDtos.get(0), workflowModelDto); |
| | | |
| | | OaWorkflowXmlPo oaWorkflowXmlPo = new OaWorkflowXmlPo(); |
| | | oaWorkflowXmlPo.setStoreId(oaWorkflowDtos.get(0).getStoreId()); |
| | |
| | | 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 |
| | | * |