Переглянути джерело

新增雅士利解析人员

lihy 3 роки тому
батько
коміт
e1dd43672f

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

@@ -72,4 +72,7 @@ public interface MetaDiySalesorgtreeMapper
      */
     @MapKey("orgname")
     Map<String,Map<String,String>> selectSalesTreeByLevel(@Param("level") Integer level, @Param("type") String type);
+
+    @MapKey("orgname")
+    Map<String,Map<String,String>> selectSalesTreeByOrgCode(@Param("level") Integer level, @Param("orgCode") String orgCode);
 }

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

@@ -17,4 +17,13 @@ public interface IAnalysisSysUserService {
      * @return
      */
     public SyncLog analysisSysCwUser(String packageId);
+    
+    /**
+     * @description: 解析雅士利部门数据
+     * @param: [packageId]
+     * @return: com.dgtly.sync.domain.SyncLog
+     * @author: lhy      
+     * @date: 2022/4/18 11:05
+     */ 
+    public SyncLog analysisSysYSLUser(String packageId);
 }

+ 168 - 4
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/AnalysisSysUserService.java

@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject;
 import com.dgtly.common.exception.BusinessException;
 import com.dgtly.common.utils.ShiroSaltUtil;
 import com.dgtly.common.utils.security.EncryptPassWordClass;
-import com.dgtly.sync.domain.MetaDiySalesorgtree;
 import com.dgtly.sync.domain.MetaEmployeeDiy;
 import com.dgtly.sync.domain.SyncFailDetail;
 import com.dgtly.sync.domain.SyncLog;
@@ -33,9 +32,6 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
 
     private static final Logger log = LoggerFactory.getLogger(AnalysisSysUserService.class);
 
-
-
-
     @Autowired
     private SyncFailDetailMapper syncFailDetailMapper;
     @Autowired
@@ -665,6 +661,160 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
         return syncLog;
     }
 
+    @Override
+    public SyncLog analysisSysYSLUser(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("YSL");
+        param.setStext3("雅士利");
+
+        List<MetaEmployeeDiy> metaEmployeeDiys = metaEmployeeDiyMapper.selectMetaEmployeeDiyList(param);
+        SyncLog syncLog = new SyncLog();
+        syncLog.setSyncType("sysuserysl");
+        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.ysl.deptid"));
+        Long roleId = Long.parseLong(configService.selectConfigByKey("libang.user.ysl.roleid"));
+        Long[] roleIds = {roleId};
+        if (metaEmployeeDiys.size() > 0) {
+
+            Set<String> companyPostNameSet = getConfigValueSet("ysl_comp_postname");
+            Set<String> officePostNameSet = getConfigValueSet("ysl_office_postname");
+            Set<String> empPostNameSet = getConfigValueSet("ysl_emp_postname");
+            Map<Integer, Map<String, Map<String, String>>> salesTreeMap = getDiyYSLSalesOrgTree();
+            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());
+                    String postName = m.getEmployeePostName();
+                    userExt.setPostName(postName);
+
+                    if (companyPostNameSet.contains(postName)) {
+                        userExt.setSalesLevel("ysl_diy");
+                        userExt.setOrgName(m.getStext4());
+                        setExtOrgCodeY9(salesTreeMap, 3, userExt);
+                    } else if (officePostNameSet.contains(postName)) {
+                        userExt.setSalesLevel("ysl_office");
+                        userExt.setOrgName(m.getStext5());
+                        setExtOrgCodeY9(salesTreeMap, 4, userExt);
+                    } else if (empPostNameSet.contains(postName)) {
+                        userExt.setSalesLevel("ysl_emp");
+                        userExt.setOrgName(m.getStext5());
+                        setExtOrgCodeY9(salesTreeMap, 4, userExt);
+                    } else {
+                        log.error("YSL用户对应的岗位未找到!当前用户信息: " + m.getLoginName() + " , 岗位名称: " + postName);
+                    }
+
+                    /**======== 构建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("4");
+
+                        //修改密码并加密
+                        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("解析ysl用户出错", 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("解析ysl用户插入解析日志出错", e);
+            e.printStackTrace();
+            throw new BusinessException("解析ysl用户插入解析日志出错", e);
+        } finally {
+            syncLogService.insertSyncLog(syncLog);
+        }
+        return syncLog;
+    }
+
     /**
      * 获取字典的set
      * @param dictType
@@ -891,6 +1041,20 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
         return res;
     }
 
+    /**
+     * 获取销售组织架构树
+     * @return
+     */
+    public Map<Integer,Map<String,Map<String,String>>> getDiyYSLSalesOrgTree(){
+        Map<String,Map<String,String>> map3= metaDiySalesorgtreeMapper.selectSalesTreeByOrgCode(3, "4000");
+
+        Map<String,Map<String,String>> map4= metaDiySalesorgtreeMapper.selectSalesTreeByOrgCode(4, "4000");
+        Map<Integer,Map<String,Map<String,String>>>res = new HashMap<>();
+        res.put(3,map3);
+        res.put(4,map4);
+        return res;
+    }
+
     /**
      * 根据销售的部门等级及销售组织名称获取销售的组织code
      * @param salesTree

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

@@ -138,5 +138,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       where Org${level}code is not null and business_unit = #{type}
       group by orgname
     </select>
+
+    <select id="selectSalesTreeByOrgCode"  resultType="Map" parameterType="Integer">
+      select
+        Org${level}name as orgname,Org${level}code as orgcode
+      from meta_diy_salesorgtree
+      where Org3code = #{orgCode}
+      group by orgname
+    </select>
     
 </mapper>

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

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

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

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