Browse Source

用户数据同步与其他相关代码

qxp192083 4 years ago
parent
commit
899eadc9fb
67 changed files with 2839 additions and 230 deletions
  1. 1 1
      suishenbang-admin/pom.xml
  2. 1 1
      suishenbang-admin/src/main/resources/application-dev.yml
  3. 16 5
      suishenbang-admin/src/main/resources/templates/system/user/user.html
  4. 5 0
      suishenbang-api/pom.xml
  5. 19 0
      suishenbang-api/src/main/java/com/dgtly/api/controller/SysUserController.java
  6. 1 1
      suishenbang-api/src/main/resources/application-dev.yml
  7. 1 1
      suishenbang-api/src/main/resources/application-test.yml
  8. 1 1
      suishenbang-sync/src/main/java/com/dgtly/sync/config/ThreadConfig.java
  9. 9 12
      suishenbang-sync/pom.xml
  10. 0 149
      suishenbang-sync/src/main/java/com/dgtly/sync/service/impl/AnalysisSysUserService.java
  11. 25 0
      suishenbang-sync/suishenbang-sync-api/pom.xml
  12. 25 0
      suishenbang-sync/suishenbang-sync-common/pom.xml
  13. 204 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/MetaDiySalesorgtree.java
  14. 534 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/MetaEmployeeDiy.java
  15. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/MetaNipponOrgRelation.java
  16. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/MetaUserinfoAll.java
  17. 22 3
      suishenbang-sync/src/main/java/com/dgtly/sync/domain/SyncFailDetail.java
  18. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/SyncLog.java
  19. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/exception/EndLessLoopParentException.java
  20. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/exception/NotFoundParentException.java
  21. 34 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/exception/NotFountOrgCodeException.java
  22. 38 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/exception/NotOrgNameException.java
  23. 36 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/exception/OutOfScopeDIYException.java
  24. 66 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/mapper/MetaDiySalesorgtreeMapper.java
  25. 61 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/mapper/MetaEmployeeDiyMapper.java
  26. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/mapper/MetaNipponOrgRelationMapper.java
  27. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/mapper/MetaUserinfoAllMapper.java
  28. 7 0
      suishenbang-sync/src/main/java/com/dgtly/sync/mapper/SyncFailDetailMapper.java
  29. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/mapper/SyncLogMapper.java
  30. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IAnalysisDeptService.java
  31. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IAnalysisSysUserService.java
  32. 61 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IMetaDiySalesorgtreeService.java
  33. 61 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IMetaEmployeeDiyService.java
  34. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IMetaNipponOrgRelationService.java
  35. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IMetaUserinfoAllService.java
  36. 6 0
      suishenbang-sync/src/main/java/com/dgtly/sync/service/ISyncFailDetailService.java
  37. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/ISyncLogService.java
  38. 1 8
      suishenbang-sync/src/main/java/com/dgtly/sync/service/impl/AnalysisDeptService.java
  39. 272 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/AnalysisSysUserService.java
  40. 96 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/MetaDiySalesorgtreeServiceImpl.java
  41. 94 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/MetaEmployeeDiyServiceImpl.java
  42. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/MetaNipponOrgRelationServiceImpl.java
  43. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/MetaUserinfoAllServiceImpl.java
  44. 10 2
      suishenbang-sync/src/main/java/com/dgtly/sync/service/impl/SyncFailDetailServiceImpl.java
  45. 1 1
      suishenbang-sync/src/main/java/com/dgtly/sync/service/impl/SyncLogServiceImpl.java
  46. 134 0
      suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/MetaDiySalesorgtreeMapper.xml
  47. 259 0
      suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/MetaEmployeeDiyMapper.xml
  48. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/MetaNipponOrgRelationMapper.xml
  49. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/MetaUserinfoAllMapper.xml
  50. 26 6
      suishenbang-sync/src/main/resources/mapper/sync/SyncFailDetailMapper.xml
  51. 0 0
      suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/SyncLogMapper.xml
  52. 25 0
      suishenbang-sync/suishenbang-sync-manager/pom.xml
  53. 1 3
      suishenbang-sync/src/main/java/com/dgtly/sync/controller/SyncController.java
  54. 5 7
      suishenbang-sync/src/main/java/com/dgtly/sync/controller/SyncLogController.java
  55. 0 0
      suishenbang-sync/suishenbang-sync-manager/src/main/resources/templates/sync/synclog/edit.html
  56. 48 13
      suishenbang-sync/src/main/resources/templates/sync/synclog/syncfaildetail.html
  57. 1 1
      suishenbang-sync/src/main/resources/templates/sync/synclog/synclog.html
  58. 23 0
      suishenbang-system/src/main/java/com/dgtly/system/domain/SysUser.java
  59. 114 0
      suishenbang-system/src/main/java/com/dgtly/system/domain/SysUserSalesExt.java
  60. 8 0
      suishenbang-system/src/main/java/com/dgtly/system/mapper/SysUserMapper.java
  61. 77 0
      suishenbang-system/src/main/java/com/dgtly/system/mapper/SysUserSalesExtMapper.java
  62. 69 0
      suishenbang-system/src/main/java/com/dgtly/system/service/ISysUserSalesExtService.java
  63. 17 1
      suishenbang-system/src/main/java/com/dgtly/system/service/ISysUserService.java
  64. 105 0
      suishenbang-system/src/main/java/com/dgtly/system/service/impl/SysUserSalesExtServiceImpl.java
  65. 45 10
      suishenbang-system/src/main/java/com/dgtly/system/service/impl/SysUserServiceImpl.java
  66. 51 4
      suishenbang-system/src/main/resources/mapper/system/SysUserMapper.xml
  67. 123 0
      suishenbang-system/src/main/resources/mapper/system/SysUserSalesExtMapper.xml

+ 1 - 1
suishenbang-admin/pom.xml

@@ -94,7 +94,7 @@
 
         <dependency>
             <groupId>com.dgtly</groupId>
-            <artifactId>suishenbang-sync</artifactId>
+            <artifactId>suishenbang-sync-manager</artifactId>
             <version>4.0.0</version>
         </dependency>
 

+ 1 - 1
suishenbang-admin/src/main/resources/application-dev.yml

@@ -20,7 +20,7 @@ server:
   port: 80
   servlet:
     # 应用的访问路径
-    context-path: /
+    context-path: /oneportal
   tomcat:
     # tomcat的URI编码
     uri-encoding: UTF-8

+ 16 - 5
suishenbang-admin/src/main/resources/templates/system/user/user.html

@@ -95,6 +95,7 @@
 		var removeFlag = [[${@permission.hasPermi('system:user:remove')}]];
 		var resetPwdFlag = [[${@permission.hasPermi('system:user:resetPwd')}]];
         var bondedFlag = [[${@permission.hasPermi('system:user:bonded')}]];//接触绑定
+        var salesLevelDict = [[${@dict.getType('sales_level')}]];//销售人员等级
 		var prefix = ctx + "system/user";
 
 		$(function() {
@@ -156,11 +157,21 @@
 		        		return statusTools(row);
 		        	}
 		        },
-		        {
-		            field: 'createTime',
-		            title: '创建时间',
-		            sortable: true
-		        },
+		         {
+		             field: 'sysUserSalesExt.salesLevel',
+		             title: '销售人员等级',
+                     formatter: function(value, row, index) {
+                         return $.table.selectDictLabel(salesLevelDict, value);
+                     }
+		         },
+                {
+                    field: 'sysUserSalesExt.orgName',
+                    title: '组织名称'
+                },
+                {
+                    field: 'sysUserSalesExt.orgCode',
+                    title: '组织code'
+                },
 		        {
 		            title: '操作',
 		            align: 'center',

+ 5 - 0
suishenbang-api/pom.xml

@@ -30,6 +30,11 @@
             <artifactId>suishenbang-wxportal-api</artifactId>
             <version>4.0.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.dgtly</groupId>
+            <artifactId>suishenbang-sync-common</artifactId>
+            <version>4.0.0</version>
+        </dependency>
 
     </dependencies>
 

+ 19 - 0
suishenbang-api/src/main/java/com/dgtly/api/controller/SysUserController.java

@@ -4,8 +4,10 @@ import com.dgtly.common.annotation.ApiPassToken;
 import com.dgtly.common.core.controller.ApiBaseController;
 import com.dgtly.common.core.domain.AjaxResult;
 import com.dgtly.common.core.domain.ParameterObject;
+import com.dgtly.common.core.domain.ResultType;
 import com.dgtly.common.utils.security.EncryptPassWordClass;
 import com.dgtly.system.domain.SysUser;
+import com.dgtly.system.service.ISysUserSalesExtService;
 import com.dgtly.wxportal.domain.WxQyUser;
 import com.dgtly.system.service.ISysUserService;
 import com.dgtly.wxportal.service.IWxQyUserService;
@@ -29,6 +31,8 @@ public class SysUserController extends ApiBaseController {
     private IWxQyUserService wxQyUserService;
     @Autowired
     private ISysUserService sysUserService;
+    @Autowired
+    private ISysUserSalesExtService userSalesExtService;
 
 
     @ApiOperation(value = "绑定微信用户和系统用户",
@@ -105,4 +109,19 @@ public class SysUserController extends ApiBaseController {
         return AjaxResult.success().putKV("wxUser",wxQyUser).putKV("sysUser",user);
     }
 
+    @ApiOperation(value = "获取销售员列表",
+            notes = "参数:{" +
+                    "bossEmployeeId:xxxxxx}")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "params" , paramType = "body")
+    })
+    @PostMapping("getSelesList")
+    public Object getSelesList(){
+        ParameterObject obj =  getParameterObject();
+        obj.checkParameterNotNull("bossEmployeeId");
+        String bossEmployeeId =obj.getString("bossEmployeeId");
+        List<String> list = userSalesExtService.selectUserIdsByBossEmployeeId(bossEmployeeId);
+        return list.size()>0?AjaxResult.success().putKV("list",list):AjaxResult.error(ResultType.NUll);
+    }
+
 }

+ 1 - 1
suishenbang-api/src/main/resources/application-dev.yml

@@ -28,7 +28,7 @@ server:
   port: 8888
   servlet:
     # 应用的访问路径
-    context-path: /
+    context-path: /api
   tomcat:
     # tomcat的URI编码
     uri-encoding: UTF-8

+ 1 - 1
suishenbang-api/src/main/resources/application-test.yml

@@ -28,7 +28,7 @@ server:
   port: 10002
   servlet:
     # 应用的访问路径
-    context-path: /
+    context-path: /wxportal-api
   tomcat:
     # tomcat的URI编码
     uri-encoding: UTF-8

+ 1 - 1
suishenbang-sync/src/main/java/com/dgtly/sync/config/ThreadConfig.java

@@ -1,4 +1,4 @@
-package com.dgtly.sync.config;
+package com.dgtly.framework.config;
 
 import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
 import org.springframework.context.annotation.Configuration;

+ 9 - 12
suishenbang-sync/pom.xml

@@ -10,20 +10,17 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>suishenbang-sync</artifactId>
+    <packaging>pom</packaging>
+    <modules>
+        <module>suishenbang-sync-common</module>
+        <module>suishenbang-sync-manager</module>
+        <module>suishenbang-sync-api</module>
+    </modules>
 
     <dependencies>
-        <dependency>
-            <groupId>com.dgtly</groupId>
-            <artifactId>suishenbang-system</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.dgtly</groupId>
-            <artifactId>suishenbang-framework</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.dgtly</groupId>
-            <artifactId>suishenbang-common</artifactId>
-        </dependency>
+
+
+
 
     </dependencies>
 

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

@@ -1,149 +0,0 @@
-package com.dgtly.sync.service.impl;
-
-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.controller.SyncController;
-import com.dgtly.sync.domain.MetaNipponOrgRelation;
-import com.dgtly.sync.domain.MetaUserinfoAll;
-import com.dgtly.sync.domain.SyncFailDetail;
-import com.dgtly.sync.domain.SyncLog;
-import com.dgtly.sync.exception.EndLessLoopParentException;
-import com.dgtly.sync.exception.NotFoundParentException;
-import com.dgtly.sync.mapper.MetaUserinfoAllMapper;
-import com.dgtly.sync.mapper.SyncFailDetailMapper;
-import com.dgtly.sync.service.IAnalysisDeptService;
-import com.dgtly.sync.service.IAnalysisSysUserService;
-import com.dgtly.sync.service.IMetaNipponOrgRelationService;
-import com.dgtly.sync.service.ISyncLogService;
-import com.dgtly.system.domain.SysConfig;
-import com.dgtly.system.domain.SysDept;
-import com.dgtly.system.domain.SysUser;
-import com.dgtly.system.mapper.SysDeptMapper;
-import com.dgtly.system.service.ISysConfigService;
-import com.dgtly.system.service.ISysUserService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
-
-@Service
-public class AnalysisSysUserService implements IAnalysisSysUserService {
-
-    private static final Logger log = LoggerFactory.getLogger(SyncController.class);
-
-
-
-
-    @Autowired
-    private SyncFailDetailMapper syncFailDetailMapper;
-    @Autowired
-    private ISysConfigService configService;
-
-    @Autowired
-    private ISysUserService sysUserService;
-    @Autowired
-    private MetaUserinfoAllMapper metaUserinfoAllMapper;
-    @Autowired
-    private ISyncLogService syncLogService;
-
-
-
-    /**
-     * 解析部门数据  异步执行
-     * @param packageId
-     * @return
-     */
-    @Override
-    @Async
-    public SyncLog analysisSysUser(String packageId){
-        MetaUserinfoAll param = new MetaUserinfoAll();
-        param.setPackageId(packageId);
-
-        SyncLog syncLog = new SyncLog();
-        syncLog.setSyncType("sysuser");
-        syncLog.setStartTime(new Date());
-
-        Set<String> loginNameList = sysUserService.selectAllUserLoginName();
-        List<MetaUserinfoAll> metaUserinfoAlls = metaUserinfoAllMapper.selectMetaUserinfoAllList(param);
-
-
-        syncLog.setPackageId(packageId);
-        syncLog.setTotalCount((long)metaUserinfoAlls.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(metaUserinfoAlls.size()>0){
-            for(MetaUserinfoAll m:metaUserinfoAlls) {
-                try {
-                    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());
-
-                    user.setRoleIds(roleIds);
-                    if (m.getStatus() == 0) {
-                        user.setStatus("1");
-                        user.setDelFlag("2");
-                    } else {
-                        user.setStatus("0");
-                    }
-
-                    if (loginNameList.contains(user.getLoginName())) {
-                        sysUserService.updateUserInfo(user);
-                    } else {
-                        //修改密码并加密
-                        user.setPassword(m.getLoginname());
-                        user.setSalt(ShiroSaltUtil.randomSalt());
-                        user.setPassword(EncryptPassWordClass.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
-
-                        sysUserService.insertUser(user);
-                    }
-                    successCount++;
-                } catch (Exception e) {
-                    failCount++;
-                    SyncFailDetail syncFailDetail = new SyncFailDetail();
-                    syncFailDetail.setPackageId(packageId);
-                    syncFailDetail.setFailReason(e.getMessage());
-                    syncFailDetail.setDataJson(JSONObject.toJSONString(m));
-                    failDetails.add(syncFailDetail);
-                    e.printStackTrace();
-                    log.error("解析用户出错", e);
-                }
-            }
-            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;
-
-    }
-
-
-
-}

+ 25 - 0
suishenbang-sync/suishenbang-sync-api/pom.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>suishenbang-sync</artifactId>
+        <groupId>com.dgtly</groupId>
+        <version>4.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>suishenbang-sync-api</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>com.dgtly</groupId>
+            <artifactId>suishenbang-sync-common</artifactId>
+            <version>4.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.dgtly</groupId>
+            <artifactId>suishenbang-apiframework</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 25 - 0
suishenbang-sync/suishenbang-sync-common/pom.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>suishenbang-sync</artifactId>
+        <groupId>com.dgtly</groupId>
+        <version>4.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>suishenbang-sync-common</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>com.dgtly</groupId>
+            <artifactId>suishenbang-system</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.dgtly</groupId>
+            <artifactId>suishenbang-common</artifactId>
+        </dependency>
+    </dependencies>
+
+
+</project>

+ 204 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/MetaDiySalesorgtree.java

@@ -0,0 +1,204 @@
+package com.dgtly.sync.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.dgtly.common.annotation.Excel;
+import com.dgtly.common.core.domain.BaseEntity;
+
+/**
+ * 立邦销售人员销售架构对象 meta_diy_salesorgtree
+ * 
+ * @author qxp
+ * @date 2020-07-28
+ */
+public class MetaDiySalesorgtree extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    private String versioncode;
+
+    private String versionname;
+
+    private String currentflag;
+
+    private String org1code;
+
+    private String org1name;
+
+    private String org2code;
+
+    private String org2name;
+
+    private String org3code;
+
+    private String org3name;
+
+    private String org4code;
+
+    private String org4name;
+
+    private String org5code;
+
+    private String org5name;
+
+    private String org6code;
+
+    private String org6name;
+
+    public void setVersioncode(String versioncode) 
+    {
+        this.versioncode = versioncode;
+    }
+
+    public String getVersioncode() 
+    {
+        return versioncode;
+    }
+    public void setVersionname(String versionname) 
+    {
+        this.versionname = versionname;
+    }
+
+    public String getVersionname() 
+    {
+        return versionname;
+    }
+    public void setCurrentflag(String currentflag) 
+    {
+        this.currentflag = currentflag;
+    }
+
+    public String getCurrentflag() 
+    {
+        return currentflag;
+    }
+    public void setOrg1code(String org1code) 
+    {
+        this.org1code = org1code;
+    }
+
+    public String getOrg1code() 
+    {
+        return org1code;
+    }
+    public void setOrg1name(String org1name) 
+    {
+        this.org1name = org1name;
+    }
+
+    public String getOrg1name() 
+    {
+        return org1name;
+    }
+    public void setOrg2code(String org2code) 
+    {
+        this.org2code = org2code;
+    }
+
+    public String getOrg2code() 
+    {
+        return org2code;
+    }
+    public void setOrg2name(String org2name) 
+    {
+        this.org2name = org2name;
+    }
+
+    public String getOrg2name() 
+    {
+        return org2name;
+    }
+    public void setOrg3code(String org3code) 
+    {
+        this.org3code = org3code;
+    }
+
+    public String getOrg3code() 
+    {
+        return org3code;
+    }
+    public void setOrg3name(String org3name) 
+    {
+        this.org3name = org3name;
+    }
+
+    public String getOrg3name() 
+    {
+        return org3name;
+    }
+    public void setOrg4code(String org4code) 
+    {
+        this.org4code = org4code;
+    }
+
+    public String getOrg4code() 
+    {
+        return org4code;
+    }
+    public void setOrg4name(String org4name) 
+    {
+        this.org4name = org4name;
+    }
+
+    public String getOrg4name() 
+    {
+        return org4name;
+    }
+    public void setOrg5code(String org5code) 
+    {
+        this.org5code = org5code;
+    }
+
+    public String getOrg5code() 
+    {
+        return org5code;
+    }
+    public void setOrg5name(String org5name) 
+    {
+        this.org5name = org5name;
+    }
+
+    public String getOrg5name() 
+    {
+        return org5name;
+    }
+    public void setOrg6code(String org6code) 
+    {
+        this.org6code = org6code;
+    }
+
+    public String getOrg6code() 
+    {
+        return org6code;
+    }
+    public void setOrg6name(String org6name) 
+    {
+        this.org6name = org6name;
+    }
+
+    public String getOrg6name() 
+    {
+        return org6name;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("versioncode", getVersioncode())
+            .append("versionname", getVersionname())
+            .append("currentflag", getCurrentflag())
+            .append("org1code", getOrg1code())
+            .append("org1name", getOrg1name())
+            .append("org2code", getOrg2code())
+            .append("org2name", getOrg2name())
+            .append("org3code", getOrg3code())
+            .append("org3name", getOrg3name())
+            .append("org4code", getOrg4code())
+            .append("org4name", getOrg4name())
+            .append("org5code", getOrg5code())
+            .append("org5name", getOrg5name())
+            .append("org6code", getOrg6code())
+            .append("org6name", getOrg6name())
+            .toString();
+    }
+}

+ 534 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/MetaEmployeeDiy.java

@@ -0,0 +1,534 @@
+package com.dgtly.sync.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.dgtly.common.annotation.Excel;
+import com.dgtly.common.core.domain.BaseEntity;
+import java.util.Date;
+
+/**
+ * 立邦雇员数据同步对象 meta_employee_diy
+ * 
+ * @author qxp
+ * @date 2020-07-28
+ */
+public class MetaEmployeeDiy extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+
+    private String name;
+
+    private String loginName;
+
+    private String email;
+
+    private String mobile;
+
+    private String sapEmployeeId;
+
+    private String sapCostCenterCode;
+
+    private String sapCostCenter;
+
+    private String sapCompanyCode;
+
+    private Long status;
+
+    private String objid1;
+
+    private String contract;
+
+    private String contractName;
+
+    private String contractBegin;
+
+    private String duty;
+
+    private String dutyName;
+
+    private String org;
+
+    private String orgName;
+
+    private String employeePost;
+
+    private String employeePostName;
+
+    private String posty;
+
+    private String poste;
+
+    private String posnc;
+
+    private String bossEmployeeId;
+
+    private String bossName;
+
+    private String bossEmployeePost;
+
+    private String sex;
+
+    private String stext1;
+
+    private String objid2;
+
+    private String stext2;
+
+    private String objid3;
+
+    private String stext3;
+
+    private String objid4;
+
+    private String stext4;
+
+    private String objid5;
+
+    private String stext5;
+
+    private String objid6;
+
+    private String stext6;
+    private String objidQy;
+    private String stextQy;
+    private String dataversion;
+
+    private Date etlCreatime;
+
+
+    private String lineId;
+
+    private String packageId;
+
+    public void setName(String name) 
+    {
+        this.name = name;
+    }
+
+    public String getName() 
+    {
+        return name;
+    }
+    public void setLoginName(String loginName) 
+    {
+        this.loginName = loginName;
+    }
+
+    public String getLoginName() 
+    {
+        return loginName;
+    }
+    public void setEmail(String email) 
+    {
+        this.email = email;
+    }
+
+    public String getEmail() 
+    {
+        return email;
+    }
+    public void setMobile(String mobile) 
+    {
+        this.mobile = mobile;
+    }
+
+    public String getMobile() 
+    {
+        return mobile;
+    }
+    public void setSapEmployeeId(String sapEmployeeId) 
+    {
+        this.sapEmployeeId = sapEmployeeId;
+    }
+
+    public String getSapEmployeeId() 
+    {
+        return sapEmployeeId;
+    }
+    public void setSapCostCenterCode(String sapCostCenterCode) 
+    {
+        this.sapCostCenterCode = sapCostCenterCode;
+    }
+
+    public String getSapCostCenterCode() 
+    {
+        return sapCostCenterCode;
+    }
+    public void setSapCostCenter(String sapCostCenter) 
+    {
+        this.sapCostCenter = sapCostCenter;
+    }
+
+    public String getSapCostCenter() 
+    {
+        return sapCostCenter;
+    }
+    public void setSapCompanyCode(String sapCompanyCode) 
+    {
+        this.sapCompanyCode = sapCompanyCode;
+    }
+
+    public String getSapCompanyCode() 
+    {
+        return sapCompanyCode;
+    }
+    public void setStatus(Long status) 
+    {
+        this.status = status;
+    }
+
+    public Long getStatus() 
+    {
+        return status;
+    }
+    public void setObjid1(String objid1) 
+    {
+        this.objid1 = objid1;
+    }
+
+    public String getObjid1() 
+    {
+        return objid1;
+    }
+    public void setContract(String contract) 
+    {
+        this.contract = contract;
+    }
+
+    public String getContract() 
+    {
+        return contract;
+    }
+    public void setContractName(String contractName) 
+    {
+        this.contractName = contractName;
+    }
+
+    public String getContractName() 
+    {
+        return contractName;
+    }
+    public void setContractBegin(String contractBegin) 
+    {
+        this.contractBegin = contractBegin;
+    }
+
+    public String getContractBegin() 
+    {
+        return contractBegin;
+    }
+    public void setDuty(String duty) 
+    {
+        this.duty = duty;
+    }
+
+    public String getDuty() 
+    {
+        return duty;
+    }
+    public void setDutyName(String dutyName) 
+    {
+        this.dutyName = dutyName;
+    }
+
+    public String getDutyName() 
+    {
+        return dutyName;
+    }
+    public void setOrg(String org) 
+    {
+        this.org = org;
+    }
+
+    public String getOrg() 
+    {
+        return org;
+    }
+    public void setOrgName(String orgName) 
+    {
+        this.orgName = orgName;
+    }
+
+    public String getOrgName() 
+    {
+        return orgName;
+    }
+    public void setEmployeePost(String employeePost) 
+    {
+        this.employeePost = employeePost;
+    }
+
+    public String getEmployeePost() 
+    {
+        return employeePost;
+    }
+    public void setEmployeePostName(String employeePostName) 
+    {
+        this.employeePostName = employeePostName;
+    }
+
+    public String getEmployeePostName() 
+    {
+        return employeePostName;
+    }
+    public void setPosty(String posty) 
+    {
+        this.posty = posty;
+    }
+
+    public String getPosty() 
+    {
+        return posty;
+    }
+    public void setPoste(String poste) 
+    {
+        this.poste = poste;
+    }
+
+    public String getPoste() 
+    {
+        return poste;
+    }
+    public void setPosnc(String posnc) 
+    {
+        this.posnc = posnc;
+    }
+
+    public String getPosnc() 
+    {
+        return posnc;
+    }
+    public void setBossEmployeeId(String bossEmployeeId) 
+    {
+        this.bossEmployeeId = bossEmployeeId;
+    }
+
+    public String getBossEmployeeId() 
+    {
+        return bossEmployeeId;
+    }
+    public void setBossName(String bossName) 
+    {
+        this.bossName = bossName;
+    }
+
+    public String getBossName() 
+    {
+        return bossName;
+    }
+    public void setBossEmployeePost(String bossEmployeePost) 
+    {
+        this.bossEmployeePost = bossEmployeePost;
+    }
+
+    public String getBossEmployeePost() 
+    {
+        return bossEmployeePost;
+    }
+    public void setSex(String sex) 
+    {
+        this.sex = sex;
+    }
+
+    public String getSex() 
+    {
+        return sex;
+    }
+    public void setStext1(String stext1) 
+    {
+        this.stext1 = stext1;
+    }
+
+    public String getStext1() 
+    {
+        return stext1;
+    }
+    public void setObjid2(String objid2) 
+    {
+        this.objid2 = objid2;
+    }
+
+    public String getObjid2() 
+    {
+        return objid2;
+    }
+    public void setStext2(String stext2) 
+    {
+        this.stext2 = stext2;
+    }
+
+    public String getStext2() 
+    {
+        return stext2;
+    }
+    public void setObjid3(String objid3) 
+    {
+        this.objid3 = objid3;
+    }
+
+    public String getObjid3() 
+    {
+        return objid3;
+    }
+    public void setStext3(String stext3) 
+    {
+        this.stext3 = stext3;
+    }
+
+    public String getStext3() 
+    {
+        return stext3;
+    }
+    public void setObjid4(String objid4) 
+    {
+        this.objid4 = objid4;
+    }
+
+    public String getObjid4() 
+    {
+        return objid4;
+    }
+    public void setStext4(String stext4) 
+    {
+        this.stext4 = stext4;
+    }
+
+    public String getStext4() 
+    {
+        return stext4;
+    }
+    public void setObjid5(String objid5) 
+    {
+        this.objid5 = objid5;
+    }
+
+    public String getObjid5() 
+    {
+        return objid5;
+    }
+    public void setStext5(String stext5) 
+    {
+        this.stext5 = stext5;
+    }
+
+    public String getStext5() 
+    {
+        return stext5;
+    }
+    public void setObjid6(String objid6) 
+    {
+        this.objid6 = objid6;
+    }
+
+    public String getObjid6() 
+    {
+        return objid6;
+    }
+    public void setDataversion(String dataversion) 
+    {
+        this.dataversion = dataversion;
+    }
+
+    public String getDataversion() 
+    {
+        return dataversion;
+    }
+    public void setEtlCreatime(Date etlCreatime) 
+    {
+        this.etlCreatime = etlCreatime;
+    }
+
+    public Date getEtlCreatime() 
+    {
+        return etlCreatime;
+    }
+    public void setLineId(String lineId) 
+    {
+        this.lineId = lineId;
+    }
+
+    public String getLineId() 
+    {
+        return lineId;
+    }
+    public void setPackageId(String packageId) 
+    {
+        this.packageId = packageId;
+    }
+
+    public String getPackageId() 
+    {
+        return packageId;
+    }
+
+    public String getStext6() {
+        return stext6;
+    }
+
+    public void setStext6(String stext6) {
+        this.stext6 = stext6;
+    }
+
+    public String getObjidQy() {
+        return objidQy;
+    }
+
+    public void setObjidQy(String objidQy) {
+        this.objidQy = objidQy;
+    }
+
+    public String getStextQy() {
+        return stextQy;
+    }
+
+    public void setStextQy(String stextQy) {
+        this.stextQy = stextQy;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("name", getName())
+            .append("loginName", getLoginName())
+            .append("email", getEmail())
+            .append("mobile", getMobile())
+            .append("sapEmployeeId", getSapEmployeeId())
+            .append("sapCostCenterCode", getSapCostCenterCode())
+            .append("sapCostCenter", getSapCostCenter())
+            .append("sapCompanyCode", getSapCompanyCode())
+            .append("status", getStatus())
+            .append("objid1", getObjid1())
+            .append("contract", getContract())
+            .append("contractName", getContractName())
+            .append("contractBegin", getContractBegin())
+            .append("duty", getDuty())
+            .append("dutyName", getDutyName())
+            .append("org", getOrg())
+            .append("orgName", getOrgName())
+            .append("employeePost", getEmployeePost())
+            .append("employeePostName", getEmployeePostName())
+            .append("posty", getPosty())
+            .append("poste", getPoste())
+            .append("posnc", getPosnc())
+            .append("bossEmployeeId", getBossEmployeeId())
+            .append("bossName", getBossName())
+            .append("bossEmployeePost", getBossEmployeePost())
+            .append("sex", getSex())
+            .append("stext1", getStext1())
+            .append("objid2", getObjid2())
+            .append("stext2", getStext2())
+            .append("objid3", getObjid3())
+            .append("stext3", getStext3())
+            .append("objid4", getObjid4())
+            .append("stext4", getStext4())
+            .append("objid5", getObjid5())
+            .append("stext5", getStext5())
+            .append("objid6", getObjid6())
+            .append("dataversion", getDataversion())
+            .append("etlCreatime", getEtlCreatime())
+            .append("lineId", getLineId())
+            .append("packageId", getPackageId())
+            .toString();
+    }
+}

suishenbang-sync/src/main/java/com/dgtly/sync/domain/MetaNipponOrgRelation.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/MetaNipponOrgRelation.java


suishenbang-sync/src/main/java/com/dgtly/sync/domain/MetaUserinfoAll.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/MetaUserinfoAll.java


+ 22 - 3
suishenbang-sync/src/main/java/com/dgtly/sync/domain/SyncFailDetail.java

@@ -16,16 +16,17 @@ public class SyncFailDetail extends BaseEntity
     private static final long serialVersionUID = 1L;
 
     /** 所属包id */
-    @Excel(name = "所属包id")
     private String packageId;
 
     /** 失败原因 */
-    @Excel(name = "失败原因")
     private String failReason;
 
     /** 数据json */
-    @Excel(name = "数据json")
     private String dataJson;
+    /** 失败等级 0警告 1错误 */
+    private String failLevel;
+    /** 失败异常类型 */
+    private String exceptionType;
 
     public void setPackageId(String packageId) 
     {
@@ -55,12 +56,30 @@ public class SyncFailDetail extends BaseEntity
         return dataJson;
     }
 
+    public String getFailLevel() {
+        return failLevel;
+    }
+
+    public void setFailLevel(String failLevel) {
+        this.failLevel = failLevel;
+    }
+
+    public String getExceptionType() {
+        return exceptionType;
+    }
+
+    public void setExceptionType(String exceptionType) {
+        this.exceptionType = exceptionType;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
             .append("packageId", getPackageId())
             .append("failReason", getFailReason())
             .append("dataJson", getDataJson())
+            .append("failLevel", getFailLevel())
+            .append("exceptionType", getExceptionType())
             .toString();
     }
 }

suishenbang-sync/src/main/java/com/dgtly/sync/domain/SyncLog.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/SyncLog.java


suishenbang-sync/src/main/java/com/dgtly/sync/exception/EndLessLoopParentException.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/exception/EndLessLoopParentException.java


suishenbang-sync/src/main/java/com/dgtly/sync/exception/NotFoundParentException.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/exception/NotFoundParentException.java


+ 34 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/exception/NotFountOrgCodeException.java

@@ -0,0 +1,34 @@
+package com.dgtly.sync.exception;
+
+import com.dgtly.common.exception.base.BaseException;
+import com.dgtly.sync.domain.MetaEmployeeDiy;
+
+public class NotFountOrgCodeException extends BaseException  {
+
+    private String msg;
+
+    /**
+     * 用户信息
+     */
+    private MetaEmployeeDiy metaEmployeeDiy;
+    public NotFountOrgCodeException(MetaEmployeeDiy m) {
+
+        super("sync","500",
+                new Object[] { "用户:"+m.getName(),
+                        "packageId:"+m.getPackageId()},null);
+        String s = "用户:"+m.getName()+"未查找到相应的组织code";
+        this.metaEmployeeDiy = m;
+        this.msg = s;
+
+    }
+
+    @Override
+    public String getMessage()
+    {
+        return msg;
+    }
+
+    public MetaEmployeeDiy getMetaNipponOrgRelation() {
+        return metaEmployeeDiy;
+    }
+}

+ 38 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/exception/NotOrgNameException.java

@@ -0,0 +1,38 @@
+package com.dgtly.sync.exception;
+
+import com.dgtly.common.exception.base.BaseException;
+import com.dgtly.sync.domain.MetaEmployeeDiy;
+
+public class NotOrgNameException extends BaseException {
+
+    /**
+     * 用户信息
+     */
+    private MetaEmployeeDiy metaEmployeeDiy;
+
+
+    /**
+     * 错误信息
+     */
+    private String msg;
+
+    public NotOrgNameException(MetaEmployeeDiy metaEmployeeDiy){
+        super("sync","500",
+                new Object[] { "用户:"+metaEmployeeDiy.getName(),
+                "packageId:"+metaEmployeeDiy.getPackageId()},null);
+        String str = "用户:"+metaEmployeeDiy.getName()+"在packageId:"+metaEmployeeDiy.getPackageId()+"次解析中,未能找到所属组织结构";
+        this.msg = str;
+        this.metaEmployeeDiy = metaEmployeeDiy;
+
+    }
+
+    @Override
+    public String getMessage(){
+        return this.msg;
+    }
+
+
+    public MetaEmployeeDiy getMetaNipponOrgRelation() {
+        return metaEmployeeDiy;
+    }
+}

+ 36 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/exception/OutOfScopeDIYException.java

@@ -0,0 +1,36 @@
+package com.dgtly.sync.exception;
+
+import com.dgtly.common.exception.base.BaseException;
+import com.dgtly.common.utils.MessageUtils;
+import com.dgtly.common.utils.StringUtils;
+import com.dgtly.sync.domain.MetaEmployeeDiy;
+
+public class OutOfScopeDIYException extends BaseException  {
+
+    private String msg;
+
+    /**
+     * 用户信息
+     */
+    private MetaEmployeeDiy metaEmployeeDiy;
+    public OutOfScopeDIYException(MetaEmployeeDiy m) {
+
+        super("sync","500",
+                new Object[] { "用户:"+m.getName(),
+                        "packageId:"+m.getPackageId()},null);
+        String s = "用户:"+m.getName()+"不在diy筛选范围内";
+        this.metaEmployeeDiy = m;
+        this.msg = s;
+
+    }
+
+    @Override
+    public String getMessage()
+    {
+        return msg;
+    }
+
+    public MetaEmployeeDiy getMetaNipponOrgRelation() {
+        return metaEmployeeDiy;
+    }
+}

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

@@ -0,0 +1,66 @@
+package com.dgtly.sync.mapper;
+
+import com.dgtly.sync.domain.MetaDiySalesorgtree;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 立邦销售人员销售架构Mapper接口
+ * 
+ * @author qxp
+ * @date 2020-07-28
+ */
+public interface MetaDiySalesorgtreeMapper 
+{
+    /**
+     * 查询立邦销售人员销售架构
+     * 
+     * @param versioncode 立邦销售人员销售架构ID
+     * @return 立邦销售人员销售架构
+     */
+    public MetaDiySalesorgtree selectMetaDiySalesorgtreeById(String versioncode);
+
+    /**
+     * 查询立邦销售人员销售架构列表
+     * 
+     * @param metaDiySalesorgtree 立邦销售人员销售架构
+     * @return 立邦销售人员销售架构集合
+     */
+    public List<MetaDiySalesorgtree> selectMetaDiySalesorgtreeList(MetaDiySalesorgtree metaDiySalesorgtree);
+
+    /**
+     * 新增立邦销售人员销售架构
+     * 
+     * @param metaDiySalesorgtree 立邦销售人员销售架构
+     * @return 结果
+     */
+    public int insertMetaDiySalesorgtree(MetaDiySalesorgtree metaDiySalesorgtree);
+
+    Map<String,String> selectSalesorgByName(@Param("fildName") String fildName, @Param("fildCode")String fildCode, @Param("orgName")String orgName);
+
+    /**
+     * 修改立邦销售人员销售架构
+     * 
+     * @param metaDiySalesorgtree 立邦销售人员销售架构
+     * @return 结果
+     */
+    public int updateMetaDiySalesorgtree(MetaDiySalesorgtree metaDiySalesorgtree);
+
+    /**
+     * 删除立邦销售人员销售架构
+     * 
+     * @param versioncode 立邦销售人员销售架构ID
+     * @return 结果
+     */
+    public int deleteMetaDiySalesorgtreeById(String versioncode);
+
+    /**
+     * 批量删除立邦销售人员销售架构
+     * 
+     * @param versioncodes 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteMetaDiySalesorgtreeByIds(String[] versioncodes);
+}

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

@@ -0,0 +1,61 @@
+package com.dgtly.sync.mapper;
+
+import com.dgtly.sync.domain.MetaEmployeeDiy;
+import java.util.List;
+
+/**
+ * 立邦雇员数据同步Mapper接口
+ * 
+ * @author qxp
+ * @date 2020-07-28
+ */
+public interface MetaEmployeeDiyMapper 
+{
+    /**
+     * 查询立邦雇员数据同步
+     * 
+     * @param name 立邦雇员数据同步ID
+     * @return 立邦雇员数据同步
+     */
+    public MetaEmployeeDiy selectMetaEmployeeDiyById(String name);
+
+    /**
+     * 查询立邦雇员数据同步列表
+     * 
+     * @param metaEmployeeDiy 立邦雇员数据同步
+     * @return 立邦雇员数据同步集合
+     */
+    public List<MetaEmployeeDiy> selectMetaEmployeeDiyList(MetaEmployeeDiy metaEmployeeDiy);
+
+    /**
+     * 新增立邦雇员数据同步
+     * 
+     * @param metaEmployeeDiy 立邦雇员数据同步
+     * @return 结果
+     */
+    public int insertMetaEmployeeDiy(MetaEmployeeDiy metaEmployeeDiy);
+
+    /**
+     * 修改立邦雇员数据同步
+     * 
+     * @param metaEmployeeDiy 立邦雇员数据同步
+     * @return 结果
+     */
+    public int updateMetaEmployeeDiy(MetaEmployeeDiy metaEmployeeDiy);
+
+    /**
+     * 删除立邦雇员数据同步
+     * 
+     * @param name 立邦雇员数据同步ID
+     * @return 结果
+     */
+    public int deleteMetaEmployeeDiyById(String name);
+
+    /**
+     * 批量删除立邦雇员数据同步
+     * 
+     * @param names 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteMetaEmployeeDiyByIds(String[] names);
+}

suishenbang-sync/src/main/java/com/dgtly/sync/mapper/MetaNipponOrgRelationMapper.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/mapper/MetaNipponOrgRelationMapper.java


suishenbang-sync/src/main/java/com/dgtly/sync/mapper/MetaUserinfoAllMapper.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/mapper/MetaUserinfoAllMapper.java


+ 7 - 0
suishenbang-sync/src/main/java/com/dgtly/sync/mapper/SyncFailDetailMapper.java

@@ -15,6 +15,13 @@ public interface SyncFailDetailMapper
 {
 
 
+    /**
+     *  查询 失败类型
+     * @param packageId
+     * @return
+     */
+    List<String> selectSyncExceptionTypeList(String packageId);
+
     /**
      * 查询同步解析失败详情
      * 

suishenbang-sync/src/main/java/com/dgtly/sync/mapper/SyncLogMapper.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/mapper/SyncLogMapper.java


suishenbang-sync/src/main/java/com/dgtly/sync/service/IAnalysisDeptService.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IAnalysisDeptService.java


suishenbang-sync/src/main/java/com/dgtly/sync/service/IAnalysisSysUserService.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IAnalysisSysUserService.java


+ 61 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IMetaDiySalesorgtreeService.java

@@ -0,0 +1,61 @@
+package com.dgtly.sync.service;
+
+import com.dgtly.sync.domain.MetaDiySalesorgtree;
+import java.util.List;
+
+/**
+ * 立邦销售人员销售架构Service接口
+ * 
+ * @author qxp
+ * @date 2020-07-28
+ */
+public interface IMetaDiySalesorgtreeService 
+{
+    /**
+     * 查询立邦销售人员销售架构
+     * 
+     * @param versioncode 立邦销售人员销售架构ID
+     * @return 立邦销售人员销售架构
+     */
+    public MetaDiySalesorgtree selectMetaDiySalesorgtreeById(String versioncode);
+
+    /**
+     * 查询立邦销售人员销售架构列表
+     * 
+     * @param metaDiySalesorgtree 立邦销售人员销售架构
+     * @return 立邦销售人员销售架构集合
+     */
+    public List<MetaDiySalesorgtree> selectMetaDiySalesorgtreeList(MetaDiySalesorgtree metaDiySalesorgtree);
+
+    /**
+     * 新增立邦销售人员销售架构
+     * 
+     * @param metaDiySalesorgtree 立邦销售人员销售架构
+     * @return 结果
+     */
+    public int insertMetaDiySalesorgtree(MetaDiySalesorgtree metaDiySalesorgtree);
+
+    /**
+     * 修改立邦销售人员销售架构
+     * 
+     * @param metaDiySalesorgtree 立邦销售人员销售架构
+     * @return 结果
+     */
+    public int updateMetaDiySalesorgtree(MetaDiySalesorgtree metaDiySalesorgtree);
+
+    /**
+     * 批量删除立邦销售人员销售架构
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteMetaDiySalesorgtreeByIds(String ids);
+
+    /**
+     * 删除立邦销售人员销售架构信息
+     * 
+     * @param versioncode 立邦销售人员销售架构ID
+     * @return 结果
+     */
+    public int deleteMetaDiySalesorgtreeById(String versioncode);
+}

+ 61 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IMetaEmployeeDiyService.java

@@ -0,0 +1,61 @@
+package com.dgtly.sync.service;
+
+import com.dgtly.sync.domain.MetaEmployeeDiy;
+import java.util.List;
+
+/**
+ * 立邦雇员数据同步Service接口
+ * 
+ * @author qxp
+ * @date 2020-07-28
+ */
+public interface IMetaEmployeeDiyService 
+{
+    /**
+     * 查询立邦雇员数据同步
+     * 
+     * @param name 立邦雇员数据同步ID
+     * @return 立邦雇员数据同步
+     */
+    public MetaEmployeeDiy selectMetaEmployeeDiyById(String name);
+
+    /**
+     * 查询立邦雇员数据同步列表
+     * 
+     * @param metaEmployeeDiy 立邦雇员数据同步
+     * @return 立邦雇员数据同步集合
+     */
+    public List<MetaEmployeeDiy> selectMetaEmployeeDiyList(MetaEmployeeDiy metaEmployeeDiy);
+
+    /**
+     * 新增立邦雇员数据同步
+     * 
+     * @param metaEmployeeDiy 立邦雇员数据同步
+     * @return 结果
+     */
+    public int insertMetaEmployeeDiy(MetaEmployeeDiy metaEmployeeDiy);
+
+    /**
+     * 修改立邦雇员数据同步
+     * 
+     * @param metaEmployeeDiy 立邦雇员数据同步
+     * @return 结果
+     */
+    public int updateMetaEmployeeDiy(MetaEmployeeDiy metaEmployeeDiy);
+
+    /**
+     * 批量删除立邦雇员数据同步
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteMetaEmployeeDiyByIds(String ids);
+
+    /**
+     * 删除立邦雇员数据同步信息
+     * 
+     * @param name 立邦雇员数据同步ID
+     * @return 结果
+     */
+    public int deleteMetaEmployeeDiyById(String name);
+}

suishenbang-sync/src/main/java/com/dgtly/sync/service/IMetaNipponOrgRelationService.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IMetaNipponOrgRelationService.java


suishenbang-sync/src/main/java/com/dgtly/sync/service/IMetaUserinfoAllService.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/IMetaUserinfoAllService.java


+ 6 - 0
suishenbang-sync/src/main/java/com/dgtly/sync/service/ISyncFailDetailService.java

@@ -12,6 +12,12 @@ import java.util.List;
 public interface ISyncFailDetailService 
 {
 
+    /**
+     *  查询 失败类型
+     * @param packageId
+     * @return
+     */
+    List<String> selectSyncExceptionTypeList(String packageId);
 
     /**
      * 查询同步解析失败详情

suishenbang-sync/src/main/java/com/dgtly/sync/service/ISyncLogService.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/ISyncLogService.java


+ 1 - 8
suishenbang-sync/src/main/java/com/dgtly/sync/service/impl/AnalysisDeptService.java

@@ -2,36 +2,29 @@ package com.dgtly.sync.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.dgtly.common.exception.BusinessException;
-import com.dgtly.sync.controller.SyncController;
 import com.dgtly.sync.domain.MetaNipponOrgRelation;
 import com.dgtly.sync.domain.SyncFailDetail;
 import com.dgtly.sync.domain.SyncLog;
 import com.dgtly.sync.exception.EndLessLoopParentException;
 import com.dgtly.sync.exception.NotFoundParentException;
 import com.dgtly.sync.mapper.SyncFailDetailMapper;
-import com.dgtly.sync.mapper.SyncLogMapper;
 import com.dgtly.sync.service.IAnalysisDeptService;
 import com.dgtly.sync.service.IMetaNipponOrgRelationService;
-import com.dgtly.sync.service.ISyncFailDetailService;
 import com.dgtly.sync.service.ISyncLogService;
 import com.dgtly.system.domain.SysDept;
 import com.dgtly.system.mapper.SysDeptMapper;
-import com.dgtly.system.service.ISysDeptService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
-import org.springframework.scheduling.annotation.AsyncResult;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
 
 @Service
 public class AnalysisDeptService  implements IAnalysisDeptService {
 
-    private static final Logger log = LoggerFactory.getLogger(SyncController.class);
+    private static final Logger log = LoggerFactory.getLogger(AnalysisDeptService.class);
 
 
     @Autowired

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

@@ -0,0 +1,272 @@
+package com.dgtly.sync.service.impl;
+
+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.MetaEmployeeDiy;
+import com.dgtly.sync.domain.SyncFailDetail;
+import com.dgtly.sync.domain.SyncLog;
+import com.dgtly.sync.exception.NotFountOrgCodeException;
+import com.dgtly.sync.exception.OutOfScopeDIYException;
+import com.dgtly.sync.mapper.MetaDiySalesorgtreeMapper;
+import com.dgtly.sync.mapper.MetaEmployeeDiyMapper;
+import com.dgtly.sync.mapper.SyncFailDetailMapper;
+import com.dgtly.sync.service.IAnalysisSysUserService;
+import com.dgtly.sync.service.ISyncLogService;
+import com.dgtly.system.domain.SysDictData;
+import com.dgtly.system.domain.SysUser;
+import com.dgtly.system.domain.SysUserSalesExt;
+import com.dgtly.system.service.ISysConfigService;
+import com.dgtly.system.service.ISysDictDataService;
+import com.dgtly.system.service.ISysUserService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+public class AnalysisSysUserService implements IAnalysisSysUserService {
+
+    private static final Logger log = LoggerFactory.getLogger(AnalysisSysUserService.class);
+
+
+
+
+    @Autowired
+    private SyncFailDetailMapper syncFailDetailMapper;
+    @Autowired
+    private ISysConfigService configService;
+    @Autowired
+    private ISysDictDataService sysDictDataService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+    @Autowired
+    private MetaEmployeeDiyMapper metaEmployeeDiyMapper;
+    @Autowired
+    private MetaDiySalesorgtreeMapper metaDiySalesorgtreeMapper;
+    @Autowired
+    private ISyncLogService syncLogService;
+
+
+
+    /**
+     * 解析部门数据  异步执行
+     * @param packageId
+     * @return
+     */
+    @Override
+    @Async
+    public SyncLog analysisSysUser(String packageId){
+        MetaEmployeeDiy param = new MetaEmployeeDiy();
+        param.setPackageId(packageId);
+
+        SyncLog syncLog = new SyncLog();
+        syncLog.setSyncType("sysuser");
+        syncLog.setStartTime(new Date());
+
+        Set<String> loginNameList = sysUserService.selectAllUserLoginName();
+        List<MetaEmployeeDiy> metaEmployeeDiys = metaEmployeeDiyMapper.selectMetaEmployeeDiyList(param);
+
+        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> divObjid3Set =  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");
+
+
+
+
+            for(MetaEmployeeDiy m:metaEmployeeDiys) {
+                try {
+                    if(!divObjid3Set.contains(m.getStext3())){
+                        throw new OutOfScopeDIYException(m);
+                    }
+                    /**
+                     * 用户基本信息构建
+                     */
+                    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);
+                    SysUserSalesExt userSalesExt = new SysUserSalesExt();
+                    userSalesExt.setBossEmployeeId(m.getBossEmployeeId());
+                    userSalesExt.setBossName(m.getBossName());
+                    userSalesExt.setSapEmployeeId(m.getSapEmployeeId());
+
+                    if (m.getStatus() == 0) {
+                        user.setStatus("1");
+                        user.setDelFlag("2");
+                    } else {
+                        user.setStatus("0");
+                    }
+
+
+
+                    if (loginNameList.contains(user.getLoginName())) {
+                        user.setSysUserSalesExt(userSalesExt);
+                        sysUserService.updateUserInfoAndSalesExt(user);
+                    } else {
+
+                        /**
+                         * 用判断用户所处销售层级
+                         */
+                        String fildName ="";
+                        String fildCode = "";
+                        if(m.getStext6()!=null){
+                            if(empSet.contains(m.getEmployeePostName())){
+                                userSalesExt.setSalesLevel("emp_level");
+                                userSalesExt.setOrgName(m.getStext6());
+                                fildName = "Org6name";
+                                fildCode = "Org6code";
+                            }else if(subofficeSet.contains(m.getEmployeePostName())){
+                                userSalesExt.setSalesLevel("suboffice_level");
+                                userSalesExt.setOrgName(m.getStext6());
+                                fildName = "Org6name";
+                                fildCode = "Org6code";
+                            }else{
+                                throw new OutOfScopeDIYException(m);
+                            }
+                        }else if(m.getStext5()!=null){
+                            if(officeSet.contains(m.getEmployeePostName())){
+                                userSalesExt.setSalesLevel("suboffice_level");
+                                userSalesExt.setOrgName(m.getStext5());
+                                fildName = "Org5name";
+                                fildCode = "Org5code";
+                            }else{
+                                throw new OutOfScopeDIYException(m);
+                            }
+                        }else if(m.getStext4()!=null){
+                            if(saledeptSet.contains(m.getEmployeePostName())){
+                                userSalesExt.setSalesLevel("office_level");
+                                userSalesExt.setOrgName(m.getStext4());
+                                fildName = "Org4name";
+                                fildCode = "Org4code";
+                            } else{
+                                throw new OutOfScopeDIYException(m);
+                            }
+                        }else if(m.getStext3()!=null){
+                            if(companySet.contains(m.getEmployeePostName())){
+                                userSalesExt.setSalesLevel("office_level");
+                                userSalesExt.setOrgName(m.getStext3());
+                                fildName = "Org3name";
+                                fildCode = "Org3code";
+                            } else{
+                                throw new OutOfScopeDIYException(m);
+                            }
+                        }else{
+                            throw new OutOfScopeDIYException(m);
+                        }
+
+
+
+                        if(userSalesExt.getOrgName()!=null){
+                            Map<String,String> map=  metaDiySalesorgtreeMapper.selectSalesorgByName(fildName,fildCode,userSalesExt.getOrgName());
+                            if(map!=null && map.containsKey("orgcode")){
+                                userSalesExt.setOrgCode(map.get("orgcode"));
+                            }
+                        }
+                        if(userSalesExt.getOrgCode()==null){
+                            throw new NotFountOrgCodeException(m);
+                        }
+                        //修改密码并加密
+                        user.setPassword(m.getLoginName());
+                        user.setSalt(ShiroSaltUtil.randomSalt());
+                        user.setPassword(EncryptPassWordClass.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
+                        user.setSysUserSalesExt(userSalesExt);
+                        sysUserService.insertUserAndSalesExt(user);
+                        successCount++;
+
+                    }
+
+                }catch (OutOfScopeDIYException|NotFountOrgCodeException 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;
+
+    }
+
+    public Set<String> getConfigValueSet(String dictType){
+        Set<String> res = new HashSet<>();
+        List<SysDictData> dictDatas = sysDictDataService.selectSimpleDictDataByType(dictType);
+        for(SysDictData d: dictDatas){
+            res.add(d.getDictValue());
+        }
+        return res;
+    }
+
+
+
+
+}

+ 96 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/MetaDiySalesorgtreeServiceImpl.java

@@ -0,0 +1,96 @@
+package com.dgtly.sync.service.impl;
+
+import java.util.List;
+
+import com.dgtly.sync.mapper.MetaDiySalesorgtreeMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.dgtly.sync.mapper.MetaDiySalesorgtreeMapper;
+import com.dgtly.sync.domain.MetaDiySalesorgtree;
+import com.dgtly.sync.service.IMetaDiySalesorgtreeService;
+import com.dgtly.common.core.text.Convert;
+
+/**
+ * 立邦销售人员销售架构Service业务层处理
+ * 
+ * @author qxp
+ * @date 2020-07-28
+ */
+@Service
+public class MetaDiySalesorgtreeServiceImpl implements IMetaDiySalesorgtreeService 
+{
+    @Autowired
+    private MetaDiySalesorgtreeMapper metaDiySalesorgtreeMapper;
+
+    /**
+     * 查询立邦销售人员销售架构
+     * 
+     * @param versioncode 立邦销售人员销售架构ID
+     * @return 立邦销售人员销售架构
+     */
+    @Override
+    public MetaDiySalesorgtree selectMetaDiySalesorgtreeById(String versioncode)
+    {
+        return metaDiySalesorgtreeMapper.selectMetaDiySalesorgtreeById(versioncode);
+    }
+
+    /**
+     * 查询立邦销售人员销售架构列表
+     * 
+     * @param metaDiySalesorgtree 立邦销售人员销售架构
+     * @return 立邦销售人员销售架构
+     */
+    @Override
+    public List<MetaDiySalesorgtree> selectMetaDiySalesorgtreeList(MetaDiySalesorgtree metaDiySalesorgtree)
+    {
+        return metaDiySalesorgtreeMapper.selectMetaDiySalesorgtreeList(metaDiySalesorgtree);
+    }
+
+    /**
+     * 新增立邦销售人员销售架构
+     * 
+     * @param metaDiySalesorgtree 立邦销售人员销售架构
+     * @return 结果
+     */
+    @Override
+    public int insertMetaDiySalesorgtree(MetaDiySalesorgtree metaDiySalesorgtree)
+    {
+        return metaDiySalesorgtreeMapper.insertMetaDiySalesorgtree(metaDiySalesorgtree);
+    }
+
+    /**
+     * 修改立邦销售人员销售架构
+     * 
+     * @param metaDiySalesorgtree 立邦销售人员销售架构
+     * @return 结果
+     */
+    @Override
+    public int updateMetaDiySalesorgtree(MetaDiySalesorgtree metaDiySalesorgtree)
+    {
+        return metaDiySalesorgtreeMapper.updateMetaDiySalesorgtree(metaDiySalesorgtree);
+    }
+
+    /**
+     * 删除立邦销售人员销售架构对象
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    @Override
+    public int deleteMetaDiySalesorgtreeByIds(String ids)
+    {
+        return metaDiySalesorgtreeMapper.deleteMetaDiySalesorgtreeByIds(Convert.toStrArray(ids));
+    }
+
+    /**
+     * 删除立邦销售人员销售架构信息
+     * 
+     * @param versioncode 立邦销售人员销售架构ID
+     * @return 结果
+     */
+    @Override
+    public int deleteMetaDiySalesorgtreeById(String versioncode)
+    {
+        return metaDiySalesorgtreeMapper.deleteMetaDiySalesorgtreeById(versioncode);
+    }
+}

+ 94 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/MetaEmployeeDiyServiceImpl.java

@@ -0,0 +1,94 @@
+package com.dgtly.sync.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.dgtly.sync.mapper.MetaEmployeeDiyMapper;
+import com.dgtly.sync.domain.MetaEmployeeDiy;
+import com.dgtly.sync.service.IMetaEmployeeDiyService;
+import com.dgtly.common.core.text.Convert;
+
+/**
+ * 立邦雇员数据同步Service业务层处理
+ * 
+ * @author qxp
+ * @date 2020-07-28
+ */
+@Service
+public class MetaEmployeeDiyServiceImpl implements IMetaEmployeeDiyService 
+{
+    @Autowired
+    private MetaEmployeeDiyMapper metaEmployeeDiyMapper;
+
+    /**
+     * 查询立邦雇员数据同步
+     * 
+     * @param name 立邦雇员数据同步ID
+     * @return 立邦雇员数据同步
+     */
+    @Override
+    public MetaEmployeeDiy selectMetaEmployeeDiyById(String name)
+    {
+        return metaEmployeeDiyMapper.selectMetaEmployeeDiyById(name);
+    }
+
+    /**
+     * 查询立邦雇员数据同步列表
+     * 
+     * @param metaEmployeeDiy 立邦雇员数据同步
+     * @return 立邦雇员数据同步
+     */
+    @Override
+    public List<MetaEmployeeDiy> selectMetaEmployeeDiyList(MetaEmployeeDiy metaEmployeeDiy)
+    {
+        return metaEmployeeDiyMapper.selectMetaEmployeeDiyList(metaEmployeeDiy);
+    }
+
+    /**
+     * 新增立邦雇员数据同步
+     * 
+     * @param metaEmployeeDiy 立邦雇员数据同步
+     * @return 结果
+     */
+    @Override
+    public int insertMetaEmployeeDiy(MetaEmployeeDiy metaEmployeeDiy)
+    {
+        return metaEmployeeDiyMapper.insertMetaEmployeeDiy(metaEmployeeDiy);
+    }
+
+    /**
+     * 修改立邦雇员数据同步
+     * 
+     * @param metaEmployeeDiy 立邦雇员数据同步
+     * @return 结果
+     */
+    @Override
+    public int updateMetaEmployeeDiy(MetaEmployeeDiy metaEmployeeDiy)
+    {
+        return metaEmployeeDiyMapper.updateMetaEmployeeDiy(metaEmployeeDiy);
+    }
+
+    /**
+     * 删除立邦雇员数据同步对象
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    @Override
+    public int deleteMetaEmployeeDiyByIds(String ids)
+    {
+        return metaEmployeeDiyMapper.deleteMetaEmployeeDiyByIds(Convert.toStrArray(ids));
+    }
+
+    /**
+     * 删除立邦雇员数据同步信息
+     * 
+     * @param name 立邦雇员数据同步ID
+     * @return 结果
+     */
+    @Override
+    public int deleteMetaEmployeeDiyById(String name)
+    {
+        return metaEmployeeDiyMapper.deleteMetaEmployeeDiyById(name);
+    }
+}

suishenbang-sync/src/main/java/com/dgtly/sync/service/impl/MetaNipponOrgRelationServiceImpl.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/MetaNipponOrgRelationServiceImpl.java


suishenbang-sync/src/main/java/com/dgtly/sync/service/impl/MetaUserinfoAllServiceImpl.java → suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/MetaUserinfoAllServiceImpl.java


+ 10 - 2
suishenbang-sync/src/main/java/com/dgtly/sync/service/impl/SyncFailDetailServiceImpl.java

@@ -1,6 +1,5 @@
 package com.dgtly.sync.service.impl;
 
-import java.util.Arrays;
 import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -8,7 +7,6 @@ import com.dgtly.sync.mapper.SyncFailDetailMapper;
 import com.dgtly.sync.domain.SyncFailDetail;
 import com.dgtly.sync.service.ISyncFailDetailService;
 import com.dgtly.common.core.text.Convert;
-import org.yaml.snakeyaml.util.ArrayUtils;
 
 /**
  * 同步解析失败详情Service业务层处理
@@ -22,6 +20,16 @@ public class SyncFailDetailServiceImpl implements ISyncFailDetailService
     @Autowired
     private SyncFailDetailMapper syncFailDetailMapper;
 
+    /**
+     *  查询 失败类型
+     * @param packageId
+     * @return
+     */
+    @Override
+    public List<String> selectSyncExceptionTypeList(String packageId) {
+        return syncFailDetailMapper.selectSyncExceptionTypeList(packageId);
+    }
+
     /**
      * 查询同步解析失败详情
      * 

+ 1 - 1
suishenbang-sync/src/main/java/com/dgtly/sync/service/impl/SyncLogServiceImpl.java

@@ -2,12 +2,12 @@ package com.dgtly.sync.service.impl;
 
 import java.util.List;
 import com.dgtly.common.utils.DateUtils;
+import com.dgtly.sync.mapper.SyncLogMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.dgtly.sync.mapper.SyncLogMapper;
 import com.dgtly.sync.domain.SyncLog;
 import com.dgtly.sync.service.ISyncLogService;
-import com.dgtly.common.core.text.Convert;
 
 /**
  * 同步解析日志Service业务层处理

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

@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dgtly.sync.mapper.MetaDiySalesorgtreeMapper">
+    
+    <resultMap type="MetaDiySalesorgtree" id="MetaDiySalesorgtreeResult">
+        <result property="versioncode"    column="VersionCode"    />
+        <result property="versionname"    column="VersionName"    />
+        <result property="currentflag"    column="currentFlag"    />
+        <result property="org1code"    column="Org1code"    />
+        <result property="org1name"    column="Org1name"    />
+        <result property="org2code"    column="Org2code"    />
+        <result property="org2name"    column="Org2name"    />
+        <result property="org3code"    column="Org3code"    />
+        <result property="org3name"    column="Org3name"    />
+        <result property="org4code"    column="Org4code"    />
+        <result property="org4name"    column="Org4name"    />
+        <result property="org5code"    column="Org5code"    />
+        <result property="org5name"    column="Org5name"    />
+        <result property="org6code"    column="Org6code"    />
+        <result property="org6name"    column="Org6name"    />
+    </resultMap>
+
+    <sql id="selectMetaDiySalesorgtreeVo">
+        select VersionCode, VersionName, currentFlag, Org1code, Org1name, Org2code, Org2name, Org3code, Org3name, Org4code, Org4name, Org5code, Org5name, Org6code, Org6name from meta_diy_salesorgtree
+    </sql>
+
+    <select id="selectMetaDiySalesorgtreeList" parameterType="MetaDiySalesorgtree" resultMap="MetaDiySalesorgtreeResult">
+        <include refid="selectMetaDiySalesorgtreeVo"/>
+        <where>  
+            <if test="versioncode != null  and versioncode != ''"> and VersionCode = #{versioncode}</if>
+            <if test="versionname != null  and versionname != ''"> and VersionName = #{versionname}</if>
+            <if test="currentflag != null  and currentflag != ''"> and currentFlag = #{currentflag}</if>
+            <if test="org1code != null  and org1code != ''"> and Org1code = #{org1code}</if>
+            <if test="org1name != null  and org1name != ''"> and Org1name = #{org1name}</if>
+            <if test="org2code != null  and org2code != ''"> and Org2code = #{org2code}</if>
+            <if test="org2name != null  and org2name != ''"> and Org2name = #{org2name}</if>
+            <if test="org3code != null  and org3code != ''"> and Org3code = #{org3code}</if>
+            <if test="org3name != null  and org3name != ''"> and Org3name = #{org3name}</if>
+            <if test="org4code != null  and org4code != ''"> and Org4code = #{org4code}</if>
+            <if test="org4name != null  and org4name != ''"> and Org4name = #{org4name}</if>
+            <if test="org5code != null  and org5code != ''"> and Org5code = #{org5code}</if>
+            <if test="org5name != null  and org5name != ''"> and Org5name = #{org5name}</if>
+            <if test="org6code != null  and org6code != ''"> and Org6code = #{org6code}</if>
+            <if test="org6name != null  and org6name != ''"> and Org6name = #{org6name}</if>
+        </where>
+    </select>
+    
+    <select id="selectMetaDiySalesorgtreeById" parameterType="String" resultMap="MetaDiySalesorgtreeResult">
+        <include refid="selectMetaDiySalesorgtreeVo"/>
+        where VersionCode = #{versioncode}
+    </select>
+        
+    <insert id="insertMetaDiySalesorgtree" parameterType="MetaDiySalesorgtree">
+        insert into meta_diy_salesorgtree
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="versioncode != null  and versioncode != ''">VersionCode,</if>
+            <if test="versionname != null  and versionname != ''">VersionName,</if>
+            <if test="currentflag != null  and currentflag != ''">currentFlag,</if>
+            <if test="org1code != null  and org1code != ''">Org1code,</if>
+            <if test="org1name != null  and org1name != ''">Org1name,</if>
+            <if test="org2code != null  and org2code != ''">Org2code,</if>
+            <if test="org2name != null  and org2name != ''">Org2name,</if>
+            <if test="org3code != null  and org3code != ''">Org3code,</if>
+            <if test="org3name != null  and org3name != ''">Org3name,</if>
+            <if test="org4code != null  and org4code != ''">Org4code,</if>
+            <if test="org4name != null  and org4name != ''">Org4name,</if>
+            <if test="org5code != null  and org5code != ''">Org5code,</if>
+            <if test="org5name != null  and org5name != ''">Org5name,</if>
+            <if test="org6code != null  and org6code != ''">Org6code,</if>
+            <if test="org6name != null  and org6name != ''">Org6name,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="versioncode != null  and versioncode != ''">#{versioncode},</if>
+            <if test="versionname != null  and versionname != ''">#{versionname},</if>
+            <if test="currentflag != null  and currentflag != ''">#{currentflag},</if>
+            <if test="org1code != null  and org1code != ''">#{org1code},</if>
+            <if test="org1name != null  and org1name != ''">#{org1name},</if>
+            <if test="org2code != null  and org2code != ''">#{org2code},</if>
+            <if test="org2name != null  and org2name != ''">#{org2name},</if>
+            <if test="org3code != null  and org3code != ''">#{org3code},</if>
+            <if test="org3name != null  and org3name != ''">#{org3name},</if>
+            <if test="org4code != null  and org4code != ''">#{org4code},</if>
+            <if test="org4name != null  and org4name != ''">#{org4name},</if>
+            <if test="org5code != null  and org5code != ''">#{org5code},</if>
+            <if test="org5name != null  and org5name != ''">#{org5name},</if>
+            <if test="org6code != null  and org6code != ''">#{org6code},</if>
+            <if test="org6name != null  and org6name != ''">#{org6name},</if>
+         </trim>
+    </insert>
+
+    <update id="updateMetaDiySalesorgtree" parameterType="MetaDiySalesorgtree">
+        update meta_diy_salesorgtree
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="versionname != null  and versionname != ''">VersionName = #{versionname},</if>
+            <if test="currentflag != null  and currentflag != ''">currentFlag = #{currentflag},</if>
+            <if test="org1code != null  and org1code != ''">Org1code = #{org1code},</if>
+            <if test="org1name != null  and org1name != ''">Org1name = #{org1name},</if>
+            <if test="org2code != null  and org2code != ''">Org2code = #{org2code},</if>
+            <if test="org2name != null  and org2name != ''">Org2name = #{org2name},</if>
+            <if test="org3code != null  and org3code != ''">Org3code = #{org3code},</if>
+            <if test="org3name != null  and org3name != ''">Org3name = #{org3name},</if>
+            <if test="org4code != null  and org4code != ''">Org4code = #{org4code},</if>
+            <if test="org4name != null  and org4name != ''">Org4name = #{org4name},</if>
+            <if test="org5code != null  and org5code != ''">Org5code = #{org5code},</if>
+            <if test="org5name != null  and org5name != ''">Org5name = #{org5name},</if>
+            <if test="org6code != null  and org6code != ''">Org6code = #{org6code},</if>
+            <if test="org6name != null  and org6name != ''">Org6name = #{org6name},</if>
+        </trim>
+        where VersionCode = #{versioncode}
+    </update>
+
+    <delete id="deleteMetaDiySalesorgtreeById" parameterType="String">
+        delete from meta_diy_salesorgtree where VersionCode = #{versioncode}
+    </delete>
+
+    <delete id="deleteMetaDiySalesorgtreeByIds" parameterType="String">
+        delete from meta_diy_salesorgtree where VersionCode in 
+        <foreach item="versioncode" collection="array" open="(" separator="," close=")">
+            #{versioncode}
+        </foreach>
+    </delete>
+
+    <select id="selectSalesorgByName"  resultType="Map">
+      select
+        ${fildName} as orgname,${fildCode} as orgcode
+      from meta_diy_salesorgtree
+      where
+        ${fildName} = #{orgName}
+      group by ${fildName}
+    </select>
+    
+</mapper>

+ 259 - 0
suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/MetaEmployeeDiyMapper.xml

@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dgtly.sync.mapper.MetaEmployeeDiyMapper">
+    
+    <resultMap type="MetaEmployeeDiy" id="MetaEmployeeDiyResult">
+        <result property="name"    column="name"    />
+        <result property="loginName"    column="login_name"    />
+        <result property="email"    column="email"    />
+        <result property="mobile"    column="mobile"    />
+        <result property="sapEmployeeId"    column="sap_employee_id"    />
+        <result property="sapCostCenterCode"    column="sap_cost_center_code"    />
+        <result property="sapCostCenter"    column="sap_cost_center"    />
+        <result property="sapCompanyCode"    column="sap_company_code"    />
+        <result property="status"    column="status"    />
+        <result property="objid1"    column="objid_1"    />
+        <result property="contract"    column="contract"    />
+        <result property="contractName"    column="contract_name"    />
+        <result property="contractBegin"    column="contract_begin"    />
+        <result property="duty"    column="duty"    />
+        <result property="dutyName"    column="duty_name"    />
+        <result property="org"    column="org"    />
+        <result property="orgName"    column="org_name"    />
+        <result property="employeePost"    column="employee_post"    />
+        <result property="employeePostName"    column="employee_post_name"    />
+        <result property="posty"    column="posty"    />
+        <result property="poste"    column="poste"    />
+        <result property="posnc"    column="posnc"    />
+        <result property="bossEmployeeId"    column="boss_employee_id"    />
+        <result property="bossName"    column="boss_name"    />
+        <result property="bossEmployeePost"    column="boss_employee_post"    />
+        <result property="sex"    column="sex"    />
+        <result property="stext1"    column="stext_1"    />
+        <result property="objid2"    column="objid_2"    />
+        <result property="stext2"    column="stext_2"    />
+        <result property="objid3"    column="objid_3"    />
+        <result property="stext3"    column="stext_3"    />
+        <result property="objid4"    column="objid_4"    />
+        <result property="stext4"    column="stext_4"    />
+        <result property="objid5"    column="objid_5"    />
+        <result property="stext5"    column="stext_5"    />
+        <result property="objid6"    column="objid_6"    />
+        <result property="stext6"    column="stext_6"    />
+        <result property="objidQy"    column="objid_qy"    />
+        <result property="stextQy"    column="stext_qy"    />
+        <result property="dataversion"    column="dataversion"    />
+        <result property="etlCreatime"    column="etl_creatime"    />
+        <result property="lineId"    column="line_id"    />
+        <result property="packageId"    column="package_id"    />
+    </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_qy,stext_qy,dataversion, etl_creatime, line_id, package_id from meta_employee_diy
+    </sql>
+
+    <select id="selectMetaEmployeeDiyList" parameterType="MetaEmployeeDiy" resultMap="MetaEmployeeDiyResult">
+        <include refid="selectMetaEmployeeDiyVo"/>
+        <where>  
+            <if test="name != null  and name != ''"> and name = #{name}</if>
+            <if test="loginName != null  and loginName != ''"> and login_name = #{loginName}</if>
+            <if test="email != null  and email != ''"> and email = #{email}</if>
+            <if test="mobile != null  and mobile != ''"> and mobile = #{mobile}</if>
+            <if test="sapEmployeeId != null  and sapEmployeeId != ''"> and sap_employee_id = #{sapEmployeeId}</if>
+            <if test="sapCostCenterCode != null  and sapCostCenterCode != ''"> and sap_cost_center_code = #{sapCostCenterCode}</if>
+            <if test="sapCostCenter != null  and sapCostCenter != ''"> and sap_cost_center = #{sapCostCenter}</if>
+            <if test="sapCompanyCode != null  and sapCompanyCode != ''"> and sap_company_code = #{sapCompanyCode}</if>
+            <if test="status != null "> and status = #{status}</if>
+            <if test="objid1 != null  and objid1 != ''"> and objid_1 = #{objid1}</if>
+            <if test="contract != null  and contract != ''"> and contract = #{contract}</if>
+            <if test="contractName != null  and contractName != ''"> and contract_name = #{contractName}</if>
+            <if test="contractBegin != null  and contractBegin != ''"> and contract_begin = #{contractBegin}</if>
+            <if test="duty != null  and duty != ''"> and duty = #{duty}</if>
+            <if test="dutyName != null  and dutyName != ''"> and duty_name = #{dutyName}</if>
+            <if test="org != null  and org != ''"> and org = #{org}</if>
+            <if test="orgName != null  and orgName != ''"> and org_name = #{orgName}</if>
+            <if test="employeePost != null  and employeePost != ''"> and employee_post = #{employeePost}</if>
+            <if test="employeePostName != null  and employeePostName != ''"> and employee_post_name = #{employeePostName}</if>
+            <if test="posty != null  and posty != ''"> and posty = #{posty}</if>
+            <if test="poste != null  and poste != ''"> and poste = #{poste}</if>
+            <if test="posnc != null  and posnc != ''"> and posnc = #{posnc}</if>
+            <if test="bossEmployeeId != null  and bossEmployeeId != ''"> and boss_employee_id = #{bossEmployeeId}</if>
+            <if test="bossName != null  and bossName != ''"> and boss_name = #{bossName}</if>
+            <if test="bossEmployeePost != null  and bossEmployeePost != ''"> and boss_employee_post = #{bossEmployeePost}</if>
+            <if test="sex != null  and sex != ''"> and sex = #{sex}</if>
+            <if test="stext1 != null  and stext1 != ''"> and stext_1 = #{stext1}</if>
+            <if test="objid2 != null  and objid2 != ''"> and objid_2 = #{objid2}</if>
+            <if test="stext2 != null  and stext2 != ''"> and stext_2 = #{stext2}</if>
+            <if test="objid3 != null  and objid3 != ''"> and objid_3 = #{objid3}</if>
+            <if test="stext3 != null  and stext3 != ''"> and stext_3 = #{stext3}</if>
+            <if test="objid4 != null  and objid4 != ''"> and objid_4 = #{objid4}</if>
+            <if test="stext4 != null  and stext4 != ''"> and stext_4 = #{stext4}</if>
+            <if test="objid5 != null  and objid5 != ''"> and objid_5 = #{objid5}</if>
+            <if test="stext5 != null  and stext5 != ''"> and stext_5 = #{stext5}</if>
+            <if test="objid6 != null  and objid6 != ''"> and objid_6 = #{objid6}</if>
+            <if test="stext6 != null  and stext6 != ''"> and stext_6 = #{stext6}</if>
+            <if test="dataversion != null  and dataversion != ''"> and dataversion = #{dataversion}</if>
+            <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>
+        </where>
+    </select>
+    
+    <select id="selectMetaEmployeeDiyById" parameterType="String" resultMap="MetaEmployeeDiyResult">
+        <include refid="selectMetaEmployeeDiyVo"/>
+        where name = #{name}
+    </select>
+        
+    <insert id="insertMetaEmployeeDiy" parameterType="MetaEmployeeDiy">
+        insert into meta_employee_diy
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="name != null  and name != ''">name,</if>
+            <if test="loginName != null  and loginName != ''">login_name,</if>
+            <if test="email != null  and email != ''">email,</if>
+            <if test="mobile != null  and mobile != ''">mobile,</if>
+            <if test="sapEmployeeId != null  and sapEmployeeId != ''">sap_employee_id,</if>
+            <if test="sapCostCenterCode != null  and sapCostCenterCode != ''">sap_cost_center_code,</if>
+            <if test="sapCostCenter != null  and sapCostCenter != ''">sap_cost_center,</if>
+            <if test="sapCompanyCode != null  and sapCompanyCode != ''">sap_company_code,</if>
+            <if test="status != null ">status,</if>
+            <if test="objid1 != null  and objid1 != ''">objid_1,</if>
+            <if test="contract != null  and contract != ''">contract,</if>
+            <if test="contractName != null  and contractName != ''">contract_name,</if>
+            <if test="contractBegin != null  and contractBegin != ''">contract_begin,</if>
+            <if test="duty != null  and duty != ''">duty,</if>
+            <if test="dutyName != null  and dutyName != ''">duty_name,</if>
+            <if test="org != null  and org != ''">org,</if>
+            <if test="orgName != null  and orgName != ''">org_name,</if>
+            <if test="employeePost != null  and employeePost != ''">employee_post,</if>
+            <if test="employeePostName != null  and employeePostName != ''">employee_post_name,</if>
+            <if test="posty != null  and posty != ''">posty,</if>
+            <if test="poste != null  and poste != ''">poste,</if>
+            <if test="posnc != null  and posnc != ''">posnc,</if>
+            <if test="bossEmployeeId != null  and bossEmployeeId != ''">boss_employee_id,</if>
+            <if test="bossName != null  and bossName != ''">boss_name,</if>
+            <if test="bossEmployeePost != null  and bossEmployeePost != ''">boss_employee_post,</if>
+            <if test="sex != null  and sex != ''">sex,</if>
+            <if test="stext1 != null  and stext1 != ''">stext_1,</if>
+            <if test="objid2 != null  and objid2 != ''">objid_2,</if>
+            <if test="stext2 != null  and stext2 != ''">stext_2,</if>
+            <if test="objid3 != null  and objid3 != ''">objid_3,</if>
+            <if test="stext3 != null  and stext3 != ''">stext_3,</if>
+            <if test="objid4 != null  and objid4 != ''">objid_4,</if>
+            <if test="stext4 != null  and stext4 != ''">stext_4,</if>
+            <if test="objid5 != null  and objid5 != ''">objid_5,</if>
+            <if test="stext5 != null  and stext5 != ''">stext_5,</if>
+            <if test="objid6 != null  and objid6 != ''">objid_6,</if>
+            <if test="stext6 != null  and stext6 != ''">stext_6,</if>
+            <if test="dataversion != null  and dataversion != ''">dataversion,</if>
+            <if test="etlCreatime != null ">etl_creatime,</if>
+            <if test="lineId != null  and lineId != ''">line_id,</if>
+            <if test="packageId != null  and packageId != ''">package_id,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="name != null  and name != ''">#{name},</if>
+            <if test="loginName != null  and loginName != ''">#{loginName},</if>
+            <if test="email != null  and email != ''">#{email},</if>
+            <if test="mobile != null  and mobile != ''">#{mobile},</if>
+            <if test="sapEmployeeId != null  and sapEmployeeId != ''">#{sapEmployeeId},</if>
+            <if test="sapCostCenterCode != null  and sapCostCenterCode != ''">#{sapCostCenterCode},</if>
+            <if test="sapCostCenter != null  and sapCostCenter != ''">#{sapCostCenter},</if>
+            <if test="sapCompanyCode != null  and sapCompanyCode != ''">#{sapCompanyCode},</if>
+            <if test="status != null ">#{status},</if>
+            <if test="objid1 != null  and objid1 != ''">#{objid1},</if>
+            <if test="contract != null  and contract != ''">#{contract},</if>
+            <if test="contractName != null  and contractName != ''">#{contractName},</if>
+            <if test="contractBegin != null  and contractBegin != ''">#{contractBegin},</if>
+            <if test="duty != null  and duty != ''">#{duty},</if>
+            <if test="dutyName != null  and dutyName != ''">#{dutyName},</if>
+            <if test="org != null  and org != ''">#{org},</if>
+            <if test="orgName != null  and orgName != ''">#{orgName},</if>
+            <if test="employeePost != null  and employeePost != ''">#{employeePost},</if>
+            <if test="employeePostName != null  and employeePostName != ''">#{employeePostName},</if>
+            <if test="posty != null  and posty != ''">#{posty},</if>
+            <if test="poste != null  and poste != ''">#{poste},</if>
+            <if test="posnc != null  and posnc != ''">#{posnc},</if>
+            <if test="bossEmployeeId != null  and bossEmployeeId != ''">#{bossEmployeeId},</if>
+            <if test="bossName != null  and bossName != ''">#{bossName},</if>
+            <if test="bossEmployeePost != null  and bossEmployeePost != ''">#{bossEmployeePost},</if>
+            <if test="sex != null  and sex != ''">#{sex},</if>
+            <if test="stext1 != null  and stext1 != ''">#{stext1},</if>
+            <if test="objid2 != null  and objid2 != ''">#{objid2},</if>
+            <if test="stext2 != null  and stext2 != ''">#{stext2},</if>
+            <if test="objid3 != null  and objid3 != ''">#{objid3},</if>
+            <if test="stext3 != null  and stext3 != ''">#{stext3},</if>
+            <if test="objid4 != null  and objid4 != ''">#{objid4},</if>
+            <if test="stext4 != null  and stext4 != ''">#{stext4},</if>
+            <if test="objid5 != null  and objid5 != ''">#{objid5},</if>
+            <if test="stext5 != null  and stext5 != ''">#{stext5},</if>
+            <if test="objid6 != null  and objid6 != ''">#{objid6},</if>
+            <if test="stext6 != null  and stext6 != ''">#{stext6},</if>
+            <if test="dataversion != null  and dataversion != ''">#{dataversion},</if>
+            <if test="etlCreatime != null ">#{etlCreatime},</if>
+            <if test="lineId != null  and lineId != ''">#{lineId},</if>
+            <if test="packageId != null  and packageId != ''">#{packageId},</if>
+         </trim>
+    </insert>
+
+    <update id="updateMetaEmployeeDiy" parameterType="MetaEmployeeDiy">
+        update meta_employee_diy
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="loginName != null  and loginName != ''">login_name = #{loginName},</if>
+            <if test="email != null  and email != ''">email = #{email},</if>
+            <if test="mobile != null  and mobile != ''">mobile = #{mobile},</if>
+            <if test="sapEmployeeId != null  and sapEmployeeId != ''">sap_employee_id = #{sapEmployeeId},</if>
+            <if test="sapCostCenterCode != null  and sapCostCenterCode != ''">sap_cost_center_code = #{sapCostCenterCode},</if>
+            <if test="sapCostCenter != null  and sapCostCenter != ''">sap_cost_center = #{sapCostCenter},</if>
+            <if test="sapCompanyCode != null  and sapCompanyCode != ''">sap_company_code = #{sapCompanyCode},</if>
+            <if test="status != null ">status = #{status},</if>
+            <if test="objid1 != null  and objid1 != ''">objid_1 = #{objid1},</if>
+            <if test="contract != null  and contract != ''">contract = #{contract},</if>
+            <if test="contractName != null  and contractName != ''">contract_name = #{contractName},</if>
+            <if test="contractBegin != null  and contractBegin != ''">contract_begin = #{contractBegin},</if>
+            <if test="duty != null  and duty != ''">duty = #{duty},</if>
+            <if test="dutyName != null  and dutyName != ''">duty_name = #{dutyName},</if>
+            <if test="org != null  and org != ''">org = #{org},</if>
+            <if test="orgName != null  and orgName != ''">org_name = #{orgName},</if>
+            <if test="employeePost != null  and employeePost != ''">employee_post = #{employeePost},</if>
+            <if test="employeePostName != null  and employeePostName != ''">employee_post_name = #{employeePostName},</if>
+            <if test="posty != null  and posty != ''">posty = #{posty},</if>
+            <if test="poste != null  and poste != ''">poste = #{poste},</if>
+            <if test="posnc != null  and posnc != ''">posnc = #{posnc},</if>
+            <if test="bossEmployeeId != null  and bossEmployeeId != ''">boss_employee_id = #{bossEmployeeId},</if>
+            <if test="bossName != null  and bossName != ''">boss_name = #{bossName},</if>
+            <if test="bossEmployeePost != null  and bossEmployeePost != ''">boss_employee_post = #{bossEmployeePost},</if>
+            <if test="sex != null  and sex != ''">sex = #{sex},</if>
+            <if test="stext1 != null  and stext1 != ''">stext_1 = #{stext1},</if>
+            <if test="objid2 != null  and objid2 != ''">objid_2 = #{objid2},</if>
+            <if test="stext2 != null  and stext2 != ''">stext_2 = #{stext2},</if>
+            <if test="objid3 != null  and objid3 != ''">objid_3 = #{objid3},</if>
+            <if test="stext3 != null  and stext3 != ''">stext_3 = #{stext3},</if>
+            <if test="objid4 != null  and objid4 != ''">objid_4 = #{objid4},</if>
+            <if test="stext4 != null  and stext4 != ''">stext_4 = #{stext4},</if>
+            <if test="objid5 != null  and objid5 != ''">objid_5 = #{objid5},</if>
+            <if test="stext5 != null  and stext5 != ''">stext_5 = #{stext5},</if>
+            <if test="objid6 != null  and objid6 != ''">objid_6 = #{objid6},</if>
+            <if test="stext6 != null  and stext6 != ''">stext_6 = #{stext6},</if>
+            <if test="dataversion != null  and dataversion != ''">dataversion = #{dataversion},</if>
+            <if test="etlCreatime != null ">etl_creatime = #{etlCreatime},</if>
+            <if test="lineId != null  and lineId != ''">line_id = #{lineId},</if>
+            <if test="packageId != null  and packageId != ''">package_id = #{packageId},</if>
+        </trim>
+        where name = #{name}
+    </update>
+
+    <delete id="deleteMetaEmployeeDiyById" parameterType="String">
+        delete from meta_employee_diy where name = #{name}
+    </delete>
+
+    <delete id="deleteMetaEmployeeDiyByIds" parameterType="String">
+        delete from meta_employee_diy where name in 
+        <foreach item="name" collection="array" open="(" separator="," close=")">
+            #{name}
+        </foreach>
+    </delete>
+    
+</mapper>

suishenbang-sync/src/main/resources/mapper/sync/MetaNipponOrgRelationMapper.xml → suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/MetaNipponOrgRelationMapper.xml


suishenbang-sync/src/main/resources/mapper/sync/MetaUserinfoAllMapper.xml → suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/MetaUserinfoAllMapper.xml


+ 26 - 6
suishenbang-sync/src/main/resources/mapper/sync/SyncFailDetailMapper.xml

@@ -8,10 +8,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="packageId"    column="package_id"    />
         <result property="failReason"    column="fail_reason"    />
         <result property="dataJson"    column="data_json"    />
+        <result property="failLevel"    column="fail_level"    />
+        <result property="exceptionType"    column="exception_type"    />
     </resultMap>
 
     <sql id="selectSyncFailDetailVo">
-        select package_id, fail_reason, data_json from sync_fail_detail
+        select package_id, fail_reason, data_json,fail_level,exception_type from sync_fail_detail
     </sql>
 
     <select id="selectSyncFailDetailList" parameterType="SyncFailDetail" resultMap="SyncFailDetailResult">
@@ -20,6 +22,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="packageId != null  and packageId != ''"> and package_id = #{packageId}</if>
             <if test="failReason != null  and failReason != ''"> and fail_reason = #{failReason}</if>
             <if test="dataJson != null  and dataJson != ''"> and data_json = #{dataJson}</if>
+            <if test="failLevel != null  and failLevel != ''"> and fail_level = #{failLevel}</if>
+            <if test="exceptionType != null  and exceptionType != ''"> and exception_type = #{exceptionType}</if>
         </where>
     </select>
     
@@ -34,11 +38,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="packageId != null  and packageId != ''">package_id,</if>
             <if test="failReason != null  and failReason != ''">fail_reason,</if>
             <if test="dataJson != null  and dataJson != ''">data_json,</if>
+            <if test="failLevel != null  and failLevel != ''">fail_level ,</if>
+            <if test="exceptionType != null  and exceptionType != ''">exception_type,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="packageId != null  and packageId != ''">#{packageId},</if>
             <if test="failReason != null  and failReason != ''">#{failReason},</if>
             <if test="dataJson != null  and dataJson != ''">#{dataJson},</if>
+            <if test="failLevel != null  and failLevel != ''">#{failLevel},</if>
+            <if test="exceptionType != null  and exceptionType != ''">#{exceptionType},</if>
          </trim>
     </insert>
 
@@ -47,6 +55,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <trim prefix="SET" suffixOverrides=",">
             <if test="failReason != null  and failReason != ''">fail_reason = #{failReason},</if>
             <if test="dataJson != null  and dataJson != ''">data_json = #{dataJson},</if>
+            <if test="failLevel != null  and failLevel != ''">fail_level = #{failLevel},</if>
+            <if test="exceptionType != null  and exceptionType != ''">exception_type = #{exceptionType},</if>
         </trim>
         where package_id = #{packageId}
     </update>
@@ -63,15 +73,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <insert id="batchInsertSyncFailDetail" parameterType="SyncFailDetail">
-        insert into sync_fail_detail (package_id,fail_reason,data_json)
+        insert into sync_fail_detail (package_id,fail_reason,data_json,fail_level,exception_type)
         values
         <foreach item="obj" collection="failDetails"  separator=",">
             (
-            #{obj.packageId},
-            #{obj.failReason},
-            #{obj.dataJson}
+                #{obj.packageId},
+                #{obj.failReason},
+                #{obj.dataJson},
+                #{obj.failLevel},
+                #{obj.exceptionType}
             )
         </foreach>
     </insert>
-    
+
+    <select id="selectSyncExceptionTypeList" parameterType="String" resultType="String">
+        select exception_type
+        from sync_fail_detail
+        where package_id = #{packageId}
+        group by exception_type
+    </select>
+
+
 </mapper>

suishenbang-sync/src/main/resources/mapper/sync/SyncLogMapper.xml → suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/SyncLogMapper.xml


+ 25 - 0
suishenbang-sync/suishenbang-sync-manager/pom.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>suishenbang-sync</artifactId>
+        <groupId>com.dgtly</groupId>
+        <version>4.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>suishenbang-sync-manager</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.dgtly</groupId>
+            <artifactId>suishenbang-framework</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.dgtly</groupId>
+            <artifactId>suishenbang-sync-common</artifactId>
+            <version>4.0.0</version>
+        </dependency>
+    </dependencies>
+</project>

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

@@ -3,10 +3,8 @@ package com.dgtly.sync.controller;
 
 import com.alibaba.fastjson.JSONObject;
 import com.dgtly.common.exception.BusinessException;
-import com.dgtly.sync.domain.MetaNipponOrgRelation;
 import com.dgtly.sync.domain.SyncFailDetail;
 import com.dgtly.sync.domain.SyncLog;
-import com.dgtly.sync.exception.NotFoundParentException;
 import com.dgtly.sync.service.*;
 import com.dgtly.system.domain.SysDept;
 import com.dgtly.system.service.ISysDeptService;
@@ -49,7 +47,7 @@ public class SyncController {
     @GetMapping("dept")
     public Object dept(String packageId, String jobId, String message){
         try{
-           analysisDeptService.analysisDept(packageId);
+           //analysisDeptService.analysisDept(packageId);
         }catch (Exception e){
             log.error("解析部门出错",e);
         }

+ 5 - 7
suishenbang-sync/src/main/java/com/dgtly/sync/controller/SyncLogController.java

@@ -13,8 +13,6 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
-import com.dgtly.common.annotation.Log;
-import com.dgtly.common.enums.BusinessType;
 import com.dgtly.sync.domain.SyncLog;
 import com.dgtly.sync.service.ISyncLogService;
 import com.dgtly.common.core.controller.BaseController;
@@ -75,12 +73,14 @@ public class SyncLogController extends BaseController
     }
 
     /**
-     * 修改同步解析日志
+     * 同步解析日志详情
      */
     @GetMapping("/faildetail/{packageId}")
     public String faildetail(@PathVariable("packageId") String packageId, ModelMap mmap)
     {
         mmap.put("packageId", packageId);
+        List<String> exceptionTypeList = syncFailDetailService.selectSyncExceptionTypeList(packageId);
+        mmap.put("exceptionTypeList",exceptionTypeList);
         return prefix + "/syncfaildetail";
     }
 
@@ -88,13 +88,11 @@ public class SyncLogController extends BaseController
     /**
      * 查询同步解析失败详情列表
      */
-    @PostMapping("/faildetaillist/{packageId}")
+    @PostMapping("/faildetaillist")
     @ResponseBody
-    public TableDataInfo list(@PathVariable("packageId")String packageId)
+    public TableDataInfo list(SyncFailDetail syncFailDetail)
     {
         startPage();
-        SyncFailDetail syncFailDetail = new SyncFailDetail();
-        syncFailDetail.setPackageId(packageId);
         List<SyncFailDetail> list = syncFailDetailService.selectSyncFailDetailList(syncFailDetail);
         return getDataTable(list);
     }

suishenbang-sync/src/main/resources/templates/sync/synclog/edit.html → suishenbang-sync/suishenbang-sync-manager/src/main/resources/templates/sync/synclog/edit.html


+ 48 - 13
suishenbang-sync/src/main/resources/templates/sync/synclog/syncfaildetail.html

@@ -15,34 +15,68 @@
 </head>
 <body class="gray-bg">
      <div class="container-div">
-
+        <div class="row">
+            <div class="col-sm-12 search-collapse ">
+                <form id="formId" class="form-horizontal m">
+                    <div class="row">
+                        <input type="hidden" name="packageId" th:value="${packageId}">
+                        <label class="control-label col-sm-2  ">异常:</label>
+                        <div class="col-sm-4 ">
+                            <select class="form-control " name="exceptionType" onchange="$.table.search()" >
+                                <option value="">所有</option>
+                                <option th:each="ex : ${exceptionTypeList}" th:text="${ex}" th:value="${ex}"></option>
+                            </select>
+                        </div>
+                        <label class="control-label col-sm-2  ">类型:</label>
+                        <div class="col-sm-4 ">
+                            <select class="form-control " name="failLevel" th:with="type=${@dict.getType('sync_fail_level')}" onchange="$.table.search()">
+                                <option value="">所有</option>
+                                <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
+                            </select>
+                        </div>
+                    </div>
+                </form>
+            </div>
             <div class="col-sm-12 select-table table-striped">
                 <table id="bootstrap-table" style='table-layout:fixed;'></table>
             </div>
         </div>
+
     </div>
     <th:block th:include="include :: footer" />
     <script th:inline="javascript">
-        var editFlag = [[${@permission.hasPermi('sync:syncfaildetail:edit')}]];
+        var datas = [[${@dict.getType('sync_fail_level')}]];
         var prefix = ctx + "sync/synclog";
         var packageId = [[${packageId}]]
         $(function() {
             var options = {
-                url: prefix + "/faildetaillist/"+packageId,
+                url: prefix + "/faildetaillist",
                 updateUrl: prefix + "/edit/{id}",
                 modalName: "同步解析失败详情",
                 responseHandler: responseHandler,
+                /*queryParams:{
+                    packageId:packageId
+                },*/
                 columns: [
-                // {
-                //     field : 'packageId',
-                //     title : '所属包id',
-                //     width : '20%',
-                //     show : true
-                // },
+                 {
+                     field : 'exceptionType',
+                     title : '异常',
+                     width : '30%',
+                     show : true
+                 },
+                {
+                    field : 'failLevel',
+                    title : '错误等级',
+                    width : '10%',
+                    show : true,
+                    formatter: function(value, row, index) {
+                        return $.table.selectDictLabel(datas, value);
+                    }
+                },
                 {
                     field : 'failReason', 
                     title : '失败原因',
-                    width : '35%',
+                    width : '15%',
                     formatter: function(value, row, index) {
 
                         var reg = new RegExp( '"' , "g" )
@@ -56,7 +90,7 @@
                 {
                     field : 'dataJson', 
                     title : '数据json',
-                    width : '35%',
+                    width : '15%',
                     formatter: function(value, row, index) {
                         var reg = new RegExp( '"' , "g" )
                         value = value.replace(reg,'&quot;');
@@ -73,14 +107,15 @@
                     width: '30%',
                     formatter: function(value, row, index) {
                         var actions = [];
-                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="copyValue('+index+',\'failReason\')"><i class="fa fa-edit"></i>复制错误</a> ');
-                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="copyValue('+index+',\'dataJson\')"><i class="fa fa-edit"></i>复制json</a> ');
+                        actions.push('<a class="btn btn-success btn-xs " href="javascript:void(0)" onclick="copyValue('+index+',\'failReason\')"><i class="fa fa-edit"></i>复制错误</a> ');
+                        actions.push('<a class="btn btn-success btn-xs " href="javascript:void(0)" onclick="copyValue('+index+',\'dataJson\')"><i class="fa fa-edit"></i>复制json</a> ');
                         return actions.join('');
                     }
                 }]
             };
             $.table.init(options);
         });
+
         function responseHandler(){
             $('[data-toggle="tooltip"]').tooltip();
         }

+ 1 - 1
suishenbang-sync/src/main/resources/templates/sync/synclog/synclog.html

@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+    <!DOCTYPE html>
 <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
 <head>
     <th:block th:include="include :: header('同步解析日志列表')" />

+ 23 - 0
suishenbang-system/src/main/java/com/dgtly/system/domain/SysUser.java

@@ -102,6 +102,19 @@ public class SysUser extends BaseEntity
     /** 是否绑定企业微信信息 */
     private String isBindingWx;
 
+    /** 用户销售信息扩展 */
+    private SysUserSalesExt  sysUserSalesExt;
+
+
+    //    /** 所属销售组织等级 详见字典(sales_level) */
+//    private String salesLevel;
+//
+//    /** 所属销售组织名称 */
+//    private String orgName;
+//
+//    /**  所属销售组织code */
+//    private  String  orgCode;
+
     public SysUser()
     {
 
@@ -396,6 +409,16 @@ public class SysUser extends BaseEntity
         this.isBindingWx = isBindingWx;
     }
 
+    public SysUserSalesExt getSysUserSalesExt() {
+        return sysUserSalesExt;
+    }
+
+    public void setSysUserSalesExt(SysUserSalesExt sysUserSalesExt) {
+        this.sysUserSalesExt = sysUserSalesExt;
+    }
+
+
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 114 - 0
suishenbang-system/src/main/java/com/dgtly/system/domain/SysUserSalesExt.java

@@ -0,0 +1,114 @@
+package com.dgtly.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.dgtly.common.annotation.Excel;
+import com.dgtly.common.core.domain.BaseEntity;
+
+/**
+ * 用户销售信息扩展对象 sys_user_sales_ext
+ * 
+ * @author qxp
+ * @date 2020-07-29
+ */
+public class SysUserSalesExt extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 用户id */
+    private Long userId;
+
+    /** 所属组织code */
+    private String orgCode;
+
+    /** 销售等级详见字典(sales_level) */
+    private String salesLevel;
+
+    /** 所属组织名称 */
+    private String orgName;
+
+    /** 雇员id */
+    private String sapEmployeeId;
+
+    /** 领导id */
+    private String bossEmployeeId;
+
+    /** 领导名称 */
+    private String bossName;
+
+    public void setUserId(Long userId)
+    {
+        this.userId = userId;
+    }
+
+    public Long getUserId()
+    {
+        return userId;
+    }
+    public void setOrgCode(String orgCode) 
+    {
+        this.orgCode = orgCode;
+    }
+
+    public String getOrgCode() 
+    {
+        return orgCode;
+    }
+    public void setSalesLevel(String salesLevel) 
+    {
+        this.salesLevel = salesLevel;
+    }
+
+    public String getSalesLevel() 
+    {
+        return salesLevel;
+    }
+    public void setOrgName(String orgName) 
+    {
+        this.orgName = orgName;
+    }
+
+    public String getOrgName() 
+    {
+        return orgName;
+    }
+    public void setSapEmployeeId(String sapEmployeeId)
+    {
+        this.sapEmployeeId = sapEmployeeId;
+    }
+
+    public String getSapEmployeeId()
+    {
+        return sapEmployeeId;
+    }
+    public void setBossEmployeeId(String bossEmployeeId)
+    {
+        this.bossEmployeeId = bossEmployeeId;
+    }
+
+    public String getBossEmployeeId()
+    {
+        return bossEmployeeId;
+    }
+
+    public String getBossName() {
+        return bossName;
+    }
+
+    public void setBossName(String bossName) {
+        this.bossName = bossName;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("userId", getUserId())
+            .append("orgCode", getOrgCode())
+            .append("salesLevel", getSalesLevel())
+            .append("orgName", getOrgName())
+            .append("sapEmployeeId", getSapEmployeeId())
+            .append("bossEmployeeId", getBossEmployeeId())
+            .append("bossName", getBossName())
+            .toString();
+    }
+}

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

@@ -119,6 +119,14 @@ public interface SysUserMapper
      */
     public int insertUser(SysUser user);
 
+    /**
+     * 新增用户信息
+     *
+     * @param user 用户信息
+     * @return 结果
+     */
+    public int insertUserNoKey(SysUser user);
+
     /**
      * 校验用户名称是否唯一
      * 

+ 77 - 0
suishenbang-system/src/main/java/com/dgtly/system/mapper/SysUserSalesExtMapper.java

@@ -0,0 +1,77 @@
+package com.dgtly.system.mapper;
+
+import com.dgtly.system.domain.SysUserSalesExt;
+import java.util.List;
+
+/**
+ * 用户销售信息扩展Mapper接口
+ * 
+ * @author qxp
+ * @date 2020-07-29
+ */
+public interface SysUserSalesExtMapper 
+{
+    /**
+     * 查询用户销售信息扩展
+     * 
+     * @param userId 用户销售信息扩展ID
+     * @return 用户销售信息扩展
+     */
+    public SysUserSalesExt selectSysUserSalesExtById(Long userId);
+
+    /**
+     * 查询用户销售信息扩展列表
+     * 
+     * @param sysUserSalesExt 用户销售信息扩展
+     * @return 用户销售信息扩展集合
+     */
+    public List<SysUserSalesExt> selectSysUserSalesExtList(SysUserSalesExt sysUserSalesExt);
+
+    /**
+     * 新增用户销售信息扩展
+     * 
+     * @param sysUserSalesExt 用户销售信息扩展
+     * @return 结果
+     */
+    public int insertSysUserSalesExt(SysUserSalesExt sysUserSalesExt);
+
+    /**
+     * 根据领导EmployeeId查询所有下属用户id
+     *
+     * @param bossEmployeeId 领导EmployeeId
+     * @return 结果
+     */
+    public List<String> selectUserIdsByBossEmployeeId(String bossEmployeeId);
+
+    /**
+     * 修改用户销售信息扩展
+     * 
+     * @param sysUserSalesExt 用户销售信息扩展
+     * @return 结果
+     */
+    public int updateSysUserSalesExt(SysUserSalesExt sysUserSalesExt);
+
+    /**
+     * 删除用户销售信息扩展
+     * 
+     * @param userId 用户销售信息扩展ID
+     * @return 结果
+     */
+    public int deleteSysUserSalesExtById(Long userId);
+
+    /**
+     * 批量删除用户销售信息扩展
+     * 
+     * @param userIds 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteSysUserSalesExtByIds(String[] userIds);
+
+    /**
+     * 插入或更新用户销售信息扩展
+     *
+     * @param sysUserSalesExt 用户销售信息扩展
+     * @return 结果
+     */
+    public int insertOrUpSysUserSalesExt(SysUserSalesExt sysUserSalesExt);
+}

+ 69 - 0
suishenbang-system/src/main/java/com/dgtly/system/service/ISysUserSalesExtService.java

@@ -0,0 +1,69 @@
+package com.dgtly.system.service;
+
+import com.dgtly.system.domain.SysUserSalesExt;
+import java.util.List;
+
+/**
+ * 用户销售信息扩展Service接口
+ * 
+ * @author qxp
+ * @date 2020-07-29
+ */
+public interface ISysUserSalesExtService 
+{
+    /**
+     * 查询用户销售信息扩展
+     * 
+     * @param userId 用户销售信息扩展ID
+     * @return 用户销售信息扩展
+     */
+    public SysUserSalesExt selectSysUserSalesExtById(Long userId);
+
+    /**
+     * 查询用户销售信息扩展列表
+     * 
+     * @param sysUserSalesExt 用户销售信息扩展
+     * @return 用户销售信息扩展集合
+     */
+    public List<SysUserSalesExt> selectSysUserSalesExtList(SysUserSalesExt sysUserSalesExt);
+
+    /**
+     * 新增用户销售信息扩展
+     * 
+     * @param sysUserSalesExt 用户销售信息扩展
+     * @return 结果
+     */
+    public int insertSysUserSalesExt(SysUserSalesExt sysUserSalesExt);
+
+    /**
+     * 根据领导EmployeeId查询所有下属用户id
+     *
+     * @param bossEmployeeId 领导EmployeeId
+     * @return 结果
+     */
+    List<String> selectUserIdsByBossEmployeeId(String bossEmployeeId);
+
+    /**
+     * 修改用户销售信息扩展
+     * 
+     * @param sysUserSalesExt 用户销售信息扩展
+     * @return 结果
+     */
+    public int updateSysUserSalesExt(SysUserSalesExt sysUserSalesExt);
+
+    /**
+     * 批量删除用户销售信息扩展
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteSysUserSalesExtByIds(String ids);
+
+    /**
+     * 删除用户销售信息扩展信息
+     * 
+     * @param userId 用户销售信息扩展ID
+     * @return 结果
+     */
+    public int deleteSysUserSalesExtById(Long userId);
+}

+ 17 - 1
suishenbang-system/src/main/java/com/dgtly/system/service/ISysUserService.java

@@ -15,6 +15,8 @@ public interface ISysUserService
 {
 
 
+
+
     /**
      * 查询所有用户LoginName
      *
@@ -103,6 +105,14 @@ public interface ISysUserService
      */
     public int insertUser(SysUser user);
 
+    /**
+     * 插入用户信息和销售扩展信息
+     *
+     * @param user 用户信息
+     * @return 结果
+     */
+    public Integer insertUserAndSalesExt(SysUser user);
+
     /**
      * 保存用户信息
      * 
@@ -119,6 +129,13 @@ public interface ISysUserService
      */
     public int updateUserInfo(SysUser user);
 
+    /**
+     * 修改用户详细信息和销售相关信息
+     *
+     * @param user 用户信息
+     * @return 结果
+     */
+    public int updateUserInfoAndSalesExt(SysUser user);
     /**
      * 修改公司员工状态
      * @return 结果
@@ -215,5 +232,4 @@ public interface ISysUserService
 
 
 
-
 }

+ 105 - 0
suishenbang-system/src/main/java/com/dgtly/system/service/impl/SysUserSalesExtServiceImpl.java

@@ -0,0 +1,105 @@
+package com.dgtly.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.dgtly.system.mapper.SysUserSalesExtMapper;
+import com.dgtly.system.domain.SysUserSalesExt;
+import com.dgtly.system.service.ISysUserSalesExtService;
+import com.dgtly.common.core.text.Convert;
+
+/**
+ * 用户销售信息扩展Service业务层处理
+ * 
+ * @author qxp
+ * @date 2020-07-29
+ */
+@Service
+public class SysUserSalesExtServiceImpl implements ISysUserSalesExtService 
+{
+    @Autowired
+    private SysUserSalesExtMapper sysUserSalesExtMapper;
+
+    /**
+     * 查询用户销售信息扩展
+     * 
+     * @param userId 用户销售信息扩展ID
+     * @return 用户销售信息扩展
+     */
+    @Override
+    public SysUserSalesExt selectSysUserSalesExtById(Long userId)
+    {
+        return sysUserSalesExtMapper.selectSysUserSalesExtById(userId);
+    }
+
+    /**
+     * 查询用户销售信息扩展列表
+     * 
+     * @param sysUserSalesExt 用户销售信息扩展
+     * @return 用户销售信息扩展
+     */
+    @Override
+    public List<SysUserSalesExt> selectSysUserSalesExtList(SysUserSalesExt sysUserSalesExt)
+    {
+        return sysUserSalesExtMapper.selectSysUserSalesExtList(sysUserSalesExt);
+    }
+
+    /**
+     * 新增用户销售信息扩展
+     * 
+     * @param sysUserSalesExt 用户销售信息扩展
+     * @return 结果
+     */
+    @Override
+    public int insertSysUserSalesExt(SysUserSalesExt sysUserSalesExt)
+    {
+        return sysUserSalesExtMapper.insertSysUserSalesExt(sysUserSalesExt);
+    }
+
+    /**
+     * 根据领导EmployeeId查询所有下属用户id
+     *
+     * @param bossEmployeeId 领导EmployeeId
+     * @return 结果
+     */
+    @Override
+    public List<String> selectUserIdsByBossEmployeeId(String bossEmployeeId) {
+        return sysUserSalesExtMapper.selectUserIdsByBossEmployeeId(bossEmployeeId);
+    }
+
+    /**
+     * 修改用户销售信息扩展
+     * 
+     * @param sysUserSalesExt 用户销售信息扩展
+     * @return 结果
+     */
+    @Override
+    public int updateSysUserSalesExt(SysUserSalesExt sysUserSalesExt)
+    {
+        return sysUserSalesExtMapper.updateSysUserSalesExt(sysUserSalesExt);
+    }
+
+    /**
+     * 删除用户销售信息扩展对象
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    @Override
+    public int deleteSysUserSalesExtByIds(String ids)
+    {
+        return sysUserSalesExtMapper.deleteSysUserSalesExtByIds(Convert.toStrArray(ids));
+    }
+
+    /**
+     * 删除用户销售信息扩展信息
+     * 
+     * @param userId 用户销售信息扩展ID
+     * @return 结果
+     */
+    @Override
+    public int deleteSysUserSalesExtById(Long userId)
+    {
+        return sysUserSalesExtMapper.deleteSysUserSalesExtById(userId);
+    }
+}

+ 45 - 10
suishenbang-system/src/main/java/com/dgtly/system/service/impl/SysUserServiceImpl.java

@@ -4,6 +4,8 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
+import com.dgtly.system.domain.*;
+import com.dgtly.system.mapper.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,16 +17,6 @@ import com.dgtly.common.core.text.Convert;
 import com.dgtly.common.exception.BusinessException;
 import com.dgtly.common.utils.StringUtils;
 import com.dgtly.common.utils.security.Md5Utils;
-import com.dgtly.system.domain.SysPost;
-import com.dgtly.system.domain.SysRole;
-import com.dgtly.system.domain.SysUser;
-import com.dgtly.system.domain.SysUserPost;
-import com.dgtly.system.domain.SysUserRole;
-import com.dgtly.system.mapper.SysPostMapper;
-import com.dgtly.system.mapper.SysRoleMapper;
-import com.dgtly.system.mapper.SysUserMapper;
-import com.dgtly.system.mapper.SysUserPostMapper;
-import com.dgtly.system.mapper.SysUserRoleMapper;
 import com.dgtly.system.service.ISysConfigService;
 import com.dgtly.system.service.ISysUserService;
 
@@ -57,6 +49,10 @@ public class SysUserServiceImpl implements ISysUserService
     private ISysConfigService configService;
 
 
+    @Autowired
+    private SysUserSalesExtMapper userSalesExtMapper;
+
+
 
     /**
      * 根据条件分页查询用户列表
@@ -195,6 +191,28 @@ public class SysUserServiceImpl implements ISysUserService
         return rows;
     }
 
+    /**
+     * 插入用户信息和销售扩展信息
+     *
+     * @param user 用户信息
+     * @return 结果
+     */
+    @Override
+    @Transactional
+    public Integer insertUserAndSalesExt(SysUser user) {
+        // 新增用户信息
+        int rows = userMapper.insertUser(user);
+        // 新增用户岗位关联
+        insertUserPost(user);
+        // 新增用户与角色管理
+        insertUserRole(user);
+        SysUserSalesExt userSalesExt = user.getSysUserSalesExt();
+        userSalesExt.setUserId(user.getUserId());
+        userSalesExtMapper.insertOrUpSysUserSalesExt(userSalesExt);
+        return rows;
+    }
+
+
     /**
      * 修改保存用户信息
      * 
@@ -229,6 +247,23 @@ public class SysUserServiceImpl implements ISysUserService
         return userMapper.updateUser(user);
     }
 
+    /**
+     * 修改用户个人详细信息和销售销售相关信息
+     *
+     * @param user 用户信息
+     * @return 结果
+     */
+    @Override
+    @Transactional
+    public int updateUserInfoAndSalesExt(SysUser user) {
+        // 删除用户与角色关联
+        SysUser u =  userMapper.selectUserByLoginName(user.getLoginName());
+        SysUserSalesExt userSalesExt = user.getSysUserSalesExt();
+        userSalesExt.setUserId(u.getUserId());
+        userSalesExtMapper.insertOrUpSysUserSalesExt(userSalesExt);
+        return userMapper.updateUser(user);
+    }
+
     /**
      * 修改公司员工状态
      *

+ 51 - 4
suishenbang-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -25,10 +25,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="updateBy"     column="update_by"    />
 		<result property="updateTime"   column="update_time"  />
 		<result property="remark"       column="remark"       />
-        <result property="isBindingWx"       column="isBindingWx"       />
+        <result property="isBindingWx"  column="isBindingWx"  />
+        <!--<result property="salesLevel"   column="sales_level"  />-->
+        <!--<result property="orgName"      column="org_name"     />-->
+        <!--<result property="orgCode"      column="org_code"     />-->
 		<association property="dept"    column="dept_id" javaType="SysDept" resultMap="deptResult" />
 		<association property="company"    column="company_id" javaType="SysCompany" resultMap="companyResult" />
-		<collection  property="roles"   javaType="java.util.List"        resultMap="RoleResult" />
+        <association property="sysUserSalesExt"    column="user_id" javaType="SysUserSalesExt" resultMap="SysUserSalesExtResult" />
+        <collection  property="roles"   javaType="java.util.List"        resultMap="RoleResult" />
+
 	</resultMap>
 	
 	<resultMap id="deptResult" type="SysDept">
@@ -53,28 +58,43 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="dataScope"     column="data_scope"    />
 		<result property="status"       column="role_status"    />
 	</resultMap>
+
+    <resultMap id="SysUserSalesExtResult" type="SysUserSalesExt" >
+        <result property="userId"    column="user_id"    />
+        <result property="orgCode"    column="org_code"    />
+        <result property="salesLevel"    column="sales_level"    />
+        <result property="orgName"    column="org_name"    />
+        <result property="sapEmployeeId"    column="sap_employee_id"    />
+        <result property="bossEmployeeId"    column="boss_employee_id"    />
+        <result property="bossName"    column="boss_name"    />
+    </resultMap>
 	
 	<sql id="selectUserVo">
         select  u.user_id,u.company_id, u.dept_id, u.login_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.password, u.salt, u.status,
         		u.del_flag, u.login_ip, u.login_date, u.create_time, u.remark,
         		c.company_name,
        		    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
+       		    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
 		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
 			 left join sys_user_role ur on u.user_id = ur.user_id
 			 left join sys_role r on r.role_id = ur.role_id
+			 left join sys_user_sales_ext suse on suse.user_id = u.user_id
     </sql>
 	
 	<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
 		select u.user_id,u.company_id, u.dept_id, u.login_name, u.user_name, u.email, u.avatar,
           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,wqu.count1 isBindingWx
+          d.dept_name, d.leader,
+         wqu.count1 isBindingWx,
+        suse.sales_level,suse.org_name,suse.org_code
 		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
+        left join sys_user_sales_ext suse on suse.user_id = u.user_id
         left join (select sys_user_id, count(userId) as count1 from wx_qy_user group by sys_user_id) wqu on wqu.sys_user_id = u.user_id
 		where u.del_flag = '0'
 		<if test="loginName != null and loginName != ''">
@@ -279,6 +299,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         from sys_user u
     </select>
 
+    <insert id="insertUserNoKey" parameterType="SysUser" >
+        insert into sys_user(
+        <if test="userId != null and userId != 0">user_id,</if>
+        <if test="deptId != null and deptId != 0">dept_id,</if>
+        <if test="loginName != null and loginName != ''">login_name,</if>
+        <if test="userName != null and userName != ''">user_name,</if>
+        <if test="email != null and email != ''">email,</if>
+        <if test="phonenumber != null and phonenumber != ''">phonenumber,</if>
+        <if test="sex != null and sex != ''">sex,</if>
+        <if test="password != null and password != ''">password,</if>
+        <if test="salt != null and salt != ''">salt,</if>
+        <if test="status != null and status != ''">status,</if>
+        create_time
+        )values(
+        <if test="userId != null and userId != ''">#{userId},</if>
+        <if test="deptId != null and deptId != ''">#{deptId},</if>
+        <if test="loginName != null and loginName != ''">#{loginName},</if>
+        <if test="userName != null and userName != ''">#{userName},</if>
+        <if test="email != null and email != ''">#{email},</if>
+        <if test="phonenumber != null and phonenumber != ''">#{phonenumber},</if>
+        <if test="sex != null and sex != ''">#{sex},</if>
+        <if test="password != null and password != ''">#{password},</if>
+        <if test="salt != null and salt != ''">#{salt},</if>
+        <if test="status != null and status != ''">#{status},</if>
+        sysdate()
+        )
+    </insert>
 
 
 </mapper> 

+ 123 - 0
suishenbang-system/src/main/resources/mapper/system/SysUserSalesExtMapper.xml

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dgtly.system.mapper.SysUserSalesExtMapper">
+    
+    <resultMap type="SysUserSalesExt" id="SysUserSalesExtResult">
+        <result property="userId"    column="user_id"    />
+        <result property="orgCode"    column="org_code"    />
+        <result property="salesLevel"    column="sales_level"    />
+        <result property="orgName"    column="org_name"    />
+        <result property="sapEmployeeId"    column="sap_employee_id"    />
+        <result property="bossEmployeeId"    column="boss_employee_id"    />
+        <result property="bossName"    column="boss_name"    />
+    </resultMap>
+
+    <sql id="selectSysUserSalesExtVo">
+        select user_id, org_code, sales_level, org_name, sap_employee_id, boss_employee_id, boss_name from sys_user_sales_ext
+    </sql>
+
+    <select id="selectSysUserSalesExtList" parameterType="SysUserSalesExt" resultMap="SysUserSalesExtResult">
+        <include refid="selectSysUserSalesExtVo"/>
+        <where>  
+            <if test="orgCode != null  and orgCode != ''"> and org_code = #{orgCode}</if>
+            <if test="salesLevel != null  and salesLevel != ''"> and sales_level = #{salesLevel}</if>
+            <if test="orgName != null  and orgName != ''"> and org_name like concat('%', #{orgName}, '%')</if>
+            <if test="sapEmployeeId != null "> and sap_employee_id = #{sapEmployeeId}</if>
+            <if test="bossEmployeeId != null "> and boss_employee_id = #{bossEmployeeId}</if>
+            <if test="bossName != null  and bossName != ''"> and boss_name like concat('%', #{bossName}, '%')</if>
+        </where>
+    </select>
+    
+    <select id="selectSysUserSalesExtById" parameterType="Long" resultMap="SysUserSalesExtResult">
+        <include refid="selectSysUserSalesExtVo"/>
+        where user_id = #{userId}
+    </select>
+        
+    <insert id="insertSysUserSalesExt" parameterType="SysUserSalesExt">
+        insert into sys_user_sales_ext
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="userId != null ">user_id,</if>
+            <if test="orgCode != null  and orgCode != ''">org_code,</if>
+            <if test="salesLevel != null  and salesLevel != ''">sales_level,</if>
+            <if test="orgName != null  and orgName != ''">org_name,</if>
+            <if test="sapEmployeeId != null ">sap_employee_id,</if>
+            <if test="bossEmployeeId != null ">boss_employee_id,</if>
+            <if test="bossName != null  and bossName != ''">boss_name,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="userId != null ">#{userId},</if>
+            <if test="orgCode != null  and orgCode != ''">#{orgCode},</if>
+            <if test="salesLevel != null  and salesLevel != ''">#{salesLevel},</if>
+            <if test="orgName != null  and orgName != ''">#{orgName},</if>
+            <if test="sapEmployeeId != null ">#{sapEmployeeId},</if>
+            <if test="bossEmployeeId != null ">#{bossEmployeeId},</if>
+            <if test="bossName != null  and bossName != ''">#{bossName},</if>
+         </trim>
+    </insert>
+
+    <update id="updateSysUserSalesExt" parameterType="SysUserSalesExt">
+        update sys_user_sales_ext
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="orgCode != null  and orgCode != ''">org_code = #{orgCode},</if>
+            <if test="salesLevel != null  and salesLevel != ''">sales_level = #{salesLevel},</if>
+            <if test="orgName != null  and orgName != ''">org_name = #{orgName},</if>
+            <if test="sapEmployeeId != null ">sap_employee_id = #{sapEmployeeId},</if>
+            <if test="bossEmployeeId != null ">boss_employee_id = #{bossEmployeeId},</if>
+            <if test="bossName != null  and bossName != ''">boss_name = #{bossName},</if>
+        </trim>
+        where user_id = #{userId}
+    </update>
+
+    <delete id="deleteSysUserSalesExtById" parameterType="Long">
+        delete from sys_user_sales_ext where user_id = #{userId}
+    </delete>
+
+    <delete id="deleteSysUserSalesExtByIds" parameterType="String">
+        delete from sys_user_sales_ext where user_id in 
+        <foreach item="userId" collection="array" open="(" separator="," close=")">
+            #{userId}
+        </foreach>
+    </delete>
+
+    <insert id="insertOrUpSysUserSalesExt"  useGeneratedKeys="true" keyProperty="userId" keyColumn="user_id"
+            parameterType="SysUserSalesExt">
+        insert INTO
+        sys_user_sales_ext
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            user_id,
+            <if test="orgCode != null  and orgCode != ''">org_code,</if>
+            <if test="salesLevel != null  and salesLevel != ''">sales_level,</if>
+            <if test="orgName != null  and orgName != ''">org_name,</if>
+            <if test="sapEmployeeId != null ">sap_employee_id,</if>
+            <if test="bossEmployeeId != null ">boss_employee_id,</if>
+            <if test="bossName != null  and bossName != ''">boss_name,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            #{userId},
+            <if test="orgCode != null  and orgCode != ''">#{orgCode},</if>
+            <if test="salesLevel != null  and salesLevel != ''">#{salesLevel},</if>
+            <if test="orgName != null  and orgName != ''">#{orgName},</if>
+            <if test="sapEmployeeId != null ">#{sapEmployeeId},</if>
+            <if test="bossEmployeeId != null ">#{bossEmployeeId},</if>
+            <if test="bossName != null  and bossName != ''">#{bossName},</if>
+        </trim>
+        ON DUPLICATE KEY UPDATE
+        <trim suffixOverrides=",">
+            <if test="orgCode != null  and orgCode != ''">org_code = #{orgCode},</if>
+            <if test="salesLevel != null  and salesLevel != ''">sales_level = #{salesLevel},</if>
+            <if test="orgName != null  and orgName != ''">org_name = #{orgName},</if>
+            <if test="sapEmployeeId != null ">sap_employee_id = #{sapEmployeeId},</if>
+            <if test="bossEmployeeId != null ">boss_employee_id = #{bossEmployeeId},</if>
+            <if test="bossName != null  and bossName != ''">boss_name = #{bossName},</if>
+        </trim>
+  </insert>
+
+    <select id="selectUserIdsByBossEmployeeId" parameterType="String" resultType="String">
+        select user_id
+        from sys_user_sales_ext
+        where boss_employee_id = #{bossEmployeeId,}
+    </select>
+    
+</mapper>