拆分条款-文件类型控件操作区分

This commit is contained in:
liyawei
2022-04-06 20:19:29 +08:00
parent 550522d49a
commit fcecec4fa3
5 changed files with 163 additions and 58 deletions
@@ -58,7 +58,7 @@ public class FileSplitItemsEOController extends JeroController<SarFileSplitItems
@ApiOperation(value = "根据id查询")
@GetMapping("/getSplitItemsById")
public Result<?> getSplitItemsById(String id){
Map<String, Object> item = fileSplitItemsEOService.selectByPrimaryKey(id);
Map<String, Object> item = fileSplitItemsEOService.getInfoById(id);
return Result.OK(item);
}
@@ -48,6 +48,12 @@ public class SarFileSplitInfoController extends JeroController<SarFileSplitInfoE
@GetMapping(value = "/page")
public Result<?> queryPageList(SarFileSplitInfoEOPage sarFileSplitInfoEOPage) {
LambdaQueryWrapper<SarFileSplitInfoEO> queryWrapper = new LambdaQueryWrapper<>();
if(StringUtils.isNotEmpty(sarFileSplitInfoEOPage.getSerialNumber())){
sarFileSplitInfoEOPage.setSerialNumber(sarFileSplitInfoEOPage.getSerialNumber().replace("%","\\%"));
}
if(StringUtils.isNotEmpty(sarFileSplitInfoEOPage.getTitle())){
sarFileSplitInfoEOPage.setTitle(sarFileSplitInfoEOPage.getTitle().replace("%","\\%"));
}
queryWrapper.like(StringUtils.isNotEmpty(sarFileSplitInfoEOPage.getSerialNumber()), SarFileSplitInfoEO::getSerialNumber, sarFileSplitInfoEOPage.getSerialNumber())
.like(StringUtils.isNotEmpty(sarFileSplitInfoEOPage.getTitle()), SarFileSplitInfoEO::getTitle, sarFileSplitInfoEOPage.getTitle())
.orderBy(StringUtils.isNotBlank(sarFileSplitInfoEOPage.getOrderByField()), "1".equals(sarFileSplitInfoEOPage.getOrderBy())?true:false, SarFileSplitInfoEO::getCreateTime)
@@ -29,7 +29,7 @@ public interface IFileSplitItemsEOService extends IService<SarFileSplitItemsEO>
int updateItemContent(Map<String, Object> parameter);
int insertInfo(Map<String, Object> parameter, String id);
int insertInfo(Map<String, Object> parameter, String id, String type);
IPage getInfoPage(Map<String, Object> parameter);
@@ -43,6 +43,8 @@ public interface IFileSplitItemsEOService extends IService<SarFileSplitItemsEO>
Map<String,Object> selectByPrimaryKey(String id);
Map<String,Object> getInfoById(String id);
Map<String,Object> batchMergeItems(String ids);
int batchSet(Map<String,Object> parameter);
@@ -7,6 +7,7 @@ import cn.hutool.core.util.ZipUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.utils.IOUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -189,7 +190,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
parameter.remove("itemValEOList");
parameter.remove("delItemIds"); // TODO
parameter = filterMap(parameter);
resultCount = insertInfo(parameter, itemId);
resultCount = insertInfo(parameter, itemId, "add");
return resultCount;
}
@@ -291,7 +292,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
parameter.remove("modify_time");
parameter.remove("sys_org_code");
parameter = filterMap(parameter);
resultCount = insertInfo(parameter, itemId);
resultCount = insertInfo(parameter, itemId, "update");
} else {
// SarFileSplitItemsEO itemsEO = new SarFileSplitItemsEO();
// itemsEO.setId(sarFileSplitItemsEO.getId());
@@ -308,14 +309,14 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
parameter.remove("modify_time");
parameter.remove("sys_org_code");
parameter = filterMap(parameter);
resultCount = insertInfo(parameter, itemId);
resultCount = insertInfo(parameter, itemId,"update");
// 删除val表全部信息
sarFileSplitItemsValEOMapper.deleteByitemId(itemId);
}
return resultCount;
}
public int insertInfo(Map<String, Object> parameter, String id){
public int insertInfo(Map<String, Object> parameter, String id, String type){
StringBuilder fieldsBuilder = new StringBuilder(); // 字段名称
StringBuilder valuesBuilder = new StringBuilder(); // 字段值
@@ -362,18 +363,57 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
} else if (fieldFieldList.contains(key)) {
//处理文件类型
if (ObjectUtils.isNotEmpty(value)) {
String valueTemp = UUID.randomUUID().toString().replace("-", "");
// value = valueTemp;
//修改文件表关联信息connect_id
List<OSSFile> oSSFileList = new ArrayList<>();
for (String fileId : value.toString().split(",")) {
OSSFile ossFile = new OSSFile();
ossFile.setId(fileId);
ossFile.setConnectId(valueTemp);
oSSFileList.add(ossFile);
if("add".equals(type) || "import".equals(type)) {
String valueTemp = UUID.randomUUID().toString().replace("-", "");
// value = valueTemp;
//修改文件表关联信息connect_id
List<OSSFile> oSSFileList = new ArrayList<>();
for (String fileId : value.toString().split(",")) {
OSSFile ossFile = new OSSFile();
ossFile.setId(fileId);
ossFile.setConnectId(valueTemp);
oSSFileList.add(ossFile);
}
ossFileService.updateFileInfo(oSSFileList);
valuesBuilder.append("," + "'" + valueTemp + "'");
} else if("set".equals(type) || "merge".equals(type) ||"copy".equals(type)){
valuesBuilder.append("," + "'" + value + "'");
} else if("update".equals(type)){
// 前端标识 key_flag 0-未修改, 1-已修改
if(value.toString().contains(",")){
String valueTemp = UUID.randomUUID().toString().replace("-", "");
// value = valueTemp;
//修改文件表关联信息connect_id
List<OSSFile> oSSFileList = new ArrayList<>();
for (String fileId : value.toString().split(",")) {
OSSFile ossFile = new OSSFile();
ossFile.setId(fileId);
ossFile.setConnectId(valueTemp);
oSSFileList.add(ossFile);
}
ossFileService.updateFileInfo(oSSFileList);
valuesBuilder.append("," + "'" + valueTemp + "'");
} else {
List<OSSFile> ossFiles = ossFileService.getFileInfosByConnectId(value.toString());
if(CollectionUtil.isNotEmpty(ossFiles)){
valuesBuilder.append("," + "'" + value + "'");
} else {
String valueTemp = UUID.randomUUID().toString().replace("-", "");
// value = valueTemp;
//修改文件表关联信息connect_id
List<OSSFile> oSSFileList = new ArrayList<>();
for (String fileId : value.toString().split(",")) {
OSSFile ossFile = new OSSFile();
ossFile.setId(fileId);
ossFile.setConnectId(valueTemp);
oSSFileList.add(ossFile);
}
ossFileService.updateFileInfo(oSSFileList);
valuesBuilder.append("," + "'" + valueTemp + "'");
}
}
}
ossFileService.updateFileInfo(oSSFileList);
valuesBuilder.append("," + "'" + valueTemp + "'");
} else {
valuesBuilder.append("," + "'" + value + "'");
}
@@ -719,7 +759,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
itemsMap.remove("modify_time");
itemsMap.remove("sys_org_code");
itemsMap = filterMap(itemsMap);
result += insertInfo(itemsMap, newItemId);
result += insertInfo(itemsMap, newItemId,"copy");
// 添加条目
List<String> queryItemIdList = new ArrayList<>();
@@ -743,6 +783,12 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
@Override
public Map<String, Object> selectByPrimaryKey(String id) {
Map<String, Object> itemsMap = dao.selectByPrimaryKey(id);
return itemsMap;
}
@Override
public Map<String, Object> getInfoById(String id) {
Map<String, Object> itemsMap = dao.selectByPrimaryKey(id);
// 查询条款表单字段
List<OnlCgformField> formFieldList = onlCgformFieldService.getFieldList(ModuleEnum.FILE_SPLIT_ITEMS.getValue());
@@ -822,7 +868,8 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
StringBuilder conditionSb = new StringBuilder();
String fieldType = onlCgformField.getFieldShowType();
String dbFieldName = onlCgformField.getDbFieldName();
if (FieldTypeEnum.TEXT_STRING.getValue().equals(fieldType) && !"条款号".equals(onlCgformField.getDbFieldTxt())) {
if ((FieldTypeEnum.TEXT_STRING.getValue().equals(fieldType) && !"条款号".equals(onlCgformField.getDbFieldTxt()))
|| FieldTypeEnum.TEXT.getValue().equals(fieldType)) {
// 追加合并内容
oldItemMapList.forEach(item -> {
if(ObjectUtils.isNotEmpty(item.get(dbFieldName))) {
@@ -830,15 +877,17 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
}
});
newItemMap.put(dbFieldName, conditionSb.toString());
} else if (FieldTypeEnum.PULL_SINGLE.getValue().equals(fieldType)
|| FieldTypeEnum.PULL_MORE.getValue().equals(fieldType)
} else if (FieldTypeEnum.PULL_MORE.getValue().equals(fieldType)
|| FieldTypeEnum.TREE.getValue().equals(fieldType)
|| FieldTypeEnum.PERSON.getValue().equals(fieldType)) {
|| FieldTypeEnum.PERSON.getValue().equals(fieldType)
|| FieldTypeEnum.STANDARD.getValue().equals(fieldType)
|| FieldTypeEnum.TEXT_LINK.getValue().equals(fieldType)) { //FieldTypeEnum.PULL_SINGLE.getValue().equals(fieldType)
StringBuilder con = new StringBuilder();
// 去重合并内容
oldItemMapList.forEach(item -> {
if(StringUtils.isNotBlank((String)item.get(dbFieldName))) {
con.append(",").append(item.get(dbFieldName).toString());
con.append(item.get(dbFieldName).toString()).append(",");
}
}); // 合并
if(ObjectUtils.isNotEmpty(con)){
@@ -847,6 +896,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
conditionSb.append(StringUtils.join(conditionList, ","));
}
newItemMap.put(dbFieldName, conditionSb.toString());
} else if(FieldTypeEnum.FILE.getValue().equals(fieldType)){
// 查询合并条款的所有文件列表
String connectIds = null;
@@ -863,13 +913,13 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
ossFileService.updateFileInfo(ossFileList);
}
} else if(FieldTypeEnum.TEXT_NUMBER.getValue().equals(fieldType)){
Double num = null;
Double num = 0.0;
for(Map<String, Object> oldItemMap : oldItemMapList){
num = num + (Double)oldItemMap.get(dbFieldName); //累加数字
if(ObjectUtil.isNotEmpty(oldItemMap.get(dbFieldName))) {
num = num + (Double) oldItemMap.get(dbFieldName); //累加数字
}
}
}else if(FieldTypeEnum.STANDARD.getValue().equals(fieldType)){
}else if(FieldTypeEnum.TEXT_LINK.getValue().equals(fieldType)){
newItemMap.put(dbFieldName, num);
}
}
@@ -887,7 +937,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
newItemMap.remove("modify_time");
newItemMap.remove("sys_org_code");
newItemMap = filterMap(newItemMap);
insertInfo(newItemMap, newItemId);
insertInfo(newItemMap, newItemId, "merge");
// sarFileSplitMenuEOMapper.insertSelective(newMenuEO);
// 修改条目 关联的条款id和顺序
List<SarFileSplitItemsValEO> oldItemsValList = sarFileSplitItemsValEOMapper.queryItemsValByMenuId(oldItemIdList);
@@ -923,21 +973,23 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
for (String itemId : itemIdList) {
Map<String, Object> newItemMap = new HashMap<>();
Map<String, Object> oldItemMap = dao.selectByPrimaryKey(itemId);
newItemMap.putAll(oldItemMap);
newItemMap.putAll(parameter);
if(ObjectUtil.isNotEmpty(oldItemMap)) {
newItemMap.putAll(oldItemMap);
newItemMap.putAll(parameter);
// 先删除 后新增
dao.deleteByPrimaryKey(itemId);
// 先删除 后新增
dao.deleteByPrimaryKey(itemId);
newItemMap.remove("id");
newItemMap.remove("creation_user");
newItemMap.remove("creation_time");
newItemMap.remove("modify_user");
newItemMap.remove("modify_time");
newItemMap.remove("sys_org_code");
newItemMap = filterMap(newItemMap);
insertInfo(newItemMap, itemId);
resultCount ++;
newItemMap.remove("id");
newItemMap.remove("creation_user");
newItemMap.remove("creation_time");
newItemMap.remove("modify_user");
newItemMap.remove("modify_time");
newItemMap.remove("sys_org_code");
newItemMap = filterMap(newItemMap);
insertInfo(newItemMap, itemId, "set");
resultCount++;
}
}
return resultCount;
}
@@ -951,10 +1003,45 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
List<SplitTableInfo> getSheetTableList) {
//此处需要做各种验证,数据库操作
try {
//树形数据字典
List<SysCategory> categoryList = sysCategoryService.list();
//普通数据字典
List<SysDictItem> dictItemList = sysDictItemServiceImpl.selectItemsAll();
List<OnlCgformField> onlCgformFieldList = onlCgformFieldService.getFieldList(ModuleEnum.FILE_SPLIT_ITEMS.getValue());
// 树形数据字典 dictId
List<String> dictIdList = onlCgformFieldList.stream()
.filter(e -> (YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsShowForm()))
|| "条款内容".equals(e.getDbFieldName()))
&& FieldTypeEnum.TREE.getValue().equals(e.getFieldShowType())
&& StringUtils.isNotBlank(e.getDictId())
)
.map(OnlCgformField :: getDictId)
.distinct()
.collect(Collectors.toList());
// 普通数据字典 dictCode
List<String> dictCodeList = onlCgformFieldList.stream()
.filter(e -> (YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsShowForm()))
|| "条款内容".equals(e.getDbFieldName()))
&& (FieldTypeEnum.PULL_SINGLE.getValue().equals(e.getFieldShowType()) || FieldTypeEnum.PULL_MORE.getValue().equals(e.getFieldShowType()))
&& StringUtils.isNotBlank(e.getDictField())
)
.map(OnlCgformField :: getDictField)
.distinct()
.collect(Collectors.toList());
// 树形数据字典
List<SysCategory> categoryList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(dictIdList)){
LambdaQueryWrapper<SysCategory> categoryWrapper = new LambdaQueryWrapper<>();
categoryWrapper.in(CollectionUtil.isNotEmpty(dictIdList), SysCategory::getSysDictId, dictIdList);
categoryList = sysCategoryService.list(categoryWrapper);
}
// 普通数据字典
List<SysDictItem> dictItemList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(dictCodeList)) {
for (String dictCode : dictCodeList) {
List<SysDictItem> dictItems = sysDictItemServiceImpl.selectItemsByDictCode(dictCode);
dictItemList.addAll(dictItems);
}
}
// 表头
List<Map<String, Object>> fieldList = getImportOnlField(ModuleEnum.FILE_SPLIT_ITEMS.getValue(),cut);
//验证导入数据是否符合规则
@@ -1870,21 +1957,26 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
errorMsg += fieldName + "为必填项,不能为空;";
countError++;
}
String regexPerson = "^[\\u4e00-\\u9fa5]{0,}\\([A-Za-z0-9.]*\\)$";
value = value.replace("",",");
if(StringUtils.isNotBlank(value)) {
String[] userNames = value.split(",");
List<String> userIdList = new ArrayList<>();
for(int u=0 ; u<userNames.length; u++){
String uName = userNames[u].substring(userNames[u].indexOf("(")+1, userNames[u].indexOf(")"));
SysUser user = sysUserService.getUserByName(uName);
if(ObjectUtils.isNotEmpty(user)){
userIdList.add(user.getId());
if(!userNames[u].matches(regexPerson)) {
errorMsg += fieldName + "格式不正确,填写格式:姓名(账号)";
countError++;
}else {
String uName = userNames[u].substring(userNames[u].indexOf("(") + 1, userNames[u].indexOf(")"));
SysUser user = sysUserService.getUserByName(uName);
if (ObjectUtils.isNotEmpty(user)) {
userIdList.add(user.getId());
}
}
}
value = StringUtils.join(userIdList, ",");
}
} else if (FieldTypeEnum.TEXT_LINK.getValue().equals(fieldShowType)) {
//输入框(链接)
//判断是否必填
@@ -1894,9 +1986,14 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
}
//正则判断仅能为 负号(-),小数点(.)和数字
String regexLink = "(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]";
if(StringUtils.isNotBlank(value) && !value.matches(regexLink)){
errorMsg += fieldName + "不是正确的链接格式,必须以http或https开头;";
countError++;
value = value.replace("",",");
if(StringUtils.isNotBlank(value)){
for (String valueTemp : value.split(",")) {
if(!valueTemp.matches(regexLink)) {
errorMsg += valueTemp + "不是正确的链接格式,必须以http或https开头;";
countError++;
}
}
}
}
@@ -1981,7 +2078,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
sarFileSplitItemsEO.remove("id");
sarFileSplitItemsEO.remove("itemValEOList");
sarFileSplitItemsEO = filterMap(sarFileSplitItemsEO);
insertInfo(sarFileSplitItemsEO,id); // 添加条款
insertInfo(sarFileSplitItemsEO,id,"import"); // 添加条款
}
private List<SarFileSplitMenuTreeNode> buildTree(List<Map<String, Object>> addItemsEOList, Long treeListDisplay, String menuId){
@@ -2423,7 +2520,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
private List<Map<String, Object>> getImportOnlField(String flag, String cut) {
List<OnlCgformField> fieldList = onlCgformFieldService.getFieldList(flag);
if (fieldList.size() != 0) {
//过滤出搜索条件()
//过滤出导入字段
fieldList = fieldList.stream()
.filter(e -> YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsShowForm()))
|| "条款内容".equals(e.getDbFieldName()))
@@ -221,7 +221,7 @@ public class SarFileSplitMenuEOServiceImpl extends ServiceImpl<SarFileSplitMenuE
parameter.put("info_id", sarFileSplitMenuEO.getInfoId());
parameter.put("menu_id", sarFileSplitMenuEO.getId());
String itemId = UUID.randomUUID().toString().replace("-", "");
fileSplitItemsEOService.insertInfo(parameter, itemId);
fileSplitItemsEOService.insertInfo(parameter, itemId,"add");
// 之后的所有节点序号增加
SarFileSplitMenuEOPage page = new SarFileSplitMenuEOPage();
// page.setPId(sarFileSplitMenuEO.getPId());
@@ -422,7 +422,7 @@ public class SarFileSplitMenuEOServiceImpl extends ServiceImpl<SarFileSplitMenuE
itemsMap.remove("modify_time");
itemsMap.remove("sys_org_code");
itemsMap = fileSplitItemsEOService.filterMap(itemsMap);
result += fileSplitItemsEOService.insertInfo(itemsMap, newItemId);
result += fileSplitItemsEOService.insertInfo(itemsMap, newItemId,"add");
// SAR_FILE_ITEMS_VAL 添加数据,
List<SarFileSplitItemsValEO> sarFileSplitItemsValEOList = sarFileSplitItemsValEOMapper.queryItemsValByMenuId(oldItemIdList);