浏览代码

优化保养转单功能

Your Name 3 年之前
父节点
当前提交
c7fd687b61

+ 73 - 77
java110-db/src/main/resources/mapper/oa/OaWorkflowXmlServiceDaoImplMapper.xml

@@ -5,102 +5,98 @@
 <mapper namespace="oaWorkflowXmlServiceDaoImpl">
 
 
-
-
-
     <!-- 保存OA流程图信息 add by wuxw 2018-07-03 -->
     <insert id="saveOaWorkflowXmlInfo" parameterType="Map">
         insert into oa_workflow_xml(
-xml_id,store_id,bpmn_xml,flow_id,svg_xml
-) values (
-#{xmlId},#{storeId},#{bpmnXml},#{flowId},#{svgXml}
-)
+        xml_id,store_id,bpmn_xml,flow_id,svg_xml
+        ) values (
+        #{xmlId},#{storeId},#{bpmnXml},#{flowId},#{svgXml}
+        )
     </insert>
 
 
-
     <!-- 查询OA流程图信息 add by wuxw 2018-07-03 -->
     <select id="getOaWorkflowXmlInfo" parameterType="Map" resultType="Map">
-        select  t.status_cd,t.status_cd statusCd,t.xml_id,t.xml_id xmlId,t.store_id,t.store_id storeId,t.bpmn_xml,t.bpmn_xml bpmnXml,t.flow_id,t.flow_id flowId,t.svg_xml,t.svg_xml svgXml 
-from oa_workflow_xml t 
-where 1 =1 
-<if test="statusCd !=null and statusCd != ''">
-   and t.status_cd= #{statusCd}
-</if> 
-<if test="xmlId !=null and xmlId != ''">
-   and t.xml_id= #{xmlId}
-</if> 
-<if test="storeId !=null and storeId != ''">
-   and t.store_id= #{storeId}
-</if> 
-<if test="bpmnXml !=null and bpmnXml != ''">
-   and t.bpmn_xml= #{bpmnXml}
-</if> 
-<if test="flowId !=null and flowId != ''">
-   and t.flow_id= #{flowId}
-</if> 
-<if test="svgXml !=null and svgXml != ''">
-   and t.svg_xml= #{svgXml}
-</if> 
-order by t.create_time desc
-<if test="page != -1 and page != null ">
-   limit #{page}, #{row}
-</if> 
+        select t.status_cd,t.status_cd statusCd,t.xml_id,t.xml_id xmlId,t.store_id,t.store_id
+        storeId,t.bpmn_xml,t.bpmn_xml bpmnXml,t.flow_id,t.flow_id flowId,t.svg_xml,t.svg_xml svgXml
+        from oa_workflow_xml t
+        where 1 =1
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="xmlId !=null and xmlId != ''">
+            and t.xml_id= #{xmlId}
+        </if>
+        <if test="storeId !=null and storeId != ''">
+            and t.store_id= #{storeId}
+        </if>
+        <if test="bpmnXml !=null and bpmnXml != ''">
+            and t.bpmn_xml= #{bpmnXml}
+        </if>
+        <if test="flowId !=null and flowId != ''">
+            and t.flow_id= #{flowId}
+        </if>
+        <if test="svgXml !=null and svgXml != ''">
+            and t.svg_xml= #{svgXml}
+        </if>
+        order by t.create_time desc
+        <if test="page != -1 and page != null ">
+            limit #{page}, #{row}
+        </if>
 
     </select>
 
 
-
-
     <!-- 修改OA流程图信息 add by wuxw 2018-07-03 -->
     <update id="updateOaWorkflowXmlInfo" parameterType="Map">
-        update  oa_workflow_xml t set t.status_cd = #{statusCd}
-<if test="newBId != null and newBId != ''">
-,t.b_id = #{newBId}
-</if> 
-<if test="storeId !=null and storeId != ''">
-, t.store_id= #{storeId}
-</if> 
-<if test="bpmnXml !=null and bpmnXml != ''">
-, t.bpmn_xml= #{bpmnXml}
-</if> 
-<if test="flowId !=null and flowId != ''">
-, t.flow_id= #{flowId}
-</if> 
-<if test="svgXml !=null and svgXml != ''">
-, t.svg_xml= #{svgXml}
-</if> 
- where 1=1 <if test="xmlId !=null and xmlId != ''">
-and t.xml_id= #{xmlId}
-</if> 
+        update oa_workflow_xml t set t.status_cd = #{statusCd}
+        <if test="newBId != null and newBId != ''">
+            ,t.b_id = #{newBId}
+        </if>
+        <if test="storeId !=null and storeId != ''">
+            , t.store_id= #{storeId}
+        </if>
+        <if test="bpmnXml !=null and bpmnXml != ''">
+            , t.bpmn_xml= #{bpmnXml}
+        </if>
+        <if test="flowId !=null and flowId != ''">
+            , t.flow_id= #{flowId}
+        </if>
+        <if test="svgXml !=null and svgXml != ''">
+            , t.svg_xml= #{svgXml}
+        </if>
+        where 1=1
+        <if test="xmlId !=null and xmlId != ''">
+            and t.xml_id= #{xmlId}
+        </if>
 
     </update>
 
     <!-- 查询OA流程图数量 add by wuxw 2018-07-03 -->
-     <select id="queryOaWorkflowXmlsCount" parameterType="Map" resultType="Map">
-        select  count(1) count 
-from oa_workflow_xml t 
-where 1 =1 
-<if test="statusCd !=null and statusCd != ''">
-   and t.status_cd= #{statusCd}
-</if> 
-<if test="xmlId !=null and xmlId != ''">
-   and t.xml_id= #{xmlId}
-</if> 
-<if test="storeId !=null and storeId != ''">
-   and t.store_id= #{storeId}
-</if> 
-<if test="bpmnXml !=null and bpmnXml != ''">
-   and t.bpmn_xml= #{bpmnXml}
-</if> 
-<if test="flowId !=null and flowId != ''">
-   and t.flow_id= #{flowId}
-</if> 
-<if test="svgXml !=null and svgXml != ''">
-   and t.svg_xml= #{svgXml}
-</if> 
+    <select id="queryOaWorkflowXmlsCount" parameterType="Map" resultType="Map">
+        select count(1) count
+        from oa_workflow_xml t
+        where 1 =1
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="xmlId !=null and xmlId != ''">
+            and t.xml_id= #{xmlId}
+        </if>
+        <if test="storeId !=null and storeId != ''">
+            and t.store_id= #{storeId}
+        </if>
+        <if test="bpmnXml !=null and bpmnXml != ''">
+            and t.bpmn_xml= #{bpmnXml}
+        </if>
+        <if test="flowId !=null and flowId != ''">
+            and t.flow_id= #{flowId}
+        </if>
+        <if test="svgXml !=null and svgXml != ''">
+            and t.svg_xml= #{svgXml}
+        </if>
 
 
-     </select>
+    </select>
 
 </mapper>

文件差异内容过多而无法显示
+ 60 - 0
java110-utils/src/main/java/com/java110/utils/util/BpmnXml.java


+ 45 - 2
service-common/src/main/java/com/java110/common/bmo/workflow/impl/QueryWorkFlowFirstStaffBMOImpl.java

@@ -18,6 +18,7 @@ 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;
@@ -84,6 +85,10 @@ public class QueryWorkFlowFirstStaffBMOImpl implements IQueryWorkFlowFirstStaffB
     @Autowired
     private IOrgStaffRelV1InnerServiceSMO orgStaffRelV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IOaWorkflowActivitiInnerServiceSMO oaWorkflowActivitiInnerServiceSMOImpl;
+
+
     @Autowired
     private RepositoryService repositoryService;
 
@@ -165,7 +170,7 @@ public class QueryWorkFlowFirstStaffBMOImpl implements IQueryWorkFlowFirstStaffB
         Assert.listOnlyOne(oaWorkflowDtos, "未包含流程");
 
         //普通流程需要部署 表单 其他类型不需要部署
-        if(OaWorkflowDto.FLOW_TYPE_PUBLIC.equals(oaWorkflowDtos.get(0).getFlowType())) {
+        if (OaWorkflowDto.FLOW_TYPE_PUBLIC.equals(oaWorkflowDtos.get(0).getFlowType())) {
             //表单 部署
             deployForm(oaWorkflowDtos.get(0));
         }
@@ -175,7 +180,7 @@ public class QueryWorkFlowFirstStaffBMOImpl implements IQueryWorkFlowFirstStaffB
             Model modelData = repositoryService.getModel(workflowModelDto.getModelId());
             byte[] bpmnBytes = null;
             bpmnBytes = repositoryService.getModelEditorSource(workflowModelDto.getModelId());
-            if(bpmnBytes == null || bpmnBytes.length< 1){
+            if (bpmnBytes == null || bpmnBytes.length < 1) {
                 throw new CmdException("未设置流程");
             }
             String processName = modelData.getName() + ".bpmn20.xml";
@@ -338,6 +343,9 @@ public class QueryWorkFlowFirstStaffBMOImpl implements IQueryWorkFlowFirstStaffB
         //这里决定对bpmn xml 文件做过滤处理
         dealBpmnXml(workflowModelDto);
 
+        //业务校验
+        businessCheck(oaWorkflowDtos.get(0), workflowModelDto);
+
         OaWorkflowXmlPo oaWorkflowXmlPo = new OaWorkflowXmlPo();
         oaWorkflowXmlPo.setStoreId(oaWorkflowDtos.get(0).getStoreId());
         oaWorkflowXmlPo.setBpmnXml(workflowModelDto.getJson_xml());
@@ -405,6 +413,41 @@ public class QueryWorkFlowFirstStaffBMOImpl implements IQueryWorkFlowFirstStaffB
         return ResultVo.success();
     }
 
+
+    //业务校验
+    private void businessCheck(OaWorkflowDto oaWorkflowDto, WorkflowModelDto workflowModelDto) {
+        if (OaWorkflowDto.FLOW_TYPE_VISIT.equals(oaWorkflowDto.getFlowType())) {
+            businessVisitCheck(oaWorkflowDto, workflowModelDto);
+        }
+    }
+
+    /**
+     * 访客校验
+     *
+     * @param oaWorkflowDto
+     * @param workflowModelDto
+     */
+    private void businessVisitCheck(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
      *

+ 19 - 2
service-community/src/main/java/com/java110/community/cmd/visit/SaveVisitSettingCmd.java

@@ -30,11 +30,14 @@ import com.java110.intf.community.IParkingAreaAttrInnerServiceSMO;
 import com.java110.intf.community.IParkingAreaInnerServiceSMO;
 import com.java110.intf.community.IVisitSettingV1InnerServiceSMO;
 import com.java110.intf.oa.IOaWorkflowInnerServiceSMO;
+import com.java110.intf.oa.IOaWorkflowXmlInnerServiceSMO;
 import com.java110.po.oaWorkflow.OaWorkflowPo;
+import com.java110.po.oaWorkflowXml.OaWorkflowXmlPo;
 import com.java110.po.visitSetting.VisitSettingPo;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.BpmnXml;
 import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -69,6 +72,9 @@ public class SaveVisitSettingCmd extends Cmd {
     @Autowired
     private IOaWorkflowInnerServiceSMO oaWorkflowInnerServiceSMOImpl;
 
+    @Autowired
+    private IOaWorkflowXmlInnerServiceSMO oaWorkflowXmlInnerServiceSMOImpl;
+
     @Autowired
     private IParkingAreaInnerServiceSMO parkingAreaInnerServiceSMOImpl;
 
@@ -91,7 +97,7 @@ public class SaveVisitSettingCmd extends Cmd {
         OaWorkflowPo oaWorkflowPo = new OaWorkflowPo();
         oaWorkflowPo.setStoreId(storeId);
         oaWorkflowPo.setFlowId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_flowId));
-        oaWorkflowPo.setFlowName(reqJson.getString("typeName")+"审批流程");
+        oaWorkflowPo.setFlowName(reqJson.getString("typeName") + "审批流程");
         oaWorkflowPo.setFlowType(OaWorkflowDto.FLOW_TYPE_VISIT);
 
         //创建model
@@ -108,14 +114,25 @@ public class SaveVisitSettingCmd extends Cmd {
             throw new CmdException("保存数据失败");
         }
 
+        //默认 流程图以防画错
+        OaWorkflowXmlPo oaWorkflowXmlPo = new OaWorkflowXmlPo();
+        oaWorkflowXmlPo.setStoreId(storeId);
+        oaWorkflowXmlPo.setFlowId(oaWorkflowPo.getFlowId());
+        oaWorkflowXmlPo.setXmlId(GenerateCodeFactory.getGeneratorId("79"));
+        oaWorkflowXmlPo.setSvgXml("");
+        oaWorkflowXmlPo.setBpmnXml(BpmnXml.getDefaultVisitBpmnXml(oaWorkflowPo.getFlowId()));
 
+        flag = oaWorkflowXmlInnerServiceSMOImpl.saveOaWorkflowXml(oaWorkflowXmlPo);
+        if (flag < 1) {
+            throw new CmdException("保存模型数据失败");
+        }
 
         VisitSettingPo visitSettingPo = BeanConvertUtil.covertBean(reqJson, VisitSettingPo.class);
         visitSettingPo.setSettingId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
         visitSettingPo.setFlowId(oaWorkflowPo.getFlowId());
         visitSettingPo.setFlowName(oaWorkflowPo.getFlowName());
 
-        if(!StringUtil.isEmpty(visitSettingPo.getPaId())) {
+        if (!StringUtil.isEmpty(visitSettingPo.getPaId())) {
             ParkingAreaDto parkingAreaDto = new ParkingAreaDto();
             parkingAreaDto.setCommunityId(reqJson.getString("communityId"));
             parkingAreaDto.setPaId(reqJson.getString("paId"));

+ 2 - 2
service-oa/src/main/java/com/java110/oa/cmd/oaWorkflow/QueryFirstAuditStaffCmd.java

@@ -31,7 +31,7 @@ public class QueryFirstAuditStaffCmd extends Cmd {
     private IOaWorkflowXmlInnerServiceSMO oaWorkflowXmlInnerServiceSMOImpl;
 
     @Autowired
-    private IOaWorkflowActivitiInnerServiceSMO oaWorkflowUserInnerServiceSMOImpl;
+    private IOaWorkflowActivitiInnerServiceSMO oaWorkflowActivitiInnerServiceSMOImpl;
 
 
     @Override
@@ -54,7 +54,7 @@ public class QueryFirstAuditStaffCmd extends Cmd {
         List<OaWorkflowXmlDto> oaWorkflowXmlDtos = oaWorkflowXmlInnerServiceSMOImpl.queryOaWorkflowXmls(oaWorkflowXmlDto);
         Assert.listOnlyOne(oaWorkflowXmlDtos, "流程不存在");
 
-        List<JSONObject> tasks = oaWorkflowUserInnerServiceSMOImpl.queryFirstAuditStaff(oaWorkflowXmlDtos.get(0));
+        List<JSONObject> tasks = oaWorkflowActivitiInnerServiceSMOImpl.queryFirstAuditStaff(oaWorkflowXmlDtos.get(0));
 
         context.setResponseEntity(ResultVo.createResponseEntity(tasks));
 

+ 19 - 22
service-user/src/main/java/com/java110/user/cmd/org/DeleteOrgCmd.java

@@ -73,29 +73,26 @@ public class DeleteOrgCmd extends Cmd {
 
         Assert.listOnlyOne(orgDtos, "不存在");
 
-        if (OrgDto.ORG_LEVEL_COMPANY.equals(orgDtos.get(0).getOrgLevel())) {
-            //查询是否存在部门
-            orgDto = new OrgDto();
-            orgDto.setParentOrgId(reqJson.getString("orgId"));
-            List<OrgDto> subOrgDtos = orgV1InnerServiceSMOImpl.queryOrgs(orgDto);
-            if (subOrgDtos != null && subOrgDtos.size() > 0) {
-                throw new CmdException("公司下存在部门 请先删除部门后再删除");
-            }
-        }else if (OrgDto.ORG_LEVEL_DEPARTMENT.equals(orgDtos.get(0).getOrgLevel())) {
-            //查询是否存在部门
-            OrgStaffRelDto orgStaffRelDto = new OrgStaffRelDto();
-            orgStaffRelDto.setOrgId(reqJson.getString("orgId"));
-            List<OrgStaffRelDto> subOrgDtos = orgStaffRelV1InnerServiceSMOImpl.queryOrgStaffRels(orgStaffRelDto);
-            if (subOrgDtos == null || subOrgDtos.size() < 1) {
-                return;
-            }
-            UserDto userDto = new UserDto();
-            userDto.setUserId(subOrgDtos.get(0).getStaffId());
-            List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
-            if (userDtos != null && userDtos.size() > 0) {
-                throw new CmdException("部门下存在员工 请先删除员工后再删除");
-            }
+        orgDto = new OrgDto();
+        orgDto.setParentOrgId(reqJson.getString("orgId"));
+        List<OrgDto> subOrgDtos = orgV1InnerServiceSMOImpl.queryOrgs(orgDto);
+        if (subOrgDtos != null && subOrgDtos.size() > 0) {
+            throw new CmdException("存在子组织");
         }
+
+        OrgStaffRelDto orgStaffRelDto = new OrgStaffRelDto();
+        orgStaffRelDto.setOrgId(reqJson.getString("orgId"));
+        List<OrgStaffRelDto> orgStaffRelDtos = orgStaffRelV1InnerServiceSMOImpl.queryOrgStaffRels(orgStaffRelDto);
+        if (orgStaffRelDtos == null || orgStaffRelDtos.size() < 1) {
+            return;
+        }
+        UserDto userDto = new UserDto();
+        userDto.setUserId(orgStaffRelDtos.get(0).getStaffId());
+        List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+        if (userDtos != null && userDtos.size() > 0) {
+            throw new CmdException("存在员工 请先删除员工后再删除");
+        }
+
     }
 
     @Override