소스 검색

优化代码

java110 3 년 전
부모
커밋
d60504e3ca

+ 9 - 0
java110-bean/src/main/java/com/java110/dto/org/OrgStaffRelDto.java

@@ -23,6 +23,7 @@ public class OrgStaffRelDto extends PageDto implements Serializable {
     private String relId;
     private String storeId;
     private String orgId;
+    private String orgName;
     private String staffId;
     private String staffName;
     private String[] staffIds;
@@ -169,4 +170,12 @@ public class OrgStaffRelDto extends PageDto implements Serializable {
     public void setParentOrgName(String parentOrgName) {
         this.parentOrgName = parentOrgName;
     }
+
+    public String getOrgName() {
+        return orgName;
+    }
+
+    public void setOrgName(String orgName) {
+        this.orgName = orgName;
+    }
 }

+ 1 - 1
java110-bean/src/main/java/com/java110/po/smallWechatAttr/SmallWechatAttrPo.java

@@ -9,7 +9,7 @@ public class SmallWechatAttrPo implements Serializable {
     private String specCd;
     private String communityId;
     private String value;
-    private String statusCd;
+    private String statusCd = "0";
 
     public String getAttrId() {
         return attrId;

+ 2 - 1
java110-db/src/main/resources/mapper/store/OrgStaffRelV1ServiceDaoImplMapper.xml

@@ -18,8 +18,9 @@
     <!-- 查询员工部门关系信息 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
+        orgId,t.staff_id,t.staff_id staffId,t.rel_cd,t.rel_cd relCd,td.`name` relCdName
         from u_org_staff_rel t
+        left join t_dict td on t.rel_cd = td.status_cd and td.table_name = 'u_org_staff_rel' and td.table_columns = 'rel_cd'
         where 1 =1
         <if test="relId !=null and relId != ''">
             and t.rel_id= #{relId}

+ 102 - 0
service-user/src/main/java/com/java110/user/cmd/user/ListStaffOrgsCmd.java

@@ -0,0 +1,102 @@
+package com.java110.user.cmd.user;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.dto.org.OrgDto;
+import com.java110.dto.org.OrgStaffRelDto;
+import com.java110.intf.store.IOrgStaffRelV1InnerServiceSMO;
+import com.java110.intf.user.IOrgV1InnerServiceSMO;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+import java.util.List;
+
+@Java110Cmd(serviceCode = "user.listStaffOrgs")
+public class ListStaffOrgsCmd extends Cmd {
+
+    @Autowired
+    private IOrgStaffRelV1InnerServiceSMO orgStaffRelV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IOrgV1InnerServiceSMO orgV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+        Assert.hasKeyAndValue(reqJson, "staffId", "未包含 员工信息");
+    }
+
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+
+        String storeId = context.getReqHeaders().get("store-id");
+        Assert.hasLength(storeId, "未包含商户信息");
+
+        OrgDto orgDto = new OrgDto();
+        orgDto.setStoreId(storeId);
+        List<OrgDto> orgDtos = orgV1InnerServiceSMOImpl.queryOrgs(orgDto);
+        if (orgDtos == null || orgDtos.size() < 1) {
+            return;
+        }
+        OrgStaffRelDto orgStaffRelDto = new OrgStaffRelDto();
+        orgStaffRelDto.setStaffId(reqJson.getString("staffId"));
+        orgStaffRelDto.setStoreId(storeId);
+        List<OrgStaffRelDto> orgStaffRels = orgStaffRelV1InnerServiceSMOImpl.queryOrgStaffRels(orgStaffRelDto);
+
+        if (orgStaffRels == null || orgStaffRels.size() < 1) {
+            return;
+        }
+
+        freshOrgName(orgDtos, orgStaffRels);
+        ResultVo resultVo = new ResultVo(1, orgStaffRels.size(), orgStaffRels);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+        context.setResponseEntity(responseEntity);
+
+    }
+
+    private void freshOrgName(List<OrgDto> orgDtos, List<OrgStaffRelDto> orgStaffRels) {
+
+        for (OrgStaffRelDto orgStaffRelDto : orgStaffRels) {
+            orgStaffRelDto.setParentOrgId(orgStaffRelDto.getOrgId());
+            findParents(orgStaffRelDto, orgDtos, null);
+        }
+    }
+
+    private void findParents(OrgStaffRelDto orgStaffRelDto, List<OrgDto> orgDtos, OrgDto curOrgDto) {
+        for (OrgDto orgDto : orgDtos) {
+            if (!orgStaffRelDto.getParentOrgId().equals(orgDto.getOrgId())) { // 他自己跳过
+                continue;
+            }
+            orgStaffRelDto.setParentOrgId(orgDto.getParentOrgId());
+            curOrgDto = orgDto;
+            if (StringUtil.isEmpty(orgStaffRelDto.getOrgName())) {
+                orgStaffRelDto.setOrgName(orgDto.getOrgName() + orgStaffRelDto.getOrgName());
+                continue;
+            }
+            orgStaffRelDto.setOrgName(orgDto.getOrgName() + " / " + orgStaffRelDto.getOrgName());
+        }
+
+        if (curOrgDto != null && OrgDto.ORG_LEVEL_STORE.equals(curOrgDto.getOrgLevel())) {
+            return;
+        }
+
+        if (curOrgDto != null && curOrgDto.getParentOrgId().equals(curOrgDto.getOrgId())) {
+            return;
+        }
+
+        if (curOrgDto != null && "-1".equals(curOrgDto.getParentOrgId())) {
+            return;
+        }
+
+        findParents(orgStaffRelDto, orgDtos, curOrgDto);
+    }
+}