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

添加批量新增窗口业务接口

parent af099e2b
package com.mortals.xhx.common.utils;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.site.service.SiteService;
import lombok.AllArgsConstructor;
/**
* @author: zxfei
* @date: 2022/4/13 13:34
* @description:
**/
@AllArgsConstructor
public class SyncTreeSiteThread implements Runnable {
private SiteService siteService;
private Context context;
@Override
public void run() {
siteService.setSiteTree(siteService.siteTree(context), context);
}
}
package com.mortals.xhx.daemon.applicationservice; package com.mortals.xhx.daemon.applicationservice;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.springcloud.config.web.BaseWebMvcConfigurer; import com.mortals.framework.springcloud.config.web.BaseWebMvcConfigurer;
import com.mortals.xhx.module.site.model.SiteTreeSelect;
import com.mortals.xhx.module.site.service.SiteService;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -9,24 +12,33 @@ import org.springframework.stereotype.Component; ...@@ -9,24 +12,33 @@ import org.springframework.stereotype.Component;
import com.mortals.framework.springcloud.service.IApplicationStartedService; import com.mortals.framework.springcloud.service.IApplicationStartedService;
import java.util.List;
/** /**
* 应用级服务,在应用启动后、停止过程中调用 * 应用级服务,在应用启动后、停止过程中调用
* 应用已经完成启动完成,才调用该服务 * 应用已经完成启动完成,才调用该服务
* 应用场景: * 应用场景:
* 1、应用任务,应用启动后定时或间隔执行的任务 * 1、应用任务,应用启动后定时或间隔执行的任务
* 2、Socket服务端 * 2、Socket服务端
*
* @author GM * @author GM
* @date 2020年7月15日 * @date 2020年7月15日
*/ */
@Component @Component
//@ConditionalOnProperty(name="com.mortal",prefix = "",havingValue = "xxx")
public class DemoStartedService implements IApplicationStartedService { public class DemoStartedService implements IApplicationStartedService {
private static Log logger = LogFactory.getLog(DemoStartedService.class); private static Log logger = LogFactory.getLog(DemoStartedService.class);
@Autowired
private SiteService siteService;
@Autowired
private ICacheService cacheService;
@Override @Override
public void start() { public void start() {
logger.info("开始服务..[配置已加载完成,并且所有框架都已经初始化]"); logger.info("开始服务..[配置已加载完成,并且所有框架都已经初始化]");
List<SiteTreeSelect> siteTreeSelects = siteService.siteTree(null);
siteService.setSiteTree(siteTreeSelects, null);
} }
......
...@@ -28,4 +28,9 @@ public interface SiteService extends ICRUDService<SiteEntity, Long> { ...@@ -28,4 +28,9 @@ public interface SiteService extends ICRUDService<SiteEntity, Long> {
*/ */
List<SiteTreeSelect> siteTree(Context context); List<SiteTreeSelect> siteTree(Context context);
List<SiteTreeSelect> getSiteTree(Context context);
void setSiteTree(List<SiteTreeSelect> list, Context context);
} }
\ No newline at end of file
...@@ -5,12 +5,14 @@ import com.mortals.framework.model.Context; ...@@ -5,12 +5,14 @@ import com.mortals.framework.model.Context;
import com.mortals.framework.util.DataUtil; import com.mortals.framework.util.DataUtil;
import com.mortals.framework.util.StringUtils; import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.common.key.Constant; import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.common.utils.SyncTreeSiteThread;
import com.mortals.xhx.module.area.model.AreaEntity; import com.mortals.xhx.module.area.model.AreaEntity;
import com.mortals.xhx.module.area.model.AreaQuery; import com.mortals.xhx.module.area.model.AreaQuery;
import com.mortals.xhx.module.area.model.AreaTreeSelect; import com.mortals.xhx.module.area.model.AreaTreeSelect;
import com.mortals.xhx.module.area.service.AreaService; import com.mortals.xhx.module.area.service.AreaService;
import com.mortals.xhx.module.site.model.SiteQuery; import com.mortals.xhx.module.site.model.SiteQuery;
import com.mortals.xhx.module.site.model.SiteTreeSelect; import com.mortals.xhx.module.site.model.SiteTreeSelect;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
...@@ -34,6 +36,9 @@ import java.util.stream.Collectors; ...@@ -34,6 +36,9 @@ import java.util.stream.Collectors;
*/ */
@Service("siteService") @Service("siteService")
public class SiteServiceImpl extends AbstractCRUDServiceImpl<SiteDao, SiteEntity, Long> implements SiteService { public class SiteServiceImpl extends AbstractCRUDServiceImpl<SiteDao, SiteEntity, Long> implements SiteService {
private List<SiteTreeSelect> siteTreeList;
@Autowired @Autowired
private AreaService areaService; private AreaService areaService;
...@@ -52,7 +57,7 @@ public class SiteServiceImpl extends AbstractCRUDServiceImpl<SiteDao, SiteEntity ...@@ -52,7 +57,7 @@ public class SiteServiceImpl extends AbstractCRUDServiceImpl<SiteDao, SiteEntity
@Override @Override
protected void saveBefore(SiteEntity entity, Context context) throws AppException { protected void saveBefore(SiteEntity entity, Context context) throws AppException {
List<SiteEntity> siteEntities = this.find(new SiteQuery().areaCode(entity.getAreaCode())); List<SiteEntity> siteEntities = this.find(new SiteQuery().areaCode(entity.getAreaCode()));
entity.setSiteCode(entity.getAreaCode() + Constant.SITE_SPLIT_MARK + StringUtils.lpad(siteEntities.size() + 1,Constant.SITE_CODE_NUM)); entity.setSiteCode(entity.getAreaCode() + Constant.SITE_SPLIT_MARK + StringUtils.lpad(siteEntities.size() + 1, Constant.SITE_CODE_NUM));
super.saveBefore(entity, context); super.saveBefore(entity, context);
} }
...@@ -76,6 +81,16 @@ public class SiteServiceImpl extends AbstractCRUDServiceImpl<SiteDao, SiteEntity ...@@ -76,6 +81,16 @@ public class SiteServiceImpl extends AbstractCRUDServiceImpl<SiteDao, SiteEntity
return buildSiteTreeSelect(areaMap, siteMap); return buildSiteTreeSelect(areaMap, siteMap);
} }
@Override
public List<SiteTreeSelect> getSiteTree(Context context) {
return siteTreeList;
}
@Override
public void setSiteTree(List<SiteTreeSelect> list, Context context) {
this.siteTreeList = list;
}
public List<SiteTreeSelect> buildSiteTreeSelect(Map<String, AreaEntity> areaMap, Map<String, SiteEntity> siteMap) { public List<SiteTreeSelect> buildSiteTreeSelect(Map<String, AreaEntity> areaMap, Map<String, SiteEntity> siteMap) {
List<AreaEntity> list = areaMap.values().stream().collect(Collectors.toList()); List<AreaEntity> list = areaMap.values().stream().collect(Collectors.toList());
List<AreaEntity> returnList = new ArrayList<>(); List<AreaEntity> returnList = new ArrayList<>();
...@@ -91,9 +106,11 @@ public class SiteServiceImpl extends AbstractCRUDServiceImpl<SiteDao, SiteEntity ...@@ -91,9 +106,11 @@ public class SiteServiceImpl extends AbstractCRUDServiceImpl<SiteDao, SiteEntity
returnList = list; returnList = list;
} }
return returnList.stream().map(item -> List<SiteTreeSelect> collect = returnList.stream().map(item ->
new SiteTreeSelect(item, siteMap) new SiteTreeSelect(item, siteMap)
).collect(Collectors.toList()); ).collect(Collectors.toList());
this.siteTreeList = collect;
return collect;
} }
...@@ -134,4 +151,18 @@ public class SiteServiceImpl extends AbstractCRUDServiceImpl<SiteDao, SiteEntity ...@@ -134,4 +151,18 @@ public class SiteServiceImpl extends AbstractCRUDServiceImpl<SiteDao, SiteEntity
recursionFn(areaMap, areaEntity); recursionFn(areaMap, areaEntity);
} }
} }
@Override
protected void saveAfter(SiteEntity entity, Context context) throws AppException {
//刷新站点树
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();
super.removeBefore(ids, context);
}
} }
\ No newline at end of file
...@@ -67,7 +67,10 @@ public class SiteController extends BasePhpCRUDJsonMappingController<SiteService ...@@ -67,7 +67,10 @@ public class SiteController extends BasePhpCRUDJsonMappingController<SiteService
Map<String, Object> model = new HashMap<>(); Map<String, Object> model = new HashMap<>();
String busiDesc = this.getModuleDesc() + "构建站点树"; String busiDesc = this.getModuleDesc() + "构建站点树";
try { try {
List<SiteTreeSelect> siteTree = this.service.siteTree(getContext()); List<SiteTreeSelect> siteTree = this.service.getSiteTree(getContext());
if (ObjectUtils.isEmpty(siteTree)) {
siteTree = this.service.siteTree(getContext());
}
model.put("siteTree", siteTree); model.put("siteTree", siteTree);
this.init(model, getContext()); this.init(model, getContext());
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
......
package com.mortals.xhx.module.window.model.vo; package com.mortals.xhx.module.window.model.vo;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.window.model.WindowBusinessEntity;
import com.mortals.xhx.module.window.model.WindowEntity; import com.mortals.xhx.module.window.model.WindowEntity;
import com.mortals.xhx.module.window.model.WindowMatterEntity;
import com.mortals.xhx.module.workman.model.WorkmanEntity; import com.mortals.xhx.module.workman.model.WorkmanEntity;
import lombok.Data; import lombok.Data;
...@@ -18,4 +20,8 @@ public class WindowVo extends BaseEntityLong { ...@@ -18,4 +20,8 @@ public class WindowVo extends BaseEntityLong {
private List<WorkmanEntity> workmanList; private List<WorkmanEntity> workmanList;
private List<WindowBusinessEntity> windowBusinessList;
private List<WindowMatterEntity> windowMatterList;
} }
\ No newline at end of file
...@@ -11,9 +11,9 @@ import com.mortals.xhx.module.site.model.SiteBusinessEntity; ...@@ -11,9 +11,9 @@ import com.mortals.xhx.module.site.model.SiteBusinessEntity;
import com.mortals.xhx.module.site.model.SiteBusinessQuery; import com.mortals.xhx.module.site.model.SiteBusinessQuery;
import com.mortals.xhx.module.site.model.SiteEntity; import com.mortals.xhx.module.site.model.SiteEntity;
import com.mortals.xhx.module.site.service.SiteBusinessService; import com.mortals.xhx.module.site.service.SiteBusinessService;
import com.mortals.xhx.module.window.model.WindowBusinessEntity; import com.mortals.xhx.module.window.model.*;
import com.mortals.xhx.module.window.model.WindowBusinessQuery;
import com.mortals.xhx.module.window.service.WindowBusinessService; import com.mortals.xhx.module.window.service.WindowBusinessService;
import com.mortals.xhx.module.window.service.WindowMatterService;
import com.mortals.xhx.module.workman.model.WorkmanEntity; import com.mortals.xhx.module.workman.model.WorkmanEntity;
import com.mortals.xhx.module.workman.model.WorkmanQuery; import com.mortals.xhx.module.workman.model.WorkmanQuery;
import com.mortals.xhx.module.workman.service.WorkmanService; import com.mortals.xhx.module.workman.service.WorkmanService;
...@@ -22,7 +22,6 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -22,7 +22,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.xhx.module.window.dao.WindowDao; import com.mortals.xhx.module.window.dao.WindowDao;
import com.mortals.xhx.module.window.model.WindowEntity;
import com.mortals.xhx.module.window.service.WindowService; import com.mortals.xhx.module.window.service.WindowService;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -47,17 +46,34 @@ public class WindowServiceImpl extends AbstractCRUDServiceImpl<WindowDao, Window ...@@ -47,17 +46,34 @@ public class WindowServiceImpl extends AbstractCRUDServiceImpl<WindowDao, Window
@Autowired @Autowired
private WindowBusinessService windowBusinessService; private WindowBusinessService windowBusinessService;
@Autowired
private WindowMatterService windowMatterService;
@Autowired @Autowired
private BusinessService businessService; private BusinessService businessService;
@Override @Override
protected void findAfter(WindowEntity params, PageInfo pageInfo, Context context, List<WindowEntity> list) throws AppException { protected void findAfter(WindowEntity params, PageInfo pageInfo, Context context, List<WindowEntity> list) throws AppException {
Map<Long, List<WorkmanEntity>> collect = workmanService.find(new WorkmanQuery()).stream().filter(f->f.getWindowId()!=null).collect(Collectors.groupingBy(x -> x.getWindowId())); Map<Long, List<WorkmanEntity>> workmanCollect = workmanService.find(new WorkmanQuery()).stream().filter(f->f.getWindowId()!=null).collect(Collectors.groupingBy(x -> x.getWindowId()));
Map<Long, List<WindowBusinessEntity>> windowBusinessCollect = windowBusinessService.find(new WindowBusinessQuery())
.stream().filter(f -> f.getWindowId() != null).collect(Collectors.groupingBy(x -> x.getWindowId()));
Map<Long, List<WindowMatterEntity>> windowMatterCollect = windowMatterService.find(new WindowMatterQuery())
.stream().filter(f -> f.getWindowId() != null).collect(Collectors.groupingBy(x -> x.getWindowId()));
list.stream().peek(item -> { list.stream().peek(item -> {
if (!ObjectUtils.isEmpty(collect.get(item.getId()))) { if (!ObjectUtils.isEmpty(workmanCollect.get(item.getId()))) {
item.setWorkmanList(collect.get(item.getId())); item.setWorkmanList(workmanCollect.get(item.getId()));
} }
if (!ObjectUtils.isEmpty(windowBusinessCollect.get(item.getId()))) {
item.setWindowBusinessList(windowBusinessCollect.get(item.getId()));
}
if (!ObjectUtils.isEmpty(windowMatterCollect.get(item.getId()))) {
item.setWindowMatterList(windowMatterCollect.get(item.getId()));
}
}).count(); }).count();
super.findAfter(params, pageInfo, context, list); super.findAfter(params, pageInfo, context, list);
} }
......
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