diff --git a/adc-da-main/src/main/java/com/adc/da/main/config/MybatisPlusConfig.java b/adc-da-main/src/main/java/com/adc/da/main/config/MybatisPlusConfig.java index 0ca71a89..58a5bb65 100644 --- a/adc-da-main/src/main/java/com/adc/da/main/config/MybatisPlusConfig.java +++ b/adc-da-main/src/main/java/com/adc/da/main/config/MybatisPlusConfig.java @@ -1,5 +1,6 @@ package com.adc.da.main.config; +import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; @@ -19,4 +20,14 @@ public class MybatisPlusConfig { return new PaginationInterceptor(); } + /*** + * 增加乐观锁机制 + * @return + */ + @Bean + public OptimisticLockerInterceptor optimisticLockerInterceptor(){ + return new OptimisticLockerInterceptor(); + } + + } diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java index 9adcd241..457c91eb 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java +++ b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java @@ -1333,7 +1333,19 @@ public class SearchCenterServiceImpl implements SearchCenterService { QueryBuilder multiQueryBuilder1; QueryBuilder queryBuilder1 = QueryBuilders.multiMatchQuery(""); if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())){ - queryBuilder1 = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + if(searchInfoEO.getSelectValue().length() > 1){ + String str0 = searchInfoEO.getSelectValue().substring(0,1); + String Str1 = searchInfoEO.getSelectValue().substring(1,2); + String reg = ".*[0-9].*"; + Pattern pattern = Pattern.compile("^[a-zA-Z\\/]+$"); + if (pattern.matcher(str0).matches() && Str1.matches(reg)) { + String value = searchInfoEO.getSelectValue().replace(str0,str0+" "); + searchInfoEO.setSelectValue(value); + } + } + + + queryBuilder1 = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue().toUpperCase(), "title" ).minimumShouldMatch("100%").field("title",1000f); boolQueryBuilder.must(queryBuilder1); diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java index 14248747..97f81da3 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java @@ -27,7 +27,7 @@ public class ScheduledSync { @Scheduled(cron="0 0 2 * * ?") @Async - public void syncSchedulingTasks() throws Exception { + public void syncSchedulingTasks() { iDataSyncService.orgDataSync(); //时间短 iDataSyncService.dataSync(); //时间长 } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java index 555eb715..986f24ed 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java @@ -2,7 +2,7 @@ package com.adc.da.slrs.DataSync.service; public interface IDataSyncService { - public String dataSync() throws Exception; + public String dataSync(); - public String orgDataSync() throws Exception; + public String orgDataSync(); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java index 74c1c951..1ad2f235 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java @@ -1,5 +1,6 @@ package com.adc.da.slrs.DataSync.service.impl; +import com.adc.da.login.util.UserUtils; import com.adc.da.slrs.DataSync.service.IDataSyncService; import com.adc.da.slrs.sarInstitution.entity.TsInstitution; import com.adc.da.slrs.sarInstitution.service.ITsInstitutionService; @@ -12,8 +13,13 @@ import com.adc.da.sys.entity.UserOrgEO; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.extern.log4j.Log4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.sql.Timestamp; import java.util.*; @@ -29,77 +35,80 @@ public class DataSyncServiceImpl implements IDataSyncService { @Autowired ITsInstitutionService tsInstitutionService; + private static Logger logger = LoggerFactory.getLogger(DataSyncServiceImpl.class); + @Transactional(rollbackFor = {RuntimeException.class,Exception.class}) @Override - public String dataSync() throws Exception { - SyncUserService syncUserService = new SyncUserService(); - List res = syncUserService.syncFotonUser(); - //存放岗位信息 - Map positionMap = new HashMap<>(); - Map useDistinct = new HashMap<>(); - TsPosition position = new TsPosition(); - position.setCurrent(1); - position.setPageSize(100000); - IPage iPage = tsPositionService.getPosition(position); - List positions=iPage.getRecords(); - if (!positions.isEmpty()) { - positions.forEach(tsPosition -> { - positionMap.put(tsPosition.getName(), tsPosition.getId()); - }); - } + public String dataSync(){ + try{ + SyncUserService syncUserService = new SyncUserService(); + List res = syncUserService.syncFotonUser(); + //存放岗位信息 + Map positionMap = new HashMap<>(); + Map useDistinct = new HashMap<>(); + TsPosition position = new TsPosition(); + position.setCurrent(1); + position.setPageSize(100000); + IPage iPage = tsPositionService.getPosition(position); + List positions=iPage.getRecords(); + if (!positions.isEmpty()) { + positions.forEach(tsPosition -> { + positionMap.put(tsPosition.getName(), tsPosition.getId()); + }); + } - /** - * 得到数据时,删除系统表中所有用户信息 - */ - if (res.size()>0){ - tsUserService.deleteUser(); - } - for (String s : res) { - //获取到所有用户数据 - List tsUsers = new ArrayList<>(); + /** + * 得到数据时,删除系统表中所有用户信息 + */ + if (res.size()>0){ + tsUserService.deleteUser(); + } + for (String s : res) { + //获取到所有用户数据 + List tsUsers = new ArrayList<>(); - JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); - jsonArray.forEach(object -> { - JSONObject jsonObject = JSONObject.parseObject(object.toString()); - //先获取岗位以及岗位id - TsUser tsUser = new TsUser(); - UserOrgEO userOrgEO = new UserOrgEO(); - //设置岗位 - if (null != jsonObject.getString("title")) { - //通过岗位名称查询系统表中是否有岗位,有则设定用户的岗位为系统中的岗位,否则新增 - if (null == positionMap.get(jsonObject.getString("title"))) { - TsPosition tsPosition = new TsPosition(); - tsPosition.setId(String.valueOf(UUID.randomUUID())); - tsPosition.setName(jsonObject.getString("title")); - tsPositionService.addPosition(tsPosition); - //放入岗位的map集合中 - positionMap.put(tsPosition.getName(), tsPosition.getId()); - //放入类中 - tsUser.setPositionName(tsPosition.getName()); - tsUser.setPositionId(tsPosition.getId()); - } else { - tsUser.setPositionName(jsonObject.getString("title").trim()); - tsUser.setPositionId(positionMap.get(jsonObject.getString("title").trim())); + JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); + jsonArray.forEach(object -> { + JSONObject jsonObject = JSONObject.parseObject(object.toString()); + //先获取岗位以及岗位id + TsUser tsUser = new TsUser(); + UserOrgEO userOrgEO = new UserOrgEO(); + //设置岗位 + if (null != jsonObject.getString("title")) { + //通过岗位名称查询系统表中是否有岗位,有则设定用户的岗位为系统中的岗位,否则新增 + if (null == positionMap.get(jsonObject.getString("title"))) { + TsPosition tsPosition = new TsPosition(); + tsPosition.setId(String.valueOf(UUID.randomUUID())); + tsPosition.setName(jsonObject.getString("title")); + tsPositionService.addPosition(tsPosition); + //放入岗位的map集合中 + positionMap.put(tsPosition.getName(), tsPosition.getId()); + //放入类中 + tsUser.setPositionName(tsPosition.getName()); + tsUser.setPositionId(tsPosition.getId()); + } else { + tsUser.setPositionName(jsonObject.getString("title").trim()); + tsUser.setPositionId(positionMap.get(jsonObject.getString("title").trim())); + } } - } - //设置其他数据 - Timestamp createTime = new Timestamp(new Date().getTime()); - tsUser.setState(jsonObject.getString("userStatus")); - tsUser.setUname(null!=jsonObject.getString("name")?jsonObject.getString("name"):""); - tsUser.setValidFlag("0"); - tsUser.setDisableFlag("0"); - tsUser.setCreationTime(createTime); - tsUser.setUserId(jsonObject.getString("userid")); - tsUser.setAccount(jsonObject.getString("userid")); - tsUser.setInstitutionId(null!=jsonObject.getString("orgNumber")?jsonObject.getString("orgNumber"):"" ); - tsUser.setInstitutionName(null!=jsonObject.getString("orgName")?jsonObject.getString("orgName"):"" ); - //2022-05-23:用户同步增加状态标识,将停用的用户过滤掉 - if (null == useDistinct.get(jsonObject.getString("userid")) && "1".equals(jsonObject.getString("userStatus"))) { - tsUsers.add(tsUser); + //设置其他数据 + Timestamp createTime = new Timestamp(new Date().getTime()); + tsUser.setState(jsonObject.getString("userStatus")); + tsUser.setUname(null!=jsonObject.getString("name")?jsonObject.getString("name"):""); + tsUser.setValidFlag("0"); + tsUser.setDisableFlag("0"); + tsUser.setCreationTime(createTime); + tsUser.setUserId(jsonObject.getString("userid")); + tsUser.setAccount(jsonObject.getString("userid")); + tsUser.setInstitutionId(null!=jsonObject.getString("orgNumber")?jsonObject.getString("orgNumber"):"" ); + tsUser.setInstitutionName(null!=jsonObject.getString("orgName")?jsonObject.getString("orgName"):"" ); + //2022-05-23:用户同步增加状态标识,将停用的用户过滤掉 + if (null == useDistinct.get(jsonObject.getString("userid")) && "1".equals(jsonObject.getString("userStatus"))) { + tsUsers.add(tsUser); - } + } // //测试数据删除 // if (! "anbin".equals(jsonObject.getString("userid"))){ @@ -113,12 +122,12 @@ public class DataSyncServiceImpl implements IDataSyncService { // // } // } - useDistinct.put(tsUser.getUserId(),tsUser.getUserId()); - }); - tsUserService.saveBatch(tsUsers); - } + useDistinct.put(tsUser.getUserId(),tsUser.getUserId()); + }); + tsUserService.saveBatch(tsUsers); + } - //测试数据添加 + //测试数据添加 // TsUser addUser = new TsUser(); // addUser.setState("FFFFFFF"); // addUser.setUname("zhaokaiyao"); @@ -132,42 +141,80 @@ public class DataSyncServiceImpl implements IDataSyncService { // // List addUserList = Arrays.asList(addUser); // tsUserService.saveBatch(addUserList); + + }catch(Exception e){ + logger.error(e.getMessage(),e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return "1"; + } - - public String orgDataSync() throws Exception { - SyncUserService syncUserService = new SyncUserService(); - List res = syncUserService.syncFotonOrg(); - - //获取到所有用户数据 - List strings=new ArrayList<>(); - - tsInstitutionService.clearData(); - for (String s : res) { - JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); - jsonArray.forEach(object -> { - JSONObject jsonObject = JSONObject.parseObject(object.toString()); - strings.add(jsonObject.getString("parentOrgNumber")); - }); - } - for (String s : res) { - List tsInstitutions = new ArrayList<>(); - JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); - jsonArray.forEach(object -> { - JSONObject jsonObject = JSONObject.parseObject(object.toString()); - TsInstitution tsInstitution=new TsInstitution(); - tsInstitution.setId(jsonObject.getString("orgNumber")); - tsInstitution.setName(jsonObject.getString("orgName")); - tsInstitution.setHasChild(strings.contains(jsonObject.getString("orgNumber"))?"1":"0"); - tsInstitution.setParentId(jsonObject.getString("parentOrgNumber")); - //部门为"null"的数据不保存 - if (!"null".equals(jsonObject.getString("orgName"))){ - tsInstitutions.add(tsInstitution); + @Transactional(rollbackFor = {RuntimeException.class,Exception.class}) + public String orgDataSync(){ + try{ + SyncUserService syncUserService = new SyncUserService(); + List res = syncUserService.syncFotonOrg(); + //获取到所有用户数据 + List strings=new ArrayList<>(); + //tsInstitutionService.clearData(); + for (String s : res) { + JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); + jsonArray.forEach(object -> { + JSONObject jsonObject = JSONObject.parseObject(object.toString()); + strings.add(jsonObject.getString("parentOrgNumber")); + }); + } + List allTsInstitutionList = tsInstitutionService.list(); + List addTsInstitutionList = new ArrayList<>(); + List updateTsInstitutionList = new ArrayList<>(); + List delTsInstitutionList = new ArrayList<>(); + Set syncAllIdList = new HashSet<>(); + for (String s : res) { + JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); + if(jsonArray!=null){ + jsonArray.forEach(object -> { + JSONObject jsonObject = JSONObject.parseObject(object.toString()); + TsInstitution tsInstitution=new TsInstitution(); + tsInstitution.setId(jsonObject.getString("orgNumber")); + tsInstitution.setName(jsonObject.getString("orgName")); + tsInstitution.setHasChild(strings.contains(jsonObject.getString("orgNumber"))?"1":"0"); + tsInstitution.setParentId(jsonObject.getString("parentOrgNumber")); + //部门为"null"的数据不保存 + if (!"null".equals(jsonObject.getString("orgName"))){ + TsInstitution institution = tsInstitutionService.getById(tsInstitution.getId()); + if(institution!=null){ + updateTsInstitutionList.add(tsInstitution); + }else{ + addTsInstitutionList.add(tsInstitution); + } + syncAllIdList.add(tsInstitution.getId()); + } + }); } - }); - tsInstitutionService.saveBatch(tsInstitutions); + } + //遍历出来需要删除的数据 + for(TsInstitution data :allTsInstitutionList){ + if(!syncAllIdList.contains(data.getId())){ + delTsInstitutionList.add(data); + } + } + //需要新增的数据 + if(!addTsInstitutionList.isEmpty()){ + tsInstitutionService.saveBatch(addTsInstitutionList); + } + //需要更新的数据 + if(!updateTsInstitutionList.isEmpty()){ + tsInstitutionService.updateBatchById(updateTsInstitutionList); + } + //需要删除的数据 + if(!delTsInstitutionList.isEmpty()){ + tsInstitutionService.updateBatchById(delTsInstitutionList); + } + }catch(Exception e){ + logger.error(e.getMessage(),e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } return "1"; } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/controller/NewsFeedController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/controller/NewsFeedController.java index f881d013..5141223e 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/controller/NewsFeedController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/controller/NewsFeedController.java @@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.ArrayList; import java.util.List; /** @@ -38,13 +39,27 @@ public class NewsFeedController extends BaseController { @GetMapping("/getNewsFeed") public ResponseMessage> NewFeedPage(NewsFeedPage page){ IPage iPage = new Page<>(); + iPage.setCurrent(page.getPage()); iPage.setSize(page.getPageSize()); - iPage.setTotal(page.getPage()); + List list = new ArrayList<>(); + if("GNWBZFG".equals(page.getMessageType())){ + list.add("hc99551723c"); + }else if("ZYBZFG".equals(page.getMessageType())){ + list.add("hya6gay4vx"); + list.add("8rjsx83ows"); + list.add("ncb6osftj8"); + list.add("3dx7oy5jff"); + }else if("QYBZFB".equals(page.getMessageType())){ + list.add("6jnqba2mby"); + } QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq(StringUtils.isNotEmpty(page.getStandardId()),"STANDARD_ID",page.getStandardId()); queryWrapper.eq(StringUtils.isNotEmpty(page.getStandardName()),"STANDARD_NAME",page.getStandardName()); queryWrapper.eq("MESSAGE_TYPE",page.getMessageType()); - queryWrapper.orderByDesc("UPDATE_TIME"); + if(StringUtils.isNotBlank(page.getMessageType())){ + queryWrapper.in("TEXT_STATE",list); + } + queryWrapper.orderByDesc("RENEW_TIME"); IPage newsFeedList = newsFeedService.page(iPage,queryWrapper); return Result.success(newsFeedList); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/entity/NewsFeed.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/entity/NewsFeed.java index 41837032..20badbaf 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/entity/NewsFeed.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/entity/NewsFeed.java @@ -3,6 +3,7 @@ package com.adc.da.slrs.NewsFeed.entity; import com.adc.da.base.entity.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -59,5 +60,6 @@ public class NewsFeed extends BaseEntity { @TableField("RENEW_TIME") @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date renewTime; } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/service/INewsFeedService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/service/INewsFeedService.java index fd4b7b97..13a878c9 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/service/INewsFeedService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/service/INewsFeedService.java @@ -9,7 +9,6 @@ import org.springframework.stereotype.Service; * @Date: 2022/5/23 0023 15:01 * @Version 1.0 */ -@Service public interface INewsFeedService extends IService { int insertNewsFeed(NewsFeed newsFeed); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java index 63a74ddf..96a67174 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java @@ -18,6 +18,8 @@ import com.adc.da.person.service.IPersonCollectEOService; import com.adc.da.search.entity.SarBussionessStandEO; import com.adc.da.search.entity.StandLawsEO; import com.adc.da.search.service.StandLawsSearchService; +import com.adc.da.slrs.NewsFeed.entity.NewsFeed; +import com.adc.da.slrs.NewsFeed.service.INewsFeedService; import com.adc.da.slrs.otConvertMq.dao.OtConvertMqDao; import com.adc.da.slrs.otConvertMq.entity.OtConvertMq; import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; @@ -155,6 +157,9 @@ public class SarBussionessStandServiceImpl extends ServiceImpl newMap = new HashMap<>(); + Map oldMap = beforeSarStandardsInfo.getAttrInfoMap(); + String attrStr = sarStandardsInfoEO.getSarStandAttrEOStr(); + if (org.apache.commons.lang3.StringUtils.isNotBlank(attrStr)) { + newMap = JSONObject.fromObject(attrStr); + } + + // 发布稿 + List fbgNew = Arrays.stream(newMap.getOrDefault("FBGBJBD", "").toString().split(",")) + .map(String::trim).collect(Collectors.toList()); + + List fbgOld = Arrays.stream(oldMap.getOrDefault("FBGBJBD", "").toString().split(",")) + .map(String::trim).collect(Collectors.toList()); + // 取差集 判断是否有新的发布稿 + List filterDisunityFbg = fbgNew.stream() + .filter(item -> !new ArrayList<>(fbgOld) + .contains(item)) + .collect(Collectors.toList()); + + // 在研稿件 + String strUsNew = newMap.getOrDefault("CA", "").toString()+ + ","+newMap.getOrDefault("GLWJ", "").toString()+ + ","+newMap.getOrDefault("XGD", "").toString()+ + ","+newMap.getOrDefault("BPG", "").toString()+ + ","+newMap.getOrDefault("ZQYJG", "").toString()+ + ","+newMap.getOrDefault("SSG", "").toString()+ + ","+newMap.getOrDefault("JDWJ", "").toString()+ + ","+newMap.getOrDefault("KWJ", "").toString()+ + ","+newMap.getOrDefault("XDB", "").toString()+ + ","+newMap.getOrDefault("ZBJBD", "").toString(); + String strUsOld = oldMap.getOrDefault("CA", "").toString()+ + ","+oldMap.getOrDefault("GLWJ", "").toString()+ + ","+oldMap.getOrDefault("XGD", "").toString()+ + ","+oldMap.getOrDefault("BPG", "").toString()+ + ","+oldMap.getOrDefault("ZQYJG", "").toString()+ + ","+oldMap.getOrDefault("SSG", "").toString()+ + ","+oldMap.getOrDefault("JDWJ", "").toString()+ + ","+oldMap.getOrDefault("KWJ", "").toString()+ + ","+oldMap.getOrDefault("XDB", "").toString()+ + ","+oldMap.getOrDefault("ZBJBD", "").toString(); + List usNew = Arrays.stream(strUsNew.split(",")) + .map(String::trim).collect(Collectors.toList()); + List usOld = Arrays.stream(strUsOld.split(",")) + .map(String::trim).collect(Collectors.toList()); + // 取差集 判断是否有新的在研稿件 + List filterDisunityUs = usNew.stream() + .filter(item -> !new ArrayList<>(usOld) + .contains(item)) + .collect(Collectors.toList()); + + // 0 发布稿件 新的文件数量 大于等于 在研稿件 就属于发布动态消息 则 为 1 在研 + if(filterDisunityFbg.size() >= filterDisunityUs.size()){ + saveNewFeed(sarStandardsInfoEO, "2"); + }else { + saveNewFeed(sarStandardsInfoEO, ""); + } + } + + private void saveNewFeed(SarBussionessStand sarStandardsInfoEO, String s) { + NewsFeed newsFeed = new NewsFeed(); + newsFeed.setId(UUIDUtils.randomUUID20()); + newsFeed.setRenewTime(new Date()); + newsFeed.setStandardId(sarStandardsInfoEO.getId()); + newsFeed.setResourceType("BUSINESS"); + newsFeed.setMessageType(s); + newsFeed.setStandard(verifyObj(sarStandardsInfoEO.getStandCode()).toString()); + newsFeed.setStandardName(verifyObj(sarStandardsInfoEO.getStandName()).toString()); + newsFeed.setReleaseDate(verifyObj(sarStandardsInfoEO.getIssueTime()).toString()); + // 企标 技术标准或产品标准走完流程 文本状态默认 发布状态 + newsFeed.setTextState("6jnqba2mby"); + iNewsFeedService.insertNewsFeed(newsFeed); + } + public void saveUpdateLog(SarBussionessStand sarStandardsInfoEO,SarBussionessStand beforeSarStandardsInfo) throws Exception{ Map newMap = new HashMap<>(); Map oldMap = beforeSarStandardsInfo.getAttrInfoMap(); diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/impl/SarMenuStandardNewServiceNewImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/impl/SarMenuStandardNewServiceNewImpl.java index d287cb43..175233dd 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/impl/SarMenuStandardNewServiceNewImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/impl/SarMenuStandardNewServiceNewImpl.java @@ -47,7 +47,7 @@ public class SarMenuStandardNewServiceNewImpl extends ServiceImpl 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { if (StringUtils.isNotBlank(entry.getValue().toString())) { Object json = new JSONTokener(entry.getValue().toString()).nextValue(); - if (json instanceof org.json.JSONArray) { + if (json instanceof JSONArray) { valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(), String.class); } else { value = entry.getValue().toString(); @@ -1214,7 +1222,12 @@ public class SarStandardsInfoServiceImpl extends ServiceImpl newMap = new HashMap<>(); + Map oldMap = beforeSarStandardsInfo.getAttrInfoMap(); + String attrStr = sarStandardsInfoEO.getSarStandAttrEOStr(); + if (StringUtils.isNotBlank(attrStr)) { + newMap = JSONObject.fromObject(attrStr); + } + + // 发布稿 + List fbgNew = Arrays.stream(newMap.getOrDefault("FBGBJBD", "").toString().split(",")) + .map(String::trim).collect(Collectors.toList()); + + List fbgOld = Arrays.stream(oldMap.getOrDefault("FBGBJBD", "").toString().split(",")) + .map(String::trim).collect(Collectors.toList()); + // 取差集 判断是否有新的发布稿 + List filterDisunityFbg = fbgNew.stream() + .filter(item -> !new ArrayList<>(fbgOld) + .contains(item)) + .collect(Collectors.toList()); + + filterDisunityFbg = filterDisunityFbg.stream().filter(s -> !s.equals("")).collect(Collectors.toList()); + // 在研稿件 + String strUsNew = newMap.getOrDefault("CA", "").toString()+ + ","+newMap.getOrDefault("GLWJ", "").toString()+ + ","+newMap.getOrDefault("XGD", "").toString()+ + ","+newMap.getOrDefault("BPG", "").toString()+ + ","+newMap.getOrDefault("ZQYJG", "").toString()+ + ","+newMap.getOrDefault("SSG", "").toString()+ + ","+newMap.getOrDefault("JDWJ", "").toString()+ + ","+newMap.getOrDefault("KWJ", "").toString()+ + ","+newMap.getOrDefault("XDB", "").toString()+ + ","+newMap.getOrDefault("ZBJBD", "").toString(); + String strUsOld = oldMap.getOrDefault("CA", "").toString()+ + ","+oldMap.getOrDefault("GLWJ", "").toString()+ + ","+oldMap.getOrDefault("XGD", "").toString()+ + ","+oldMap.getOrDefault("BPG", "").toString()+ + ","+oldMap.getOrDefault("ZQYJG", "").toString()+ + ","+oldMap.getOrDefault("SSG", "").toString()+ + ","+oldMap.getOrDefault("JDWJ", "").toString()+ + ","+oldMap.getOrDefault("KWJ", "").toString()+ + ","+oldMap.getOrDefault("XDB", "").toString()+ + ","+oldMap.getOrDefault("ZBJBD", "").toString(); + List usNew = Arrays.stream(strUsNew.split(",")) + .map(String::trim).collect(Collectors.toList()); + List usOld = Arrays.stream(strUsOld.split(",")) + .map(String::trim).collect(Collectors.toList()); + // 取差集 判断是否有新的在研稿件 + List filterDisunityUs = usNew.stream() + .filter(item -> !new ArrayList<>(usOld) + .contains(item)) + .collect(Collectors.toList()); + + filterDisunityUs = filterDisunityUs.stream().filter(s -> !s.equals("")).collect(Collectors.toList()); + + + // 0 发布稿件 新的文件数量 大于等于 在研稿件 就属于发布动态消息 则 为 1 在研 + if(filterDisunityFbg.size() >= filterDisunityUs.size()){ + saveNewFeed(sarStandardsInfoEO, "0"); + }else { + saveNewFeed(sarStandardsInfoEO, "1"); + } + + + + } + + private void saveNewFeed(SarStandardsInfo sarStandardsInfoEO, String s) { + NewsFeed newsFeed = new NewsFeed(); + newsFeed.setId(UUIDUtils.randomUUID20()); + newsFeed.setRenewTime(new Date()); + newsFeed.setStandardId(sarStandardsInfoEO.getId()); + newsFeed.setResourceType(verifyObj(sarStandardsInfoEO.getStandType()).toString()); + newsFeed.setMessageType(s); + String standard = ""; + if(StringUtils.isNotBlank(sarStandardsInfoEO.getStandYear())){ + standard = verifyObj(sarStandardsInfoEO.getStandSort()).toString() +" "+ verifyObj(sarStandardsInfoEO.getStandNumber()).toString()+"-"+verifyObj(sarStandardsInfoEO.getStandYear()).toString(); + }else { + standard = verifyObj(sarStandardsInfoEO.getStandSort()).toString() +" "+ verifyObj(sarStandardsInfoEO.getStandNumber()).toString(); + } + newsFeed.setStandard(standard); + newsFeed.setStandardName(verifyObj(sarStandardsInfoEO.getStandName()).toString()); + newsFeed.setReleaseDate(verifyObj(sarStandardsInfoEO.getIssueTime()).toString()); + newsFeed.setTextState(verifyObj(sarStandardsInfoEO.getTextStatus()).toString()); + iNewsFeedService.insertNewsFeed(newsFeed); + } + public void saveUpdateLog(SarStandardsInfo sarStandardsInfoEO, SarStandardsInfo beforeSarStandardsInfo) throws Exception { Map newMap = new HashMap<>(); Map oldMap = beforeSarStandardsInfo.getAttrInfoMap(); diff --git a/doc/sql/news_feed_动态消息表更新表结构.sql b/doc/sql/news_feed_动态消息表更新表结构.sql new file mode 100644 index 00000000..1741f4d0 --- /dev/null +++ b/doc/sql/news_feed_动态消息表更新表结构.sql @@ -0,0 +1,33 @@ +/* +Navicat MySQL Data Transfer + +Source Server : 123.56.177.15_new_测试 +Source Server Version : 50736 +Source Host : 123.56.177.15:3306 +Source Database : foton_slrs_test2 + +Target Server Type : MYSQL +Target Server Version : 50736 +File Encoding : 65001 + +Date: 2022-06-02 12:17:37 +*/ + +SET FOREIGN_KEY_CHECKS=0; + +-- ---------------------------- +-- Table structure for news_feed +-- ---------------------------- +DROP TABLE IF EXISTS `news_feed`; +CREATE TABLE `news_feed` ( + `ID` varchar(50) CHARACTER SET utf8mb4 NOT NULL COMMENT 'ID', + `RESOURCE_TYPE` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '资源类型', + `MESSAGE_TYPE` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '消息类型', + `STANDARD_ID` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '标准类型', + `STANDARD` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '标准号', + `STANDARD_NAME` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '标准名称', + `RELEASE_DATE` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '发布日期', + `TEXT_STATE` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '文本状态', + `RENEW_TIME` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='动态消息表';