虚拟清单发布消息修改

This commit is contained in:
xiejunyu
2022-06-08 14:55:32 +08:00
parent 75b9f15462
commit ed91503153
3 changed files with 658 additions and 719 deletions
@@ -1560,6 +1560,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
String cut = (String) map.get("cut"); String cut = (String) map.get("cut");
try { try {
String serialNumber = (String)map.get("serial_number"); String serialNumber = (String)map.get("serial_number");
//String serialNumber = String.valueOf(map.get("serial_number"));
//编码验重 //编码验重
List<BussDocumentLibraryEO> list = this.list(); List<BussDocumentLibraryEO> list = this.list();
if(list.size() != 0){ if(list.size() != 0){
@@ -13,10 +13,7 @@ import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.LoginUser;
import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl; import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl;
import com.jero.modules.domain.service.DomainUserRelService; import com.jero.modules.domain.service.DomainUserRelService;
import com.jero.modules.dummy.entity.DummyContentChangeEO; import com.jero.modules.dummy.entity.*;
import com.jero.modules.dummy.entity.DummyInventoryBaseEO;
import com.jero.modules.dummy.entity.DummyInventoryInfoEO;
import com.jero.modules.dummy.entity.DummyReadEO;
import com.jero.modules.dummy.enums.DummyInventoryBaseFieldEnum; import com.jero.modules.dummy.enums.DummyInventoryBaseFieldEnum;
import com.jero.modules.dummy.enums.InventoryStateEnum; import com.jero.modules.dummy.enums.InventoryStateEnum;
import com.jero.modules.dummy.enums.ReadFlagEnum; import com.jero.modules.dummy.enums.ReadFlagEnum;
@@ -50,13 +47,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -96,6 +87,10 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
private DummyContentChangeEOMapper dummyContentChangeEOMapper; private DummyContentChangeEOMapper dummyContentChangeEOMapper;
@Autowired @Autowired
private IOSSFileService iOSSFileService; private IOSSFileService iOSSFileService;
@Autowired
private DummyLogEOServiceImpl dummyLogEOService;
/** /**
* 保存 * 保存
* *
@@ -158,6 +153,11 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
LambdaQueryWrapper<DummyInventoryInfoEO> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DummyInventoryInfoEO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(DummyInventoryInfoEO::getDummyInventoryBaseId,ids); wrapper.in(DummyInventoryInfoEO::getDummyInventoryBaseId,ids);
iDummyInventoryInfoEOService.remove(wrapper); iDummyInventoryInfoEOService.remove(wrapper);
//关联删除虚拟清单log
QueryWrapper<DummyLogEO> logEOQueryWrapper = new QueryWrapper<>();
logEOQueryWrapper.in("dummy_inventory_base_id",ids);
dummyLogEOService.remove(logEOQueryWrapper);
} }
/** /**
@@ -273,15 +273,18 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
LambdaQueryWrapper<DummyInventoryInfoEO> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DummyInventoryInfoEO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(DummyInventoryInfoEO::getDummyInventoryBaseId,dummyInventoryBaseEO.getId()); lambdaQueryWrapper.in(DummyInventoryInfoEO::getDummyInventoryBaseId,dummyInventoryBaseEO.getId());
List<DummyInventoryInfoEO> dummyInventoryInfoEOList = iDummyInventoryInfoEOService.list(lambdaQueryWrapper); List<DummyInventoryInfoEO> dummyInventoryInfoEOList = iDummyInventoryInfoEOService.list(lambdaQueryWrapper);
String contentLog = null;
if(dummyContentChangeEOList.size() == 0){ if(dummyContentChangeEOList.size() == 0){
//没有添加过需要进行第一次添加 //没有添加过需要进行第一次添加
Date thisTime = new Date();
List<DummyContentChangeEO> list = new ArrayList<>(); List<DummyContentChangeEO> list = new ArrayList<>();
if(dummyInventoryBaseEOList.size() != 0){ if(dummyInventoryBaseEOList.size() != 0){
String base = JSONArray.toJSONString(dummyInventoryBaseEOList); String base = JSONArray.toJSONString(dummyInventoryBaseEOList);
DummyContentChangeEO dummyContentChangeEOBase = new DummyContentChangeEO(); DummyContentChangeEO dummyContentChangeEOBase = new DummyContentChangeEO();
dummyContentChangeEOBase.setConnectId(dummyInventoryBaseEO.getId()); dummyContentChangeEOBase.setConnectId(dummyInventoryBaseEO.getId());
dummyContentChangeEOBase.setContentJson(base); dummyContentChangeEOBase.setContentJson(base);
dummyContentChangeEOBase.setUpdateTime(thisTime);
list.add(dummyContentChangeEOBase); list.add(dummyContentChangeEOBase);
} }
if(dummyInventoryInfoEOList.size() != 0){ if(dummyInventoryInfoEOList.size() != 0){
@@ -290,6 +293,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
DummyContentChangeEO dummyContentChangeEOInfo = new DummyContentChangeEO(); DummyContentChangeEO dummyContentChangeEOInfo = new DummyContentChangeEO();
dummyContentChangeEOInfo.setParentId(dummyInventoryBaseEO.getId()); dummyContentChangeEOInfo.setParentId(dummyInventoryBaseEO.getId());
dummyContentChangeEOInfo.setContentJson(info); dummyContentChangeEOInfo.setContentJson(info);
dummyContentChangeEOInfo.setUpdateTime(thisTime);
list.add(dummyContentChangeEOInfo); list.add(dummyContentChangeEOInfo);
} }
if(list.size() != 0){ if(list.size() != 0){
@@ -305,6 +309,12 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
wrapperInfo.in(DummyContentChangeEO::getParentId,dummyInventoryBaseEO.getId()); wrapperInfo.in(DummyContentChangeEO::getParentId,dummyInventoryBaseEO.getId());
List<DummyContentChangeEO> dummyContentChangeEOInfoList = iDummyContentChangeEOService.list(wrapperInfo); List<DummyContentChangeEO> dummyContentChangeEOInfoList = iDummyContentChangeEOService.list(wrapperInfo);
Date lastIssueTime = null;
Date now = new Date();
if (CollectionUtils.isNotEmpty(dummyContentChangeEOInfoList)) {
lastIssueTime = dummyContentChangeEOInfoList.get(0).getUpdateTime();
if(CollectionUtils.isNotEmpty(dummyContentChangeEOInfoList)){ if(CollectionUtils.isNotEmpty(dummyContentChangeEOInfoList)){
//3.对比基础表数据 //3.对比基础表数据
//3.1截止到现在发布,期间修改的数据(基础) //3.1截止到现在发布,期间修改的数据(基础)
@@ -322,94 +332,25 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
baseDiff = ListDiff.compareObject(baseCJList.get(i), dummyInventoryBaseEOList.get(i)); baseDiff = ListDiff.compareObject(baseCJList.get(i), dummyInventoryBaseEOList.get(i));
} }
//4.对比详情表数据 //4.查详情表两次发布的时间之间的数据
//4.1截止到现在发布,期间修改的数据(详情) if(lastIssueTime != now){
//现在的数据为-->dummyInventoryInfoEOList QueryWrapper<DummyLogEO> logEOQueryWrapper = new QueryWrapper<>();
logEOQueryWrapper.orderByAsc("create_time")
//4.2详情表数据(一条基础数据可能对应多个详情数据---一对多) .between("create_time",lastIssueTime,now)
//数据库里原来的详情数据 .eq("dummy_inventory_base_id",dummyInventoryBaseEO.getId())
String addSerialNumber=null; .eq("is_en_log",CutEnum.EN.getValue());
String deleteSerialNumber=null; List<DummyLogEO> updateLogList = dummyLogEOService.list(logEOQueryWrapper);
List<String> addSerialNumberList =null; if(CollectionUtils.isNotEmpty(updateLogList)){
List<String> deleteSerialNumberList =null; contentLog = updateLogList.stream().map(e -> e.getLogContent()).collect(Collectors.joining(","));
//获取数据库里保存的json
String infoCJ = dummyContentChangeEOInfoList.get(0).getContentJson();
List<DummyInventoryInfoEO> infoCJList = JSONArray.parseArray(infoCJ, DummyInventoryInfoEO.class);//json转list
//翻译字典code值
disposeDataToEn(dummyInventoryInfoEOList);
//获取数据库和传入同时存在的编号
//获取两个的编号
List<String> infoCJBaseSerialNumberList = infoCJList.stream().map(e -> e.getSerialNumber()).collect(Collectors.toList());
List<String> dummyInventoryInfoEOSerialNumberList = dummyInventoryInfoEOList.stream().map(e -> e.getSerialNumber()).collect(Collectors.toList());
List<DummyInventoryInfoEO> sameDummyInventoryInfoEOList = new ArrayList<>();
List<DummyInventoryInfoEO> sameinfoCJList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(dummyInventoryInfoEOSerialNumberList)) {
//查询共有编号
List<String> sameSerialNumberList = infoCJBaseSerialNumberList.stream().filter(t -> dummyInventoryInfoEOSerialNumberList.contains(t)).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(sameSerialNumberList)) {
for (String sameSerialNumber : sameSerialNumberList) {
//查询传入里包含共有编号的数据
DummyInventoryInfoEO sameInfoEO = dummyInventoryInfoEOList.stream().filter(e->e.getSerialNumber().equals(sameSerialNumber)).collect(Collectors.toList()).get(0);
sameDummyInventoryInfoEOList.add(sameInfoEO);
//查询数据库里包含共有编号的数据
DummyInventoryInfoEO sameInfoCJ = infoCJList.stream().filter(e -> e.getSerialNumber().equals(sameSerialNumber)).collect(Collectors.toList()).get(0);
sameinfoCJList.add(sameInfoCJ);
}
} }
} }
//4.2.1处理现原共有有详情数据不同值字段
Map<String, String> infoDiff = null;
List<Map<String, String>> infoDiffList=new ArrayList<>();
for (int i = 0; i < sameinfoCJList.size(); i++) {
infoDiff = ListDiff.compareObject(sameinfoCJList.get(i), sameDummyInventoryInfoEOList.get(i));
if (MapUtils.isNotEmpty(infoDiff)) {
if(infoDiff.size() > 1) {
infoDiffList.add(infoDiff);
}
}
}
//4.2.2处理新增数据
List<String> infoCJSerialNumberList = infoCJList.stream().map(e -> e.getSerialNumber()).collect(Collectors.toList());
for (DummyInventoryInfoEO dummyInventoryInfoEO : infoCJList) {
addSerialNumberList = dummyInventoryInfoEOList.stream().filter(e -> !dummyInventoryInfoEO.equals(e.getId()))
.map(f -> f.getSerialNumber()).collect(Collectors.toList());
}
//去掉发布时传入的和数据库同时有的数据
for(String midSerialNumber:infoCJSerialNumberList){
addSerialNumberList.remove(midSerialNumber);
}
addSerialNumber =StringUtils.join(addSerialNumberList,",");
//4.2.3处理删除的数据
for (DummyInventoryInfoEO dummyInventoryInfoEO : infoCJList) {
deleteSerialNumberList = dummyInventoryInfoEOList.stream().filter(e -> !dummyInventoryInfoEO.equals(e.getId()))
.map(f -> f.getSerialNumber()).collect(Collectors.toList());
}
for(String midSerialNumber:deleteSerialNumberList){
infoCJSerialNumberList.remove(midSerialNumber);
}
deleteSerialNumber=StringUtils.join(infoCJSerialNumberList,",");
//列表,维护清单不同的字段,addSerialNumber,deleteSerialNumber都为空->证明是没有更新的数据,不发送消息,数据不处理 //列表,维护清单不同的字段,addSerialNumber,deleteSerialNumber都为空->证明是没有更新的数据,不发送消息,数据不处理
if(MapUtils.isNotEmpty(baseDiff) || CollectionUtils.isNotEmpty(infoDiffList) if(MapUtils.isNotEmpty(baseDiff) || StringUtils.isNotEmpty(contentLog)) {
|| StringUtils.isNotEmpty(addSerialNumber) || StringUtils.isNotEmpty(deleteSerialNumber)) {
//向订阅该领域管理的人发消息和飞书 //向订阅该领域管理的人发消息和飞书
sendMsg(baseDiff, dummyContentChangeEOBaseList.get(0).getConnectId(), infoDiffList, addSerialNumber, deleteSerialNumber,dummyInventoryBaseEO.getState(),dummyInventoryBaseEO.getCut()); sendMsg(baseDiff, dummyContentChangeEOBaseList.get(0).getConnectId(), contentLog,dummyInventoryBaseEO.getState(),dummyInventoryBaseEO.getCut());
Date now=new Date();
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//5.数据对比完成后.更新之前保存的dummy_inventory_info中的content_json数据,重新保存最新的数据 //5.数据对比完成后.更新之前保存的dummy_inventory_info中的content_json数据,重新保存最新的数据
if(MapUtils.isNotEmpty(baseDiff)){//列表有不同字段 if(MapUtils.isNotEmpty(baseDiff)){//列表有不同字段
@@ -421,8 +362,8 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
.eq("connect_id",dummyInventoryBaseEOList.get(0).getId()); .eq("connect_id",dummyInventoryBaseEOList.get(0).getId());
dummyContentChangeEOMapper.update(null,baseUpdateWrapper); dummyContentChangeEOMapper.update(null,baseUpdateWrapper);
} }
if(CollectionUtils.isNotEmpty(infoDiffList) || StringUtils.isNotEmpty(addSerialNumber) // if(CollectionUtils.isNotEmpty(infoDiffList) || StringUtils.isNotEmpty(addSerialNumber)
|| StringUtils.isNotEmpty(deleteSerialNumber)){//维护清单有不同字段,addSerialNumber,deleteSerialNumber也有数据 // || StringUtils.isNotEmpty(deleteSerialNumber)){//维护清单有不同字段,addSerialNumber,deleteSerialNumber也有数据
String info = JSONArray.toJSONString(dummyInventoryInfoEOList); String info = JSONArray.toJSONString(dummyInventoryInfoEOList);
UpdateWrapper<DummyContentChangeEO> infoUpdateWrapper=new UpdateWrapper<>(); UpdateWrapper<DummyContentChangeEO> infoUpdateWrapper=new UpdateWrapper<>();
infoUpdateWrapper.set("content_json",info) infoUpdateWrapper.set("content_json",info)
@@ -430,6 +371,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
.set("update_time",now) .set("update_time",now)
.eq("parent_id",dummyInventoryBaseEOList.get(0).getId()); .eq("parent_id",dummyInventoryBaseEOList.get(0).getId());
dummyContentChangeEOMapper.update(null,infoUpdateWrapper); dummyContentChangeEOMapper.update(null,infoUpdateWrapper);
// }
} }
} }
}else{//基础数据发布过,详情原为空-->有新增,再次发布 }else{//基础数据发布过,详情原为空-->有新增,再次发布
@@ -443,9 +385,17 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
list.add(dummyContentChangeEOInfo); list.add(dummyContentChangeEOInfo);
} }
if(list.size() != 0){ if(list.size() != 0){
String addSerialNumber = dummyInventoryInfoEOList.stream().map(e -> e.getSerialNumber()).collect(Collectors.joining(",")); // String addSerialNumber = dummyInventoryInfoEOList.stream().map(e -> e.getSerialNumber()).collect(Collectors.joining(","));
QueryWrapper<DummyLogEO> logEOQueryWrapper = new QueryWrapper<>();
logEOQueryWrapper.orderByAsc("create_time")
.between("create_time",lastIssueTime,now)
.eq("dummy_inventory_base_id",dummyInventoryBaseEO.getId())
.eq("is_en_log",CutEnum.EN.getValue());
List<DummyLogEO> updateLogList = dummyLogEOService.list(logEOQueryWrapper);
contentLog = updateLogList.stream().map(e -> e.getLogContent()).collect(Collectors.joining(","));
iDummyContentChangeEOService.saveBatch(list); iDummyContentChangeEOService.saveBatch(list);
sendMsg(null,dummyInventoryInfoEOList.get(0).getDummyInventoryBaseId(), null, addSerialNumber,null,dummyInventoryBaseEO.getState(),dummyInventoryBaseEO.getCut()); sendMsg(null,dummyInventoryInfoEOList.get(0).getDummyInventoryBaseId(),contentLog ,dummyInventoryBaseEO.getState(),dummyInventoryBaseEO.getCut());
} }
} }
@@ -453,7 +403,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
}else{ }else{
//撤回,需要发消息 //撤回,需要发消息
try { try {
sendMsg(null, dummyInventoryBaseEO.getId(),null, null , null,dummyInventoryBaseEO.getState(),dummyInventoryBaseEO.getCut()); sendMsg(null, dummyInventoryBaseEO.getId(),null,dummyInventoryBaseEO.getState(),dummyInventoryBaseEO.getCut());
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();
} }
@@ -1057,8 +1007,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
} }
} }
//发送消息 //发送消息
private void sendMsg(Map<String, String> baseDiff, String idTemp,List<Map<String, String>> infoDiffList, private void sendMsg(Map<String, String> baseDiff, String idTemp,String contentLog,String state,String cut) {
String addSerialNumber,String deleteSerialNumber,String state,String cut) {
String baseName = queryById(idTemp).getName();//基础表id String baseName = queryById(idTemp).getName();//基础表id
String useExplain = queryById(idTemp).getUseExplain(); String useExplain = queryById(idTemp).getUseExplain();
@@ -1092,8 +1041,8 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
contentInfo = "The " + hrefUrl + " virtual list you subscribed to has been updated as follows : " + "\r\n"; contentInfo = "The " + hrefUrl + " virtual list you subscribed to has been updated as follows : " + "\r\n";
contentInfoTemp = "The " + baseName + " virtual list you subscribed to has been updated as follows : " + "\r\n"; contentInfoTemp = "The " + baseName + " virtual list you subscribed to has been updated as follows : " + "\r\n";
//拼接维护清单的消息 //拼接维护清单的消息
contentInfo = setContentInfo(contentInfo, baseDiff, infoDiffList, addSerialNumber, deleteSerialNumber,null); contentInfo = setContentInfo(contentInfo, baseDiff,null);
contentInfoTemp = setContentInfo(contentInfoTemp, baseDiff, infoDiffList, addSerialNumber, deleteSerialNumber,null); contentInfoTemp = setContentInfo(contentInfoTemp, baseDiff,contentLog);
//封装消息的实体类 //封装消息的实体类
SysAnnouncement sysAnnouncement = bussDocumentLibraryEOService.getSysAnnouncement(userIdList, content, contentInfo); SysAnnouncement sysAnnouncement = bussDocumentLibraryEOService.getSysAnnouncement(userIdList, content, contentInfo);
sysAnnouncementService.saveAnnouncement(sysAnnouncement); sysAnnouncementService.saveAnnouncement(sysAnnouncement);
@@ -1124,8 +1073,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
} }
} }
//拼接维护清单的消息 //拼接维护清单的消息
public String setContentInfo(String contentInfo, Map<String, String> baseDiff, List<Map<String, String>> infoDiffList public String setContentInfo(String contentInfo, Map<String, String> baseDiff,String contentLog) {
, String addSerialNumber, String deleteSerialNumber,String contentLog) {
int row = 1; int row = 1;
//设置虚拟清单列表的修改消息 //设置虚拟清单列表的修改消息
@@ -1147,27 +1095,10 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
row++; row++;
} }
} }
if (StringUtils.isNotBlank(contentLog)){
//设置维护清单的新增消息 contentInfo += contentLog;
if (StringUtils.isNotBlank(addSerialNumber)) {
contentInfo += row + ". " + "This virtual list has been added Number : " + addSerialNumber + ".\r\n";
row++;
} }
//设置维护清单的删除消息
if (StringUtils.isNotBlank(deleteSerialNumber)) {
contentInfo += row + ". " + "This virtual list has been deleted Number : " + deleteSerialNumber + ".\r\n";
row++;
}
//设置维护清单的修改消息
if(CollectionUtils.isNotEmpty(infoDiffList)) {
for (Map<String, String> infoDiff : infoDiffList) {
if (infoDiff.size() > 1) {
contentInfo += row + ". The Number " + infoDiff.get("serialNumber") + " has been updated as follows : " + "\r\n";
contentInfo = setInfoDiffListContent(contentInfo,infoDiffList,contentLog);
}
}
}
return contentInfo; return contentInfo;
} }
@@ -385,9 +385,16 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
*/ */
@Override @Override
public void setBatch(DummyInventoryInfoEO dummyInventoryInfoEO) { public void setBatch(DummyInventoryInfoEO dummyInventoryInfoEO) {
List<String> idsList = Arrays.asList(dummyInventoryInfoEO.getIds().split(","));
List<DummyInventoryInfoEO> infoEOList = listByIds(idsList);
String baseId = null;
if (CollectionUtils.isNotEmpty(infoEOList)) {
baseId = infoEOList.get(0).getDummyInventoryBaseId();
}
//检查虚拟清单是否存在 //检查虚拟清单是否存在
QueryWrapper<DummyInventoryBaseEO> infoEOQueryWrapper = new QueryWrapper<>(); QueryWrapper<DummyInventoryBaseEO> infoEOQueryWrapper = new QueryWrapper<>();
List<DummyInventoryBaseEO> baseList = dummyInventoryBaseEOService.list(infoEOQueryWrapper.in("id", dummyInventoryInfoEO.getIds()));
List<DummyInventoryBaseEO> baseList = dummyInventoryBaseEOService.list(infoEOQueryWrapper.eq("id",baseId));
if(CollectionUtils.isNotEmpty(baseList)){ if(CollectionUtils.isNotEmpty(baseList)){
if(StringUtils.isNotBlank(dummyInventoryInfoEO.getIds())){ if(StringUtils.isNotBlank(dummyInventoryInfoEO.getIds())){
//根据id查询数据库中完整信息,翻译 //根据id查询数据库中完整信息,翻译