Commit eadd1576 by 黄芝文

Merge branch 'developer' into 'master'

Developer

See merge request !83
parents 59fec0fa 029e846d
......@@ -10,4 +10,17 @@ public interface TestApiService {
* @return
*/
public String checkThread(String id,Long expireTime);
/**
* 拉取自己部门企业微信通讯录
* @return
*/
public String listSelfQywxUser(String corpid,String secretVal, String dataId);
/**
* 拉取所有部门企业微信通讯录
* @return
*/
public String listAllQywxUser(String corpid,String secretVal, String dataId);
}
......@@ -150,7 +150,12 @@ public interface PreDealLogMapper {
* @return
*/
public int countByDataId(@Param("taskId") String taskId, @Param("dataId") String dataId,@Param("dataType") int dataType);
/**
* 获取列表
* @param taskId
* @param dataType
*/
public List<String> listDataIdByTaskIdAndDataType(@Param("taskId") String taskId,@Param("dataType") int dataType);
/**
* 统计任务数量
* countExcepAndPreByTaskId
......@@ -159,5 +164,14 @@ public interface PreDealLogMapper {
* @return
*/
public TabHaobanPreDealLog getLastPreDataByTaskId(@Param("taskId") String taskId);
/**
* 获取根节点
* @param taskId
* @return
*/
public String getRootDataIdByWxEnterpriseIdAndTaskId(@Param("wxEnterpriseId") String wxEnterpriseId,@Param("taskId") String taskId);
}
\ No newline at end of file
......@@ -138,11 +138,26 @@ public interface PreDealService {
* @return
*/
public boolean existDataId(String taskId, String dataId);
/**
* 获取dataIdList
* @param taskId
* @param dateType
* @return
*/
public List<String> listDataIdByTaskIdAndDataType(String taskId, Integer dateType);
/**
* 获取最近的数据
*
* @return
*/
public PreDealLogInfoDTO getLastPreDataByTaskId(String taskId);
/**
* 获取根节点
*
* @return
*/
public String getRootDataIdByWxEnterpriseIdAndTaskId(String wxEnterpriseId,String taskId);
}
......@@ -11,12 +11,17 @@ import com.gic.haoban.manage.api.enums.PreDealTypeEnum;
import com.gic.haoban.manage.service.dao.mapper.PreDealLogMapper;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import com.gic.haoban.manage.service.service.PreDealService;
import com.gic.haoban.manage.service.task.QywxGroupSyncOperation;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
......@@ -29,13 +34,30 @@ public class PreDealServiceImpl implements PreDealService {
@Autowired
private PreDealLogMapper preDealLogMapper;
private static final Logger logger = LoggerFactory.getLogger(PreDealServiceImpl.class);
private static final int pageSize = 1000;
@Override
public boolean insert(List<TabHaobanPreDealLog> list) {
if (CollectionUtils.isEmpty(list)) {
return true;
}
preDealLogMapper.insertSelectiveBatch(list);
//插入不存在的我们pre表的企业微信数据
int count = list.size();
int pre = count/pageSize+1;
int yushu = count%pageSize;
if(yushu==0){
pre = pre - 1;
}
int i= 0;
while(i<pre){
logger.info("这是第{}次,进入",i);
i++;
int fromIndex = (i-1)*pageSize;
int toIndex = (count-fromIndex) > pageSize ? (fromIndex+pageSize):count;
List<TabHaobanPreDealLog>subList = list.subList(fromIndex, toIndex);
preDealLogMapper.insertSelectiveBatch(subList);
}
return true;
}
......@@ -121,10 +143,26 @@ public class PreDealServiceImpl implements PreDealService {
int i = preDealLogMapper.countByDataId(taskId, dataId,PreDealTypeEnum.clerk.getVal());
return i > 0;
}
@Override
public List<String> listDataIdByTaskIdAndDataType(String taskId, Integer dateType) {
List<String> list = preDealLogMapper.listDataIdByTaskIdAndDataType(taskId,dateType);
if(list == null){
list = new ArrayList<String>();
}
return list;
}
@Override
public PreDealLogInfoDTO getLastPreDataByTaskId(String taskId) {
TabHaobanPreDealLog preDealLog = preDealLogMapper.getLastPreDataByTaskId(taskId);
return EntityUtil.changeEntityByOrika(PreDealLogInfoDTO.class,preDealLog);
}
@Override
public String getRootDataIdByWxEnterpriseIdAndTaskId(String wxEnterpriseId,
String taskId) {
return preDealLogMapper.getRootDataIdByWxEnterpriseIdAndTaskId( wxEnterpriseId, taskId);
}
}
package com.gic.haoban.manage.service.service.out.impl;
import java.util.List;
import com.gic.haoban.manage.api.dto.SecretSettingDTO;
import com.gic.haoban.manage.api.dto.WxEnterpriseDTO;
import com.gic.haoban.manage.api.enums.SecretTypeEnum;
import com.gic.haoban.manage.api.service.TestApiService;
import com.gic.haoban.manage.service.service.SecretSettingService;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.wechat.api.dto.qywx.UserDTO;
import com.gic.wechat.api.service.qywx.QywxUserApiService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
......@@ -11,6 +22,13 @@ import org.springframework.stereotype.Service;
@Service
public class TestServiceImpl implements TestApiService {
private static final Logger logger= LoggerFactory.getLogger(TestServiceImpl.class);
@Autowired
private QywxUserApiService qywxUserApiService;
@Autowired
private WxEnterpriseService wxEnterpriseService;
@Autowired
private SecretSettingService secretSettingService;
@Override
public String checkThread(String id, Long expireTime) {
logger.info("测试-start:{}",id);
......@@ -25,4 +43,28 @@ public class TestServiceImpl implements TestApiService {
logger.info("测试-end:{}",id);
return id;
}
@Override
public String listSelfQywxUser(String corpid,String secretVal, String dataId) {
long t = System.currentTimeMillis();
List<UserDTO> list = this.qywxUserApiService.listSelfDepartmentUser(corpid, secretVal, dataId, 0);
logger.info("耗时为===============>{}毫秒",(System.currentTimeMillis()-t));
if (null != list) {
logger.info("微信获取部门成员数量为:{}",list.size());
}else {
logger.info("微信获取部门成员数量异常");
}
return "";
}
@Override
public String listAllQywxUser(String corpid,String secretVal, String dataId) {
long t = System.currentTimeMillis();
List<UserDTO> list = this.qywxUserApiService.listSelfDepartmentUser(corpid, secretVal, dataId, 1);
logger.info("耗时为===============>{}毫秒",(System.currentTimeMillis()-t));
if (null != list) {
logger.info("微信获取部门成员数量为:{}",list.size());
}else {
logger.info("微信获取部门成员数量异常");
}
return "";
}
}
......@@ -31,6 +31,7 @@ import com.gic.wechat.api.dto.qywx.UserDTO;
import com.gic.wechat.api.service.qywx.QywxDepartmentApiService;
import com.gic.wechat.api.service.qywx.QywxUserApiService;
import com.vdurmont.emoji.EmojiParser;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -50,6 +51,7 @@ import java.util.stream.Collectors;
@Service
public class QywxGroupSyncOperation implements BaseSyncOperation {
private static final Logger logger = LoggerFactory.getLogger(QywxGroupSyncOperation.class);
private static final int pageSize = 500;
@Autowired
private DepartmentService departmentService;
......@@ -189,28 +191,77 @@ public class QywxGroupSyncOperation implements BaseSyncOperation {
@Override
public void dealSuccess(String taskId, String dataId, String enterpriseId, String wxEnterpriseId) {
WxEnterpriseDTO wxEnterpriseDTO = wxEnterpriseService.selectById(wxEnterpriseId);
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(wxEnterpriseId, SecretTypeEnum.HAOBAN_HELP.getVal());
if (null == secretSetting||secretSetting.getCheckFlag()==0) {
logger.info("没有配置secret:{},{}",taskId,wxEnterpriseId);
return ;
}
List<UserDTO> list = this.qywxUserApiService.listSelfDepartmentUser(wxEnterpriseDTO.getCorpid(), secretSetting.getSecretVal(), dataId, 0);
TabHaobanPreDealLog preData = preDealService.getByDataId(taskId, dataId, PreDealTypeEnum.group.getVal(), -1);
String pDataId = preData.getpDataId();
if("0".equals(pDataId)){
//根级部门
List<UserDTO> list = this.qywxUserApiService.listSelfDepartmentUser(wxEnterpriseDTO.getCorpid(), secretSetting.getSecretVal(), dataId, 1);
if (null == list) {
logger.info("微信获取部门成员异常:{},{}",taskId,dataId);
return;
}
logger.info("是否已经进来了,进来");
//预处理门店 写入预处理表
if (CollectionUtils.isNotEmpty(list)) {
List<String> dataList = preDealService.listDataIdByTaskIdAndDataType(taskId, PreDealTypeEnum.clerk.getVal());
List<TabHaobanPreDealLog> preDealLogList = list.stream().filter(mid -> !dataList.contains(mid.getUserid())
).map(userDTO -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(userDTO.getUserid());
dealLog.setpDataId(dataId);
dealLog.setDataType(PreDealTypeEnum.clerk.getVal());
dealLog.setStatusFlag(0);
dealLog.setDataContent(EmojiFilterUtil.removeAllEmoji(userDTO.getName()));
dealLog.setTaskId(taskId);
dealLog.setWxEnterpriseId(wxEnterpriseId);
dealLog.setEnterpriseId(enterpriseId);
return dealLog;
}).collect(Collectors.toList());
//插入不存在的我们pre表的企业微信数据
preDealService.insert(preDealLogList);
}
}
boolean b = preDealService.updateStatusByDataId(taskId, dataId,PreDealTypeEnum.group.getVal(), PreDealStatusEnum.computed.getVal(), "成功");
if (!b) {
logger.info("成功修改错误!{}", dataId);
return;
}
List<TabHaobanPreDealLog> preList = preDealService.listReByPDataId(taskId, dataId);
if (CollectionUtils.isNotEmpty(preList)) {
Set<String> mid = preList.stream().map(tab -> tab.getDataId()).collect(Collectors.toSet());
dealDepartmentToMq(taskId, mid, SyncTaskStatusEnum.group_sync);
} else {
// checkSelfDepartmentTask(taskId,wxEnterpriseId,enterpriseId,wxEnterpriseDTO.getCorpid(), secretSetting.getSecretVal());
checkDepartmentTask(taskId);
}
}
private void checkSelfDepartmentTask(String taskId,String wxEnterpriseId,String enterpriseId,String corpid,String secretVal) {
boolean b = preDealService.checkTask(taskId, PreDealTypeEnum.group.getVal());
if (!b) {
return;
}
//TODO 插入pre-clerk
//获取根节点
String dataId = preDealService.getRootDataIdByWxEnterpriseIdAndTaskId(wxEnterpriseId, taskId);
List<UserDTO> list = this.qywxUserApiService.listSelfDepartmentUser(corpid, secretVal, dataId, 1);
if (null == list) {
logger.info("微信获取部门成员异常:{},{}",taskId,dataId);
return;
}
logger.info("是否已经进来了,进来");
//预处理门店 写入预处理表
if (CollectionUtils.isNotEmpty(list)) {
List<TabHaobanPreDealLog> preDealLogList = list.stream().filter(mid -> {
boolean flag = preDealService.existDataId(taskId, mid.getUserid());
if (flag) {
return false;
}
return true;
}).map(userDTO -> {
List<String> dataList = preDealService.listDataIdByTaskIdAndDataType(taskId, PreDealTypeEnum.clerk.getVal());
List<TabHaobanPreDealLog> preDealLogList = list.stream().filter(mid -> !dataList.contains(mid.getUserid())
).map(userDTO -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(userDTO.getUserid());
dealLog.setpDataId(dataId);
......@@ -222,20 +273,20 @@ public class QywxGroupSyncOperation implements BaseSyncOperation {
dealLog.setEnterpriseId(enterpriseId);
return dealLog;
}).collect(Collectors.toList());
preDealService.insert(preDealLogList);
}
boolean b = preDealService.updateStatusByDataId(taskId, dataId,PreDealTypeEnum.group.getVal(), PreDealStatusEnum.computed.getVal(), "成功");
if (!b) {
logger.info("成功修改错误!{}", dataId);
return;
}
List<TabHaobanPreDealLog> preList = preDealService.listReByPDataId(taskId, dataId);
if (CollectionUtils.isNotEmpty(preList)) {
Set<String> mid = preList.stream().map(tab -> tab.getDataId()).collect(Collectors.toSet());
dealDepartmentToMq(taskId, mid, SyncTaskStatusEnum.group_sync);
} else {
checkDepartmentTask(taskId);
//插入不存在的我们pre表的企业微信数据
int count = preDealLogList.size();
int pre = count/1000+1;
int i= 0;
while(i<pre){
i++;
int fromIndex = (i-1)*1000;
int toIndex = (count-fromIndex) > 1000 ? (fromIndex+1000):count;
List<TabHaobanPreDealLog>subList = preDealLogList.subList(fromIndex, toIndex);
preDealService.insert(subList);
}
}
//处理导购任务
checkDepartmentTask(taskId);
}
@Override
......@@ -248,6 +299,7 @@ public class QywxGroupSyncOperation implements BaseSyncOperation {
String key = "haoban_sync_department_task_" + taskId;
RedisUtil.lock(key, 3L);
TabHaobanSyncTask syncTask = syncTaskService.getSyncTask(taskId);
//同步成功 进入门店处理
if (syncTask.getStatusFlag().equals(SyncTaskStatusEnum.group_sync.getVal())) {
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.clerk_sync.getVal());
......@@ -262,8 +314,6 @@ public class QywxGroupSyncOperation implements BaseSyncOperation {
}
RedisUtil.unlock(key);
}
/**
* 放入mq处理部门数据
*
......
......@@ -318,6 +318,15 @@
and data_type=#{dataType}
</if>
</select>
<select id="listDataIdByTaskIdAndDataType" resultType="java.lang.String">
select
data_id
from tab_haoban_pre_deal_log
where task_id = #{taskId}
and data_type =#{dataType}
</select>
<select id="getLastPreDataByTaskId" resultMap="BaseResultMap">
select
......@@ -325,4 +334,15 @@
from tab_haoban_pre_deal_log
where task_id = #{taskId,jdbcType=INTEGER} order by update_time desc limit 1
</select>
<select id="getRootDataIdByWxEnterpriseIdAndTaskId" resultType="java.lang.String">
select
data_id
from tab_haoban_pre_deal_log
where task_id = #{taskId}
and p_data_id =0
and wx_enterprise_id =#{wxEnterpriseId} limit 1
</select>
</mapper>
\ No newline at end of file
import java.util.List;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
public class test {
public static void main(String[] args) {
//插入不存在的我们pre表的企业微信数据
int pageSize = 500;
int count = 345;
int pre = count/pageSize+1;
int yushu = count%pageSize;
if(yushu==0){
pre = pre- 1;
}
int i= 0;
while(i<pre){
System.out.println("这是第{}次,进入"+i);
i++;
int fromIndex = (i-1)*pageSize;
int toIndex = (count-fromIndex) > pageSize ? (fromIndex+pageSize):count;
System.out.println("fromIndex=============>"+fromIndex);
System.out.println("toIndex=============>"+toIndex);
}
}
}
......@@ -140,4 +140,16 @@ public class TestController extends WebBaseController {
Page<MaidianLogDTO> page = maidianLogApiService.queryList(hbversion, pageInfo);
return resultResponse(HaoBanErrCode.ERR_1,page);
}
@RequestMapping("/deal-slef-qywx-sys-department")
public HaobanResponse dealSys1(String corpid,String secretVal,String dataId) {
testApiService.listSelfQywxUser(corpid, secretVal, dataId);
return resultResponse(HaoBanErrCode.ERR_1);
}
@RequestMapping("/deal-all-qywx-sys-department")
public HaobanResponse dealSys2(String corpid,String secretVal,String dataId) {
testApiService.listAllQywxUser(corpid, secretVal, dataId);
return resultResponse(HaoBanErrCode.ERR_1);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment