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

优化站点同步事项

parent 19a12e19
......@@ -90,8 +90,6 @@ public class SyncMatterTaskImpl implements ITaskExcuteService {
//log.info("同步事项列表:" + JSON.toJSONString(rest));
if (rest.getCode() == YesNoEnum.YES.getValue()) {
//分页获取事项列表
List<MatterEntity> matterEntityList = matterService.find(new MatterQuery().areaCode(siteEntity.getAreaCode()).source(SourceEnum.政务网.getValue()));
log.info("查询本地事项列表,size:{}",matterEntityList.size());
List<MatterEntity> unSyncDetailMatterList = matterEntityList.stream()
......
......@@ -25,6 +25,7 @@ import com.mortals.xhx.module.site.service.SiteMatterService;
import com.mortals.xhx.module.site.service.SiteService;
import com.mortals.xhx.module.site.service.SiteThemeMatterService;
import com.mortals.xhx.module.site.service.SiteThemeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
......@@ -46,6 +47,7 @@ import java.util.stream.Collectors;
* @date 2022-11-23
*/
@Service("matterExtService")
@Slf4j
public class MatterExtServiceImpl extends AbstractCRUDServiceImpl<MatterExtDao, MatterExtEntity, Long> implements MatterExtService {
@Autowired
......@@ -73,12 +75,9 @@ public class MatterExtServiceImpl extends AbstractCRUDServiceImpl<MatterExtDao,
*/
@Override
public Rest<String> doMatterBySiteId(SiteEntity siteEntity, Context context) {
AreaEntity areaEntity = areaService.getCache(siteEntity.getAreaCode());
List<MatterEntity> govMatterList = new ArrayList<>();
List<DeptEntity> deptEntities = deptService.find(new DeptQuery().siteId(siteEntity.getId()).source(SourceEnum.政务网.getValue()));
for (DeptEntity deptEntity : deptEntities) {
HashMap<String, String> params = new HashMap<>();
params.put("areaCode", areaEntity.getAreaCode());
......@@ -91,10 +90,35 @@ public class MatterExtServiceImpl extends AbstractCRUDServiceImpl<MatterExtDao,
govMatterList.addAll(deptMatterList);
}
}
//当前本地区事项全部事项
//当前本地区事项全部事项
List<MatterEntity> matterList = matterService.getDao().getMatterListByAreaCode(new MatterQuery().areaCode(siteEntity.getAreaCode()));
//全部编码
Set<String> matterNoSet = matterList.parallelStream().map(i -> i.getMatterNo()).collect(Collectors.toSet());
Set<String> matterNoSet =matterList.parallelStream().map(i -> i.getMatterNo()).collect(Collectors.toSet());
log.info("计算差集");
List<MatterEntity> subList = this.subListSet(govMatterList, matterNoSet);
subList = subList.parallelStream().distinct().collect(Collectors.toList());
log.info("抓取事项总数:{} 需要添加事项数量:{}", govMatterList.size(), subList.size());
//差集进行插入并更新详细数据
if (!ObjectUtils.isEmpty(subList)) {
for (MatterEntity matterEntity : subList) {
DeptEntity deptCache = deptService.getExtCache(matterEntity.getDeptCode());
matterEntity.setDeptName(deptCache == null ? "" : deptCache.getName());
matterEntity.setCreateTime(new Date());
matterEntity.setMatterEdition("0");
}
matterService.save(subList, context);
}
matterList.parallelStream().forEach(matterEntity -> {
Rest<String> rest = matterService.buildMatterDetail(matterEntity, null);
if(rest.getCode()==YesNoEnum.YES.getValue()){
matterEntity.setUpdateTime(new Date());
matterService.update(matterEntity, null);
}
});
//查询站点事项相关
List<SiteEntity> siteEntities = siteService.find(new SiteQuery().areaCode(siteEntity.getAreaCode()));
......@@ -114,13 +138,6 @@ public class MatterExtServiceImpl extends AbstractCRUDServiceImpl<MatterExtDao,
log.info("同步站点事项到站点完成.....");
}
log.info("同步站点事项详细条数....." + matterList.size());
matterList.parallelStream().forEach(matterEntity -> {
matterService.buildMatterDetail(matterEntity, null);
matterEntity.setUpdateTime(new Date());
matterService.update(matterEntity, null);
});
return Rest.ok();
}
......@@ -137,6 +154,10 @@ public class MatterExtServiceImpl extends AbstractCRUDServiceImpl<MatterExtDao,
}
public List<MatterEntity> subListSet(List<MatterEntity> firstList, Set<String> secondSet) {
return firstList.parallelStream().filter(item -> !secondSet.contains(item.getMatterNo())).collect(Collectors.toList());
}
private List<MatterEntity> getMatters(HashMap<String, String> params, Context context) {
String url = GlobalSysInfo.getParamValue(Constant.GOV_MATTER_PAGELIST_URL, "http://www.sczwfw.gov.cn/jiq/interface/item/tags");
......@@ -146,7 +167,6 @@ public class MatterExtServiceImpl extends AbstractCRUDServiceImpl<MatterExtDao,
Integer total = restStat.getData().getOrDefault("total", 0);
//获取事项全列表
Rest<List<MatterEntity>> matterAllRest = this.getMatterAllListByGOV(params, pageNum, context);
if (matterAllRest.getCode() == YesNoEnum.YES.getValue()) {
return matterAllRest.getData();
}
......
......@@ -1031,16 +1031,27 @@ public class MatterServiceImpl extends AbstractCRUDServiceImpl<MatterDao, Matter
Setting baseInfoSetting = interceptorConfig.getBaseInfoSetting();
Setting sqclInfoSetting = interceptorConfig.getSqclInfoSetting();
//更新部门信息
DeptEntity extCache = deptService.getExtCache(matterEntity.getDeptCode());
matterEntity.setDeptName(extCache == null ? "" : extCache.getName());
/* if(!ObjectUtils.isEmpty(matterEntity.getDeptCode())&&ObjectUtils.isEmpty(matterEntity.getDeptName())){
DeptEntity extCache = deptService.getExtCache(matterEntity.getDeptCode());
matterEntity.setDeptName(extCache==null?"":extCache.getName());
}*/
//根据本地与远端事项版本觉得是否更新或者新增
Integer matterEditionLocal = DataUtil.converStr2Int(matterEntity.getMatterEdition(),0);
Map<String, String> baseInfoMap = MatterDetailHtmlParseUtil.getbaseInfoMapByHtml(dom);
Integer matterEditionRemote = DataUtil.converStr2Int(baseInfoMap.getOrDefault("事项版本","0"),0);
if(matterEditionLocal>=matterEditionRemote){
return Rest.fail("本地事项版本大于等于远端,不需要更新!");
}
//更新部门信息
DeptEntity extCache = deptService.getExtCache(matterEntity.getDeptCode());
matterEntity.setDeptName(extCache == null ? "" : extCache.getName());
//构建基础信息参数
savebaseInfo(matterEntity, dom, baseInfoSetting);
savebaseInfo(matterEntity, baseInfoMap, baseInfoSetting);
//更新材料属性
saveDatumInfo(matterEntity, context, dom, sqclInfoSetting);
......@@ -1169,8 +1180,8 @@ public class MatterServiceImpl extends AbstractCRUDServiceImpl<MatterDao, Matter
matterChargesService.save(matterChargesEntity);
}
private void savebaseInfo(MatterEntity matterEntity, Document dom, Setting baseInfoSetting) {
Map<String, String> baseInfoMap = MatterDetailHtmlParseUtil.getbaseInfoMapByHtml(dom);
private void savebaseInfo(MatterEntity matterEntity, Map<String, String> baseInfoMap, Setting baseInfoSetting) {
//Map<String, String> baseInfoMap = MatterDetailHtmlParseUtil.getbaseInfoMapByHtml(dom);
List<MatterExtEntity> matterExtEntities = new ArrayList<>();
long sortN = 1;
for (Map.Entry<String, String> m : baseInfoMap.entrySet()) {
......@@ -1203,7 +1214,7 @@ public class MatterServiceImpl extends AbstractCRUDServiceImpl<MatterDao, Matter
if (!ObjectUtils.isEmpty(matterExtEntities)) {
//先删除后添加
matterFlowlimitService.deleteByMatterId(matterEntity.getId(), null);
matterExtService.deleteByMatterId(matterEntity.getId(), null);
matterExtService.save(matterExtEntities, null);
}
......
......@@ -73,6 +73,7 @@
a.deptCode,
a.source,
a.url,
a.matterEdition,
a.eventTypeShow
FROM
mortals_sys_matter AS a
......
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