瀏覽代碼

应用服务本部人初始化权限

njs 7 月之前
父節點
當前提交
d32296d48c

+ 12 - 3
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IAnalysisSysUserService.java

@@ -20,20 +20,29 @@ public interface IAnalysisSysUserService {
      */
     public SyncLog analysisSysDivisionUser();
 
+    /**
+     * @description: 处理应用服务本部的人,只给门店拜访权限
+     * @param: []
+     * @return: com.dgtly.sync.domain.SyncLog
+     * @author: njs
+     * @date: 2025/5/8 14:02
+     */
+     public SyncLog analysisSysApplicationServiceUser();
+
     /**
      * 解析厨卫部门数据
      * @param packageId
      * @return
      */
     /*public SyncLog analysisSysCwUser(String packageId);*/
-    
+
     /**
      * @description: 解析雅士利部门数据
      * @param: [packageId]
      * @return: com.dgtly.sync.domain.SyncLog
-     * @author: lhy      
+     * @author: lhy
      * @date: 2022/4/18 11:05
-     */ 
+     */
     public SyncLog analysisSysYSLUser(String packageId);
     /**
      * @description: 解析除ysl,diy,cw外用户数据

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

@@ -505,6 +505,170 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
 
     }
 
+    /**
+     * @description: 处理应用服务本部的人,只给门店拜访权限
+     * @param: []
+     * @return: com.dgtly.sync.domain.SyncLog
+     * @author: njs
+     * @date: 2025/5/8 14:02
+     */
+    @Override
+    public SyncLog analysisSysApplicationServiceUser() {
+        //解析逻辑件DIY用户逻辑.jpg
+        MetaEmployee param = new MetaEmployee();
+        param.setBusinessUnit("应用服务本部");
+        Long l = new Date().getTime();
+        String packageId = l.toString();
+        List<MetaEmployee> MetaEmployees = MetaEmployeeDiyMapper.selectMetaEmployeeDiyCopy1List(param);
+        SyncLog syncLog = new SyncLog();
+        syncLog.setSyncType("sysuserApplicationService");
+        syncLog.setStartTime(new Date());
+        Set<String> loginNameList = sysUserService.selectAllUserLoginName();
+        syncLog.setTotalCount((long)MetaEmployees.size());
+        List<SyncFailDetail> failDetails = new ArrayList<>();
+        long successCount = 0;
+        long failCount = 0;
+        Long deptId = Long.parseLong(configService.selectConfigByKey("libang.user.applicationService.deptid"));
+        Long roleId = Long.parseLong(configService.selectConfigByKey("libang.user.applicationService.roleid"));
+        Long[] roleIds = {roleId};
+        Map<Integer,Map<String,Map<String,String>>>  salesTreeMap = getDiySalesOrgTree();
+        if(MetaEmployees.size()>0){
+            for(MetaEmployee m:MetaEmployees) {
+                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("applicationService_level");
+                    userExt.setOrgName(m.getStext3());
+                    setExtOrgCodeOn2(salesTreeMap, userExt);
+                    if (StringUtils.isEmpty(userExt.getOrgCode())){
+                        log.error("应用服务本部用户对应的销售部未找到!当前用户信息: " + m.getLoginName() + " , 销售部名称: " + userExt.getOrgName());
+                        SyncFailDetail syncFailDetail = new SyncFailDetail();
+                        syncFailDetail.setPackageId(packageId);
+                        syncFailDetail.setFailReason("应用服务本部用户对应的销售部未找到!当前用户信息: " + 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());
+                        }
+                        System.out.println("解析应用服务本部用户不一致情况原/新"+sysUser.getSysUserExt().getPostCode()+"/"+userExt.getPostCode());
+                        SysUserRole role=new SysUserRole();
+                        role.setUserId(sysUser.getUserId());
+                        userRoleMapper.deleteUserRoleInfo(role);
+                        user.setUserId(sysUser.getUserId());
+                        insertUserRole(user);
+
+                        if(!"applicationService_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.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.setPackageId(packageId);
+            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用户数据  异步执行

+ 5 - 5
suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/MetaEmployeeMapper.xml

@@ -3,7 +3,7 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.dgtly.sync.mapper.MetaEmployeeMapper">
-    
+
     <resultMap type="MetaEmployee" id="MetaEmployeeResult">
         <result property="name"    column="name"    />
         <result property="loginName"    column="login_name"    />
@@ -59,7 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectMetaEmployeeDiyCopy1List" parameterType="MetaEmployee" resultMap="MetaEmployeeResult">
         <include refid="selectMetaEmployeeVo"/>
-        <where>  
+        <where>
             <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
             <if test="loginName != null  and loginName != ''"> and login_name like concat('%', #{loginName}, '%')</if>
             <if test="email != null  and email != ''"> and email = #{email}</if>
@@ -108,7 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="businessUnit != null  and businessUnit != ''"> and business_unit = #{businessUnit}</if>
         </where>
     </select>
-    
+
     <select id="selectMetaEmployeeDiyCopy1ById" parameterType="String" resultMap="MetaEmployeeResult">
         <include refid="selectMetaEmployeeVo"/>
         where name = #{name}
@@ -126,6 +126,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectMetaEmployeetClueReporting" parameterType="MetaEmployee" resultMap="MetaEmployeeResult">
         <include refid="selectMetaEmployeeVo"/>
         where 1=1
-        and  business_unit not in ('YSL','DIY','12城北区事业部','36城事业部','BMD事业部','12城中区事业部','12城南区事业部')
+        and  business_unit not in ('YSL','DIY','12城北区事业部','36城事业部','BMD事业部','12城中区事业部','12城南区事业部','应用服务本部')
     </select>
-</mapper>
+</mapper>

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

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

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

@@ -23,7 +23,7 @@ import com.dgtly.common.core.page.TableDataInfo;
 
 /**
  * 同步解析日志Controller
- * 
+ *
  * @author qxp
  * @date 2020-07-14
  */
@@ -113,6 +113,7 @@ public class SyncLogController extends BaseController
             //analysisSysUserService.analysisSysCwUser(null);
             analysisSysUserService.analysisSysYSLUser(null);
             analysisSysUserService.analysisSysDivisionUser();
+            analysisSysUserService.analysisSysApplicationServiceUser();
             analysisSysUserService.analysisSysClueReporting();
         }catch (Exception e){
             logger.error("解析用户出错",e);