虚拟清单更新log
This commit is contained in:
+14
-12
@@ -1,25 +1,26 @@
|
||||
package com.jero.modules.dummy.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.modules.dummy.entity.DummyLogEO;
|
||||
import com.jero.modules.dummy.service.IDummyLogEOService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.aspect.annotation.AutoLog;
|
||||
import com.jero.common.system.base.controller.JeroController;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.modules.dummy.entity.DummyLogEO;
|
||||
import com.jero.modules.dummy.service.IDummyLogEOService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.jero.common.aspect.annotation.AutoLog;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
@@ -53,6 +54,7 @@ public class DummyLogEOController extends JeroController<DummyLogEO, IDummyLogEO
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<DummyLogEO> queryWrapper = QueryGenerator.initQueryWrapper(dummyLogEO, req.getParameterMap());
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
Page<DummyLogEO> page = new Page<DummyLogEO>(pageNo, pageSize);
|
||||
IPage<DummyLogEO> pageList = dummyLogEOService.page(page, queryWrapper);
|
||||
return Result.OK(pageList);
|
||||
|
||||
+270
-180
@@ -281,133 +281,133 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
List<DummyContentChangeEO> dummyContentChangeEOInfoList = iDummyContentChangeEOService.list(wrapperInfo);
|
||||
|
||||
if(CollectionUtils.isNotEmpty(dummyContentChangeEOInfoList)){
|
||||
//3.对比基础表数据
|
||||
//3.1截止到现在发布,期间修改的数据(基础)
|
||||
//最新的数据为-->dummyInventoryBaseEOList
|
||||
//3.对比基础表数据
|
||||
//3.1截止到现在发布,期间修改的数据(基础)
|
||||
//最新的数据为-->dummyInventoryBaseEOList
|
||||
|
||||
//3.2基础表数据对比
|
||||
String baseCJ=dummyContentChangeEOBaseList.get(0).getContentJson();
|
||||
List<DummyInventoryBaseEO> baseCJList = JSONArray.parseArray(baseCJ, DummyInventoryBaseEO.class);//json转list
|
||||
//3.2基础表数据对比
|
||||
String baseCJ=dummyContentChangeEOBaseList.get(0).getContentJson();
|
||||
List<DummyInventoryBaseEO> baseCJList = JSONArray.parseArray(baseCJ, DummyInventoryBaseEO.class);//json转list
|
||||
|
||||
//对比,获取值不同的字段
|
||||
Map<String, String> baseDiff = null;
|
||||
for(int i=0;i< baseCJList.size();i++) {
|
||||
baseCJList.get(i);
|
||||
dummyInventoryBaseEOList.get(i);
|
||||
baseDiff = ListDiff.compareObject(baseCJList.get(i), dummyInventoryBaseEOList.get(i));
|
||||
}
|
||||
//对比,获取值不同的字段
|
||||
Map<String, String> baseDiff = null;
|
||||
for(int i=0;i< baseCJList.size();i++) {
|
||||
baseCJList.get(i);
|
||||
dummyInventoryBaseEOList.get(i);
|
||||
baseDiff = ListDiff.compareObject(baseCJList.get(i), dummyInventoryBaseEOList.get(i));
|
||||
}
|
||||
|
||||
//4.对比详情表数据
|
||||
//4.1截止到现在发布,期间修改的数据(详情)
|
||||
//现在的数据为-->dummyInventoryInfoEOList
|
||||
//4.对比详情表数据
|
||||
//4.1截止到现在发布,期间修改的数据(详情)
|
||||
//现在的数据为-->dummyInventoryInfoEOList
|
||||
|
||||
//4.2详情表数据(一条基础数据可能对应多个详情数据---一对多)
|
||||
//数据库里原来的详情数据
|
||||
String addSerialNumber=null;
|
||||
String deleteSerialNumber=null;
|
||||
List<String> addSerialNumberList =null;
|
||||
List<String> deleteSerialNumberList =null;
|
||||
//4.2详情表数据(一条基础数据可能对应多个详情数据---一对多)
|
||||
//数据库里原来的详情数据
|
||||
String addSerialNumber=null;
|
||||
String deleteSerialNumber=null;
|
||||
List<String> addSerialNumberList =null;
|
||||
List<String> deleteSerialNumberList =null;
|
||||
|
||||
//获取数据库里保存的json
|
||||
String infoCJ = dummyContentChangeEOInfoList.get(0).getContentJson();
|
||||
List<DummyInventoryInfoEO> infoCJList = JSONArray.parseArray(infoCJ, DummyInventoryInfoEO.class);//json转list
|
||||
//获取数据库里保存的json
|
||||
String infoCJ = dummyContentChangeEOInfoList.get(0).getContentJson();
|
||||
List<DummyInventoryInfoEO> infoCJList = JSONArray.parseArray(infoCJ, DummyInventoryInfoEO.class);//json转list
|
||||
|
||||
//翻译字典code值
|
||||
disposeData(dummyInventoryInfoEOList);
|
||||
//翻译字典code值
|
||||
disposeData(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<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());
|
||||
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)) {
|
||||
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);
|
||||
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<>();
|
||||
//4.2.1处理现原共有有详情数据不同值字段
|
||||
Map<String, String> infoDiff = null;
|
||||
List<Map<String, String>> infoDiffList=new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < sameinfoCJList.size(); i++) {
|
||||
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);
|
||||
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都为空->证明是没有更新的数据,不发送消息,数据不处理
|
||||
if(MapUtils.isNotEmpty(baseDiff) || CollectionUtils.isNotEmpty(infoDiffList)
|
||||
|| StringUtils.isNotEmpty(addSerialNumber) || StringUtils.isNotEmpty(deleteSerialNumber)) {
|
||||
//向订阅该领域管理的人发消息和飞书
|
||||
sendMsg(baseDiff, dummyContentChangeEOBaseList.get(0).getConnectId(), infoDiffList, addSerialNumber, deleteSerialNumber,dummyInventoryBaseEO.getState(),dummyInventoryBaseEO.getCut());
|
||||
|
||||
|
||||
|
||||
Date now=new Date();
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
//5.数据对比完成后.更新之前保存的dummy_inventory_info中的content_json数据,重新保存最新的数据
|
||||
if(MapUtils.isNotEmpty(baseDiff)){//列表有不同字段
|
||||
String base = JSONArray.toJSONString(dummyInventoryBaseEOList);
|
||||
UpdateWrapper<DummyContentChangeEO> baseUpdateWrapper=new UpdateWrapper<>();
|
||||
baseUpdateWrapper.set("content_json",base)
|
||||
.set("update_by",sysUser.getUsername())
|
||||
.set("update_time",now)
|
||||
.eq("connect_id",dummyInventoryBaseEOList.get(0).getId());
|
||||
dummyContentChangeEOMapper.update(null,baseUpdateWrapper);
|
||||
//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());
|
||||
}
|
||||
if(CollectionUtils.isNotEmpty(infoDiffList) || StringUtils.isNotEmpty(addSerialNumber)
|
||||
|| StringUtils.isNotEmpty(deleteSerialNumber)){//维护清单有不同字段,addSerialNumber,deleteSerialNumber也有数据
|
||||
String info = JSONArray.toJSONString(dummyInventoryInfoEOList);
|
||||
UpdateWrapper<DummyContentChangeEO> infoUpdateWrapper=new UpdateWrapper<>();
|
||||
infoUpdateWrapper.set("content_json",info)
|
||||
.set("update_by",sysUser.getUsername())
|
||||
.set("update_time",now)
|
||||
.eq("parent_id",dummyInventoryBaseEOList.get(0).getId());
|
||||
dummyContentChangeEOMapper.update(null,infoUpdateWrapper);
|
||||
//去掉发布时传入的和数据库同时有的数据
|
||||
for(String midSerialNumber:infoCJSerialNumberList){
|
||||
addSerialNumberList.remove(midSerialNumber);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
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都为空->证明是没有更新的数据,不发送消息,数据不处理
|
||||
if(MapUtils.isNotEmpty(baseDiff) || CollectionUtils.isNotEmpty(infoDiffList)
|
||||
|| StringUtils.isNotEmpty(addSerialNumber) || StringUtils.isNotEmpty(deleteSerialNumber)) {
|
||||
//向订阅该领域管理的人发消息和飞书
|
||||
sendMsg(baseDiff, dummyContentChangeEOBaseList.get(0).getConnectId(), infoDiffList, addSerialNumber, deleteSerialNumber,dummyInventoryBaseEO.getState(),dummyInventoryBaseEO.getCut());
|
||||
|
||||
|
||||
|
||||
Date now=new Date();
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
//5.数据对比完成后.更新之前保存的dummy_inventory_info中的content_json数据,重新保存最新的数据
|
||||
if(MapUtils.isNotEmpty(baseDiff)){//列表有不同字段
|
||||
String base = JSONArray.toJSONString(dummyInventoryBaseEOList);
|
||||
UpdateWrapper<DummyContentChangeEO> baseUpdateWrapper=new UpdateWrapper<>();
|
||||
baseUpdateWrapper.set("content_json",base)
|
||||
.set("update_by",sysUser.getUsername())
|
||||
.set("update_time",now)
|
||||
.eq("connect_id",dummyInventoryBaseEOList.get(0).getId());
|
||||
dummyContentChangeEOMapper.update(null,baseUpdateWrapper);
|
||||
}
|
||||
if(CollectionUtils.isNotEmpty(infoDiffList) || StringUtils.isNotEmpty(addSerialNumber)
|
||||
|| StringUtils.isNotEmpty(deleteSerialNumber)){//维护清单有不同字段,addSerialNumber,deleteSerialNumber也有数据
|
||||
String info = JSONArray.toJSONString(dummyInventoryInfoEOList);
|
||||
UpdateWrapper<DummyContentChangeEO> infoUpdateWrapper=new UpdateWrapper<>();
|
||||
infoUpdateWrapper.set("content_json",info)
|
||||
.set("update_by",sysUser.getUsername())
|
||||
.set("update_time",now)
|
||||
.eq("parent_id",dummyInventoryBaseEOList.get(0).getId());
|
||||
dummyContentChangeEOMapper.update(null,infoUpdateWrapper);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if(CutEnum.CN.getValue().equals(dummyInventoryBaseEO.getCut())) {
|
||||
throw new JeroBootException("维护清单为空,发布失败");
|
||||
}else{
|
||||
@@ -456,7 +456,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
}
|
||||
dummyInventoryInfoEO.setTechnologyTerritoryName(technologyTerritoryName);
|
||||
}else{
|
||||
dummyInventoryInfoEO.setTechnologyTerritoryName("空");
|
||||
dummyInventoryInfoEO.setTechnologyTerritoryName("空");
|
||||
}
|
||||
|
||||
//适用范围
|
||||
@@ -639,7 +639,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
content = "The " + baseName + " virtual list you subscribed to has been updated.";
|
||||
contentInfo = "The " + baseName + " virtual list you subscribed to has been updated as follows : " + "\r\n";
|
||||
//拼接维护清单的消息
|
||||
contentInfo = setContentInfo(contentInfo, baseDiff, infoDiffList, addSerialNumber, deleteSerialNumber,idTemp);
|
||||
contentInfo = setContentInfo(contentInfo, baseDiff, infoDiffList, addSerialNumber, deleteSerialNumber,null);
|
||||
|
||||
}else{//撤回的消息
|
||||
content = "The " + baseName + " virtual list you subscribed to has been withdrawn,please note.";
|
||||
@@ -660,9 +660,9 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
}
|
||||
//拼接维护清单的消息
|
||||
public String setContentInfo(String contentInfo, Map<String, String> baseDiff, List<Map<String, String>> infoDiffList
|
||||
, String addSerialNumber, String deleteSerialNumber,String idTemp) {
|
||||
, String addSerialNumber, String deleteSerialNumber,String contentLog) {
|
||||
int row = 1;
|
||||
String contentLog = null;
|
||||
|
||||
//设置虚拟清单列表的修改消息
|
||||
if(MapUtils.isNotEmpty(baseDiff)) {
|
||||
//虚拟清单名称
|
||||
@@ -703,188 +703,278 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
contentInfo += row + ". The serial Number " + infoDiff.get("serialNumber") + " has been updated as follows : " + "\r\n";
|
||||
//技术领域
|
||||
if (StringUtils.isNotBlank(infoDiff.get("technologyTerritoryName"))) {
|
||||
|
||||
List<String> list = Arrays.asList(infoDiff.get("technologyTerritoryName").split("\\|"));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Technology territory has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Technology territory has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
}else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.TECHNOLOGY_TERRITORY.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//新车型实施日期
|
||||
if (StringUtils.isNotBlank(infoDiff.get("xin1Che1Xing2Shi2Shi1Ri4Qi1String"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("xin1Che1Xing2Shi2Shi1Ri4Qi1String").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). The implementation date of new model has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). The implementation date of new model has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
}else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.XIN1_CHE1_XING2_SHI2_SHI1_RI4_QI1.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//在产车实施日期
|
||||
if (StringUtils.isNotBlank(infoDiff.get("implementTimeString"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("implementTimeString").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Implement time has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Implement time has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
}else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.IMPLEMENT_TIME.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//WVTA ID
|
||||
if (StringUtils.isNotBlank(infoDiff.get("wvtaId"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("wvtaId").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). WVTA ID has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). WVTA ID has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
} else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.WVTA_ID.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//子标题
|
||||
if (StringUtils.isNotBlank(infoDiff.get("subtitle"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("subtitle").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Subtitle has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Subtitle has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
}else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.SUBTITLE.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//实施类别
|
||||
if (StringUtils.isNotBlank(infoDiff.get("implementType"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("implementType").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Implement type has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Implement type has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
}else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.IMPLEMENT_TYPE.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//认证类型
|
||||
if (StringUtils.isNotBlank(infoDiff.get("attestationType"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("attestationType").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Attestation type has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Attestation type has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
} else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.ATTESTATION_TYPE.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//认证级别
|
||||
if (StringUtils.isNotBlank(infoDiff.get("attestationRank"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("attestationRank").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Attestation rank has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Attestation rank has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
} else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.ATTESTATION_RANK.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//责任领域
|
||||
if (StringUtils.isNotBlank(infoDiff.get("dutyTerritory"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("dutyTerritory").split(","));
|
||||
List<String> list = Arrays.asList(infoDiff.get("dutyTerritory").split("\\|"));
|
||||
// List<String> list = Arrays.asList(infoDiff.get("dutyTerritory").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Duty territory has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Duty territory has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
} else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.DUTY_TERRITORY.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
|
||||
//备注
|
||||
if (StringUtils.isNotBlank(infoDiff.get("remark"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("remark").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);
|
||||
contentInfo += "(" + infoDiffRow + "). Remark has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Remark has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
} else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.REMARK.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//设计符合性确认-交付物类型
|
||||
if (StringUtils.isNotBlank(infoDiff.get("designDeliverableType"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("designDeliverableType").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Design deliverable type has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Design deliverable type has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
} else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.DESIGN_DELIVERABLE_TYPE.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//设计符合性确认-交付物模板
|
||||
if (StringUtils.isNotBlank(infoDiff.get("designDeliverableTemplate"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("designDeliverableTemplate").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Design deliverable template has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Design deliverable template has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
} else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.DESIGN_DELIVERABLE_TEMPLATE.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//设计符合性确认-发起人
|
||||
if (StringUtils.isNotBlank(infoDiff.get("designInitiator"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("designInitiator").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Design initiator has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Design initiator has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
} else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.DESIGN_INITIATOR.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//设计符合性确认-责任人
|
||||
if (StringUtils.isNotBlank(infoDiff.get("designDuty"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("designDuty").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Design duty has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Design duty has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
} else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.DESIGN_DUTY.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//prehomo确认-交付物类型
|
||||
if (StringUtils.isNotBlank(infoDiff.get("prehomoDeliverableType"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("prehomoDeliverableType").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Prehomo deliverable type has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Prehomo deliverable type has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
}else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.PREHOMO_DELIVERABLE_TYPE.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//prehomo确认-交付物模板
|
||||
if (StringUtils.isNotBlank(infoDiff.get("prehomoDeliverableTemplate"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("prehomoDeliverableTemplate").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Prehomo deliverable template has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Prehomo deliverable template has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
}else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.PREHOMO_DELIVERABLE_TEMPLATE.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//prehomo确认-发起人
|
||||
if (StringUtils.isNotBlank(infoDiff.get("prehomoInitiator"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("prehomoInitiator").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Prehomo initiator has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Prehomo initiator has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
} else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.PREHOMO_INITIATOR.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//prehomo确认-责任人
|
||||
if (StringUtils.isNotBlank(infoDiff.get("prehomoDuty"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("prehomoDuty").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Prehomo duty has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Prehomo duty has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
} else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.PREHOMO_DUTY.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//验证符合性确认-交付物类型
|
||||
if (StringUtils.isNotBlank(infoDiff.get("verifyDeliverableType"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("verifyDeliverableType").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Verify deliverable type has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Verify deliverable type has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
}else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.VERIFY_DELIVERABLE_TYPE.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//验证符合性确认-交付物模板
|
||||
if (StringUtils.isNotBlank(infoDiff.get("verifyDeliverableTemplate"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("verifyDeliverableTemplate").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Verify deliverable template has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Verify deliverable template has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
}else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.VERIFY_DELIVERABLE_TEMPLATE.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//验证符合性确认-发起人
|
||||
if (StringUtils.isNotBlank(infoDiff.get("verifyInitiator"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("verifyInitiator").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Verify initiator has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Verify initiator has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
} else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.VERIFY_INITIATOR.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
//验证符合性确认-责任人
|
||||
if (StringUtils.isNotBlank(infoDiff.get("verifyDuty"))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get("verifyDuty").split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);//需要翻译
|
||||
contentInfo += "(" + infoDiffRow + "). Verify duty has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
String infoDiffNew = list.get(1);
|
||||
if (StringUtils.isBlank(contentLog)) {
|
||||
contentInfo += "(" + infoDiffRow + "). Verify duty has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n";
|
||||
infoDiffRow++;
|
||||
} else{
|
||||
contentLog += DummyInventoryBaseFieldEnum.VERIFY_DUTY.getName() + "由" + infoDiffOld + "改为" + infoDiffNew + ",";
|
||||
}
|
||||
}
|
||||
row++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(StringUtils.isNotBlank(contentLog)) {
|
||||
contentInfo = contentLog;
|
||||
}
|
||||
contentInfo.substring(0, contentInfo.length() - 1);
|
||||
return contentInfo;
|
||||
}
|
||||
}
|
||||
|
||||
+26
-1
@@ -20,6 +20,7 @@ import com.jero.modules.dummy.entity.DummyLogEO;
|
||||
import com.jero.modules.dummy.enums.DummyInventoryBaseFieldEnum;
|
||||
import com.jero.modules.dummy.mapper.DummyInventoryInfoEOMapper;
|
||||
import com.jero.modules.dummy.service.IDummyInventoryInfoEOService;
|
||||
import com.jero.modules.dummy.util.ListDiff;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.split.common.FileUnZip;
|
||||
@@ -177,7 +178,31 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
public void editById(DummyInventoryInfoEO dummyInventoryInfoEO) {
|
||||
Date now = new Date();
|
||||
dummyInventoryInfoEO.setUpdateTime(now);
|
||||
saveOrUpdate(dummyInventoryInfoEO);
|
||||
|
||||
//更新log
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String username = sysUser.getUsername();
|
||||
String contentLog = username+"编辑了清单中的\""+dummyInventoryInfoEO.getSerialNumber()+"\",";
|
||||
List<DummyInventoryInfoEO> infoEOList = new ArrayList<>();
|
||||
infoEOList.add(dummyInventoryInfoEO);
|
||||
//查询数据库里原来的数据
|
||||
QueryWrapper<DummyInventoryInfoEO> queryWrapper = new QueryWrapper<>();
|
||||
List<DummyInventoryInfoEO> dataList = list(queryWrapper.eq("id", dummyInventoryInfoEO.getId()));
|
||||
|
||||
saveOrUpdate(dummyInventoryInfoEO);
|
||||
//翻译
|
||||
dummyInventoryBaseEOService.disposeData(infoEOList);
|
||||
dummyInventoryBaseEOService.disposeData(dataList);
|
||||
//比对不同字段
|
||||
Map<String, String> infoDiff = ListDiff.compareObject(dataList.get(0),dummyInventoryInfoEO);
|
||||
|
||||
//设置更新log
|
||||
List<Map<String,String>> infoDiffList = new ArrayList<>();
|
||||
infoDiffList.add(infoDiff);
|
||||
contentLog = dummyInventoryBaseEOService.setContentInfo(null,null,infoDiffList,null,null,contentLog);
|
||||
|
||||
updateLog(contentLog, dummyInventoryInfoEO.getDummyInventoryBaseId());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user