Commit c169ebe8 by fudahua

同步通讯录 同步加锁

parent b9c3c435
......@@ -119,4 +119,14 @@ public interface PreDealLogMapper {
*/
public List<TabHaobanPreDealLog> listRebuildByTaskId(@Param("taskId") String taskId, @Param("dataType") int dataType);
/**
* 更新状态
*
* @param taskId
* @param dataId
* @param status
* @return
*/
public int updateExceptionToPre(@Param("taskId") String taskId);
}
\ No newline at end of file
......@@ -102,4 +102,12 @@ public interface PreDealService {
* @return
*/
public List<TabHaobanPreDealLog> listRebuildByTaskId(String taskId, int dataType);
/**
* 把任务重置到预处理
*
* @param taskId
* @return
*/
public boolean updateExceptionToPre(String taskId);
}
......@@ -6,6 +6,7 @@ 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 org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -24,6 +25,9 @@ public class PreDealServiceImpl implements PreDealService {
@Override
public boolean insert(List<TabHaobanPreDealLog> list) {
if (CollectionUtils.isEmpty(list)) {
return true;
}
for (TabHaobanPreDealLog tab : list) {
preDealLogMapper.insert(tab);
}
......@@ -82,4 +86,10 @@ public class PreDealServiceImpl implements PreDealService {
public List<TabHaobanPreDealLog> listRebuildByTaskId(String taskId, int dataType) {
return preDealLogMapper.listRebuildByTaskId(taskId, dataType);
}
@Override
public boolean updateExceptionToPre(String taskId) {
int i = preDealLogMapper.updateExceptionToPre(taskId);
return i >= 0;
}
}
......@@ -174,6 +174,8 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
SyncTaskStatusEnum syncTaskStatusEnum = (dataType == PreDealTypeEnum.group.getVal() ? SyncTaskStatusEnum.group_sync
: (dataType == PreDealTypeEnum.store.getVal() ? SyncTaskStatusEnum.store_sync : SyncTaskStatusEnum.clerk_sync));
logger.info("处理开始:类型:{}", syncTaskStatusEnum.getVal());
//处理预处理数据
preDealService.updateExceptionToPre(taskId);
dealDepartmentToMq(taskId, midList, syncTaskStatusEnum);
}
......
......@@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
......@@ -146,9 +147,21 @@ public class GroupSyncOperation implements BaseSyncOperation {
return;
}
List<StoreDTO> storeDTOS = storeService.listStoreByStoreGroupId(dataId);
List<TabHaobanPreDealLog> hasExists = preDealService.listByPDataId(taskId, dataId, -1);
Set<String> hasDatas = new HashSet<>();
if (CollectionUtils.isNotEmpty(hasExists)) {
hasDatas = hasExists.stream().map(mid -> mid.getDataId()).collect(Collectors.toSet());
}
//预处理门店 写入预处理表
if (CollectionUtils.isNotEmpty(storeDTOS)) {
List<TabHaobanPreDealLog> preDealLogList = storeDTOS.stream().map(storeDTO -> {
Set<String> finalHasDatas = hasDatas;
List<TabHaobanPreDealLog> preDealLogList = storeDTOS.stream().filter(mid -> {
if (finalHasDatas.contains(mid.getStoreId())) {
return false;
}
return true;
}).map(storeDTO -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(storeDTO.getStoreId());
dealLog.setpDataId(dataId);
......
......@@ -31,6 +31,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
......@@ -144,10 +145,21 @@ public class StoreSyncOperation implements BaseSyncOperation {
return;
}
List<ClerkListDTO> clerks = clerkService.getClerkByStoreId(enterpriseId, dataId);
List<TabHaobanPreDealLog> hasExists = preDealService.listByPDataId(taskId, dataId, -1);
Set<String> hasDatas = new HashSet<>();
if (CollectionUtils.isNotEmpty(hasExists)) {
hasDatas = hasExists.stream().map(mid -> mid.getDataId()).collect(Collectors.toSet());
}
logger.info("导入clerk:{},{},{}", enterpriseId, dataId, JSONObject.toJSONString(clerks));
//预处理门店 写入预处理表
if (CollectionUtils.isNotEmpty(clerks)) {
List<TabHaobanPreDealLog> preDealLogList = clerks.stream().map(clerkMid -> {
Set<String> finalHasDatas = hasDatas;
List<TabHaobanPreDealLog> preDealLogList = clerks.stream().filter(mid -> {
if (finalHasDatas.contains(mid.getClerkId())) {
return false;
}
return true;
}).map(clerkMid -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(clerkMid.getClerkId());
dealLog.setpDataId(dataId);
......@@ -185,7 +197,7 @@ public class StoreSyncOperation implements BaseSyncOperation {
// syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.compute.getVal());
// dealSyncOperationApiService.unlockTask(syncTask.getWxEnterpriseId());
} else {
logger.info("处理成员开始");
logger.info("处理成员开始:{}", taskId);
Set<String> dataIds = dealLogs.stream().map(TabHaobanPreDealLog::getDataId).collect(Collectors.toSet());
dealDepartmentToMq(taskId, dataIds, SyncTaskStatusEnum.clerk_sync);
}
......
......@@ -260,4 +260,15 @@
where task_id = #{taskId} and data_type=#{dataType}
and status_flag in(0,3)
</select>
<update id="updateExceptionToPre">
update tab_haoban_pre_deal_log
<set>
status_flag = 0,
update_time = now()
</set>
where status_flag = 3 and task_id=#{taskId}
</update>
</mapper>
\ No newline at end of file
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