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

添加统计子站点

parent 2d32c02b
package com.mortals.xhx.module.ph.service; package com.mortals.xhx.module.ph.service;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
...@@ -11,21 +12,22 @@ import com.mortals.xhx.module.pj.model.PjEvaluateStatEntity; ...@@ -11,21 +12,22 @@ import com.mortals.xhx.module.pj.model.PjEvaluateStatEntity;
import java.util.List; import java.util.List;
/** /**
* PhQueueStatService * PhQueueStatService
* * <p>
* 排队叫号汇总统计 service接口 * 排队叫号汇总统计 service接口
* *
* @author zxfei * @author zxfei
* @date 2024-06-24 * @date 2024-06-24
*/ */
public interface PhQueueStatService extends ICRUDService<PhQueueStatEntity,Long>{ public interface PhQueueStatService extends ICRUDService<PhQueueStatEntity, Long> {
PhQueueStatDao getDao(); PhQueueStatDao getDao();
Rest<Void> updateSitePhStat(PhQueueStatEntity entity, Context context); Rest<List<PhQueueStatEntity>> updateSitePhStat(PhQueueStatEntity entity, Context context);
List<PhQueueStatEntity> getBillInfos(PhQueueStatQuery query, PageInfo pageInfo, Context context); List<PhQueueStatEntity> getBillInfos(PhQueueStatQuery query, PageInfo pageInfo, Context context);
void saveUpdatePhStatList(List<PhQueueStatEntity> saveAndUpdatelist);
} }
\ No newline at end of file
...@@ -42,7 +42,7 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD ...@@ -42,7 +42,7 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD
@Override @Override
public Rest<Void> updateSitePhStat(PhQueueStatEntity entity, Context context) { public Rest<List<PhQueueStatEntity>> updateSitePhStat(PhQueueStatEntity entity, Context context) {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.set(entity.getYear(), entity.getMonth() - 1, entity.getDay()); calendar.set(entity.getYear(), entity.getMonth() - 1, entity.getDay());
...@@ -81,8 +81,8 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD ...@@ -81,8 +81,8 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD
saveOrUpdateList.addAll(phQueueStatEntities3); saveOrUpdateList.addAll(phQueueStatEntities3);
saveOrUpdateList.addAll(phQueueStatEntities4); saveOrUpdateList.addAll(phQueueStatEntities4);
saveUpdatePhStatList(saveOrUpdateList); //saveUpdatePhStatList(saveOrUpdateList);
return Rest.ok(); return Rest.ok(saveOrUpdateList);
} }
...@@ -364,7 +364,7 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD ...@@ -364,7 +364,7 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD
} }
private void saveUpdatePhStatList(List<PhQueueStatEntity> saveAndUpdatelist) { public void saveUpdatePhStatList(List<PhQueueStatEntity> saveAndUpdatelist) {
if (!ObjectUtils.isEmpty(saveAndUpdatelist)) { if (!ObjectUtils.isEmpty(saveAndUpdatelist)) {
Map<Boolean, List<PhQueueStatEntity>> saveUpdateCollect = saveAndUpdatelist.parallelStream().collect(Collectors.partitioningBy(i -> i.newEntity())); Map<Boolean, List<PhQueueStatEntity>> saveUpdateCollect = saveAndUpdatelist.parallelStream().collect(Collectors.partitioningBy(i -> i.newEntity()));
......
...@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime; ...@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.mortals.framework.annotation.UnAuth; import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
...@@ -40,6 +41,8 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -40,6 +41,8 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
import static java.util.stream.Collectors.collectingAndThen; import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection; import static java.util.stream.Collectors.toCollection;
...@@ -194,18 +197,18 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ ...@@ -194,18 +197,18 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ
accessQuery.setTagNotList(Arrays.asList("")); accessQuery.setTagNotList(Arrays.asList(""));
List<AccessEntity> accessEntities = accessService.find(accessQuery); List<AccessEntity> accessEntities = accessService.find(accessQuery);
List<SitePdu> sitePduList=new ArrayList<>(); List<SitePdu> sitePduList = new ArrayList<>();
for (AccessEntity accessEntity : accessEntities) { for (AccessEntity accessEntity : accessEntities) {
SitePdu sitePdu = new SitePdu(); SitePdu sitePdu = new SitePdu();
sitePdu.setId(accessEntity.getId()); sitePdu.setId(accessEntity.getId());
Rest<List<SitePdu>> sitesRest = siteFeign.getFlatSitesBySiteId(sitePdu); Rest<List<SitePdu>> sitesRest = siteFeign.getFlatSitesBySiteId(sitePdu);
if(YesNoEnum.YES.getValue()==sitesRest.getCode()){ if (YesNoEnum.YES.getValue() == sitesRest.getCode()) {
sitePduList.addAll(sitesRest.getData()); sitePduList.addAll(sitesRest.getData());
} }
} }
if(!ObjectUtils.isEmpty(sitePduList)){ if (!ObjectUtils.isEmpty(sitePduList)) {
sitePduList=sitePduList.stream().collect( sitePduList = sitePduList.stream().collect(
collectingAndThen( collectingAndThen(
toCollection(() -> new TreeSet<>(Comparator.comparing(SitePdu::getId))), ArrayList::new)); toCollection(() -> new TreeSet<>(Comparator.comparing(SitePdu::getId))), ArrayList::new));
for (SitePdu site : sitePduList) { for (SitePdu site : sitePduList) {
...@@ -285,6 +288,8 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ ...@@ -285,6 +288,8 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ
statLogEntity.setAccessId(accessEntity.getId()); statLogEntity.setAccessId(accessEntity.getId());
} }
List<PhQueueStatEntity> saveOrUpdateList = new ArrayList<>();
for (int i = 0; i <= compare.intValue(); i++) { for (int i = 0; i <= compare.intValue(); i++) {
DateTime curDate = DateUtil.offsetDay(attendStart, i); DateTime curDate = DateUtil.offsetDay(attendStart, i);
log.info("记录日期:{}", curDate.toDateStr()); log.info("记录日期:{}", curDate.toDateStr());
...@@ -299,8 +304,16 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ ...@@ -299,8 +304,16 @@ public class PhQueueStatController extends BaseCRUDJsonBodyMappingController<PhQ
sitestatEntity.setMonth(curDate.month() + 1); sitestatEntity.setMonth(curDate.month() + 1);
sitestatEntity.setDay(curDate.dayOfMonth()); sitestatEntity.setDay(curDate.dayOfMonth());
//设置年月日 //设置年月日
phQueueStatService.updateSitePhStat(sitestatEntity, context); Rest<List<PhQueueStatEntity>> listRest = phQueueStatService.updateSitePhStat(sitestatEntity, context);
saveOrUpdateList.addAll(listRest.getData());
} }
List<List<PhQueueStatEntity>> partition = Lists.partition(saveOrUpdateList, 1000);
for (List<PhQueueStatEntity> phQueueStatEntities : partition) {
this.service.saveUpdatePhStatList(phQueueStatEntities);
}
stopWatch.stop(); stopWatch.stop();
statLogEntity.setStatEndTime(new Date()); statLogEntity.setStatEndTime(new Date());
statLogEntity.setDuration(stopWatch.getLastTaskTimeMillis()); statLogEntity.setDuration(stopWatch.getLastTaskTimeMillis());
......
...@@ -27,10 +27,10 @@ public interface PjEvaluateStatService extends ICRUDService<PjEvaluateStatEntity ...@@ -27,10 +27,10 @@ public interface PjEvaluateStatService extends ICRUDService<PjEvaluateStatEntity
* @param context * @param context
* @return * @return
*/ */
Rest<Void> updateSitePjStat(PjEvaluateStatEntity entity, Context context); Rest<List<PjEvaluateStatEntity>> updateSitePjStat(PjEvaluateStatEntity entity, Context context);
List<PjEvaluateStatEntity> getBillInfos(PjEvaluateStatQuery query, PageInfo pageInfo, Context context); List<PjEvaluateStatEntity> getBillInfos(PjEvaluateStatQuery query, PageInfo pageInfo, Context context);
void saveUpdatePjEvaluateStatList(List<PjEvaluateStatEntity> saveAndUpdatelist);
} }
\ No newline at end of file
...@@ -53,7 +53,7 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat ...@@ -53,7 +53,7 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat
} }
@Override @Override
public Rest<Void> updateSitePjStat(PjEvaluateStatEntity entity, Context context) { public Rest<List<PjEvaluateStatEntity>> updateSitePjStat(PjEvaluateStatEntity entity, Context context) {
//todo 统计站点评价 分站点--部门 ||窗口编号||评价选项 ==》评价数量 //todo 统计站点评价 分站点--部门 ||窗口编号||评价选项 ==》评价数量
//查询指定日期当前站点所有评价数量 //查询指定日期当前站点所有评价数量
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
...@@ -69,48 +69,65 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat ...@@ -69,48 +69,65 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat
List<PjEvaluateEntity> pjEvaluateEntities = pjEvaluateService.find(pjEvaluateQuery); List<PjEvaluateEntity> pjEvaluateEntities = pjEvaluateService.find(pjEvaluateQuery);
// log.info("更新站点评价统计数据,站点ID:{},站点名称:{},日期:{},评价数量:{}", entity.getSiteId(), entity.getSiteName(), currentDate, pjEvaluateEntities.size()); // log.info("更新站点评价统计数据,站点ID:{},站点名称:{},日期:{},评价数量:{}", entity.getSiteId(), entity.getSiteName(), currentDate, pjEvaluateEntities.size());
updateSitePjCount(entity, pjEvaluateEntities); updateSitePjCount(entity, pjEvaluateEntities);
updateSiteSectionNamePjCount(currentDate, entity, pjEvaluateEntities); List<PjEvaluateStatEntity> saveAndUpdatelist = new ArrayList<>();
updateSiteHallPjCount(currentDate, entity, pjEvaluateEntities); List<PjEvaluateStatEntity> pjEvaluateStatEntities = updateSiteSectionNamePjCount(currentDate, entity, pjEvaluateEntities);
updateSiteWindowPjCount(currentDate, entity, pjEvaluateEntities); List<PjEvaluateStatEntity> pjEvaluateStatEntities1 = updateSiteHallPjCount(currentDate, entity, pjEvaluateEntities);
updateSiteOptionPjCount(currentDate, entity, pjEvaluateEntities); List<PjEvaluateStatEntity> pjEvaluateStatEntities2 = updateSiteWindowPjCount(currentDate, entity, pjEvaluateEntities);
List<PjEvaluateStatEntity> pjEvaluateStatEntities3 = updateSiteOptionPjCount(currentDate, entity, pjEvaluateEntities);
//组合条件更新 //组合条件更新
updateSiteConditionPhCount(entity, pjEvaluateEntities); List<PjEvaluateStatEntity> pjEvaluateStatEntities4 = updateSiteConditionPhCount(entity, pjEvaluateEntities);
saveAndUpdatelist.addAll(pjEvaluateStatEntities);
saveAndUpdatelist.addAll(pjEvaluateStatEntities1);
saveAndUpdatelist.addAll(pjEvaluateStatEntities2);
saveAndUpdatelist.addAll(pjEvaluateStatEntities3);
saveAndUpdatelist.addAll(pjEvaluateStatEntities4);
// saveUpdatePjEvaluateStatList(saveAndUpdatelist);
return Rest.ok(); return Rest.ok();
} }
private void updateSiteConditionPhCount(PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { private List<PjEvaluateStatEntity> updateSiteConditionPhCount(PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) {
//评价选项 部门 窗口 //评价选项 部门 窗口
List<PjEvaluateStatEntity> saveAndUpdatelist = new ArrayList<>();
//评价选项+部门 busniess+sectionName //评价选项+部门 busniess+sectionName
updatePjOptionAndSectionName(entity, pjEvaluateEntities); List<PjEvaluateStatEntity> pjEvaluateStatEntities = updatePjOptionAndSectionName(entity, pjEvaluateEntities);
//评价选型+窗口 busniess+WindowFromnum //评价选型+窗口 busniess+WindowFromnum
updatePjOptionAndWindowFromnum(entity, pjEvaluateEntities); List<PjEvaluateStatEntity> pjEvaluateStatEntities1 = updatePjOptionAndWindowFromnum(entity, pjEvaluateEntities);
//部门+窗口 sectionName+WindowFromnum //部门+窗口 sectionName+WindowFromnum
updateSectionNameAndWindowFromnum(entity, pjEvaluateEntities); List<PjEvaluateStatEntity> pjEvaluateStatEntities2 = updateSectionNameAndWindowFromnum(entity, pjEvaluateEntities);
//评价选型+部门+窗口 busniess+sectionName+WindowFromnum //评价选型+部门+窗口 busniess+sectionName+WindowFromnum
updatePjOptionAndSectionNameAndWindow(entity, pjEvaluateEntities); List<PjEvaluateStatEntity> pjEvaluateStatEntities3 = updatePjOptionAndSectionNameAndWindow(entity, pjEvaluateEntities);
saveAndUpdatelist.addAll(pjEvaluateStatEntities);
saveAndUpdatelist.addAll(pjEvaluateStatEntities1);
saveAndUpdatelist.addAll(pjEvaluateStatEntities2);
saveAndUpdatelist.addAll(pjEvaluateStatEntities3);
return saveAndUpdatelist;
} }
private void updatePjOptionAndSectionName(PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { private List<PjEvaluateStatEntity> updatePjOptionAndSectionName(PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) {
Map<String, Long> pjoptionAndSectionCollect = pjEvaluateEntities.parallelStream() Map<String, Long> pjoptionAndSectionCollect = pjEvaluateEntities.parallelStream()
.collect(Collectors.groupingBy(x -> x.getPjOption() + "&" + x.getSectionName(), Collectors.counting())); .collect(Collectors.groupingBy(x -> x.getPjOption() + "&" + x.getSectionName(), Collectors.counting()));
List<PjEvaluateStatEntity> saveAndUpdatelist = pjoptionAndSectionCollect.entrySet().parallelStream().map(item -> { List<PjEvaluateStatEntity> saveAndUpdatelist = pjoptionAndSectionCollect.entrySet().parallelStream().map(item -> {
String vals = item.getKey(); String vals = item.getKey();
String[] split = StrUtil.splitToArray(vals,"&"); String[] split = StrUtil.splitToArray(vals, "&");
if (ObjectUtils.isEmpty(split[0]) || ObjectUtils.isEmpty(split[1])) return null; if (ObjectUtils.isEmpty(split[0]) || ObjectUtils.isEmpty(split[1])) return null;
// log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size()); // log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size());
PjEvaluateStatQuery pjEvaluateStatQuery = getPhQueueStatQuery(entity); PjEvaluateStatQuery pjEvaluateStatQuery = getPhQueueStatQuery(entity);
...@@ -121,15 +138,16 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat ...@@ -121,15 +138,16 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat
pjEvaluateStatEntity.setSectionName(split[1]); pjEvaluateStatEntity.setSectionName(split[1]);
return pjEvaluateStatEntity; return pjEvaluateStatEntity;
}).filter(f -> f != null).collect(Collectors.toList()); }).filter(f -> f != null).collect(Collectors.toList());
saveUpdatePjEvaluateStatList(saveAndUpdatelist); // saveUpdatePjEvaluateStatList(saveAndUpdatelist);
return saveAndUpdatelist;
} }
private void updatePjOptionAndWindowFromnum(PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { private List<PjEvaluateStatEntity> updatePjOptionAndWindowFromnum(PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) {
Map<String, Long> pjoptionAndSectionCollect = pjEvaluateEntities.parallelStream() Map<String, Long> pjoptionAndSectionCollect = pjEvaluateEntities.parallelStream()
.collect(Collectors.groupingBy(x -> x.getPjOption() + "&" + x.getWindowFromnum(), Collectors.counting())); .collect(Collectors.groupingBy(x -> x.getPjOption() + "&" + x.getWindowFromnum(), Collectors.counting()));
List<PjEvaluateStatEntity> saveAndUpdatelist = pjoptionAndSectionCollect.entrySet().parallelStream().map(item -> { List<PjEvaluateStatEntity> saveAndUpdatelist = pjoptionAndSectionCollect.entrySet().parallelStream().map(item -> {
String vals = item.getKey(); String vals = item.getKey();
String[] split = StrUtil.splitToArray(vals,"&"); String[] split = StrUtil.splitToArray(vals, "&");
if (ObjectUtils.isEmpty(split[0]) || ObjectUtils.isEmpty(split[1])) return null; if (ObjectUtils.isEmpty(split[0]) || ObjectUtils.isEmpty(split[1])) return null;
// log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size()); // log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size());
PjEvaluateStatQuery pjEvaluateStatQuery = getPhQueueStatQuery(entity); PjEvaluateStatQuery pjEvaluateStatQuery = getPhQueueStatQuery(entity);
...@@ -140,16 +158,17 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat ...@@ -140,16 +158,17 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat
pjEvaluateStatEntity.setWindowFromnum(split[1]); pjEvaluateStatEntity.setWindowFromnum(split[1]);
return pjEvaluateStatEntity; return pjEvaluateStatEntity;
}).filter(f -> f != null).collect(Collectors.toList()); }).filter(f -> f != null).collect(Collectors.toList());
saveUpdatePjEvaluateStatList(saveAndUpdatelist); // saveUpdatePjEvaluateStatList(saveAndUpdatelist);
return saveAndUpdatelist;
} }
private void updateSectionNameAndWindowFromnum(PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { private List<PjEvaluateStatEntity> updateSectionNameAndWindowFromnum(PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) {
Map<String, Long> pjoptionAndSectionCollect = pjEvaluateEntities.parallelStream() Map<String, Long> pjoptionAndSectionCollect = pjEvaluateEntities.parallelStream()
.collect(Collectors.groupingBy(x -> x.getSectionName() + "&" + x.getWindowFromnum(), Collectors.counting())); .collect(Collectors.groupingBy(x -> x.getSectionName() + "&" + x.getWindowFromnum(), Collectors.counting()));
List<PjEvaluateStatEntity> saveAndUpdatelist = pjoptionAndSectionCollect.entrySet().parallelStream().map(item -> { List<PjEvaluateStatEntity> saveAndUpdatelist = pjoptionAndSectionCollect.entrySet().parallelStream().map(item -> {
String vals = item.getKey(); String vals = item.getKey();
String[] split = StrUtil.splitToArray(vals,"&"); String[] split = StrUtil.splitToArray(vals, "&");
if (ObjectUtils.isEmpty(split[0]) || ObjectUtils.isEmpty(split[1])) return null; if (ObjectUtils.isEmpty(split[0]) || ObjectUtils.isEmpty(split[1])) return null;
// log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size()); // log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size());
PjEvaluateStatQuery pjEvaluateStatQuery = getPhQueueStatQuery(entity); PjEvaluateStatQuery pjEvaluateStatQuery = getPhQueueStatQuery(entity);
...@@ -160,17 +179,19 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat ...@@ -160,17 +179,19 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat
pjEvaluateStatEntity.setWindowFromnum(split[1]); pjEvaluateStatEntity.setWindowFromnum(split[1]);
return pjEvaluateStatEntity; return pjEvaluateStatEntity;
}).filter(f -> f != null).collect(Collectors.toList()); }).filter(f -> f != null).collect(Collectors.toList());
saveUpdatePjEvaluateStatList(saveAndUpdatelist); // saveUpdatePjEvaluateStatList(saveAndUpdatelist);
return saveAndUpdatelist;
} }
private void updatePjOptionAndSectionNameAndWindow(PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { private List<PjEvaluateStatEntity> updatePjOptionAndSectionNameAndWindow(PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) {
Map<String, Long> pjoptionAndSectionCollect = pjEvaluateEntities.parallelStream() Map<String, Long> pjoptionAndSectionCollect = pjEvaluateEntities.parallelStream()
.collect(Collectors.groupingBy(x ->x.getPjOption() + "&"+ x.getSectionName() + "&" + x.getWindowFromnum(), Collectors.counting())); .collect(Collectors.groupingBy(x -> x.getPjOption() + "&" + x.getSectionName() + "&" + x.getWindowFromnum(), Collectors.counting()));
List<PjEvaluateStatEntity> saveAndUpdatelist = pjoptionAndSectionCollect.entrySet().parallelStream().map(item -> { List<PjEvaluateStatEntity> saveAndUpdatelist = pjoptionAndSectionCollect.entrySet().parallelStream().map(item -> {
String vals = item.getKey(); String vals = item.getKey();
String[] split = StrUtil.splitToArray(vals,"&"); String[] split = StrUtil.splitToArray(vals, "&");
if (ObjectUtils.isEmpty(split[0]) || ObjectUtils.isEmpty(split[1])|| ObjectUtils.isEmpty(split[2])) return null; if (ObjectUtils.isEmpty(split[0]) || ObjectUtils.isEmpty(split[1]) || ObjectUtils.isEmpty(split[2]))
return null;
// log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size()); // log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size());
PjEvaluateStatQuery pjEvaluateStatQuery = getPhQueueStatQuery(entity); PjEvaluateStatQuery pjEvaluateStatQuery = getPhQueueStatQuery(entity);
pjEvaluateStatQuery.setPjOption(split[0]); pjEvaluateStatQuery.setPjOption(split[0]);
...@@ -182,7 +203,8 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat ...@@ -182,7 +203,8 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat
pjEvaluateStatEntity.setWindowFromnum(split[2]); pjEvaluateStatEntity.setWindowFromnum(split[2]);
return pjEvaluateStatEntity; return pjEvaluateStatEntity;
}).filter(f -> f != null).collect(Collectors.toList()); }).filter(f -> f != null).collect(Collectors.toList());
saveUpdatePjEvaluateStatList(saveAndUpdatelist); // saveUpdatePjEvaluateStatList(saveAndUpdatelist);
return saveAndUpdatelist;
} }
private void updateSitePjCount(PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { private void updateSitePjCount(PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) {
...@@ -219,7 +241,7 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat ...@@ -219,7 +241,7 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat
} }
private void updateSiteSectionNamePjCount(String currentDate, PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { private List<PjEvaluateStatEntity> updateSiteSectionNamePjCount(String currentDate, PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) {
Map<String, Long> collect = pjEvaluateEntities.stream().collect(Collectors.groupingBy(x -> x.getSectionName(), Collectors.counting())); Map<String, Long> collect = pjEvaluateEntities.stream().collect(Collectors.groupingBy(x -> x.getSectionName(), Collectors.counting()));
List<PjEvaluateStatEntity> saveAndUpdatelist = collect.entrySet().stream().map(item -> { List<PjEvaluateStatEntity> saveAndUpdatelist = collect.entrySet().stream().map(item -> {
...@@ -231,11 +253,12 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat ...@@ -231,11 +253,12 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat
pjEvaluateStatEntity.setSectionName(sectionName); pjEvaluateStatEntity.setSectionName(sectionName);
return pjEvaluateStatEntity; return pjEvaluateStatEntity;
}).filter(f -> f != null).collect(Collectors.toList()); }).filter(f -> f != null).collect(Collectors.toList());
saveUpdatePjEvaluateStatList(saveAndUpdatelist); // saveUpdatePjEvaluateStatList(saveAndUpdatelist);
return saveAndUpdatelist;
} }
private void updateSiteHallPjCount(String currentDate, PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { private List<PjEvaluateStatEntity> updateSiteHallPjCount(String currentDate, PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) {
Map<String, Long> collect = pjEvaluateEntities.stream().collect(Collectors.groupingBy(x -> x.getHallName(), Collectors.counting())); Map<String, Long> collect = pjEvaluateEntities.stream().collect(Collectors.groupingBy(x -> x.getHallName(), Collectors.counting()));
List<PjEvaluateStatEntity> saveAndUpdatelist = collect.entrySet().stream().map(item -> { List<PjEvaluateStatEntity> saveAndUpdatelist = collect.entrySet().stream().map(item -> {
String hallName = item.getKey(); String hallName = item.getKey();
...@@ -247,11 +270,12 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat ...@@ -247,11 +270,12 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat
pjEvaluateStatEntity.setHallName(hallName); pjEvaluateStatEntity.setHallName(hallName);
return pjEvaluateStatEntity; return pjEvaluateStatEntity;
}).filter(f -> f != null).collect(Collectors.toList()); }).filter(f -> f != null).collect(Collectors.toList());
saveUpdatePjEvaluateStatList(saveAndUpdatelist); //saveUpdatePjEvaluateStatList(saveAndUpdatelist);
return saveAndUpdatelist;
} }
private void updateSiteWindowPjCount(String currentDate, PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { private List<PjEvaluateStatEntity> updateSiteWindowPjCount(String currentDate, PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) {
Map<String, Long> collect = pjEvaluateEntities.parallelStream().collect(Collectors.groupingBy(x -> x.getWindowFromnum(), Collectors.counting())); Map<String, Long> collect = pjEvaluateEntities.parallelStream().collect(Collectors.groupingBy(x -> x.getWindowFromnum(), Collectors.counting()));
List<PjEvaluateStatEntity> saveAndUpdatelist = collect.entrySet().parallelStream().map(item -> { List<PjEvaluateStatEntity> saveAndUpdatelist = collect.entrySet().parallelStream().map(item -> {
String windowFromnum = item.getKey(); String windowFromnum = item.getKey();
...@@ -262,11 +286,12 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat ...@@ -262,11 +286,12 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat
pjEvaluateStatEntity.setWindowFromnum(windowFromnum); pjEvaluateStatEntity.setWindowFromnum(windowFromnum);
return pjEvaluateStatEntity; return pjEvaluateStatEntity;
}).filter(f -> f != null).collect(Collectors.toList()); }).filter(f -> f != null).collect(Collectors.toList());
saveUpdatePjEvaluateStatList(saveAndUpdatelist); //saveUpdatePjEvaluateStatList(saveAndUpdatelist);
return saveAndUpdatelist;
} }
private void updateSiteOptionPjCount(String currentDate, PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) { private List<PjEvaluateStatEntity> updateSiteOptionPjCount(String currentDate, PjEvaluateStatEntity entity, List<PjEvaluateEntity> pjEvaluateEntities) {
Map<String, Long> collect = pjEvaluateEntities.parallelStream().collect(Collectors.groupingBy(x -> x.getPjOption(), Collectors.counting())); Map<String, Long> collect = pjEvaluateEntities.parallelStream().collect(Collectors.groupingBy(x -> x.getPjOption(), Collectors.counting()));
List<PjEvaluateStatEntity> saveAndUpdatelist = collect.entrySet().parallelStream().map(item -> { List<PjEvaluateStatEntity> saveAndUpdatelist = collect.entrySet().parallelStream().map(item -> {
String pjOption = item.getKey(); String pjOption = item.getKey();
...@@ -279,7 +304,8 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat ...@@ -279,7 +304,8 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat
pjEvaluateStatEntity.setPjOption(pjOption); pjEvaluateStatEntity.setPjOption(pjOption);
return pjEvaluateStatEntity; return pjEvaluateStatEntity;
}).filter(f -> f != null).collect(Collectors.toList()); }).filter(f -> f != null).collect(Collectors.toList());
saveUpdatePjEvaluateStatList(saveAndUpdatelist); //saveUpdatePjEvaluateStatList(saveAndUpdatelist);
return saveAndUpdatelist;
} }
...@@ -334,7 +360,8 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat ...@@ -334,7 +360,8 @@ public class PjEvaluateStatServiceImpl extends AbstractCRUDServiceImpl<PjEvaluat
return pjEvaluateStatQuery; return pjEvaluateStatQuery;
} }
private void saveUpdatePjEvaluateStatList(List<PjEvaluateStatEntity> saveAndUpdatelist) { @Override
public void saveUpdatePjEvaluateStatList(List<PjEvaluateStatEntity> saveAndUpdatelist) {
if (!ObjectUtils.isEmpty(saveAndUpdatelist)) { if (!ObjectUtils.isEmpty(saveAndUpdatelist)) {
Map<Boolean, List<PjEvaluateStatEntity>> saveUpdateCollect = saveAndUpdatelist.parallelStream().collect(Collectors.partitioningBy(i -> i.newEntity())); Map<Boolean, List<PjEvaluateStatEntity>> saveUpdateCollect = saveAndUpdatelist.parallelStream().collect(Collectors.partitioningBy(i -> i.newEntity()));
......
...@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime; ...@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.mortals.framework.annotation.UnAuth; import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
...@@ -285,6 +286,8 @@ public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController< ...@@ -285,6 +286,8 @@ public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController<
statLogEntity.setAccessId(accessEntity.getId()); statLogEntity.setAccessId(accessEntity.getId());
} }
List<PjEvaluateStatEntity> saveAndUpdatelist = new ArrayList<>();
for (int i = 0; i <= compare.intValue(); i++) { for (int i = 0; i <= compare.intValue(); i++) {
DateTime curDate = DateUtil.offsetDay(attendStart, i); DateTime curDate = DateUtil.offsetDay(attendStart, i);
log.info("记录日期:{}", curDate.toDateStr()); log.info("记录日期:{}", curDate.toDateStr());
...@@ -297,8 +300,17 @@ public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController< ...@@ -297,8 +300,17 @@ public class PjEvaluateStatController extends BaseCRUDJsonBodyMappingController<
sitestatEntity.setMonth(curDate.month() + 1); sitestatEntity.setMonth(curDate.month() + 1);
sitestatEntity.setDay(curDate.dayOfMonth()); sitestatEntity.setDay(curDate.dayOfMonth());
//设置年月日 //设置年月日
pjEvaluateStatService.updateSitePjStat(sitestatEntity, context); Rest<List<PjEvaluateStatEntity>> rest = pjEvaluateStatService.updateSitePjStat(sitestatEntity, context);
saveAndUpdatelist.addAll(rest.getData());
}
List<List<PjEvaluateStatEntity>> partition = Lists.partition(saveAndUpdatelist, 1000);
for (List<PjEvaluateStatEntity> pjEvaluateStatEntities : partition) {
this.service.saveUpdatePjEvaluateStatList(pjEvaluateStatEntities);
} }
stopWatch.stop(); stopWatch.stop();
statLogEntity.setStatEndTime(new Date()); statLogEntity.setStatEndTime(new Date());
statLogEntity.setDuration(stopWatch.getLastTaskTimeMillis()); statLogEntity.setDuration(stopWatch.getLastTaskTimeMillis());
......
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