Kaynağa Gözat

随着多个事业部接入随身邦,1个经销商用户对应多个经销商编码,并且分布在不同的事业部,随身邦需要支持经销商用户自行切换方式,经销商指标达成页面,经销商指标达成页面,下拉列表所有事业部关联经销商统一显示,切换后页面刷新

njs 2 yıl önce
ebeveyn
işleme
696ee7faf6

+ 126 - 5
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/AnalysisDiyCustomerComponent.java

@@ -14,10 +14,12 @@ import com.dgtly.sync.mapper.CustomersMapper;
 import com.dgtly.sync.mapper.SyncFailDetailMapper;
 import com.dgtly.sync.utils.CustomerAccessTokenUtil;
 import com.dgtly.sync.utils.CustomerAccessTokenUtil.UrlType;
+import com.dgtly.system.domain.AssRelcustomerinfo;
 import com.dgtly.system.domain.SysUser;
 import com.dgtly.system.domain.SysUserExt;
 import com.dgtly.system.mapper.SysUserExtMapper;
 import com.dgtly.system.mapper.SysUserMapper;
+import com.dgtly.system.service.IAssRelcustomerinfoService;
 import com.dgtly.system.service.ISysConfigService;
 import com.dgtly.system.service.impl.SysUserServiceImpl;
 import com.dgtly.wxportal.domain.WxQyUser;
@@ -57,6 +59,8 @@ public class AnalysisDiyCustomerComponent {
     private ISyncLogService syncLogService;
     @Autowired
     private SyncFailDetailMapper syncFailDetailMapper;
+    @Autowired
+    private IAssRelcustomerinfoService assRelcustomerinfoService;
     private Long deptId;
     private Long[] roleIds;
     private Long[] roleGuideIds;
@@ -452,7 +456,6 @@ public class AnalysisDiyCustomerComponent {
     public Integer buildSysUser(JSONObject json, Set<String> loginNameSet, int isManager, List<SyncFailDetail> failDetails,String packageId, Map<String,Customers> cusMap){
         JSONArray jsonArray = json.getJSONArray("userlist");
         int count = 0;
-
         for(int i =0;i<jsonArray.size();i++){
             JSONObject jo = jsonArray.getJSONObject(i);
 
@@ -465,6 +468,10 @@ public class AnalysisDiyCustomerComponent {
                 Boolean isDelete = jo.getBoolean("isDelete");
                 String userid = jo.getString("userid");
                 String customerCode = jo.getString("depCode");
+                String customerName=null;
+                if (isManager != 0) {
+                 customerName=jo.getString("depName");
+                }
                 /*企业微信中成员启用状态。1表示启用的成员,0表示被禁用*/
                 /*if(enable==null||enable.trim().equals("0")){
                     continue;
@@ -511,20 +518,25 @@ public class AnalysisDiyCustomerComponent {
                     /**======== 构建diy用户扩展信息表 start===============*/
                     SysUserExt userExt = new SysUserExt();
                     userExt.setSalesLevel("customer_level");
-                    userExt.setCustomerCode(jo.getString("depCode"));
                     userExt.setIsCustomerManager(isManager + "");
                     userExt.setSapEmployeeId(userNo);
 
                     userExt.setPostName("DIY经销商");
                     String orgCode = jo.getString("depCode");
+                    String code=null;
                     if(cusMap.containsKey(orgCode)){
                         Customers c = cusMap.get(orgCode);
                         userExt.setOrgCode(c.getChainsCode());
                         userExt.setOrgName(c.getChainsName());
+                        code=c.getChainsCode();
                     }else{
                         userExt.setOrgCode(orgCode);
                     }
-
+                    if (isManager == 0) {
+                        userExt.setCustomerCode(code);
+                    }else{
+                        userExt.setCustomerCode(jo.getString("depCode"));
+                    }
 //                    /**======== 构建diy用户wx信息表 start===============*/
 //                    WxQyUser wxQyUser = new WxQyUser();
 //                    wxQyUser.setUserid(jo.getString("userid"));
@@ -543,6 +555,48 @@ public class AnalysisDiyCustomerComponent {
 //                        user.setRoleIds(roleIds);
 //                        sysUserService.updateUser(user);
 //                    }
+                    List<AssRelcustomerinfo>  assRelcustomerinfoList=new ArrayList<>();
+                    if(!customerCode.equals(user.getSysUserExt().getCustomerCode())){
+                         assRelcustomerinfoList= assRelcustomerinfoService.selectRelcustomerinfoByKunnr(customerCode,user.getUserId().toString());
+                        if(assRelcustomerinfoList !=null && assRelcustomerinfoList.size()>0){
+                            assRelcustomerinfoService.deleteAssRelcustomerinfoByUserId(user.getUserId().toString(),customerCode);
+                        }
+                        assRelcustomerinfoList= assRelcustomerinfoService.selectRelcustomerinfoByKunnr(customerCode,user.getUserId().toString());
+                        if(assRelcustomerinfoList==null || assRelcustomerinfoList.size()==0){
+                            AssRelcustomerinfo info=new AssRelcustomerinfo();
+                            info.setUserId(user.getUserId().toString());
+                            if(isManager == 0){
+                            info.setMainkunnr(user.getSysUserExt().getOrgCode());
+                            }else{
+                                info.setMainkunnr(user.getSysUserExt().getCustomerCode());
+                            }
+                            info.setMainname1(user.getSysUserExt().getOrgName());
+                            info.setKunnr(customerCode);
+                            if(customerName !=null && customerName !=""){
+                                info.setName1(customerName);
+                            }else{
+                                if(isManager == 0){
+                                    String orgCode = jo.getString("depCode");
+                                    String code=null;
+                                    if(cusMap.containsKey(orgCode)){
+                                        Customers c = cusMap.get(orgCode);
+                                        code=c.getChainsCode();
+                                    }else{
+                                     code=orgCode;
+                                    }
+                                    String Name=assRelcustomerinfoService.selectCustomerName(code);
+                                    info.setName1(Name);
+                                }else{
+                                String Name=assRelcustomerinfoService.selectCustomerName(customerCode);
+                                info.setName1(Name);
+                                }
+                            }
+                            info.setGlfs("用户关联");
+                            assRelcustomerinfoService.insertAssRelcustomerinfo(info);
+
+                        }
+
+                    }
                     sysUserService.insertUserRole(user.getUserId(), roleIds[0]);
 
                     if (!user.getSysUserExt().getIsCustomerManager().contains(isManager + "") ||
@@ -693,7 +747,29 @@ public class AnalysisDiyCustomerComponent {
                     /*已经存在的,需要先清空职位,更新职位
                     (首先查询当前用户职位,判断当前职位是否包含当前职位,不存在就更新,存在就不更新)*/
                     SysUser user = sysUserService.selectUserByLoginName(userid);
+                    List<AssRelcustomerinfo>  assRelcustomerinfoList=new ArrayList<>();
+                    if(!customerCode.equals(user.getSysUserExt().getCustomerCode())){
+                          assRelcustomerinfoList= assRelcustomerinfoService.selectRelcustomerinfoByKunnr(customerCode,user.getUserId().toString());
+                        if(assRelcustomerinfoList !=null && assRelcustomerinfoList.size()>0){
+                            assRelcustomerinfoService.deleteAssRelcustomerinfoByUserId(user.getUserId().toString(),customerCode);
+                        }
+                        assRelcustomerinfoList= assRelcustomerinfoService.selectRelcustomerinfoByKunnr(customerCode,user.getUserId().toString());
+                        if(assRelcustomerinfoList==null || assRelcustomerinfoList.size()==0){
+                            String customerName=assRelcustomerinfoService.selectCustomerName(customerCode);
+                            AssRelcustomerinfo info=new AssRelcustomerinfo();
+                            info.setUserId(user.getUserId().toString());
+                            info.setMainkunnr(user.getSysUserExt().getCustomerCode());
+                            info.setMainname1(user.getSysUserExt().getOrgName());
+                            info.setKunnr(customerCode);
+                            if(customerName !=null && customerName!=""){
+                                info.setName1(customerName);
+                            }
+                            info.setGlfs("用户关联");
+                            assRelcustomerinfoService.insertAssRelcustomerinfo(info);
+
+                        }
 
+                    }
                     if (diyNameSet.contains(userid)) {
                         sysUserService.insertUserRole(user.getUserId(), roleIds[0]);
                         sysUserService.insertUserRole(user.getUserId(), roleCwIds[0]);
@@ -754,7 +830,6 @@ public class AnalysisDiyCustomerComponent {
 
         return count;
     }
-
     /**
      * 构建 插入分销 3.4 分销业务员人员 List
      * @param json
@@ -765,7 +840,6 @@ public class AnalysisDiyCustomerComponent {
     public Integer buildSysUserFx(JSONObject json, Set<String> loginNameSet, int isManager, List<SyncFailDetail> failDetails,String packageId, Map<String,Customers> cusMap){
         JSONArray jsonArray = json.getJSONArray("userlist");
         int count = 0;
-
         for(int i =0;i<jsonArray.size();i++){
             JSONObject jo = jsonArray.getJSONObject(i);
 
@@ -778,6 +852,10 @@ public class AnalysisDiyCustomerComponent {
                 Boolean isDelete = jo.getBoolean("isDelete");
                 String userid = jo.getString("userid");
                 String customerCode = jo.getString("depCode");
+                String customerName=null;
+                if (isManager != 0) {
+                    customerName=jo.getString("depName");
+                }
                 /*企业微信中成员启用状态。1表示启用的成员,0表示被禁用*/
                 /*if(enable==null||enable.trim().equals("0")){
                     continue;
@@ -855,6 +933,49 @@ public class AnalysisDiyCustomerComponent {
 //                        user.setRoleIds(roleIds);
 //                        sysUserService.updateUser(user);
 //                    }
+                    List<AssRelcustomerinfo>  assRelcustomerinfoList=new ArrayList<>();
+                    if(!customerCode.equals(user.getSysUserExt().getCustomerCode())){
+                         assRelcustomerinfoList= assRelcustomerinfoService.selectRelcustomerinfoByKunnr(customerCode,user.getUserId().toString());
+                        if(assRelcustomerinfoList !=null && assRelcustomerinfoList.size()>0){
+                            assRelcustomerinfoService.deleteAssRelcustomerinfoByUserId(user.getUserId().toString(),customerCode);
+                        }
+                        assRelcustomerinfoList= assRelcustomerinfoService.selectRelcustomerinfoByKunnr(customerCode,user.getUserId().toString());
+                        if(assRelcustomerinfoList==null && assRelcustomerinfoList.size()==0){
+                            AssRelcustomerinfo info=new AssRelcustomerinfo();
+                            info.setUserId(user.getUserId().toString());
+                            if(isManager == 0){
+                                info.setMainkunnr(user.getSysUserExt().getOrgCode());
+                            }else{
+                                info.setMainkunnr(user.getSysUserExt().getCustomerCode());
+                            }
+                            info.setMainname1(user.getSysUserExt().getOrgName());
+                            info.setKunnr(customerCode);
+                            if(customerName !=null && customerName !=""){
+                                info.setName1(customerName);
+                            }else{
+                                if(isManager == 0){
+                                    String orgCode = jo.getString("depCode");
+                                    String code=null;
+                                    if(cusMap.containsKey(orgCode)){
+                                        Customers c = cusMap.get(orgCode);
+                                        code=c.getChainsCode();
+                                    }else{
+                                        code=orgCode;
+                                    }
+                                    String Name=assRelcustomerinfoService.selectCustomerName(code);
+                                    info.setName1(Name);
+                                }else{
+                                    String Name=assRelcustomerinfoService.selectCustomerName(customerCode);
+                                    info.setName1(Name);
+                                }
+                            }
+                            info.setGlfs("用户关联");
+                            assRelcustomerinfoService.insertAssRelcustomerinfo(info);
+
+                        }
+
+                    }
+
                     sysUserService.insertUserRole(user.getUserId(), roleIds[0]);
 
                     if (!user.getSysUserExt().getIsCustomerManager().contains(isManager + "") ||

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

@@ -78,14 +78,19 @@ public class CustomerAccessTokenUtil {
     @PostConstruct
     public void init() {
         tokenUrl=domain+"/auth/jwt/v1/gettoken?appid=%s&appsecret=%s";
+        //获取经销商负责人列表存在name,code
         managerListUrl =domain+"/wechatwork/diydt/v1/user/manager/list?access_token=%s";
+        //获取经销商门店导购人员列表
         storeGuideListUrl =domain+"/wechatwork/diydt/v1/user/storeGuide/list?access_token=%s";
+        //获取经销商财务人员列表(分页)存在name,code
         financeListUrl =domain+"/wechatwork/diydt/v2/user/finance/list?page=%s&access_token=%s";
+        //获取经销商仓管人员列表(分页)存在name,code
         warehouseListUrl =domain+"/wechatwork/diydt/v2/user/warehouse/list?page=%s&access_token=%s";
         /**
         bossListUrl =domain+"/wechatwork/chuwei/v1/user/boss/list?access_token=%s";
         managerUrl =domain+"/wechatwork/chuwei/v1/user/manager/list?access_token=%s";
         */
+        //获取经销商分销业务员人员列表(分页)存在name,code
         resellerUrl =domain+"/api/diydt/v2/user/reseller/list?page=%s&access_token=%s";
       /*  businessUrl =domain+"/wechatwork/chuwei/v1/user/business/list?access_token=%s";*/
         allRoleUrl=domain+"/api/chuwei/v1/user/all/list?access_token=%s";

+ 12 - 0
suishenbang-system/src/main/java/com/dgtly/system/domain/AssRelcustomerinfo.java

@@ -39,6 +39,18 @@ public class AssRelcustomerinfo extends BaseEntity
 
     private Date etlCreatetime;
 
+    private String userId;
+
+    public void setUserId(String userId)
+    {
+        this.userId = userId;
+    }
+
+    public String getUserId()
+    {
+        return userId;
+    }
+
     public void setId(Long id) 
     {
         this.id = id;

+ 11 - 1
suishenbang-system/src/main/java/com/dgtly/system/mapper/AssRelcustomerinfoMapper.java

@@ -1,6 +1,8 @@
 package com.dgtly.system.mapper;
 
 import com.dgtly.system.domain.AssRelcustomerinfo;
+import org.apache.ibatis.annotations.Param;
+
 import java.util.List;
 
 /**
@@ -59,7 +61,15 @@ public interface AssRelcustomerinfoMapper
      */
     public int deleteAssRelcustomerinfoByIds(String[] ids);
 
-    List<AssRelcustomerinfo> selectRelcustomerinfoListByorgCode(String orgCode);
+    public int deleteAssRelcustomerinfoByGlfs(String glfs);
+
+    public int deleteAssRelcustomerinfoByUserId(@Param("userId") String userId,@Param("customerCode") String customerCode);
+
+    List<AssRelcustomerinfo> selectRelcustomerinfoListByorgCode(@Param("orgCode") String orgCode ,@Param("userId")String userId);
 
     void relationCustomerOnlineSync();
+
+    String selectCustomerName(@Param("customerId") String customerId);
+
+    List<AssRelcustomerinfo> selectRelcustomerinfoByKunnr(@Param("kunnr") String kunnr,@Param("userId") String userId);
 }

+ 10 - 1
suishenbang-system/src/main/java/com/dgtly/system/service/IAssRelcustomerinfoService.java

@@ -1,6 +1,8 @@
 package com.dgtly.system.service;
 
 import com.dgtly.system.domain.AssRelcustomerinfo;
+import org.apache.ibatis.annotations.Param;
+
 import java.util.List;
 
 /**
@@ -51,6 +53,10 @@ public interface IAssRelcustomerinfoService
      */
     public int deleteAssRelcustomerinfoByIds(String ids);
 
+    public int deleteAssRelcustomerinfoByGlfs(String glfs);
+
+    public int deleteAssRelcustomerinfoByUserId(String userId,String customerCode);
+
     /**
      * 删除多经销商关联信息
      * 
@@ -59,7 +65,10 @@ public interface IAssRelcustomerinfoService
      */
     public int deleteAssRelcustomerinfoById(Long id);
 
-    List<AssRelcustomerinfo> selectRelcustomerinfoListByorgCode(String orgCode);
+    List<AssRelcustomerinfo> selectRelcustomerinfoListByorgCode(String orgCode,String userId);
+
+    List<AssRelcustomerinfo> selectRelcustomerinfoByKunnr(String kunnr,String userId);
 
     void relationCustomerOnlineSync();
+    String selectCustomerName(String customerId);
 }

+ 22 - 2
suishenbang-system/src/main/java/com/dgtly/system/service/impl/AssRelcustomerinfoServiceImpl.java

@@ -83,6 +83,16 @@ public class AssRelcustomerinfoServiceImpl implements IAssRelcustomerinfoService
         return assRelcustomerinfoMapper.deleteAssRelcustomerinfoByIds(Convert.toStrArray(ids));
     }
 
+    @Override
+    public int deleteAssRelcustomerinfoByGlfs(String glfs) {
+        return assRelcustomerinfoMapper.deleteAssRelcustomerinfoByGlfs(glfs);
+    }
+
+    @Override
+    public int deleteAssRelcustomerinfoByUserId(String userId,String customerCode) {
+        return assRelcustomerinfoMapper.deleteAssRelcustomerinfoByUserId(userId,customerCode);
+    }
+
     /**
      * 删除多经销商关联信息
      * 
@@ -96,12 +106,22 @@ public class AssRelcustomerinfoServiceImpl implements IAssRelcustomerinfoService
     }
 
     @Override
-    public List<AssRelcustomerinfo> selectRelcustomerinfoListByorgCode(String orgCode) {
-        return assRelcustomerinfoMapper.selectRelcustomerinfoListByorgCode(orgCode);
+    public List<AssRelcustomerinfo> selectRelcustomerinfoListByorgCode(String orgCode,String userId) {
+        return assRelcustomerinfoMapper.selectRelcustomerinfoListByorgCode(orgCode,userId);
+    }
+
+    @Override
+    public List<AssRelcustomerinfo> selectRelcustomerinfoByKunnr(String kunnr,String userId) {
+        return assRelcustomerinfoMapper.selectRelcustomerinfoByKunnr(kunnr,userId);
     }
 
     @Override
     public void relationCustomerOnlineSync() {
         assRelcustomerinfoMapper.relationCustomerOnlineSync();
     }
+
+    @Override
+    public String selectCustomerName(String customerId) {
+        return assRelcustomerinfoMapper.selectCustomerName(customerId);
+    }
 }

+ 39 - 2
suishenbang-system/src/main/resources/mapper/system/AssRelcustomerinfoMapper.xml

@@ -22,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectAssRelcustomerinfoVo">
-        select id, create_by, create_time, update_by, update_time, is_delete, mainkunnr, mainname1, kunnr, name1, glfs, glsj, enddate, ETL_createtime from ass_relcustomerinfo
+        select id, create_by, create_time, update_by, update_time, is_delete, mainkunnr, mainname1, kunnr, name1, glfs, glsj, enddate, ETL_createtime,user_id from ass_relcustomerinfo
     </sql>
 
     <select id="selectAssRelcustomerinfoList" parameterType="AssRelcustomerinfo" resultMap="AssRelcustomerinfoResult">
@@ -60,10 +60,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             GROUP BY
                 ar.mainkunnr
             )
+            or user_id=#{userId}
         GROUP BY
             kunnr
     </select>
 
+    <select id="selectRelcustomerinfoByKunnr" resultMap="AssRelcustomerinfoResult">
+        <include refid="selectAssRelcustomerinfoVo"/>
+        where
+        glfs = '用户关联'
+        <if test="kunnr !=null and kunnr !=''">
+           and kunnr=#{kunnr}
+        </if>
+        <if test="userId !=null and userId !=''">
+            and user_id=#{userId}
+        </if>
+    </select>
+
     <insert id="insertAssRelcustomerinfo" parameterType="AssRelcustomerinfo" useGeneratedKeys="true" keyProperty="id">
         insert into ass_relcustomerinfo
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -80,6 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="glsj != null ">glsj,</if>
             <if test="enddate != null ">enddate,</if>
             <if test="etlCreatetime != null ">ETL_createtime,</if>
+            <if test="userId != null ">user_id,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="createBy != null  and createBy != ''">#{createBy},</if>
@@ -95,6 +109,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="glsj != null ">#{glsj},</if>
             <if test="enddate != null ">#{enddate},</if>
             <if test="etlCreatetime != null ">#{etlCreatetime},</if>
+            <if test="userId != null ">#{userId},</if>
          </trim>
     </insert>
 
@@ -164,5 +179,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
-    
+
+    <delete id="deleteAssRelcustomerinfoByGlfs" parameterType="String">
+        delete from ass_relcustomerinfo where glfs =#{glfs}
+    </delete>
+
+    <delete id="deleteAssRelcustomerinfoByUserId" parameterType="String">
+        delete from ass_relcustomerinfo where 1=1
+        <if test="userId !=null and userId !='' ">
+            and  user_id =#{userId}
+        </if>
+        <if test="customerCode !=null and customerCode !='' ">
+            and kunnr=#{customerCode}
+        </if>
+         and glfs='用户关联'
+    </delete>
+
+
+    <select id="selectCustomerName" resultType="java.lang.String">
+        select customer_name from order_sales_sum_tuc_customer where 1=1
+        <if test="customerId !=null and customerId !='' ">
+            and customer_id=#{customerId}
+        </if> LIMIT 1
+    </select>
 </mapper>

+ 1 - 1
suishenbang-wxportal/suishenbang-wxportal-api/src/main/java/com/dgtly/wxportal/controller/EsignController.java

@@ -613,7 +613,7 @@ public class EsignController extends ApiBaseController {
         SysUser sysUser = userService.selectUserById(Long.parseLong(userId));
 //       /*根据org_code查询多个经销商列表*/
         List<SysUserExt> sysUserExtList = new ArrayStack<>();
-        List<AssRelcustomerinfo>  assRelcustomerinfoList= assRelcustomerinfoService.selectRelcustomerinfoListByorgCode(sysUser.getSysUserExt().getOrgCode());
+        List<AssRelcustomerinfo>  assRelcustomerinfoList= assRelcustomerinfoService.selectRelcustomerinfoListByorgCode(sysUser.getSysUserExt().getOrgCode(),sysUser.getUserId().toString());
         if (assRelcustomerinfoList.size()>0){
             for (AssRelcustomerinfo ar:assRelcustomerinfoList) {
                 SysUserExt sysUserExt = new SysUserExt();

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

@@ -125,7 +125,7 @@ public class WxPortalController extends ApiBaseController {
         SysUser sysUser = userService.selectUserById(Long.parseLong(userId));
         /*根据org_code查询多个经销商列表*/
         List<SysUserExt> sysUserExtList = new ArrayList<>();
-        List<AssRelcustomerinfo>  assRelcustomerinfoList= assRelcustomerinfoService.selectRelcustomerinfoListByorgCode(customerCode);
+        List<AssRelcustomerinfo>  assRelcustomerinfoList= assRelcustomerinfoService.selectRelcustomerinfoListByorgCode(customerCode,sysUser.getUserId().toString());
         if (assRelcustomerinfoList.size()>0){
             for (AssRelcustomerinfo ar:assRelcustomerinfoList) {
                 SysUserExt sysUserExt = new SysUserExt();