Browse Source

事业部人员拉取

njs 1 year ago
parent
commit
6e4d059774

+ 2 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/mapper/MetaEmployeeDiyMapper.java

@@ -28,6 +28,8 @@ public interface MetaEmployeeDiyMapper
      * @return 立邦雇员数据同步集合
      */
     public List<MetaEmployeeDiy> selectMetaEmployeeDiyList(MetaEmployeeDiy metaEmployeeDiy);
+    //直接查零售下事业部人员
+    public List<MetaEmployeeDiy> selectMetaEmployeeDiyListByDivision();
 
     /**
      * 查询立邦雇员数据同步列表

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

@@ -11,6 +11,15 @@ public interface IAnalysisSysUserService {
      */
     public SyncLog analysisSysUser(String packageId);
 
+    /**
+     * @description: 解析零售下事业部人员
+     * @param:
+     * @return:
+     * @author: njs
+     * @date: 2023/5/10 10:12
+     */
+    public SyncLog analysisSysDivisionUser();
+
     /**
      * 解析厨卫部门数据
      * @param packageId

+ 180 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/AnalysisSysUserService.java

@@ -334,6 +334,166 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
 
     }
 
+    /**
+     * @param
+     * @description: 解析零售下事业部人员
+     * @param:
+     * @return:
+     * @author: njs
+     * @date: 2023/5/10 10:12
+     */
+    @Override
+    public SyncLog analysisSysDivisionUser() {
+        //解析零售下事业部人员直接sql查
+        List<MetaEmployeeDiy> metaEmployeeDiys = metaEmployeeDiyMapper.selectMetaEmployeeDiyListByDivision();
+        SyncLog syncLog = new SyncLog();
+        syncLog.setSyncType("sysuser");
+        syncLog.setStartTime(new Date());
+        Set<String> loginNameList = sysUserService.selectAllUserLoginName();
+        syncLog.setTotalCount((long)metaEmployeeDiys.size());
+        List<SyncFailDetail> failDetails = new ArrayList<>();
+        long successCount = 0;
+        long failCount = 0;
+        Long deptId = Long.parseLong(configService.selectConfigByKey("libang.user.division.deptid"));
+        Long roleId = Long.parseLong(configService.selectConfigByKey("libang.user.division.roleid"));
+        Long[] roleIds = {roleId};
+        Map<Integer,Map<String,Map<String,String>>>  salesTreeMap = getDiySalesOrgTree();
+        if(metaEmployeeDiys.size()>0){
+            for(MetaEmployeeDiy m:metaEmployeeDiys) {
+                try {
+
+                    /** =============用户基本信息构建 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());
+                    userExt.setDuty(m.getDuty());
+                    userExt.setDutyName(m.getDutyName());
+                    String postName = m.getEmployeePostName();
+                    userExt.setPostName(postName);
+                    userExt.setSalesLevel("division_level");
+                    userExt.setOrgName(m.getStext3());
+                    setExtOrgCodeOn2(salesTreeMap, userExt);
+                    if (StringUtils.isEmpty(userExt.getOrgCode())){
+                        log.error("DIY-事业部用户对应的销售部未找到!当前用户信息: " + m.getLoginName() + " , 销售部名称: " + userExt.getOrgName());
+                        SyncFailDetail syncFailDetail = new SyncFailDetail();
+                        syncFailDetail.setFailReason("DIY-事业部用户对应的销售部未找到!当前用户信息: " + m.getLoginName() + " , 销售部名称: " + userExt.getOrgName());
+                        syncFailDetail.setDataJson(JSONObject.toJSONString(m));
+                        syncFailDetail.setFailLevel("1");
+                        syncFailDetail.setExceptionType("not found dept");
+                        failDetails.add(syncFailDetail);
+                        failCount++;
+                        user.setSysUserExt(userExt);
+                        user.setUpdateTime(new Date());
+                        this.save(user,m);
+                        continue;
+                    }
+
+                    /**======== 构建diy用户扩展信息表 end===============*/
+                    loginNameList = loginNameList.stream().map(String::toUpperCase).collect(Collectors.toSet());
+                    if (loginNameList.contains(user.getLoginName().toUpperCase())) {
+                        /**  更新 */
+                        SysUser sysUser=sysUserService.selectUserByLoginName(user.getLoginName());
+                        if("1".equals(sysUser.getIsSync())){
+                            continue;
+                        }
+                        if(!userExt.getSalesLevel().equals(sysUser.getSysUserExt().getSalesLevel())){
+                            sysUserService.deleteByLoginName(user.getLoginName());
+                        }
+                        //if(!sysUser.getSysUserExt().getPostCode().equals(userExt.getPostCode())){
+                        System.out.println("解析DIY-事业部部门不一致情况原/新"+sysUser.getSysUserExt().getPostCode()+"/"+userExt.getPostCode());
+                        SysUserRole role=new SysUserRole();
+                        role.setUserId(sysUser.getUserId());
+                        userRoleMapper.deleteUserRoleInfo(role);
+                        user.setUserId(sysUser.getUserId());
+                        insertUserRole(user);
+                        //}
+
+                        if(!"division_level".equals(sysUser.getSysUserExt().getSalesLevel())){
+                            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.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.setFailReason(e.getMessage());
+                    syncFailDetail.setDataJson(JSONObject.toJSONString(m));
+                    syncFailDetail.setFailLevel("1");
+                    syncFailDetail.setExceptionType(e.getClass().getSimpleName());
+                    failDetails.add(syncFailDetail);
+                    e.printStackTrace();
+                    log.error("解析DIY-事业部用户出错", 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("解析DIY-事业部用户插入解析日志出错",e);
+            e.printStackTrace();
+            throw new BusinessException("解析DIY-事业部用户插入解析日志出错",e);
+        }finally {
+            syncLogService.insertSyncLog(syncLog);
+        }
+        return syncLog;
+
+    }
+
+
     /**
      * 解析CW用户数据  异步执行
      * @param packageId
@@ -1107,11 +1267,13 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
      * @return
      */
     public Map<Integer,Map<String,Map<String,String>>> getDiySalesOrgTree(){
+        Map<String,Map<String,String>> map2= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(2, "DIY");
         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(2,map2);
         res.put(3,map3);
         res.put(4,map4);
         res.put(5,map5);
@@ -1293,6 +1455,24 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
         }
         return false;
 
+    }
+    //事业部人员组织架构
+    public boolean setExtOrgCodeOn2(Map<Integer,Map<String,Map<String,String>>> salesTree,SysUserExt userExt){
+        if(userExt.getOrgName()==null||userExt.getOrgName().trim().equals("")){
+            return false;
+        }
+        String orgname = userExt.getOrgName();
+        Map<String,Map<String,String>> temp = salesTree.get(2);
+        //遍历区公司名称
+        for (String key : temp.keySet()) {
+            if(orgname.indexOf(key)!=-1){
+                userExt.setOrgCode(temp.get(key).get("orgcode"));
+                userExt.setOrgName(key);
+                return true;
+            }
+        }
+        return false;
+
     }
 
     public int getLevel(SysUserExt userExt,Map<Integer,Map<String,Map<String,String>>> salesTree){

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

@@ -106,6 +106,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="businessUnit != null  and businessUnit != ''"> and business_unit = #{businessUnit}</if>
         </where>
     </select>
+
+    <select id="selectMetaEmployeeDiyListByDivision" parameterType="MetaEmployeeDiy" resultMap="MetaEmployeeDiyResult">
+        <include refid="selectMetaEmployeeDiyVo"/>
+       where 1=1
+             and business_unit in ('12城北区事业部','36城事业部','BMD事业部','12城中区事业部','12城南区事业部')
+    </select>
     
     <select id="selectMetaEmployeeDiyById" parameterType="String" resultMap="MetaEmployeeDiyResult">
         <include refid="selectMetaEmployeeDiyVo"/>
@@ -263,7 +269,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectMetaEmployeetClueReporting" parameterType="MetaEmployeeDiy" resultMap="MetaEmployeeDiyResult">
         <include refid="selectMetaEmployeeDiyVo"/>
         where 1=1
-             and  business_unit not in ('YSL','DIY')
+             and  business_unit not in ('YSL','DIY','12城北区事业部','36城事业部','BMD事业部','12城中区事业部','12城南区事业部')
     </select>
     
 </mapper>

+ 1 - 0
suishenbang-sync/suishenbang-sync-manager/src/main/java/com/dgtly/sync/controller/SyncController.java

@@ -68,6 +68,7 @@ public class SyncController {
             analysisSysUserService.analysisSysUser(null);
             //analysisSysUserService.analysisSysCwUser(null);
             analysisSysUserService.analysisSysYSLUser(null);
+            analysisSysUserService.analysisSysDivisionUser();
             analysisSysUserService.analysisSysClueReporting();
         }catch (Exception e){
             log.error("解析用户出错",e);

+ 1 - 0
suishenbang-sync/suishenbang-sync-manager/src/main/java/com/dgtly/sync/controller/SyncLogController.java

@@ -112,6 +112,7 @@ public class SyncLogController extends BaseController
             analysisSysUserService.analysisSysUser(null);
             //analysisSysUserService.analysisSysCwUser(null);
             analysisSysUserService.analysisSysYSLUser(null);
+            analysisSysUserService.analysisSysDivisionUser();
             analysisSysUserService.analysisSysClueReporting();
         }catch (Exception e){
             logger.error("解析用户出错",e);