Commit 4c094e14 by fudahua

批量处理关联关系

parent baa8291d
......@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Set;
@Mapper
public interface TabHaobanStoreRelationMapper {
......@@ -64,6 +65,14 @@ public interface TabHaobanStoreRelationMapper {
public int deleteAllStoreRalation(@Param("enterpriseId") String enterpriseId);
/**
* 删除门店
*
* @param enterpriseId
* @return
*/
public int deleteStoreRalationByStoreIds(@Param("enterpriseId") String enterpriseId, Set<String> storeIds);
/**
* 所有门店id
*
* @param wxEnterpriseId
......
......@@ -113,15 +113,25 @@ public class StoreRangeServiceImpl implements StoreRangeService {
return true;
}
String enterpriseId = list.get(0).getEnterpriseId();
//导购绑定列表 容错处理
List<StaffClerkRelationDTO> staffClerkRelationDTOS = staffClerkRelationService.listBindStoreIdByEnterpriseId(enterpriseId);
Map<String, Set<String>> oldStaffStoreIdByWxEidMap = staffClerkRelationDTOS.stream().collect(Collectors.groupingBy(StaffClerkRelationDTO::getWxEnterpriseId, Collectors.mapping(dto -> dto.getStoreId(), Collectors.toSet())));
//根据wxEnterpriseId 分组
Map<String, Set<String>> newStoreIdBywxEnterpriseMap = list.stream().collect(Collectors.groupingBy(TabStoreRelation::getWxEnterpriseId, Collectors.mapping(dto -> dto.getStoreId(), Collectors.toSet())));
//所有就的门店old绑定列表
Map<String, Set<String>> oldStoreIdBywxEnterpriseMap = getOldStoreIdsByWxEnterpriseId(enterpriseId);
Map<String, Set<String>> oldStoreIdBywxEnterpriseMap = getOldStoreIdsByWxEnterpriseId(enterpriseId, oldStaffStoreIdByWxEidMap);
//需要解绑门店
Set<String> needUnBindStoreIds = new HashSet<>();
//需要新增权限门店
Set<String> needAddStoreIds = new HashSet<>();
oldStoreIdBywxEnterpriseMap.forEach((wxEid, oldStoreIds) -> {
Set<String> newStoreIds = newStoreIdBywxEnterpriseMap.get(wxEid);
if (CollectionUtils.isEmpty(newStoreIds)) {
//没有新的 老的都需要删除
needUnBindStoreIds.addAll(oldStoreIds);
return;
}
Sets.SetView<String> needDelStoreIds = Sets.difference(oldStoreIds, newStoreIds);
......@@ -129,18 +139,47 @@ public class StoreRangeServiceImpl implements StoreRangeService {
logger.info("wxEnterpriseId:{},{}", wxEid, JSONObject.toJSONString(needDelStoreIds));
Set<String> mid = needDelStoreIds.stream().collect(Collectors.toSet());
needUnBindStoreIds.addAll(mid);
//需要新增
Set<String> old = oldStaffStoreIdByWxEidMap.get(wxEid);
if (CollectionUtils.isEmpty(old)) {
needAddStoreIds.addAll(newStoreIds);
return;
}
Sets.SetView<String> needAdd = Sets.difference(newStoreIds, old);
needAddStoreIds.addAll(needAdd);
});
//这些门店解除绑定
staffClerkRelationService.delBindByStoreIds(null, needUnBindStoreIds, optStaffId, channelCode);
//先删除 后新增
tabHaobanStoreRelationMapper.deleteAllStoreRalation(enterpriseId);
//批量插入
insertStoreRelationBatch(list);
// //先删除 后新增
// tabHaobanStoreRelationMapper.deleteAllStoreRalation(enterpriseId);
// //批量插入
// insertStoreRelationBatch(list);
//批量处理关联关系
dealStoreRelation(list, enterpriseId, needUnBindStoreIds, needAddStoreIds);
return true;
}
private void dealStoreRelation(List<TabStoreRelation> storeRelations, String enterpriseId) {
//todo 动态删除
/**
* 批量处理关联关系
*
* @param storeRelations
* @param enterpriseId
* @param delStoreIds
* @param addStoreIds
*/
private void dealStoreRelation(List<TabStoreRelation> storeRelations, String enterpriseId, Set<String> delStoreIds, Set<String> addStoreIds) {
//先删除 后新增
if (CollectionUtils.isNotEmpty(delStoreIds)) {
tabHaobanStoreRelationMapper.deleteStoreRalationByStoreIds(enterpriseId, delStoreIds);
}
if (CollectionUtils.isNotEmpty(addStoreIds)) {
insertStoreRelationBatch(storeRelations);
} else {
List<TabStoreRelation> adds = storeRelations.stream().filter(dto -> addStoreIds.contains(dto.getStoreId())).collect(Collectors.toList());
//批量插入
insertStoreRelationBatch(adds);
}
}
/**
......@@ -167,7 +206,7 @@ public class StoreRangeServiceImpl implements StoreRangeService {
* @param enterpriseId
* @return
*/
private Map<String, Set<String>> getOldStoreIdsByWxEnterpriseId(String enterpriseId) {
private Map<String, Set<String>> getOldStoreIdsByWxEnterpriseId(String enterpriseId, Map<String, Set<String>> oldStaffStoreIdByWxEidMap) {
Map<String, Set<String>> ret = new HashMap<>();
Set<String> wxEnterpriseIds = new HashSet<>();
......@@ -179,9 +218,9 @@ public class StoreRangeServiceImpl implements StoreRangeService {
}
//导购绑定列表
List<StaffClerkRelationDTO> staffClerkRelationDTOS = staffClerkRelationService.listBindStoreIdByEnterpriseId(enterpriseId);
Map<String, Set<String>> oldStaffStoreIdByWxEidMap = staffClerkRelationDTOS.stream().collect(Collectors.groupingBy(StaffClerkRelationDTO::getWxEnterpriseId, Collectors.mapping(dto -> dto.getStoreId(), Collectors.toSet())));
if (CollectionUtils.isNotEmpty(staffClerkRelationDTOS)) {
// List<StaffClerkRelationDTO> staffClerkRelationDTOS = staffClerkRelationService.listBindStoreIdByEnterpriseId(enterpriseId);
// Map<String, Set<String>> oldStaffStoreIdByWxEidMap = staffClerkRelationDTOS.stream().collect(Collectors.groupingBy(StaffClerkRelationDTO::getWxEnterpriseId, Collectors.mapping(dto -> dto.getStoreId(), Collectors.toSet())));
if (oldStaffStoreIdByWxEidMap != null && oldStaffStoreIdByWxEidMap.size() > 0) {
wxEnterpriseIds.addAll(oldStaffStoreIdByWxEidMap.keySet());
}
......
......@@ -195,4 +195,16 @@
where enterprise_id=#{enterpriseId}
and status_flag=1
</update>
<update id="deleteStoreRalationByStoreIds">
update tab_haoban_store_relation
set
status_flag = 0,
update_time = now()
where enterprise_id=#{enterpriseId}
<foreach collection="storeIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
and status_flag=1
</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