Commit f933c9bf authored by 赵啸非's avatar 赵啸非

添加mybatis xml映射文件

parent 945f2d4f
......@@ -325,6 +325,12 @@ public class UserEntity extends UserEntityExt implements IUser {
public Long getSiteId() {
return this.siteId;
}
@Override
public String getSiteIds() {
return "";
}
/**
* 设置 站点id
* @param siteId
......
package com.mortals.xhx.common.utils;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.site.model.SiteTreeSelect;
import com.mortals.xhx.module.site.service.SiteService;
import lombok.AllArgsConstructor;
import lombok.extern.apachecommons.CommonsLog;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
import java.util.List;
/**
* @author: zxfei
......@@ -11,7 +17,7 @@ import lombok.extern.apachecommons.CommonsLog;
* @description:
**/
@AllArgsConstructor
@CommonsLog
@Slf4j
public class SyncTreeSiteThread implements Runnable {
private SiteService siteService;
......@@ -20,9 +26,13 @@ public class SyncTreeSiteThread implements Runnable {
@Override
public void run() {
log.info("刷新站点树");
siteService.setSiteTree(siteService.siteTree(context), context);
log.info("刷新用户站点树=》userID:{}",context.getUser().getId());
List<SiteTreeSelect> siteTreeSelects = siteService.siteTree(context);
siteService.setSiteTree(siteTreeSelects, context);
log.info("刷新用户站点树=》siteTree:{}", JSON.toJSONString(siteService.getSiteTree(context)));
}
}
package com.mortals.xhx.daemon.applicationservice;
import com.mortals.framework.util.ThreadPool;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.mortals.framework.springcloud.service.IApplicationService;
/**
* 应用级服务,在应用启动、停止过程中调用
*
* 缺陷:类加载完成后就调用,会由于某些组件还未初始化而导致服务异常,
* 比如Kafka的连接以及订阅初始化比较靠后,在服务启动过程中就调用操作kafka相关API,将导致失败
* 比如开启Socket监听端口,可能端口都接收到连接请求了,但数据库连接还未初始化完成,导致请求处理失败
* 比如定时任务,任务执行时,相关缓存还未初始化,导致处理失败
*
* 应用场景:
* 1、无依赖其它模块或框架的数据初始化等操作
* @author GM
* @date 2020年7月15日
*/
@Component
public class DemoStartService implements IApplicationService {
private static Log logger = LogFactory.getLog(DemoStartService.class);
@Override
public void start() {
ThreadPool.getInstance().init(10);
logger.info("开始服务..[配置已加载完成,但部分框架还未初始化,比如:Kafka]");
}
......
package com.mortals.xhx.daemon.applicationservice;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.springcloud.config.web.BaseWebMvcConfigurer;
import com.mortals.framework.util.ThreadPool;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.base.system.user.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.common.utils.SyncTreeSiteThread;
import com.mortals.xhx.module.site.model.SiteTreeSelect;
import com.mortals.xhx.module.site.service.SiteService;
import org.apache.commons.logging.Log;
......@@ -34,12 +40,24 @@ public class DemoStartedService implements IApplicationStartedService {
@Autowired
private ICacheService cacheService;
@Autowired
private UserService userService;
@Override
public void start() {
logger.info("开始服务..[配置已加载完成,并且所有框架都已经初始化]");
List<SiteTreeSelect> siteTreeSelects = siteService.siteTree(null);
siteService.setSiteTree(siteTreeSelects, null);
logger.info("开始服务..[初始化用户站点树]");
UserEntity userEntity = new UserEntity();
userEntity.initAttrValue();
userEntity.setId(0L);
Context contextTemp = new Context();
contextTemp.setUser(userEntity);
SyncTreeSiteThread syncTreeSiteThread = new SyncTreeSiteThread(siteService, contextTemp);
ThreadPool.getInstance().execute(syncTreeSiteThread);
userService.find(new UserQuery()).stream().forEach(user->{
Context context = new Context();
context.setUser(user);
ThreadPool.getInstance().execute(new SyncTreeSiteThread(siteService,context));
});
}
@Override
......
......@@ -10,6 +10,7 @@ import com.mortals.xhx.module.site.model.SiteTreeSelect;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* SiteService
......@@ -29,9 +30,17 @@ public interface SiteService extends ICRUDCacheService<SiteEntity, Long> {
*/
List<SiteTreeSelect> siteTree(Context context);
/**
* 根据站点列表获取区域站点树
*
* @param context
* @return
*/
List<SiteTreeSelect> getSiteTree(Context context);
void setSiteTree(List<SiteTreeSelect> list, Context context);
}
\ No newline at end of file
......@@ -22,10 +22,7 @@ import com.mortals.xhx.module.site.model.SiteEntity;
import com.mortals.xhx.module.site.service.SiteService;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -38,7 +35,11 @@ import java.util.stream.Collectors;
@Service("siteService")
public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteEntity, Long> implements SiteService {
private List<SiteTreeSelect> siteTreeList;
// private List<SiteTreeSelect> siteTreeList;
/**
* 根据用户id 暂存对应站点树 默认0为全站点树
*/
private Map<Long, List<SiteTreeSelect>> siteTreeMap = new HashMap<>();
@Autowired
private AreaService areaService;
......@@ -62,31 +63,33 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
super.saveBefore(entity, context);
}
void checkSite(SiteQuery siteQuery,Context context){
if(!ObjectUtils.isEmpty(context)&&!ObjectUtils.isEmpty(context.getUser())&&!ObjectUtils.isEmpty(context.getUser().getSiteId())){
}
}
@Override
public List<SiteTreeSelect> siteTree(Context context) {
Map<String, AreaEntity> areaMap = new HashMap<>();
SiteQuery siteQuery = new SiteQuery();
Set<String> siteSet = Arrays.stream(context.getUser().getSiteIds().split(",")).filter(f->!f.equals("")).collect(Collectors.toSet());
if (!ObjectUtils.isEmpty(siteSet)) {
List<Long> siteIdList = siteSet.stream().map(Long::parseLong).collect(Collectors.toList());
if(!ObjectUtils.isEmpty(siteIdList)){
siteQuery.idList(siteIdList);
}
}
List<SiteEntity> siteList = this.find(siteQuery);
Map<String, SiteEntity> siteMap = siteList.parallelStream().collect(Collectors.toMap(x -> x.getSiteCode(), y -> y, (o, n) -> n));
//遍历过滤站点树
for (SiteEntity siteEntity : siteList) {
AreaEntity areaEntity = areaService.getExtCache(siteEntity.getAreaCode());
//根据区域添加父节点
if (!ObjectUtils.isEmpty(areaEntity) && !ObjectUtils.isEmpty(areaEntity.getPid())) {
if (!ObjectUtils.isEmpty(areaEntity)
&& !ObjectUtils.isEmpty(areaEntity.getPid())) {
//递归查找父节点并添加
areaMap.put(areaEntity.getAreaCode(), areaEntity);
//递归
recursionFn(areaMap, areaEntity);
}
}
return buildSiteTreeSelect(areaMap, siteMap);
//areaMap 为当前站点相关区域树结构 已经剔除不必要的分支结构
return buildSiteTreeSelect(areaMap, siteMap);
}
public List<SiteTreeSelect> buildSiteTreeSelect(Map<String, AreaEntity> areaMap, Map<String, SiteEntity> siteMap) {
......@@ -107,10 +110,10 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
}
//构建站点树
List<SiteTreeSelect> collect = returnList.stream().map(item ->
List<SiteTreeSelect> collect = returnList.parallelStream().map(item ->
new SiteTreeSelect(item, siteMap)
).collect(Collectors.toList());
this.siteTreeList = collect;
//this.siteTreeList = collect;
return collect;
}
......@@ -159,30 +162,36 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
@Override
protected void updateAfter(SiteEntity entity, Context context) throws AppException {
//刷新站点树
new Thread(new SyncTreeSiteThread(this,context)).start();
new Thread(new SyncTreeSiteThread(this, context)).start();
super.updateAfter(entity, context);
}
@Override
protected void saveAfter(SiteEntity entity, Context context) throws AppException {
//刷新站点树
new Thread(new SyncTreeSiteThread(this,context)).start();
new Thread(new SyncTreeSiteThread(this, context)).start();
super.saveAfter(entity, context);
}
@Override
protected void removeBefore(Long[] ids, Context context) throws AppException {
new Thread(new SyncTreeSiteThread(this,context)).start();
new Thread(new SyncTreeSiteThread(this, context)).start();
super.removeBefore(ids, context);
}
@Override
public List<SiteTreeSelect> getSiteTree(Context context) {
return siteTreeList;
List<SiteTreeSelect> siteTreeSelects = siteTreeMap.get(context.getUser().getId());
//如果所属站点为空返回全节点树
if (ObjectUtils.isEmpty(siteTreeSelects)) {
return siteTreeSelects;
} else {
return siteTreeMap.get(0);
}
}
@Override
public void setSiteTree(List<SiteTreeSelect> list, Context context) {
this.siteTreeList = list;
siteTreeMap.put(context.getUser().getId(), list);
}
}
\ No newline at end of file
package com.mortals.xhx.module.site.web;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
......@@ -75,17 +76,17 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic
siteTree = this.service.siteTree(getContext());
}
//校验
Long siteId = getContext().getUser().getSiteId();
String siteIds = getContext().getUser().getSiteIds();
Set<String> siteSet = Arrays.stream(siteIds.split(",")).collect(Collectors.toSet());
if(!ObjectUtils.isEmpty(siteId)){
//遍历树
SiteTreeSelect temp =reFucurs(siteTree,siteId.toString());
if (!ObjectUtils.isEmpty(temp)) {
siteTree = new ArrayList<>();
siteTree.add(temp);
}
}
// Long siteId = getContext().getUser().getSiteId();
// String siteIds = getContext().getUser().getSiteIds();
// Set<String> siteSet = Arrays.stream(siteIds.split(",")).collect(Collectors.toSet());
// if(!ObjectUtils.isEmpty(siteId)){
// //遍历树
// SiteTreeSelect temp =reFucurs(siteTree,siteId.toString());
// if (!ObjectUtils.isEmpty(temp)) {
// siteTree = new ArrayList<>();
// siteTree.add(temp);
// }
// }
model.put("siteTree", siteTree);
this.init(model, getContext());
recordSysLog(request, busiDesc + " 【成功】");
......@@ -140,4 +141,10 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic
}
return temp;
}*/
public static void main(String[] args) {
//深度克隆
//ObjectUtil.clone()
}
}
\ 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