Browse Source

厨卫 人员 架构

duyj 3 years ago
parent
commit
e21897ec9b
18 changed files with 809 additions and 34 deletions
  1. 15 1
      suishenbang-admin/src/main/resources/templates/system/user/edit.html
  2. 7 0
      suishenbang-admin/src/main/resources/templates/system/user/user.html
  3. 11 1
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/MetaEmployeeDiy.java
  4. 1 1
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/mapper/MetaDiySalesorgtreeMapper.java
  5. 186 8
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/AnalysisDiyCustomerComponent.java
  6. 13 4
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/HanaOrderComponent.java
  7. 7 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IAnalysisSysUserService.java
  8. 494 6
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/AnalysisSysUserService.java
  9. 14 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/utils/CustomerAccessTokenUtil.java
  10. 1 1
      suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/MetaDiySalesorgtreeMapper.xml
  11. 3 1
      suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/MetaEmployeeDiyMapper.xml
  12. 10 0
      suishenbang-system/src/main/java/com/dgtly/system/domain/SysUserExt.java
  13. 2 0
      suishenbang-system/src/main/java/com/dgtly/system/mapper/SysUserMapper.java
  14. 2 0
      suishenbang-system/src/main/java/com/dgtly/system/service/ISysUserService.java
  15. 4 0
      suishenbang-system/src/main/java/com/dgtly/system/service/impl/SysUserServiceImpl.java
  16. 16 2
      suishenbang-system/src/main/resources/mapper/system/SysUserMapper.xml
  17. 7 1
      suishenbang-system/src/main/resources/mapper/system/SysUserSalesExtMapper.xml
  18. 16 8
      suishenbang-wxportal/suishenbang-wxportal-api/src/main/java/com/dgtly/wxportal/controller/WxPortalController.java

+ 15 - 1
suishenbang-admin/src/main/resources/templates/system/user/edit.html

@@ -131,6 +131,7 @@
                     <div class="form-group">
                         <label class="col-sm-4 control-label">用户类别:</label>
                         <input type="hidden" th:field="*{sysUserExt.salesLevel}" onchange="changeLevelText">
+                        <input type="hidden" th:field="*{sysUserExt.identity}" >
                         <div class="col-sm-8">
                             <input class="form-control" type="text" readonly="true" id="salesText" />
                         </div>
@@ -286,7 +287,16 @@
             postValue += " 财务 ";
         }
         if(post.indexOf('3') != -1){
-            postValue += " 仓管";
+            postValue += " 仓管 ";
+        }
+        if(post.indexOf('4') != -1){
+            postValue += " 厨卫老板 ";
+        }
+        if(post.indexOf('5') != -1){
+            postValue += " 厨卫经理 ";
+        }
+        if (post.indexOf('0') != -1){
+            postValue += " 导购 ";
         }
         $("#customerManagerValue").val(postValue);
 
@@ -444,6 +454,8 @@
                         $("input[name='sysUserExt.sapEmployeeId']").val(result.data.sapEmployeeId);
                         $("input[name='sysUserExt.isCustomerManager']").val(result.data.isCustomerManager);
 
+                        $("input[name='sysUserExt.identity']").val(result.data.identity);
+
                         $("input[name='sysUserExt.isChangeExt']").val(1);
 
                     }else{
@@ -483,6 +495,8 @@
             // $("input[name='sysUserExt.sapEmployeeId']").removeAttr("readonly");
             $("input[name='sysUserExt.isCustomerManager']").val("");
             $("input[name='sysUserExt.isChangeExt']").val(1);
+
+            $("input[name='sysUserExt.identity']").val(1);
         }
 
 		$(function() {

+ 7 - 0
suishenbang-admin/src/main/resources/templates/system/user/user.html

@@ -81,6 +81,13 @@
 									<span>-</span>
 									<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/>
 								</li>
+								<li>
+									经销商类型:<select name="sysUserExt.identity">
+									<option value="">所有</option>
+									<option value="1">DIY</option>
+									<option value="2">厨卫</option>
+									<option value="3">两者都是</option>
+								</select>
 								<li>
 									<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
 								    <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>

+ 11 - 1
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/MetaEmployeeDiy.java

@@ -105,7 +105,17 @@ public class MetaEmployeeDiy extends BaseEntity
 
     private String packageId;
 
-    public void setName(String name) 
+    private String businessUnit;
+
+    public String getBusinessUnit() {
+        return businessUnit;
+    }
+
+    public void setBusinessUnit(String businessUnit) {
+        this.businessUnit = businessUnit;
+    }
+
+    public void setName(String name)
     {
         this.name = name;
     }

+ 1 - 1
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/mapper/MetaDiySalesorgtreeMapper.java

@@ -71,5 +71,5 @@ public interface MetaDiySalesorgtreeMapper
      * @return 结果
      */
     @MapKey("orgname")
-    Map<String,Map<String,String>> selectSalesTreeByLevel(@Param("level") Integer level);
+    Map<String,Map<String,String>> selectSalesTreeByLevel(@Param("level") Integer level, @Param("type") String type);
 }

+ 186 - 8
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/AnalysisDiyCustomerComponent.java

@@ -58,6 +58,7 @@ public class AnalysisDiyCustomerComponent {
     private SyncFailDetailMapper syncFailDetailMapper;
     private Long deptId;
     private Long[] roleIds;
+    private Long[] roleGuideIds;
      /**
      * 获取并解析DIY经销商用户
      * 因为经销商用户并不涉及用信息更新等方面 所以只插入不更新
@@ -73,6 +74,10 @@ public class AnalysisDiyCustomerComponent {
             roleIds = new Long[]{roleId};
         }
 
+        if (roleGuideIds == null) {
+            Long roleId = Long.parseLong(configService.selectConfigByKey("libang.guide.roleid"));
+            roleGuideIds = new Long[]{roleId};
+        }
         List<SyncFailDetail> failDetails = new ArrayList<>();
         SyncLog syncLog = new SyncLog();
         syncLog.setStartTime(new Date());
@@ -81,6 +86,7 @@ public class AnalysisDiyCustomerComponent {
         long total = 0;
         long success = 0;
         Set<String> loginNameSet = sysUserService.selectAllUserLoginName();
+        Set<String> diyNameSet = sysUserService.selectAllUserLoginName();
         String managerJson ="";
         try{
             managerJson = HttpUtils.sendSSLGet(customerAccessTokenUtil.getUrl(UrlType.MANAGER,null));
@@ -102,7 +108,7 @@ public class AnalysisDiyCustomerComponent {
 
 
 
-        /*String guideJson ="";
+        String guideJson ="";
         try{
             guideJson = HttpUtils.sendSSLGet(customerAccessTokenUtil.getUrl(UrlType.STOREGUIDE,null));
         }catch (Exception e){
@@ -116,7 +122,7 @@ public class AnalysisDiyCustomerComponent {
         if(code==0){
             success+=buildSysUser(gjson,loginNameSet,0,failDetails,packageId,codeMap);
             total+=gjson.getJSONArray("userlist").size();
-        }*/
+        }
 
         String financeJson ="";
         try{
@@ -200,6 +206,31 @@ public class AnalysisDiyCustomerComponent {
             }
         }
 
+        try {
+            JSONObject bossListJson = JSONObject.parseObject(HttpUtils.sendSSLGet(customerAccessTokenUtil.getUrl(UrlType.BOSSLIST, null)));
+            code = bossListJson.getInteger("code");
+            if (code == 0) {
+                success += buildSysUserEbr(bossListJson, loginNameSet, diyNameSet, 4, failDetails, packageId, chainsMap);
+                total += bossListJson.getJSONArray("userlist").size();
+            }
+        } catch (Exception e) {
+            log.error("获取厨卫老板列表接口错误!");
+            customerAccessTokenUtil.reSetToken();
+            throw e;
+        }
+
+        try {
+            JSONObject bossListJson = JSONObject.parseObject(HttpUtils.sendSSLGet(customerAccessTokenUtil.getUrl(UrlType.MANAGERLIST, null)));
+            code = bossListJson.getInteger("code");
+            if (code == 0) {
+                success += buildSysUserEbr(bossListJson, loginNameSet, diyNameSet, 5, failDetails, packageId, chainsMap);
+                total += bossListJson.getJSONArray("userlist").size();
+            }
+        } catch (Exception e) {
+            log.error("获取厨卫经理列表接口错误!");
+            customerAccessTokenUtil.reSetToken();
+            throw e;
+        }
 
         try{
             syncLog.setTotalCount(total);
@@ -275,7 +306,12 @@ public class AnalysisDiyCustomerComponent {
                     user.setLoginName(userid);
                     user.setUserName(jo.getString("name"));
                     user.setPhonenumber(jo.getString("mobile"));
-                    user.setRoleIds(roleIds);
+
+                    if (isManager == 0) {
+                        user.setRoleIds(roleGuideIds);
+                    } else {
+                        user.setRoleIds(roleIds);
+                    }
                     user.setPassword(user.getLoginName());
                     user.setSalt(ShiroSaltUtil.randomSalt());
                     user.setPassword(EncryptPassWordClass.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
@@ -314,13 +350,13 @@ public class AnalysisDiyCustomerComponent {
                     (首先查询当前用户职位,判断当前职位是否包含当前职位,不存在就更新,存在就不更新)*/
                     SysUser user = sysUserService.selectUserByLoginName(userid);
 
-                    if (!user.getSysUserExt().getIsCustomerManager().contains(isManager+"") ||
-                            !user.getSysUserExt().getCustomerCode().equals(customerCode) ){
-                        if (!user.getSysUserExt().getIsCustomerManager().contains(isManager+"")){
+                    if (!user.getSysUserExt().getIsCustomerManager().contains(isManager + "") ||
+                            !user.getSysUserExt().getCustomerCode().equals(customerCode) || !user.getSysUserExt().getOrgCode().equals(customerCode)) {
+                        if (!user.getSysUserExt().getIsCustomerManager().contains(isManager + "")) {
                             /*更新职位*/
-                            user.getSysUserExt().setIsCustomerManager(user.getSysUserExt().getIsCustomerManager()+","+isManager);
+                            user.getSysUserExt().setIsCustomerManager(user.getSysUserExt().getIsCustomerManager() + "," + isManager);
                         }
-                        if (!user.getSysUserExt().getCustomerCode().equals(customerCode)) {
+                        if (!user.getSysUserExt().getCustomerCode().equals(customerCode) || !user.getSysUserExt().getOrgCode().equals(customerCode)) {
                             /*更新经销商code*/
                             if (cusMap.containsKey(customerCode)) {
                                 Customers c = cusMap.get(customerCode);
@@ -330,6 +366,7 @@ public class AnalysisDiyCustomerComponent {
                                 user.getSysUserExt().setOrgCode(customerCode);
                             }
                         }
+                        log.info("updateSysUserExt" + customerCode);
                         sysUserExtMapper.updateSysUserExt(user.getSysUserExt());
                     }
                     /*解决名称不一样的情况*/
@@ -355,6 +392,147 @@ public class AnalysisDiyCustomerComponent {
     }
 
 
+    /**
+     * 构建 插入用户List
+     * @param json
+     * @param loginNameSet 排重用
+     * @param isManager
+     * @return
+     */
+    public Integer buildSysUserEbr(JSONObject json, Set<String> loginNameSet,Set<String> diyNameSet, int isManager, List<SyncFailDetail> failDetails,String packageId, Map<String,Customers> cusMap){
+        JSONArray jsonArray = json.getJSONArray("userlist");
+        int count = 0;
+        for(int i =0;i<jsonArray.size();i++){
+            JSONObject jo = jsonArray.getJSONObject(i);
+
+            try {
+                String userNo = jo.getString("userNo");
+                String name = jo.getString("name");
+                String userid = jo.getString("userid");
+                String customerCode = jo.getString("depCode");
+                /*企业微信中成员启用状态。1表示启用的成员,0表示被禁用*/
+                /*if(enable==null||enable.trim().equals("0")){
+                    continue;
+                }
+                *//*企业微信中人员激活状态: 1=已激活,2=已禁用,4=未激活,5=退出企业。*//*
+                if(status==null || !status.trim().equals("1")){
+                    continue;
+                }
+                *//*人员信息是否已更新入企业微信。true:更新成功false:更新失败*//*
+                if(!isSync){
+                    continue;
+                }
+                *//*人员信息是否被标记删除true:删除,false:未删除*//*
+                if(isDelete){
+                    continue;
+                }*/
+                if(userid==null||userid.trim().equals("")){
+                    continue;
+                }
+                if (!loginNameSet.contains(userid)) {
+
+                    /** =============用户基本信息构建 start===============*/
+                    SysUser user = new SysUser();
+                    user.setCompanyId(1L);
+                    user.setDeptId(deptId);
+                    user.setLoginName(userid);
+                    user.setUserName(jo.getString("name"));
+                    user.setPhonenumber(jo.getString("mobile"));
+                    user.setRoleIds(roleIds);
+                    user.setPassword(user.getLoginName());
+                    user.setSalt(ShiroSaltUtil.randomSalt());
+                    user.setPassword(EncryptPassWordClass.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
+
+
+                    /** =============用户基本信息构建 end===============*/
+
+
+                    /**======== 构建diy用户扩展信息表 start===============*/
+                    SysUserExt userExt = new SysUserExt();
+                    userExt.setSalesLevel("customer_level");
+
+                    userExt.setIdentity("2");// 1=diy,2=ebr,3=all
+
+                    userExt.setCustomerCode(jo.getString("depCode"));
+                    userExt.setIsCustomerManager(isManager + "");
+                    userExt.setSapEmployeeId(userNo);
+
+                    userExt.setPostName("CW经销商");
+                    String orgCode = jo.getString("depCode");
+                    if(cusMap.containsKey(orgCode)){
+                        Customers c = cusMap.get(orgCode);
+                        userExt.setOrgCode(c.getChainsCode());
+                        userExt.setOrgName(c.getChainsName());
+                    }else{
+                        userExt.setOrgCode(orgCode);
+                    }
+
+//                    /**======== 构建diy用户wx信息表 start===============*/
+//                    WxQyUser wxQyUser = new WxQyUser();
+//                    wxQyUser.setUserid(jo.getString("userid"));
+//                    wxQyUser.setMobile(jo.getString("mobile"));
+                    user.setSysUserExt(userExt);
+                    insertUserAndExt(user);
+                    count++;
+                    loginNameSet.add(userid);
+                }else{
+                    /*已经存在的,需要先清空职位,更新职位
+                    (首先查询当前用户职位,判断当前职位是否包含当前职位,不存在就更新,存在就不更新)*/
+                    SysUser user = sysUserService.selectUserByLoginName(userid);
+
+                    if (!user.getSysUserExt().getIsCustomerManager().contains(isManager + "") ||
+                            !user.getSysUserExt().getCustomerCode().equals(customerCode) || !user.getSysUserExt().getOrgCode().equals(customerCode)) {
+                        if (!user.getSysUserExt().getIsCustomerManager().contains(isManager + "")) {
+                            /*更新职位*/
+                            user.getSysUserExt().setIsCustomerManager(user.getSysUserExt().getIsCustomerManager() + "," + isManager);
+                        }
+                        if (!user.getSysUserExt().getCustomerCode().equals(customerCode) || !user.getSysUserExt().getOrgCode().equals(customerCode)) {
+                            /*更新经销商code*/
+                            if (cusMap.containsKey(customerCode)) {
+                                Customers c = cusMap.get(customerCode);
+                                user.getSysUserExt().setOrgCode(c.getChainsCode());
+                                user.getSysUserExt().setOrgName(c.getChainsName());
+                            } else {
+                                user.getSysUserExt().setOrgCode(customerCode);
+                            }
+                        }
+                        log.info("updateSysUserExt" + customerCode);
+                        sysUserExtMapper.updateSysUserExt(user.getSysUserExt());
+                    }
+                    /*解决名称不一样的情况*/
+                    if(!user.getUserName().equals(name)){
+                        user.setUserName(name);
+                        sysUserService.updateUserInfo(user);
+                    }
+                    //更新 identity 1=diy,2=ebr,3=all
+                    if (diyNameSet.contains(userid) && !"3".equals(user.getSysUserExt().getIdentity())) {
+                        log.info("updateSysUserExt identity 3" + userid);
+                        user.getSysUserExt().setIdentity("3");
+                        sysUserExtMapper.updateSysUserExt(user.getSysUserExt());
+                    }
+                    if (!diyNameSet.contains(userid) && !"2".equals(user.getSysUserExt().getIdentity())) {
+                        log.info("updateSysUserExt identity 2" + userid);
+                        user.getSysUserExt().setIdentity("2");
+                        sysUserExtMapper.updateSysUserExt(user.getSysUserExt());
+                    }
+                }
+            }catch (Exception e){
+                log.error(e.getMessage());
+                e.printStackTrace();
+                SyncFailDetail syncFailDetail = new SyncFailDetail();
+                syncFailDetail.setPackageId(packageId);
+                syncFailDetail.setFailReason(e.getMessage());
+                syncFailDetail.setDataJson(jo.toJSONString());
+                syncFailDetail.setFailLevel("1");
+                syncFailDetail.setExceptionType(e.getClass().getSimpleName());
+                failDetails.add(syncFailDetail);
+            }
+        }
+
+        return count;
+    }
+
+
     @Transactional(rollbackFor = Exception.class)
     public Integer insertUserAndExt(SysUser user) {
         // 新增用户信息

+ 13 - 4
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/HanaOrderComponent.java

@@ -87,7 +87,10 @@ public class HanaOrderComponent {
                 "                T.VSBED,\n" +
                 "                T.VSBED_TXT,\n" +
                 "                T.MEINS,\n" +
-                "                T.TRAGR\n" +
+                "                T.TRAGR,\n" +
+                "                T.ABRVW,\n" +
+                "                T.ABRVW_TXT,\n" +
+                "                T.VKBUR\n" +
                 "FROM (\n" +
                 "\n" +
                 "SELECT\n" +
@@ -126,7 +129,10 @@ public class HanaOrderComponent {
                 "                A.VSBED,\n" +
                 "                A.VSBED_TXT,\n" +
                 "                A.MEINS,\n" +
-                "                B.TRAGR "+
+                "                B.TRAGR, "+
+                "                A.ABRVW, "+
+                "                A.ABRVW_TXT, "+
+                "                A.VKBUR "+
                 "FROM \"_SYS_BIC\".\"com.sd/CAL_SALES\"" +
                 "('PLACEHOLDER' = ('$$IP_ENDDATE$$',\n" +
                 "\t '"+DateUtils.dateTime()+"'),\n" +
@@ -135,7 +141,7 @@ public class HanaOrderComponent {
                 "\t LEFT JOIN ERP.T001W C ON C.WERKS = A.WERKS \n" +
                 "\t LEFT JOIN ERP.ZHANAMATDOWN D ON D.MATNR = A.MATNR \n" +
                 "\t LEFT JOIN ERP.T001L E ON E.WERKS = A.WERKS AND E.LGORT = A.LGORT \n" +
-                "\t WHERE A.VKORG != '4000' AND A.VTWEG = 'D9' AND A.SPART != '16' AND A.AUART NOT IN ('31','32','33','35','36','39') " +
+                "\t WHERE A.VKORG != '4000' AND A.VTWEG IN ('D9','Y9') AND A.SPART != '16' AND A.AUART NOT IN ('31','32','33','35','36','39') " +
                 "and ((A.ZCMGST !='信用通过' and A.ABGRU='') or (A.ZCMGST ='信用通过' and A.ABGRU=''))\n" +
                 " order by A.VBELN,A.POSNR " +
                 " ) T");
@@ -319,6 +325,9 @@ public class HanaOrderComponent {
                                 +"?"+ checkgetBigDecimal(result.getBigDecimal("ZNETWR1"))
                                 +"?"+ result.getString("VSBED")
                                 +"?"+ result.getString("VSBED_TXT")
+                                +"?"+ result.getString("ABRVW")
+                                +"?"+ result.getString("ABRVW_TXT")
+                                +"?"+ result.getString("VKBUR")
                                 + "\r\n");
 
 
@@ -426,7 +435,7 @@ public class HanaOrderComponent {
                 "\t\t\t\t)\n" +
                 "\t\t\t)\n" +
                 "\t\tWHERE\n" +
-                "\t\t\tVTWEG = 'D9'\n" +
+                "\t\t\tVTWEG IN ('D9','Y9') \n" +
                 "\t\tAND SPART != '16'\n" +
                 "\t\tAND AUART_S NOT IN (\n" +
                 "\t\t\t'31',\n" +

+ 7 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IAnalysisSysUserService.java

@@ -10,4 +10,11 @@ public interface IAnalysisSysUserService {
      * @return
      */
     public SyncLog analysisSysUser(String packageId);
+
+    /**
+     * 解析厨卫部门数据
+     * @param packageId
+     * @return
+     */
+    public SyncLog analysisSysCwUser(String packageId);
 }

+ 494 - 6
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/AnalysisSysUserService.java

@@ -59,9 +59,8 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
      * @param packageId
      * @return
      */
-    @Override
     @Async
-    public SyncLog analysisSysUser(String packageId){
+    public SyncLog analysisSysUserOld(String packageId){
         //解析逻辑件DIY用户逻辑.jpg
         MetaEmployeeDiy param = new MetaEmployeeDiy();
         if(packageId==null||packageId.trim().equals("")){
@@ -70,6 +69,8 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
         }else{
             param.setPackageId(packageId);
         }
+        param.setBusinessUnit("DIY");
+
         List<MetaEmployeeDiy> metaEmployeeDiys = metaEmployeeDiyMapper.selectMetaEmployeeDiyList(param);
         SyncLog syncLog = new SyncLog();
         syncLog.setSyncType("sysuser");
@@ -260,6 +261,401 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
 
     }
 
+    /**
+     * 解析DIY用户数据  异步执行(new)
+     * @param packageId
+     * @return
+     */
+    @Override
+    @Async
+    public SyncLog analysisSysUser(String packageId){
+        //解析逻辑件DIY用户逻辑.jpg
+        MetaEmployeeDiy param = new MetaEmployeeDiy();
+        if(packageId==null||packageId.trim().equals("")){
+            Long l = new Date().getTime();
+            packageId = l.toString();
+        }else{
+            param.setPackageId(packageId);
+        }
+        param.setBusinessUnit("DIY");
+
+        List<MetaEmployeeDiy> metaEmployeeDiys = metaEmployeeDiyMapper.selectMetaEmployeeDiyList(param);
+        SyncLog syncLog = new SyncLog();
+        syncLog.setSyncType("sysuser");
+        syncLog.setStartTime(new Date());
+
+        Set<String> loginNameList = sysUserService.selectAllUserLoginName();
+
+
+        syncLog.setPackageId(packageId);
+        syncLog.setTotalCount((long)metaEmployeeDiys.size());
+        List<SyncFailDetail> failDetails = new ArrayList<>();
+        long successCount = 0;
+        long failCount = 0;
+
+        Long deptId = Long.parseLong(configService.selectConfigByKey("libang.user.deptid"));
+        Long roleId = Long.parseLong(configService.selectConfigByKey("libang.user.roleid"));
+        Long[] roleIds = {roleId};
+        if(metaEmployeeDiys.size()>0){
+
+            //用户objid3为列表内的内容才为DIY人员
+            Set<String> diyObjid3Set =  getConfigValueSet("libang_diyobjid3");
+            //用户岗位名称为列表的内容才是区公司级别人员
+            Set<String> companySet =  getConfigValueSet("libang_company_level_postname");
+            //用户岗位名称为列表的内容才是销售大区级别人员
+            Set<String> saledeptSet =  getConfigValueSet("libang_saledept_level_postname");
+            //用户岗位名称为列表的内容才是销售部级别人员
+            Set<String> officeSet =  getConfigValueSet("libang_office_level_postname");
+            //用户岗位名称为列表的内容才是销售分部级别人员
+            Set<String> subofficeSet =  getConfigValueSet("libang_suboffice_level_postname");
+            //用户岗位名称为列表的内容才是销售员级别人员
+            Set<String> empSet =  getConfigValueSet("libang_emp_level_postname");
+            Map<Integer,Map<String,Map<String,String>>>  salesTreeMap = getDiySalesOrgTree();
+
+
+
+            for(MetaEmployeeDiy m:metaEmployeeDiys) {
+                try {
+                    //todo
+//                    if(!m.getLoginName().equalsIgnoreCase("LiuTao.Fight")){
+//                        continue;
+//                    }
+
+                    //用户是否属于DIY筛选范围
+//                    if(!diyObjid3Set.contains(m.getStext3())){
+//                        throw new OutOfScopeDIYException(m);
+//                    }
+                    /** =============用户基本信息构建 start===============*/
+                    SysUser user = new SysUser();
+                    user.setCompanyId(1L);
+                    user.setDeptId(deptId);
+                    user.setLoginName(m.getLoginName());
+                    user.setUserName(m.getName());
+                    user.setEmail(m.getEmail());
+                    user.setPhonenumber(m.getMobile());
+                    String sex = ""+(Integer.parseInt(m.getSex())-1);
+                    user.setSex(sex);
+                    user.setRoleIds(roleIds);
+                    if (m.getStatus() == 0) {
+                        user.setStatus("1");
+                        user.setDelFlag("2");
+                    } else {
+                        user.setStatus("0");
+                    }
+                    /** =============用户基本信息构建 end===============*/
+
+
+
+                    /**======== 构建diy用户扩展信息表 start===============*/
+                    SysUserExt userExt = new SysUserExt();
+                    userExt.setBossEmployeeId(m.getBossEmployeeId());
+                    userExt.setBossName(m.getBossName());
+                    userExt.setSapEmployeeId(m.getSapEmployeeId());
+                    userExt.setPostCode(m.getEmployeePost());
+                    String postName = m.getEmployeePostName();
+                    userExt.setPostName(postName);
+
+                    //判断用户所处销售层级
+                    //先啊判断用户所属的岗位名称确定销售部门
+                    if(companySet.contains(postName)){
+                        //先处理特殊的第三级 区公司级别
+                        userExt.setSalesLevel("company_level");
+                        userExt.setOrgName(m.getStext4());
+                        setExtOrgCodeOn3(salesTreeMap,userExt);
+
+                    }else {
+                        //判断用户u岗位是否在销售员敢为、销售分部岗位、销售部岗位、销售大区岗位中
+                        if(empSet.contains(postName)||subofficeSet.contains(postName)||officeSet.contains(postName)||saledeptSet.contains(postName)){
+                            //获取最后所属的部门名称
+                            String orgName = getStext(m);
+                            if(orgName.indexOf("通路推广组")!=-1){
+                                orgName =  getStextSecond(m);
+                            }
+                            userExt.setOrgName(orgName);
+                            int i = getLevel(userExt,salesTreeMap);
+                            if (i == -1) {
+                                //失败后取上一层
+                                orgName = getStextSecond(m);
+                                userExt.setOrgName(orgName);
+                                i = getLevel(userExt, salesTreeMap);
+                                if (i == -1) {
+                                    throw new NotFountOrgCodeException(m);
+                                }
+                            }
+                            switch (i){
+                                case 5:
+                                    if(empSet.contains(m.getEmployeePostName())){
+                                        //等级6 销售员
+                                        userExt.setSalesLevel("emp_level");
+                                    }else if(subofficeSet.contains(m.getEmployeePostName())){
+                                        //等级6 销售分部
+                                        userExt.setSalesLevel("suboffice_level");
+                                    }
+                                    break;
+                                case 4:
+                                    userExt.setSalesLevel("office_level");
+                                    break;
+                                case 3:
+                                    userExt.setSalesLevel("company_level");
+                                    break;
+                            }
+                        }else{
+                            throw new OutOfDIYPostNameException(m);
+                        }
+                    }
+
+//                    if(userExt.getOrgCode()==null){
+//                        throw new NotFountOrgCodeException(m);
+//                    }
+
+                    /**======== 构建diy用户扩展信息表 end===============*/
+                    if (loginNameList.contains(user.getLoginName())) {
+                        /**  更新 */
+                        SysUser userInDb =sysUserService.selectUserByLoginName(user.getLoginName());
+                        if(!userInDb.getSysUserExt().getSalesLevel().equals("diy_level")){
+                            user.setSysUserExt(userExt);
+                        }
+                        user.setUpdateTime(new Date());
+                        sysUserService.updateUserInfoAndSalesExt(user);
+                    } else {
+                        /**  插入 */
+                        //修改密码并加密
+                        user.setPassword(m.getLoginName());
+                        user.setSalt(ShiroSaltUtil.randomSalt());
+                        user.setPassword(EncryptPassWordClass.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
+                        user.setSysUserExt(userExt);
+                        sysUserService.insertUserAndSalesExt(user);
+                        successCount++;
+                    }
+                }catch (OutOfScopeDIYException|NotFountOrgCodeException|OutOfDIYPostNameException|OutOfLeveLException|NotOrgNameException e){
+                    /**
+                     * 警告类异常
+                     */
+                    SyncFailDetail syncFailDetail = new SyncFailDetail();
+                    syncFailDetail.setPackageId(packageId);
+                    syncFailDetail.setFailReason(e.getMessage());
+                    syncFailDetail.setDataJson(JSONObject.toJSONString(m));
+                    syncFailDetail.setFailLevel("0");
+                    syncFailDetail.setExceptionType(e.getClass().getSimpleName());
+                    failDetails.add(syncFailDetail);
+                    failCount++;
+                }catch (Exception e) {
+                    /**
+                     * 错误异常
+                     */
+                    SyncFailDetail syncFailDetail = new SyncFailDetail();
+                    syncFailDetail.setPackageId(packageId);
+                    syncFailDetail.setFailReason(e.getMessage());
+                    syncFailDetail.setDataJson(JSONObject.toJSONString(m));
+                    syncFailDetail.setFailLevel("1");
+                    syncFailDetail.setExceptionType(e.getClass().getSimpleName());
+                    failDetails.add(syncFailDetail);
+                    e.printStackTrace();
+                    log.error("解析用户出错", e);
+                    failCount++;
+                }
+            }
+            syncLog.setSuccessCount(successCount);
+            syncLog.setFaileCount(failCount);
+        }else{
+            syncLog.setSuccessCount(0l);
+            syncLog.setFaileCount(0l);
+        }
+        try{
+            syncLog.setEndTime(new Date());
+            if(failDetails.size()>0){
+                syncFailDetailMapper.batchInsertSyncFailDetail(failDetails);
+            }
+        }catch (Exception e){
+            log.error("解析用户插入解析日志出错",e);
+            e.printStackTrace();
+            throw new BusinessException("解析用户插入解析日志出错",e);
+        }finally {
+            syncLogService.insertSyncLog(syncLog);
+        }
+        return syncLog;
+
+    }
+
+    /**
+     * 解析CW用户数据  异步执行
+     * @param packageId
+     * @return
+     */
+    @Override
+    @Async
+    public SyncLog analysisSysCwUser(String packageId) {
+        MetaEmployeeDiy param = new MetaEmployeeDiy();
+        if (packageId == null || packageId.trim().equals("")) {
+            Long l = new Date().getTime();
+            packageId = l.toString();
+        } else {
+            param.setPackageId(packageId);
+        }
+
+        param.setBusinessUnit("CW");
+        param.setStext3("厨卫底材事业部");//厨卫底材事业部
+
+        List<MetaEmployeeDiy> metaEmployeeDiys = metaEmployeeDiyMapper.selectMetaEmployeeDiyList(param);
+        SyncLog syncLog = new SyncLog();
+        syncLog.setSyncType("sysusercw");
+        syncLog.setStartTime(new Date());
+
+        Set<String> loginNameList = sysUserService.selectAllUserLoginName();
+
+        syncLog.setPackageId(packageId);
+        syncLog.setTotalCount((long) metaEmployeeDiys.size());
+        List<SyncFailDetail> failDetails = new ArrayList<>();
+        long successCount = 0;
+        long failCount = 0;
+
+        Long deptId = Long.parseLong(configService.selectConfigByKey("libang.user.cw.deptid"));
+        Long roleId = Long.parseLong(configService.selectConfigByKey("libang.user.cw.roleid"));
+        Long[] roleIds = {roleId};
+        if (metaEmployeeDiys.size() > 0) {
+
+            Set<String> companyPostNameSet = getConfigValueSet("cw_comp_postname");
+            Set<String> companyDeptPostNameSet = getConfigValueSet("cw_comp_dept_postname");
+            Set<String> companyEndPostNameSet = getConfigValueSet("cw_comp_end_postname");
+
+            Set<String> deptPostNameSet = getConfigValueSet("cw_dept_postname");
+            Set<String> officePostNameSet = getConfigValueSet("cw_office_postname");
+            Set<String> empPostNameSet = getConfigValueSet("cw_emp_postname");
+
+            Map<Integer, Map<String, Map<String, String>>> salesTreeMap = getDiySalesOrgTreeY9();
+
+            for (MetaEmployeeDiy m : metaEmployeeDiys) {
+                try {
+                    //用户是否属于DIY筛选范围
+//                    if(!diyObjid3Set.contains(m.getStext3())){
+//                        throw new OutOfScopeDIYException(m);
+//                    }
+                    /** =============用户基本信息构建 start===============*/
+                    SysUser user = new SysUser();
+                    user.setCompanyId(1L);
+                    user.setDeptId(deptId);
+                    user.setLoginName(m.getLoginName());
+                    user.setUserName(m.getName());
+                    user.setEmail(m.getEmail());
+                    user.setPhonenumber(m.getMobile());
+                    String sex = "" + (Integer.parseInt(m.getSex()) - 1);
+                    user.setSex(sex);
+                    user.setRoleIds(roleIds);
+                    if (m.getStatus() == 0) {
+                        user.setStatus("1");
+                        user.setDelFlag("2");
+                    } else {
+                        user.setStatus("0");
+                    }
+                    /** =============用户基本信息构建 end===============*/
+
+
+                    /**======== 构建diy用户扩展信息表 start===============*/
+                    SysUserExt userExt = new SysUserExt();
+                    userExt.setBossEmployeeId(m.getBossEmployeeId());
+                    userExt.setBossName(m.getBossName());
+                    userExt.setSapEmployeeId(m.getSapEmployeeId());
+                    userExt.setPostCode(m.getEmployeePost());
+                    String postName = m.getEmployeePostName();
+                    userExt.setPostName(postName);
+
+                    String orgName = getStext(m);
+
+                    if (companyPostNameSet.contains(postName) || companyDeptPostNameSet.contains(orgName) || companyEndPostNameSet.contains(orgName)) {
+                        if (companyEndPostNameSet.contains(orgName)) {
+                            if (postName != null && (postName.trim().endsWith("部主管") || postName.trim().endsWith("组主管"))) {
+                                userExt.setSalesLevel("cw_diy");
+                            }
+                        } else {
+                            userExt.setSalesLevel("cw_diy");
+                        }
+                    } else if (deptPostNameSet.contains(postName)) {
+                        userExt.setSalesLevel("cw_dept");
+                        userExt.setOrgName(m.getStext4());
+                        setExtOrgCodeY9(salesTreeMap, 3, userExt);
+                    } else if (officePostNameSet.contains(postName)) {
+                        userExt.setSalesLevel("cw_office");
+                        userExt.setOrgName(m.getStext5());
+                        setExtOrgCodeY9(salesTreeMap, 4, userExt);
+                    } else if (empPostNameSet.contains(postName)) {
+                        userExt.setSalesLevel("cw_emp");
+                        userExt.setOrgName(m.getStext5());
+                        userExt.setOrgCode(m.getSapEmployeeId());
+                    } else {
+                        throw new OutOfDIYPostNameException(m);
+                    }
+
+                    /**======== 构建diy用户扩展信息表 end===============*/
+                    if (loginNameList.contains(user.getLoginName())) {
+                        /**  更新 */
+                        SysUser userInDb = sysUserService.selectUserByLoginName(user.getLoginName());
+                        if (!userInDb.getSysUserExt().getSalesLevel().equals("diy_level")) {
+                            user.setSysUserExt(userExt);
+                        }
+                        user.setUpdateTime(new Date());
+                        sysUserService.updateUserInfoAndSalesExt(user);
+                    } else {
+                        /**  插入 */
+
+                        userExt.setIdentity("2");
+
+                        //修改密码并加密
+                        user.setPassword(m.getLoginName());
+                        user.setSalt(ShiroSaltUtil.randomSalt());
+                        user.setPassword(EncryptPassWordClass.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
+                        user.setSysUserExt(userExt);
+                        sysUserService.insertUserAndSalesExt(user);
+                        successCount++;
+                    }
+                } catch (OutOfScopeDIYException | NotFountOrgCodeException | OutOfDIYPostNameException | OutOfLeveLException | NotOrgNameException e) {
+                    /**
+                     * 警告类异常
+                     */
+                    SyncFailDetail syncFailDetail = new SyncFailDetail();
+                    syncFailDetail.setPackageId(packageId);
+                    syncFailDetail.setFailReason(e.getMessage());
+                    syncFailDetail.setDataJson(JSONObject.toJSONString(m));
+                    syncFailDetail.setFailLevel("0");
+                    syncFailDetail.setExceptionType(e.getClass().getSimpleName());
+                    failDetails.add(syncFailDetail);
+                    failCount++;
+                } catch (Exception e) {
+                    /**
+                     * 错误异常
+                     */
+                    SyncFailDetail syncFailDetail = new SyncFailDetail();
+                    syncFailDetail.setPackageId(packageId);
+                    syncFailDetail.setFailReason(e.getMessage());
+                    syncFailDetail.setDataJson(JSONObject.toJSONString(m));
+                    syncFailDetail.setFailLevel("1");
+                    syncFailDetail.setExceptionType(e.getClass().getSimpleName());
+                    failDetails.add(syncFailDetail);
+                    e.printStackTrace();
+                    log.error("解析cw用户出错", e);
+                    failCount++;
+                }
+            }
+            syncLog.setSuccessCount(successCount);
+            syncLog.setFaileCount(failCount);
+        } else {
+            syncLog.setSuccessCount(0l);
+            syncLog.setFaileCount(0l);
+        }
+        try {
+            syncLog.setEndTime(new Date());
+            if (failDetails.size() > 0) {
+                syncFailDetailMapper.batchInsertSyncFailDetail(failDetails);
+            }
+        } catch (Exception e) {
+            log.error("解析cw用户插入解析日志出错", e);
+            e.printStackTrace();
+            throw new BusinessException("解析cw用户插入解析日志出错", e);
+        } finally {
+            syncLogService.insertSyncLog(syncLog);
+        }
+        return syncLog;
+    }
+
     /**
      * 获取字典的set
      * @param dictType
@@ -282,10 +678,10 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
      * @return
      */
     public Map<Integer,Map<String,Map<String,String>>> getDiySalesOrgTree(){
-        Map<String,Map<String,String>> map3= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(3);
-        Map<String,Map<String,String>> map4= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(4);
-        Map<String,Map<String,String>> map5= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(5);
-        Map<String,Map<String,String>> map6= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(6);
+        Map<String,Map<String,String>> map3= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(3, "DIY");
+        Map<String,Map<String,String>> map4= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(4, "DIY");
+        Map<String,Map<String,String>> map5= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(5, "DIY");
+        Map<String,Map<String,String>> map6= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(6, "DIY");
         Map<Integer,Map<String,Map<String,String>>>res = new HashMap<>();
         res.put(3,map3);
         res.put(4,map4);
@@ -377,6 +773,32 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
         return false;
     }
 
+    /**
+     * 根据销售的部门等级及销售组织名称获取销售的组织code 向下兼容
+     * @param salesTree
+     * @param level 销售登记
+     * @param userExt 用户扩展信息
+     * @return
+     */
+    public boolean setExtOrgCodeY9(Map<Integer, Map<String, Map<String, String>>> salesTree, int level, SysUserExt userExt) {
+        if (userExt.getOrgName() == null || userExt.getOrgName().trim().equals("")) {
+            return false;
+        }
+        String orgname = userExt.getOrgName();
+        if (salesTree.containsKey(level)) {
+            Map<String, Map<String, String>> temp = salesTree.get(level);
+            for (String key : temp.keySet()) {
+                if (level==3 && orgname.indexOf(key) != -1) {
+                    userExt.setOrgCode(temp.get(key).get("orgcode"));
+                    return true;
+                }else if (level==4 && key.indexOf(orgname) != -1) {
+                    userExt.setOrgCode(temp.get(key).get("orgcode"));
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
 
     /**
      * 根据销售的部门等级及销售组织名称获取销售的组织code 向上兼容
@@ -429,6 +851,9 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
 
     public int getLevel(SysUserExt userExt,Map<Integer,Map<String,Map<String,String>>> salesTree){
         String orgName = userExt.getOrgName();
+        if (orgName != null && orgName.startsWith("36城-")) {
+            orgName = orgName.replaceAll("36城-", "");
+        }
         for(int i =6;i>2;i--){
             if(salesTree.containsKey(i)){
                 Map<String,Map<String,String>> temp = salesTree.get(i);
@@ -442,6 +867,69 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
 
     }
 
+    /**
+     * 获取销售组织架构树
+     * @return
+     */
+    public Map<Integer,Map<String,Map<String,String>>> getDiySalesOrgTreeY9(){
+        Map<String,Map<String,String>> map3= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(3, "CW");
+
+        Map<String,Map<String,String>> map4= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(4, "CW");
+        Map<Integer,Map<String,Map<String,String>>>res = new HashMap<>();
+        res.put(3,map3);
+        res.put(4,map4);
+        return res;
+    }
+
+    /**
+     * 根据销售的部门等级及销售组织名称获取销售的组织code
+     * @param salesTree
+     * @param level 销售登记
+     * @param userExt 用户扩展信息
+     * @return
+     */
+    public boolean setExtOrgCodeEbrY9(Map<Integer,Map<String,Map<String,String>>> salesTree,int level,SysUserExt userExt){
+        if(userExt.getOrgName()==null||userExt.getOrgName().trim().equals("")){
+            return false;
+        }
+        String orgname = userExt.getOrgName();
+        for(;level<5;level++){
+            if(salesTree.containsKey(level)){
+                Map<String,Map<String,String>> temp = salesTree.get(level);
+                String code = getLikeKey(temp,orgname);
+                if(code!=null){
+                    userExt.setOrgCode(code);
+                    return true;
+                }else{
+                    continue;
+                }
+            }
+        }
+        return false;
+
+    }
 
+    public String getLikeKey( Map<String,Map<String,String>> map,String key){
+        if(map.containsKey(key)){
+            return map.get(key).get("orgcode");
+        }else{
+            Iterator it = map.entrySet().iterator();
+            while(it.hasNext()) {
+                Map.Entry<String, Map<String,String>> entry = (Map.Entry<String, Map<String,String>>)it.next();
+                if (entry.getKey().indexOf(key) != -1) {
+                    Map<String,String> t =entry.getValue();
+                    String value = t.get("orgcode");
+                    map.put(key,t);
+                    return value;
+                }else if(key.indexOf(entry.getKey())!=-1){
+                    Map<String,String> t =entry.getValue();
+                    String value = t.get("orgcode");
+                    map.put(key,t);
+                    return value;
+                }
+            }
+            return null;
+        }
+    }
 
 }

+ 14 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/utils/CustomerAccessTokenUtil.java

@@ -18,6 +18,8 @@ public class CustomerAccessTokenUtil {
         MANAGER,
         STOREGUIDE,
         FINANCE,
+        BOSSLIST,
+        MANAGERLIST,
         WAREHOUSE;
 
 
@@ -59,6 +61,10 @@ public class CustomerAccessTokenUtil {
     private String financeListUrl ;
     //获取经销商仓管人员列表(分页)
     private String warehouseListUrl ;
+    //厨卫 获取老板列表
+    private String bossListUrl ;
+    //厨卫 获取经理列表
+    private String managerUrl ;
 
     @PostConstruct
     public void init() {
@@ -67,6 +73,8 @@ public class CustomerAccessTokenUtil {
         storeGuideListUrl =domain+"/wechatwork/diydt/v1/user/storeGuide/list?access_token=%s";
         financeListUrl =domain+"/wechatwork/diydt/v2/user/finance/list?page=%s&access_token=%s";
         warehouseListUrl =domain+"/wechatwork/diydt/v2/user/warehouse/list?page=%s&access_token=%s";
+        bossListUrl =domain+"/wechatwork/chuwei/v1/user/boss/list?access_token=%s";
+        managerUrl =domain+"/wechatwork/chuwei/v1/user/manager/list?access_token=%s";
     }
 
     public String getAccessToken(){
@@ -128,6 +136,12 @@ public class CustomerAccessTokenUtil {
             case WAREHOUSE:
                 url = String.format(warehouseListUrl,pageNum,token);
                 break;
+            case BOSSLIST:
+                url = String.format(bossListUrl,token);
+                break;
+            case MANAGERLIST:
+                url = String.format(managerUrl,token);
+                break;
         }
         return url;
     }

+ 1 - 1
suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/MetaDiySalesorgtreeMapper.xml

@@ -135,7 +135,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       select
         Org${level}name as orgname,Org${level}code as orgcode
       from meta_diy_salesorgtree
-      where Org${level}code is not null
+      where Org${level}code is not null and business_unit = #{type}
       group by orgname
     </select>
     

+ 3 - 1
suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/MetaEmployeeDiyMapper.xml

@@ -50,12 +50,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="etlCreatime"    column="etl_creatime"    />
         <result property="lineId"    column="line_id"    />
         <result property="packageId"    column="package_id"    />
+        <result property="businessUnit"    column="business_unit"    />
     </resultMap>
 
     <sql id="selectMetaEmployeeDiyVo">
         select name, login_name, email, mobile, sap_employee_id, sap_cost_center_code, sap_cost_center, sap_company_code, status, objid_1, contract, contract_name, contract_begin, duty, duty_name, org, org_name, employee_post, employee_post_name, posty, poste, posnc, boss_employee_id,
         boss_name, boss_employee_post, sex, stext_1, objid_2, stext_2, objid_3, stext_3, objid_4,
-        stext_4, objid_5, stext_5, objid_6,stext_6, objid_7,stext_7, objid_qy,stext_qy,dataversion, etl_creatime, line_id, package_id from meta_employee_diy
+        stext_4, objid_5, stext_5, objid_6,stext_6, objid_7,stext_7, objid_qy,stext_qy,dataversion, etl_creatime, line_id, package_id,business_unit from meta_employee_diy
     </sql>
 
     <select id="selectMetaEmployeeDiyList" parameterType="MetaEmployeeDiy" resultMap="MetaEmployeeDiyResult">
@@ -102,6 +103,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="etlCreatime != null "> and etl_creatime = #{etlCreatime}</if>
             <if test="lineId != null  and lineId != ''"> and line_id = #{lineId}</if>
             <if test="packageId != null  and packageId != ''"> and package_id = #{packageId}</if>
+            <if test="businessUnit != null  and businessUnit != ''"> and business_unit = #{businessUnit}</if>
         </where>
     </select>
     

+ 10 - 0
suishenbang-system/src/main/java/com/dgtly/system/domain/SysUserExt.java

@@ -49,6 +49,16 @@ public class SysUserExt extends BaseEntity
     private String postName;
     private Integer isChangeExt  =0;
 
+    private String  identity;
+
+    public String getIdentity() {
+        return identity;
+    }
+
+    public void setIdentity(String identity) {
+        this.identity = identity;
+    }
+
     public void setUserId(Long userId)
     {
         this.userId = userId;

+ 2 - 0
suishenbang-system/src/main/java/com/dgtly/system/mapper/SysUserMapper.java

@@ -24,6 +24,8 @@ public interface SysUserMapper
      */
     public Set<String> selectAllUserLoginName();
 
+    public Set<String> selectDiyUserLoginName();
+
     /**
      * 根据条件分页查询用户列表
      * 

+ 2 - 0
suishenbang-system/src/main/java/com/dgtly/system/service/ISysUserService.java

@@ -24,6 +24,8 @@ public interface ISysUserService
      */
     public Set<String> selectAllUserLoginName();
 
+    public Set<String> selectDiyUserLoginName();
+
     /**
      * 根据条件分页查询用户列表
      * 

+ 4 - 0
suishenbang-system/src/main/java/com/dgtly/system/service/impl/SysUserServiceImpl.java

@@ -579,6 +579,10 @@ public class SysUserServiceImpl implements ISysUserService
         return userMapper.selectAllUserLoginName();
     }
 
+    @Override
+    public Set<String> selectDiyUserLoginName() {
+        return userMapper.selectDiyUserLoginName();
+    }
 
     /**
      * 根据立邦员工id查找用户

+ 16 - 2
suishenbang-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -82,6 +82,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="isCustomerManager"    column="is_customer_manager"    />
 		<result property="postName"    column="post_name"    />
 		<result property="postCode"    column="post_code"    />
+		<result property="identity"       column="identity"       />
     </resultMap>
 	
 	<sql id="selectUserVo">
@@ -91,7 +92,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        		    d.dept_id, d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status,
        		    r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,
        		    suse.sales_level,suse.org_name,suse.org_code,suse.sap_employee_id,suse.boss_employee_id,suse.boss_name,suse.customer_code,suse.is_customer_manager,
-       		    suse.post_name,suse.post_code
+       		    suse.post_name,suse.post_code,suse.identity
 		from sys_user u
 			 left join sys_dept d on u.dept_id = d.dept_id
 			 left join sys_company c on u.company_id = c.id
@@ -105,7 +106,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           u.phonenumber, u.password, u.sex, u.salt, u.status, u.del_flag,
           u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
           d.dept_name, d.leader,
-        suse.sales_level,suse.org_name,suse.org_code,suse.post_name,suse.is_customer_manager,ce.is_authentication is_org_authentication,ce.org_attestation_time
+		suse.identity,suse.sales_level,suse.org_name,suse.org_code,suse.post_name,suse.is_customer_manager,ce.is_authentication is_org_authentication,ce.org_attestation_time
 		from sys_user u
 		left join sys_dept d on u.dept_id = d.dept_id
 		left join sys_company c on u.company_id = c.id
@@ -130,6 +131,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         and sysUserExt.orgName != ''">
 			AND suse.org_name like concat('%', #{sysUserExt.orgName}, '%')
 		</if>
+		<if test="sysUserExt != null and sysUserExt.postName !=null
+        and sysUserExt.postName != ''">
+			AND suse.post_name = #{sysUserExt.postName}
+		</if>
+		<if test="sysUserExt != null and sysUserExt.identity !=null
+        and sysUserExt.identity != ''">
+			AND suse.identity = #{sysUserExt.identity}
+		</if>
 		<if test="userName != null and userName != ''">
 			AND u.user_name like concat('%', #{userName}, '%')
 		</if>
@@ -337,6 +346,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         from sys_user u
     </select>
 
+	<select id="selectDiyUserLoginName"  resultType="String">
+        select u.login_name
+        from sys_user u where post_name='DIY经销商'
+    </select>
+
     <insert id="insertUserNoKey" parameterType="SysUser" >
         insert into sys_user(
         <if test="userId != null and userId != 0">user_id,</if>

+ 7 - 1
suishenbang-system/src/main/resources/mapper/system/SysUserSalesExtMapper.xml

@@ -19,7 +19,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectSysUserExtVo">
-        select user_id, org_code, sales_level, org_name, sap_employee_id, boss_employee_id, boss_name,customer_code,is_customer_manager,post_code,post_name from sys_user_ext
+        select user_id, org_code, sales_level, org_name, sap_employee_id, boss_employee_id, boss_name,customer_code,is_customer_manager,post_code,post_name,identity from sys_user_ext
     </sql>
 
     <select id="selectSysUserExtList" parameterType="SysUserExt" resultMap="SysUserExtResult">
@@ -57,6 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isCustomerManager != null  and isCustomerManager != ''">  is_customer_manager,</if>
             <if test="postCode != null and postCode != ''">  post_code ,</if>
             <if test="postName != null  and postName != ''">  post_name ,</if>
+            <if test="identity != null  and identity != ''">  identity ,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="userId != null ">#{userId},</if>
@@ -70,6 +71,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isCustomerManager != null  and isCustomerManager != ''"> #{isCustomerManager},</if>
             <if test="postCode != null and postCode != ''">  #{postCode}, </if>
             <if test="postName != null  and postName != ''">  #{postName},</if>
+            <if test="identity != null  and identity != ''">  #{identity},</if>
          </trim>
     </insert>
 
@@ -86,6 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isCustomerManager != null  and isCustomerManager != ''"> is_customer_manager = #{isCustomerManager},</if>
             <if test="postCode != null and postCode != ''">  post_code = #{postCode},</if>
             <if test="postName != null  and postName != ''">  post_name = #{postName}, </if>
+            <if test="identity != null  and identity != ''">  identity = #{identity}, </if>
         </trim>
         where user_id = #{userId}
     </update>
@@ -125,6 +128,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isCustomerManager != null  and isCustomerManager != ''">  is_customer_manager,</if>
             <if test="postCode != null and postCode != ''"> post_code ,</if>
             <if test="postName != null  and postName != ''"> post_name ,</if>
+            <if test="identity != null  and identity != ''"> identity ,</if>
 
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -139,6 +143,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isCustomerManager != null  and isCustomerManager != ''"> #{isCustomerManager},</if>
             <if test="postCode != null and postCode != ''">  #{postCode},</if>
             <if test="postName != null  and postName != ''">#{postName}, </if>
+            <if test="identity != null  and identity != ''">#{identity}, </if>
 
         </trim>
         ON DUPLICATE KEY UPDATE
@@ -153,6 +158,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isCustomerManager != null  and isCustomerManager != ''">is_customer_manager= #{isCustomerManager},</if>
             <if test="postCode != null and postCode != ''"> post_code = #{postCode}, </if>
             <if test="postName != null  and postName != ''">  post_name = #{postName}, </if>
+            <if test="identity != null  and identity != ''">  identity = #{identity}, </if>
 
         </trim>
   </insert>

+ 16 - 8
suishenbang-wxportal/suishenbang-wxportal-api/src/main/java/com/dgtly/wxportal/controller/WxPortalController.java

@@ -122,11 +122,12 @@ public class WxPortalController extends ApiBaseController {
         ParameterObject obj = getParameterObject();
         obj.checkParameterNotNull("userId");
         String userId = obj.getString("userId");
+        String customerCode = obj.getString("customerCode");
         Map map = new HashMap(5);
         SysUser sysUser = userService.selectUserById(Long.parseLong(userId));
         /*根据org_code查询多个经销商列表*/
         List<SysUserExt> sysUserExtList = new ArrayList<>();
-        List<AssRelcustomerinfo>  assRelcustomerinfoList= assRelcustomerinfoService.selectRelcustomerinfoListByorgCode(sysUser.getSysUserExt().getOrgCode());
+        List<AssRelcustomerinfo>  assRelcustomerinfoList= assRelcustomerinfoService.selectRelcustomerinfoListByorgCode(customerCode);
         if (assRelcustomerinfoList.size()>0){
             for (AssRelcustomerinfo ar:assRelcustomerinfoList) {
                 SysUserExt sysUserExt = new SysUserExt();
@@ -181,13 +182,20 @@ public class WxPortalController extends ApiBaseController {
         String userId = obj.getString("userId");
         String orgCode = obj.getString("orgCode");
         String orgName = obj.getString("orgName");
-        int row = userExtService.switchCustomer(userId,orgCode,orgName);
-        if (row>0){
-            //通过userId查询用户信息
-            SysUser user = userService.selectUserById(Long.valueOf(userId));
-            return AjaxResult.success().putKV("sysUser",user);
-        }else{
-            return AjaxResult.error("经销商切换失败");
+
+        //check
+        SysUser sysUser = userService.selectUserById(Long.parseLong(userId));
+        if (sysUser != null && "customer_level".equals(sysUser.getSysUserExt().getSalesLevel())) {
+            int row = userExtService.switchCustomer(userId, orgCode, orgName);
+            if (row > 0) {
+                //通过userId查询用户信息
+                SysUser user = userService.selectUserById(Long.valueOf(userId));
+                return AjaxResult.success().putKV("sysUser", user);
+            } else {
+                return AjaxResult.error("经销商切换失败");
+            }
+        } else {
+            return AjaxResult.error(301,"非经销商级别无需切换");
         }
     }