Kaynağa Gözat

解决 删除部门不校验 员工的 bug修复

java110 4 yıl önce
ebeveyn
işleme
899ae3bb30

+ 3 - 0
java110-bean/src/main/java/com/java110/dto/org/OrgDto.java

@@ -15,6 +15,9 @@ import java.util.Date;
  **/
 public class OrgDto extends PageDto implements Serializable {
 
+    public static final String ORG_LEVEL_COMPANY = "2";
+    public static final String ORG_LEVEL_DEPARTMENT = "3";
+
     private String orgName;
     private String parentOrgId;
     private String description;

+ 73 - 77
java110-db/src/main/resources/mapper/store/OrgStaffRelV1ServiceDaoImplMapper.xml

@@ -5,102 +5,98 @@
 <mapper namespace="orgStaffRelV1ServiceDaoImpl">
 
 
-
-
-
     <!-- 保存员工部门关系信息 add by wuxw 2018-07-03 -->
     <insert id="saveOrgStaffRelInfo" parameterType="Map">
         insert into u_org_staff_rel(
-rel_id,store_id,org_id,staff_id,rel_cd,b_id
-) values (
-#{relId},#{storeId},#{orgId},#{staffId},#{relCd},#{bId}
-)
+        rel_id,store_id,org_id,staff_id,rel_cd,b_id
+        ) values (
+        #{relId},#{storeId},#{orgId},#{staffId},#{relCd},#{bId}
+        )
     </insert>
 
 
-
     <!-- 查询员工部门关系信息 add by wuxw 2018-07-03 -->
     <select id="getOrgStaffRelInfo" parameterType="Map" resultType="Map">
-        select  t.rel_id,t.rel_id relId,t.status_cd,t.status_cd statusCd,t.store_id,t.store_id storeId,t.org_id,t.org_id orgId,t.staff_id,t.staff_id staffId,t.rel_cd,t.rel_cd relCd 
-from u_org_staff_rel t 
-where 1 =1 
-<if test="relId !=null and relId != ''">
-   and t.rel_id= #{relId}
-</if> 
-<if test="statusCd !=null and statusCd != ''">
-   and t.status_cd= #{statusCd}
-</if> 
-<if test="storeId !=null and storeId != ''">
-   and t.store_id= #{storeId}
-</if> 
-<if test="orgId !=null and orgId != ''">
-   and t.org_id= #{orgId}
-</if> 
-<if test="staffId !=null and staffId != ''">
-   and t.staff_id= #{staffId}
-</if> 
-<if test="relCd !=null and relCd != ''">
-   and t.rel_cd= #{relCd}
-</if> 
-order by t.create_time desc
-<if test="page != -1 and page != null ">
-   limit #{page}, #{row}
-</if> 
+        select t.rel_id,t.rel_id relId,t.status_cd,t.status_cd statusCd,t.store_id,t.store_id storeId,t.org_id,t.org_id
+        orgId,t.staff_id,t.staff_id staffId,t.rel_cd,t.rel_cd relCd
+        from u_org_staff_rel t
+        where 1 =1
+        <if test="relId !=null and relId != ''">
+            and t.rel_id= #{relId}
+        </if>
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="storeId !=null and storeId != ''">
+            and t.store_id= #{storeId}
+        </if>
+        <if test="orgId !=null and orgId != ''">
+            and t.org_id= #{orgId}
+        </if>
+        <if test="staffId !=null and staffId != ''">
+            and t.staff_id= #{staffId}
+        </if>
+        <if test="relCd !=null and relCd != ''">
+            and t.rel_cd= #{relCd}
+        </if>
+        order by t.create_time desc
+        <if test="page != -1 and page != null ">
+            limit #{page}, #{row}
+        </if>
 
     </select>
 
 
-
-
     <!-- 修改员工部门关系信息 add by wuxw 2018-07-03 -->
     <update id="updateOrgStaffRelInfo" parameterType="Map">
-        update  u_org_staff_rel 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="orgId !=null and orgId != ''">
-, t.org_id= #{orgId}
-</if> 
-<if test="staffId !=null and staffId != ''">
-, t.staff_id= #{staffId}
-</if> 
-<if test="relCd !=null and relCd != ''">
-, t.rel_cd= #{relCd}
-</if> 
- where 1=1 <if test="relId !=null and relId != ''">
-and t.rel_id= #{relId}
-</if> 
+        update u_org_staff_rel 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="orgId !=null and orgId != ''">
+            , t.org_id= #{orgId}
+        </if>
+        <if test="staffId !=null and staffId != ''">
+            , t.staff_id= #{staffId}
+        </if>
+        <if test="relCd !=null and relCd != ''">
+            , t.rel_cd= #{relCd}
+        </if>
+        where 1=1
+        <if test="relId !=null and relId != ''">
+            and t.rel_id= #{relId}
+        </if>
 
     </update>
 
     <!-- 查询员工部门关系数量 add by wuxw 2018-07-03 -->
-     <select id="queryOrgStaffRelsCount" parameterType="Map" resultType="Map">
-        select  count(1) count 
-from u_org_staff_rel t 
-where 1 =1 
-<if test="relId !=null and relId != ''">
-   and t.rel_id= #{relId}
-</if> 
-<if test="statusCd !=null and statusCd != ''">
-   and t.status_cd= #{statusCd}
-</if> 
-<if test="storeId !=null and storeId != ''">
-   and t.store_id= #{storeId}
-</if> 
-<if test="orgId !=null and orgId != ''">
-   and t.org_id= #{orgId}
-</if> 
-<if test="staffId !=null and staffId != ''">
-   and t.staff_id= #{staffId}
-</if> 
-<if test="relCd !=null and relCd != ''">
-   and t.rel_cd= #{relCd}
-</if> 
+    <select id="queryOrgStaffRelsCount" parameterType="Map" resultType="Map">
+        select count(1) count
+        from u_org_staff_rel t
+        where 1 =1
+        <if test="relId !=null and relId != ''">
+            and t.rel_id= #{relId}
+        </if>
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="storeId !=null and storeId != ''">
+            and t.store_id= #{storeId}
+        </if>
+        <if test="orgId !=null and orgId != ''">
+            and t.org_id= #{orgId}
+        </if>
+        <if test="staffId !=null and staffId != ''">
+            and t.staff_id= #{staffId}
+        </if>
+        <if test="relCd !=null and relCd != ''">
+            and t.rel_cd= #{relCd}
+        </if>
 
 
-     </select>
+    </select>
 
 </mapper>

+ 48 - 5
service-user/src/main/java/com/java110/user/cmd/org/DeleteOrgCmd.java

@@ -21,16 +21,23 @@ import com.java110.core.annotation.Java110Transactional;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.AbstractServiceCmdListener;
 import com.java110.core.event.cmd.CmdEvent;
-import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.org.OrgDto;
+import com.java110.dto.org.OrgStaffRelDto;
+import com.java110.dto.user.UserDto;
+import com.java110.intf.store.IOrgStaffRelV1InnerServiceSMO;
 import com.java110.intf.user.IOrgV1InnerServiceSMO;
+import com.java110.intf.user.IUserV1InnerServiceSMO;
 import com.java110.po.org.OrgPo;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.vo.ResultVo;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
 /**
  * 类表述:删除
  * 服务编码:org.deleteOrg
@@ -43,23 +50,59 @@ import org.slf4j.LoggerFactory;
  */
 @Java110Cmd(serviceCode = "org.deleteOrg")
 public class DeleteOrgCmd extends AbstractServiceCmdListener {
-  private static Logger logger = LoggerFactory.getLogger(DeleteOrgCmd.class);
+    private static Logger logger = LoggerFactory.getLogger(DeleteOrgCmd.class);
 
     @Autowired
     private IOrgV1InnerServiceSMO orgV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IOrgStaffRelV1InnerServiceSMO orgStaffRelV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
         Assert.hasKeyAndValue(reqJson, "orgId", "orgId不能为空");
-Assert.hasKeyAndValue(reqJson, "storeId", "storeId不能为空");
+        Assert.hasKeyAndValue(reqJson, "storeId", "storeId不能为空");
+
+        //校验组织下是否有部门或者员工
+        OrgDto orgDto = new OrgDto();
+        orgDto.setOrgId(reqJson.getString("orgId"));
+        List<OrgDto> orgDtos = orgV1InnerServiceSMOImpl.queryOrgs(orgDto);
 
+        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() < 0) {
+                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("部门下存在员工 请先删除员工后再删除");
+            }
+        }
     }
 
     @Override
     @Java110Transactional
     public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
 
-       OrgPo orgPo = BeanConvertUtil.covertBean(reqJson, OrgPo.class);
+        OrgPo orgPo = BeanConvertUtil.covertBean(reqJson, OrgPo.class);
         int flag = orgV1InnerServiceSMOImpl.deleteOrg(orgPo);
 
         if (flag < 1) {