fix(87267): 文档拆分--导入拆分结果,阻塞

This commit is contained in:
yjz
2024-07-23 14:20:17 +08:00
parent 30bae5a14d
commit 735aece44f
2 changed files with 175 additions and 12 deletions
@@ -32,6 +32,8 @@ public interface IFileSplitItemsEOService extends IService<SarFileSplitItemsEO>
int insertInfo(Map<String, Object> parameter, String id, String type);
int insertInfo2(Map<String, Object> parameter, String id, String type);
IPage getInfoPage(Map<String, Object> parameter);
int batchDeleteItems(String ids);
@@ -24,6 +24,7 @@ import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServi
import com.jero.modules.document.enums.FieldTypeEnum;
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
import com.jero.modules.laws.common.mapper.LawsCommonMapper;
import com.jero.modules.laws.documenttool.mapper.DocumentSplitMapper;
import com.jero.modules.laws.documenttool.service.IDocumentSplitService;
import com.jero.modules.laws.labeldatabase.entity.LawsLabelDatabase;
import com.jero.modules.laws.labeldatabase.service.ILawsLabelDatabaseService;
@@ -153,6 +154,8 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
private ISysDictService sysDictService;
@Autowired
private ISysDictItemService sysDictItemService;
@Autowired
private DocumentSplitMapper documentSplitMapper;
@Value(value = "${jero.path.upload}")
@@ -167,7 +170,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
public static String DECRYPT_APP_CODE;
public static String DECRYPT_SECRET_KEY;
private static final List<String> SPECIAL_FIELD = Arrays.asList("keywords", "key_controller", "applicable_components");
private static final List<String> SPECIAL_FIELD = Arrays.asList("keywords", "applicable_components");
@Value("${download.enable}")
public void setEnable(boolean enable) {
@@ -504,6 +507,145 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
return dao.insertInfo(insertField, insertValue);
}
@Override
public int insertInfo2(Map<String, Object> parameter, String id, String type){
StringBuilder fieldsBuilder = new StringBuilder(); // 字段名称
List<String> valuesList = new ArrayList<>();// 字段值
StringBuilder valuesBuilder = new StringBuilder(); // 字段值
// 查询全部字段列表
List<LawsTag> fieldList = lawsCommonMapper.getFieldList(TableNameEnum.DOCUMENT_SPLIT.getTableName());
// 列表展示字段
List<LawsTag> fieldListSelect = fieldList.stream().filter(v -> YesOrNoEnum.YES.getValue()
.equals(String.valueOf(v.getIsShowList()))).collect(Collectors.toList());
// 查询全部字段属性
// List<OnlCgformField> fieldList = onlCgformFieldService.getFieldList(ModuleEnum.FILE_SPLIT_ITEMS.getValue());
// 文件类型字段
List<LawsTag> onlFieldFileList = fieldListSelect.stream().filter(e -> FieldTypeEnum.FILE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList());
List<String> fieldFieldList = onlFieldFileList.stream().map(LawsTag::getDbFieldName).collect(Collectors.toList());
// 日期类型字段(单日期选择)
List<LawsTag> onlFieldDateList = fieldListSelect.stream().filter(e -> FieldTypeEnum.DATE_SINGLE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList());
List<String> fieldDateList = onlFieldDateList.stream().map(LawsTag::getDbFieldName).collect(Collectors.toList());
// 人员选择类型
List<LawsTag> onlFieldPersonList = fieldListSelect.stream().filter(e -> FieldTypeEnum.PERSON.getValue().equals(e.getFieldShowType())).collect(Collectors.toList());
List<String> fieldPersonList = onlFieldPersonList.stream().map(LawsTag::getDbFieldName).collect(Collectors.toList());
// 标准选择类型
List<LawsTag> onlFieldStanList = fieldListSelect.stream().filter(e -> FieldTypeEnum.STANDARD.getValue().equals(e.getFieldShowType())).collect(Collectors.toList());
List<String> fieldStanList = onlFieldStanList.stream().map(LawsTag::getDbFieldName).collect(Collectors.toList());
List<String> fieldPersonIdList = new ArrayList<>();
fieldPersonList.forEach(item->{
String fieldPersonId = item + "_id";
fieldPersonIdList.add(fieldPersonId);
});
List<String> standardIdList = new ArrayList<>();
fieldStanList.forEach(item->{
String fieldStanId = item + "_id";
standardIdList.add(fieldStanId);
});
for (Map.Entry<String, Object> entry : parameter.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
// 处理日期,文件,人员选择类型的字段
//处理日期格式
if (fieldDateList.contains(key) && ("create_time".equals(key) || "update_time".equals(key))) {
if (ObjectUtils.isNotEmpty(value)) {
if(value.toString().equals("") || value.toString().equals("null")){
continue;
}
value = "str_to_date('" + value + "','%Y-%m-%d')";
} else {
value = null;
}
valuesList.add(String.valueOf(value));
valuesBuilder.append("," + value);
} else if (fieldFieldList.contains(key)) {
//处理文件类型
if (ObjectUtils.isNotEmpty(value)) {
if("add".equals(type) || "import".equals(type)) {
String valueTemp = UUID.randomUUID().toString().replace("-", "");
//修改文件表关联信息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);
valuesList.add(valueTemp);
valuesBuilder.append("," + "'" + valueTemp + "'");
} else if("set".equals(type) || "merge".equals(type) ||"copy".equals(type)){
valuesList.add(String.valueOf(value));
valuesBuilder.append("," + "'" + value + "'");
} else if("update".equals(type)){
// 前端标识 key_flag 0-未修改, 1-已修改
if(value.toString().contains(",")){ // 新加了多个文件
String valueTemp = UUID.randomUUID().toString().replace("-", "");
//修改文件表关联信息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);
valuesList.add(valueTemp);
valuesBuilder.append("," + "'" + valueTemp + "'");
} else {
List<OSSFile> ossFiles = ossFileService.getFileInfosByConnectId(value.toString());
if(CollectionUtil.isNotEmpty(ossFiles)){ // 没有修改文件
valuesList.add(String.valueOf(value));
valuesBuilder.append("," + "'" + value + "'");
} else { // 新加了一个文件
String valueTemp = UUID.randomUUID().toString().replace("-", "");
//修改文件表关联信息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);
valuesList.add(valueTemp);
valuesBuilder.append("," + "'" + valueTemp + "'");
}
}
}
} else {
valuesList.add(String.valueOf(value));
valuesBuilder.append("," + "'" + value + "'");
}
} else if(fieldPersonList.contains(key)){ // || fieldStanList.contains(key)
// 人员选择类型 标准选择类型
if(ObjectUtil.isNotNull(parameter.get(key+"_id"))) {
value = parameter.get(key + "_id");
}
valuesList.add(String.valueOf(value));
valuesBuilder.append("," + "'" + value + "'");
} else if(fieldPersonIdList.contains(key) || standardIdList.contains(key)){
continue;
} else {
if ("item_content".equals(key)) {
value = value.toString().replaceAll("\\\\", "\\\\\\\\").replaceAll("'", "\\\\'");
}
valuesList.add(String.valueOf(value));
valuesBuilder.append("," + "'" + value + "'");
}
fieldsBuilder.append("," + key);
}
String mustFields = "id,create_by,create_time,update_by,update_time,sys_org_code";
List<String> mustValues = getMustValues2(id);
valuesList.addAll(0, mustValues);
String insertField = mustFields + fieldsBuilder.toString();
return documentSplitMapper.insertLawsDocumentSplit(insertField, valuesList);
}
/**
* 根据信息id更新排序字段
* @param parameter
@@ -562,6 +704,19 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
return mustValue;
}
private List<String> getMustValues2(String id) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<String> list = new ArrayList<>();
list.add(id);
list.add(sysUser.getUsername());
list.add(sdf.format(new Date()));
list.add(sysUser.getUsername());
list.add(sdf.format(new Date()));
list.add(sysUser.getOrgCode());
return list;
}
@Override
public IPage getInfoPage(Map<String, Object> parameter) {
String cut = (String) parameter.get("cut");// 中英文切换标识
@@ -2365,14 +2520,14 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
//判断是否是两个日期点
String str = value.replace("", ",");
String[] strArr = str.split(",");
if (strArr.length != 2) {
if (MessageUtils.getLanguage().getValue().equals(LanguageEnum.CN.getValue())) {
errorMsg += fieldName + "必须填写两个日期;";
} else {
errorMsg += fieldName + " must fill in the two dates;";
}
countError++;
}
// if (strArr.length != 2) {
// if (MessageUtils.getLanguage().getValue().equals(LanguageEnum.CN.getValue())) {
// errorMsg += fieldName + "必须填写两个日期;";
// } else {
// errorMsg += fieldName + " must fill in the two dates;";
// }
// countError++;
// }
}
} else if (FieldTypeEnum.FILE.getValue().equals(fieldShowType)) {
@@ -2574,7 +2729,8 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
String[] treePathList = value.split(",");
for (String treePath : treePathList) {
List<SysDictItem> path =
sysDictItemList.stream().filter(o -> treePath.equals(o.getLevelPath()))
sysDictItemList.stream().filter(o -> treePath.equals(o.getLevelPath())
|| treePath.equals(o.getItemText()))
.collect(Collectors.toList());
if (!path.isEmpty()){
if (path.size() > 1) {
@@ -2612,7 +2768,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
String[] treePathList = value.split(",");
for (String treePath : treePathList) {
List<PartName> path =
partNameList.stream().filter(o -> treePath.equals(o.getLevelPath()))
partNameList.stream().filter(o -> treePath.equals(o.getLevelPath()) || treePath.equals(o.getName()))
.collect(Collectors.toList());
if (!path.isEmpty()){
if (path.size() > 1) {
@@ -2770,7 +2926,12 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
sarFileSplitItemsEO.remove("id");
sarFileSplitItemsEO.remove("itemValEOList");
sarFileSplitItemsEO = filterMap(sarFileSplitItemsEO);
insertInfo(sarFileSplitItemsEO,id,"import"); // 添加条款
Map<String, Object> finalSarFileSplitItemsEO = sarFileSplitItemsEO;
sarFileSplitItemsEO.forEach((k, v) -> {
String str = String.valueOf(v);
finalSarFileSplitItemsEO.put(k, str.replace("'", "\\'"));
});
insertInfo2(finalSarFileSplitItemsEO,id,"import"); // 添加条款
}
private List<SarFileSplitMenuTreeNode> buildTree(List<Map<String, Object>> addItemsEOList, Long treeListDisplay, String menuId){