Browse Source

1.更新档案列表搜索栏

2.更新档案删除、还原、彻底删除、附件删除等功能
3.新增标签日志列表、导出等功能
master
xia 3 years ago
parent
commit
22ea92cb0e
  1. 8
      archives/src/main/java/com/storeroom/modules/archives/controller/ArchivesController.java
  2. 42
      archives/src/main/java/com/storeroom/modules/archives/controller/TagController.java
  3. 3
      archives/src/main/java/com/storeroom/modules/archives/domain/ArchivesTagLog.java
  4. 6
      archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesSummaryRepository.java
  5. 11
      archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesTagLogRepository.java
  6. 5
      archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java
  7. 3
      archives/src/main/java/com/storeroom/modules/archives/service/ArchivesTagService.java
  8. 2
      archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java
  9. 253
      archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java
  10. 13
      archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesTagServiceImpl.java
  11. 3
      archives/src/main/java/com/storeroom/modules/dictionary/repository/ArchivesTypeRepository.java

8
archives/src/main/java/com/storeroom/modules/archives/controller/ArchivesController.java

@ -55,11 +55,11 @@ public class ArchivesController {
@ApiOperation("档案列表")
@GetMapping("/initArchivesView")
public ApiResponse<Object> initArchivesView(
String categoryId,String parentsId,Integer queryType,String queryTitle,String archiveNo,Integer archivesState,String archiveYear,String department,
String retention,String securityClass,String organizationMatter,boolean isdel,Pageable page
String categoryId,String parentsId,Integer queryType,String queryTitle,String itemNo,String archiveNo,String archiveCtgNo,String responsibleby,
Integer archivesState,String archiveYear,String department,String retention,String securityClass,String organizationMatter,boolean isdel,Pageable page
){
return ApiResponse.success(archivesService.initArchivesView(categoryId,parentsId,queryType,queryTitle,archiveNo,archivesState,
archiveYear,department,retention,securityClass,organizationMatter,isdel,page));
return ApiResponse.success(archivesService.initArchivesView(categoryId,parentsId,queryType,queryTitle,itemNo,archiveNo,archiveCtgNo,responsibleby,
archivesState,archiveYear,department,retention,securityClass,organizationMatter,isdel,page));
}
@ApiOperation("档案列表外放接口")

42
archives/src/main/java/com/storeroom/modules/archives/controller/TagController.java

@ -1,17 +1,26 @@
package com.storeroom.modules.archives.controller;
import com.storeroom.annotaion.rest.AnonymousGetMapping;
import com.storeroom.modules.archives.domain.ArchivesTagLog;
import com.storeroom.modules.archives.service.ArchivesTagService;
import com.storeroom.modules.archives.service.dto.CaseDTO;
import com.storeroom.modules.common.ExcelUtil;
import com.storeroom.utils.ApiResponse;
import com.storeroom.utils.enums.ResponseStatus;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
@RestController
@RequiredArgsConstructor
@ -20,6 +29,7 @@ import java.util.List;
public class TagController {
private final ArchivesTagService archivesTagService;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
@ApiOperation("标签列表")
@GetMapping("/initTagList")
@ -59,4 +69,36 @@ public class TagController {
return ApiResponse.success(archivesTagService.initTagLogList(tid,title,operType,bindingType,page));
}
@ApiOperation("导出标签使用信息")
@AnonymousGetMapping("/exportTagLogList")
@ResponseBody
public void exportTagLogList(
HttpServletResponse response,
String tid, String title,Integer operType,Integer bindingType
){
List<ArchivesTagLog> tagLogs = archivesTagService.initTagLogListAll(tid,title,operType,bindingType);
String[] Etitle = {"序号","类型","TID","绑定对象","标签名称","操作时间"};
String [][] content = new String[tagLogs.size()][];
for(int i = 0;i<tagLogs.size();i++){
content[i] = new String[Etitle.length];
ArchivesTagLog log = tagLogs.get(i);
content[i][0] = i+"";
content[i][1] = log.getOperType() == 1? "绑定":"解绑";
content[i][2] = log.getTid();
content[i][3] = log.getBindingType() == 1 ? "档案" : log.getBindingType() == 2 ? "档案盒" : "层位";
content[i][4] = log.getTitle();
content[i][5] = format.format(new Date(log.getCreateTime().getTime()));
}
HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("sheet",Etitle,content,null);
try {
ExcelUtil.setResponseHeader(response, "标签使用记录"+format.format(new Date())+".xls");
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

3
archives/src/main/java/com/storeroom/modules/archives/domain/ArchivesTagLog.java

@ -15,8 +15,7 @@ import java.io.Serializable;
public class ArchivesTagLog extends BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ID_SEQ")
@Column(name="id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@Column(name = "tid")

6
archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesSummaryRepository.java

@ -19,9 +19,9 @@ public interface ArchivesSummaryRepository extends JpaRepository<ArchivesSummary
ArchivesSummary findByArchivesId(String archivesId);
@Query(nativeQuery = true,
countQuery = "select count(1) from archives_summary1",
countQuery = "select count(1) from archives_summary",
value = "select archives_id,category_id,category_name,category_type,fonds_no,archive_no,department,archive_year,maintitle," +
"retention,security_class,tag_no,case_no,create_time,update_time from archives_summary1 order by create_time asc,archives_id asc ")
"retention,security_class,tag_no,case_no,create_time,update_time from archives_summary order by create_time asc,archives_id asc ")
Page<Map<String,Object>> getArchivesRelease(Pageable page);
@Modifying
@ -33,7 +33,7 @@ public interface ArchivesSummaryRepository extends JpaRepository<ArchivesSummary
@Modifying
@Transactional(rollbackFor = Exception.class)
@Query(nativeQuery = true,
value = "update archives_summary set tag_no ?1 where archives_id = ?2 ")
value = "update archives_summary set tag_no = ?1 where archives_id = ?2 ")
Integer bindTag(String tid,String archivesId);
@Modifying

11
archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesTagLogRepository.java

@ -7,7 +7,9 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
public interface ArchivesTagLogRepository extends JpaRepository<ArchivesTagLog, String>{
import java.util.List;
public interface ArchivesTagLogRepository extends JpaRepository<ArchivesTagLog, Integer>{
@Query(nativeQuery = true,
value = "select * from archives_tag_log where if(?1 is null,1=1,tid like ?1) " +
@ -16,4 +18,11 @@ public interface ArchivesTagLogRepository extends JpaRepository<ArchivesTagLog,
"and if(?4 is null,1=1,binding_type = ?4) ")
Page<ArchivesTagLog> initTagLogList(String tid, String title, Integer operType, Integer bindingType, Pageable page);
@Query(nativeQuery = true,
value = "select * from archives_tag_log where if(?1 is null,1=1,tid like ?1) " +
"and if(?2 is null,1=1,title like ?2) " +
"and if(?3 is null,1=1,oper_type = ?3) " +
"and if(?4 is null,1=1,binding_type = ?4) ")
List<ArchivesTagLog> initTagLogListAll(String tid, String title, Integer operType, Integer bindingType);
}

5
archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java

@ -12,8 +12,9 @@ public interface ArchivesService {
//初始化档案列表标题
Object initArchivesViewTable(String categoryId);
//初始化档案列表
Object initArchivesView(String categoryId,String parentsId,Integer queryType, String queryTitle,String archiveNo,Integer archivesState,String archiveYear,String department,
String retention,String securityClass,String organizationMatter, boolean isdel,Pageable page);
Object initArchivesView(String categoryId,String parentsId,Integer queryType, String queryTitle,String itemNo,String archiveNo,String archiveCtgNo,
String responsibleby,Integer archivesState,String archiveYear,String department,String retention,String securityClass,
String organizationMatter,boolean isdel,Pageable page);
//档案列表外放接口
Object getArchivesRelease(Pageable page);
//根据门类id 档案id 获取显示档案详情信息

3
archives/src/main/java/com/storeroom/modules/archives/service/ArchivesTagService.java

@ -1,5 +1,6 @@
package com.storeroom.modules.archives.service;
import com.storeroom.modules.archives.domain.ArchivesTagLog;
import com.storeroom.modules.archives.service.dto.CaseDTO;
import org.springframework.data.domain.Pageable;
@ -11,6 +12,8 @@ public interface ArchivesTagService {
Object initTagList(String tid, String query,Integer isType, Pageable page);
//初始化标签日志列表
Object initTagLogList(String tid, String title,Integer operType,Integer bindingType, Pageable page);
//根据条件查询标签全部日志
List<ArchivesTagLog> initTagLogListAll(String tid, String title,Integer operType,Integer bindingType);
//查看标签是否绑定
Integer findIsBingdingLabel(String label);
//绑定标签

2
archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java

@ -224,7 +224,7 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
}
String caseIdArr = caseIds.stream().collect(Collectors.joining(","));
//当装盒为案卷
if(caseType == 2){
if(caseType == 2){
ArchivesType archivesTypeP = archivesTypeRepository.findById(archivesType.getPid()).get();
String psql = "update "+archivesTypeP.getEnName()+" set case_no = '"+caseIdArr
+"' where id = '"+dtos.get(0).getArchivesParentsId()+"'";

253
archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java

@ -18,6 +18,7 @@ import com.storeroom.utils.NanoIdUtils;
import com.storeroom.utils.PageUtil;
import com.storeroom.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
@ -40,6 +41,9 @@ public class ArchivesServiceImpl implements ArchivesService {
private final ArchivesTypeRepository archivesTypeRepository;
private final ArchivesDictionaryRepository archivesDictionaryRepository;
@Value("${file.windows.path}")
// @Value("${file.linux.path}")
private String prefixPath;
@PersistenceContext
EntityManager entityManager;
@ -50,9 +54,9 @@ public class ArchivesServiceImpl implements ArchivesService {
}
@Override
public Object initArchivesView(String categoryId,String parentsId,Integer queryType, String queryTitle,String archiveNo,Integer archivesState,
String archiveYear,String department,String retention,String securityClass,String organizationMatter,
boolean isdel,Pageable page) {
public Object initArchivesView(String categoryId,String parentsId,Integer queryType, String queryTitle,String itemNo,String archiveNo,String archiveCtgNo,
String responsibleby,Integer archivesState,String archiveYear,String department,String retention,String securityClass,
String organizationMatter,boolean isdel,Pageable page) {
Optional<ArchivesType> optional = archivesTypeRepository.findById(categoryId);
if(!optional.isPresent())
return "未查询到到门类信息!";
@ -66,9 +70,11 @@ public class ArchivesServiceImpl implements ArchivesService {
String quertOrder = "";
String appendQuery = "";
queryFields.add("children_num");
String append2Query = isdel ? " and is_delete_time is not null " : " and is_delete_time is null ";
if(archivesType.getIsType() == ArchivesTypeEnum.project.getCode() || archivesType.getIsType() == ArchivesTypeEnum.archives.getCode()){
String childrenTable = archivesTypeRepository.findEnNameByPid(archivesType.getId());
appendQuery = StringUtils.isEmpty(childrenTable) ? ",0 " :",(select count(1) from "+childrenTable+" c where c.parent_id = t.id and is_delete_time is null) ";
appendQuery = StringUtils.isEmpty(childrenTable) ? ",0 " :",(select count(1) from "+childrenTable+" c where c.parent_id = t.id "+append2Query+") ";
}else{
appendQuery = ",(select count(1) from file_"+queryTable+" c where c.archive_id = t.id) ";
}
@ -89,7 +95,10 @@ public class ArchivesServiceImpl implements ArchivesService {
additional = StringUtils.isEmpty(securityClass) ? additional : additional + " and security_class = '"+securityClass+"'";
additional = StringUtils.isEmpty(organizationMatter) ? additional : additional + " and organization_matter = '"+organizationMatter+"'";
additional = StringUtils.isEmpty(queryTitle) ? additional : additional + " and maintitle like '%"+queryTitle+"%' ";
additional = StringUtils.isEmpty(itemNo) ? additional : additional + " and item_no like '%"+itemNo+"%' ";
additional = StringUtils.isEmpty(archiveNo) ? additional : additional + " and archive_no like '%"+archiveNo+"%' ";
additional = StringUtils.isEmpty(archiveCtgNo) ? additional : additional + " and archive_ctg_no like '%"+archiveCtgNo+"%' ";
additional = StringUtils.isEmpty(responsibleby) ? additional : additional + " and responsibleby like '%"+responsibleby+"%' ";
if(objects.length > 0)
quertOrder = " order by " + quertOrder.substring(0,quertOrder.length()-1);
@ -102,7 +111,7 @@ public class ArchivesServiceImpl implements ArchivesService {
for(Object[] objs:list){
Map map = new HashMap();
for(int i = 0;i<queryFields.size();i++){
map.put(queryFields.get(i),objs[i]);
map.put(queryFields.get(i),objs[i]==null?"":objs[i]);
}
returnlist.add(map);
}
@ -137,7 +146,7 @@ public class ArchivesServiceImpl implements ArchivesService {
}
String queryField = queryFields.stream().map(String::valueOf).collect(Collectors.joining(","));
String queryTable = archivesType.getEnName();
String appendQuery = "tid,(select group_concat(case_name) from archives_case t inner join archives_case_cartoning t1 on t.id = t1.case_id where archives_id = z.id)," +
String appendQuery = "tid,(select group_concat(case_name) from archives_case t where find_in_set(t.id,z.case_no))," +
"folder_location,borrow_type,barcode ";
appendQuery = queryField.length() == 0 ? appendQuery : ","+appendQuery;
List<Object[]> list = entityManager.createNativeQuery("select "+queryField+appendQuery+" from "+queryTable + " z where z.id = '"+archivesId+"'").getResultList();
@ -317,7 +326,7 @@ public class ArchivesServiceImpl implements ArchivesService {
for(Object[] objs:list){
if(json.get(archivesDictionary.getFieldName()).equals(objs[1])){
if(dto.getId() == null || !dto.getId().equals(objs[0])){
return ApiResponse.error(50002,archivesDictionary.getFieldName()+"不可重复");
return ApiResponse.error(50002,archivesDictionary.getFieldCnName()+"不可重复");
}
}
}
@ -516,6 +525,33 @@ public class ArchivesServiceImpl implements ArchivesService {
String sql = "update " + queryTable + " set is_delete_time = '" +sdf.format(new Date())+"',is_delete_man='"+dto.getDelMan()
+"' where id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
int result = entityManager.createNativeQuery(sql).executeUpdate();
//若删除为项目
if(archivesType.getIsType() == 2){
//获取档案表名
ArchivesType archivesType_3 = archivesTypeRepository.findByPid(archivesType.getId());
//获取该项目下所有案卷id
String query3sql = "select id from "+archivesType_3.getEnName()+" where parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
List<String> list3 = entityManager.createNativeQuery(query3sql).getResultList();
if(null != list3 && list3.size()!=0){
//删除案卷
String update3sql = "update " + archivesType_3.getEnName() + " set is_delete_time = '" +sdf.format(new Date())+"',is_delete_man='"+dto.getDelMan()
+"' where id in ('"+list3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
//获取卷内表名
String enName_4 = archivesTypeRepository.findEnNameByPid(archivesType_3.getId());
//删除卷内
String update4sql = "update " + enName_4 + " set is_delete_time = '" +sdf.format(new Date())+"',is_delete_man='"+dto.getDelMan()
+"' where parent_id in ('"+list3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
entityManager.createNativeQuery(update3sql).executeUpdate();
entityManager.createNativeQuery(update4sql).executeUpdate();
}
//若删除为案卷
}else if(archivesType.getIsType() == 3){
String enName_4 = archivesTypeRepository.findEnNameByPid(archivesType.getId());
String update4sql = "update " + enName_4 + " set is_delete_time = '" +sdf.format(new Date())+"',is_delete_man='"+dto.getDelMan()
+"' where parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
entityManager.createNativeQuery(update4sql).executeUpdate();
}
return result;
}
@ -523,6 +559,7 @@ public class ArchivesServiceImpl implements ArchivesService {
@Transactional(rollbackFor = Exception.class)
public Object reduction(ArchivesDTO dto) {
List<String> ids = dto.getIds();
List<String> eliminate = new ArrayList<>();
int success = 0;
ArchivesType archivesType = archivesTypeRepository.findById(dto.getCategoryId()).get();
List<String> fieldNames = archivesDictionaryRepository.findFieldNameByCategoryIdAndIsTypeAndIsRepeat(dto.getCategoryId(),2,true);
@ -533,18 +570,129 @@ public class ArchivesServiceImpl implements ArchivesService {
"= (select "+fieldName+" from "+archivesType.getEnName()+" where id = '"+id+"')";
List<Object[]> list = entityManager.createNativeQuery(querysql).getResultList();
if(list.size()>0){
eliminate.add(id);
isRepeat = false;
}
if(isRepeat){
String checkDelRepeatSql = "select id from "+archivesType.getEnName()+" where id = '"+id+"' and "+fieldName+
" in (select "+fieldName+" from "+archivesType.getEnName()+" where is_delete_time is not null" +
" and id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"') group by " + fieldName +
" having count("+fieldName+") > 1)";
List<String> repeatCount = entityManager.createNativeQuery(checkDelRepeatSql).getResultList();
if(repeatCount.size() > 0){
eliminate.add(id);
continue;
}
}
}
}
HashSet<String> setIds = new HashSet<>(ids);
HashSet<String> setEliminate = new HashSet<>(eliminate);
setIds.removeAll(setEliminate);
List<String> screen = new ArrayList<>();
screen.addAll(setIds);
for(String id:screen){
String sql = "update " + archivesType.getEnName() + " set is_delete_time = null,is_delete_man = null " +
"where id = '"+id+"'";
int result = entityManager.createNativeQuery(sql).executeUpdate();
success += result;
}
//若恢复为项目时
if(archivesType.getIsType() == 2){
//获取案卷门类
ArchivesType archivesType_3 = archivesTypeRepository.findByPid(archivesType.getId());
//查看档案不允许重复字段
List<String> fieldNames_3 = archivesDictionaryRepository.findFieldNameByCategoryIdAndIsTypeAndIsRepeat(archivesType_3.getId(),2,true);
//查询还原所有档案
String add3IdsSql = "select id from "+archivesType_3.getEnName()
+ " where is_delete_time is not null and parent_id in ('"
+screen.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
List<String> all3Ids = entityManager.createNativeQuery(add3IdsSql).getResultList();
List<String> eliminate_3 = new ArrayList<>();
for(String fieldName:fieldNames_3){
String eliminate_3_sql1 = "select id from " + archivesType_3.getEnName() + " where "+fieldName
+ " in (select "+fieldName+" from "+archivesType_3.getEnName()
+ " group by "+fieldName+" having count("+fieldName+") > 1) "
+ " and id in ('"+all3Ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
List<String> eliminate_3_1 = entityManager.createNativeQuery(eliminate_3_sql1).getResultList();
eliminate_3.addAll(eliminate_3_1);
}
HashSet<String> setIds_3 = new HashSet<>(all3Ids);
HashSet<String> setEliminate_3 = new HashSet<>(eliminate_3);
setIds_3.removeAll(setEliminate_3);
List<String> screen_3 = new ArrayList<>();
screen_3.addAll(setIds_3);
for(String id:screen_3){
String sql_3 = "update " + archivesType_3.getEnName() + " set is_delete_time = null,is_delete_man = null " +
"where id = '"+id+"'";
int result_3 = entityManager.createNativeQuery(sql_3).executeUpdate();
}
//获取卷内门类
ArchivesType archivesType_4 = archivesTypeRepository.findByPid(archivesType_3.getId());
//查看卷内不允许重复字段
List<String> fieldNames_4 = archivesDictionaryRepository.findFieldNameByCategoryIdAndIsTypeAndIsRepeat(archivesType_4.getId(),2,true);
//查询还原所有卷内
String add4IdsSql = "select id from "+archivesType_4.getEnName()
+ " where is_delete_time is not null and parent_id in ('"
+screen_3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
List<String> all4Ids = entityManager.createNativeQuery(add4IdsSql).getResultList();
List<String> eliminate_4 = new ArrayList<>();
for(String fieldName:fieldNames_4){
String eliminate_4_sql1 = "select id from " + archivesType_4.getEnName() + " where "+fieldName
+ " in (select "+fieldName+" from "+archivesType_4.getEnName()
+ " group by "+fieldName+" having count("+fieldName+") > 1) "
+ " and id in ('"+all4Ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
List<String> eliminate_4_1 = entityManager.createNativeQuery(eliminate_4_sql1).getResultList();
eliminate_4.addAll(eliminate_4_1);
}
//当没有重复
if(isRepeat){
String sql = "update " + archivesType.getEnName() + " set is_delete_time = null,is_delete_man = null " +
HashSet<String> setIds_4 = new HashSet<>(all4Ids);
HashSet<String> setEliminate_4 = new HashSet<>(eliminate_4);
setIds_4.removeAll(setEliminate_4);
List<String> screen_4 = new ArrayList<>();
screen_4.addAll(setIds_4);
for(String id:screen_4){
String sql_4 = "update " + archivesType_4.getEnName() + " set is_delete_time = null,is_delete_man = null " +
"where id = '"+id+"'";
int result = entityManager.createNativeQuery(sql).executeUpdate();
success += result;
int result_3 = entityManager.createNativeQuery(sql_4).executeUpdate();
}
//若恢复为案卷时
}else if(archivesType.getIsType() == 3){
//获取卷内门类
ArchivesType archivesType_3 = archivesTypeRepository.findByPid(archivesType.getId());
//查看卷内不允许重复字段
List<String> fieldNames_3 = archivesDictionaryRepository.findFieldNameByCategoryIdAndIsTypeAndIsRepeat(archivesType_3.getId(),2,true);
//查询还原所有卷内
String add3IdsSql = "select id from "+archivesType_3.getEnName()
+ " where is_delete_time is not null and parent_id in ('"
+screen.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
List<String> all3Ids = entityManager.createNativeQuery(add3IdsSql).getResultList();
List<String> eliminate_3 = new ArrayList<>();
for(String fieldName:fieldNames_3){
String eliminate_3_sql1 = "select id from " + archivesType_3.getEnName() + " where "+fieldName
+ " in (select "+fieldName+" from "+archivesType_3.getEnName()
+ " group by "+fieldName+" having count("+fieldName+") > 1) "
+ " and id in ('"+all3Ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
List<String> eliminate_3_1 = entityManager.createNativeQuery(eliminate_3_sql1).getResultList();
eliminate_3.addAll(eliminate_3_1);
}
HashSet<String> setIds_3 = new HashSet<>(all3Ids);
HashSet<String> setEliminate_3 = new HashSet<>(eliminate_3);
setIds_3.removeAll(setEliminate_3);
List<String> screen_3 = new ArrayList<>();
screen_3.addAll(setIds_3);
for(String id:screen_3){
String sql_3 = "update " + archivesType_3.getEnName() + " set is_delete_time = null,is_delete_man = null " +
"where id = '"+id+"'";
int result_3 = entityManager.createNativeQuery(sql_3).executeUpdate();
}
}
return "成功还原"+success+"条数据";
return success;
}
@Override
@ -556,9 +704,88 @@ public class ArchivesServiceImpl implements ArchivesService {
String sql = "delete from " +queryTable+" where id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
int result = entityManager.createNativeQuery(sql).executeUpdate();
int result1 = 0;
//若删除为文件级 则删除附件
if(ArchivesTypeEnum.inChive.getCode() == archivesType.getIsType() || ArchivesTypeEnum.files.getCode() == archivesType.getIsType()){
String fileSql = "select file_path from file_"+queryTable+" where archive_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
List<String> filePath = entityManager.createNativeQuery(fileSql).getResultList();
String sql1 = "delete from file_" +queryTable+" where archive_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
result1 = entityManager.createNativeQuery(sql1).executeUpdate();
for(String paths : filePath){
if(!StringUtils.isEmpty(paths)){
File file = new File(prefixPath + paths);
if(file.isFile() && file.exists()){
file.delete();
}
}
}
//当删除为项目级
}else if(ArchivesTypeEnum.project.getCode() == archivesType.getIsType()){
//获取档案表名
ArchivesType archivesType_3 = archivesTypeRepository.findByPid(archivesType.getId());
//获取该项目下所有案卷id
String query3sql = "select id from "+archivesType_3.getEnName()+" where is_delete_time is not null and parent_id in ('"
+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
List<String> list3 = entityManager.createNativeQuery(query3sql).getResultList();
if(null != list3 && list3.size()!=0){
//删除案卷
String delete3sql = "delete from " + archivesType_3.getEnName() + " where id in ('"+list3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
entityManager.createNativeQuery(delete3sql).executeUpdate();
//获取卷内表名
String enName_4 = archivesTypeRepository.findEnNameByPid(archivesType_3.getId());
//删除卷内
String delete4sql = "delete from " + enName_4 + " where is_delete_time is not null " +
"and parent_id in ('"+list3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
//删除卷内文件
String sql1 = "delete from file_" +enName_4+" where archive_id in (select id from "+enName_4
+" where is_delete_time is not null and parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')) ";
//获取卷内附件路径
String fileSql = "select file_path from file_" + enName_4 + " where archive_id in (select id from "+enName_4
+" where is_delete_time is not null and parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')) ";;
List<String> filePath = entityManager.createNativeQuery(fileSql).getResultList();
//删除卷内
entityManager.createNativeQuery(delete4sql).executeUpdate();
//删除卷内附件
result1 = entityManager.createNativeQuery(sql1).executeUpdate();
for(String paths : filePath){
if(!StringUtils.isEmpty(paths)){
File file = new File(prefixPath + paths);
if(file.isFile() && file.exists()){
file.delete();
}
}
}
}
}else if(ArchivesTypeEnum.archives.getCode() == archivesType.getIsType()){
//获取卷内表名
ArchivesType archivesType_3 = archivesTypeRepository.findByPid(archivesType.getId());
//获取该项目下所有卷内id
String query3sql = "select id from "+archivesType_3.getEnName()+" where is_delete_time is not null and parent_id in ('"
+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
List<String> list3 = entityManager.createNativeQuery(query3sql).getResultList();
if(null != list3 && list3.size()!=0){
//删除卷内
String delete3sql = "delete from " + archivesType_3.getEnName() + " where id in ('"+list3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
//获取卷内附件路径
String fileSql = "select file_path from file_" + archivesType_3.getEnName() + " where archive_id in (select id from "+archivesType_3.getEnName()
+" where is_delete_time is not null and parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')) ";
List<String> filePath = entityManager.createNativeQuery(fileSql).getResultList();
//删除卷内文件
String sql1 = "delete from file_" +archivesType_3.getEnName()+" where archive_id in (select id from "+archivesType_3.getEnName()
+" where is_delete_time is not null and parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')) ";
//删除卷内
entityManager.createNativeQuery(delete3sql).executeUpdate();
//删除卷内附件
result1 = entityManager.createNativeQuery(sql1).executeUpdate();
for(String paths : filePath){
if(!StringUtils.isEmpty(paths)){
File file = new File(prefixPath + paths);
if(file.isFile() && file.exists()){
file.delete();
}
}
}
}
}
return result+","+result1;
}

13
archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesTagServiceImpl.java

@ -48,6 +48,13 @@ public class ArchivesTagServiceImpl implements ArchivesTagService {
return PageUtil.toPage(archivesTagLogRepository.initTagLogList(tid,title,operType,bindingType,page));
}
@Override
public List<ArchivesTagLog> initTagLogListAll(String tid, String title, Integer operType, Integer bindingType) {
tid = null != tid ? "%"+tid+"%" : null;
title = null != title ? "%"+title+"%" : null;
return archivesTagLogRepository.initTagLogListAll(tid,title,operType,bindingType);
}
@Override
public Integer findIsBingdingLabel(String label) {
Optional<ArchivesTag> optional = archivesTagRepository.findById(label);
@ -84,9 +91,11 @@ public class ArchivesTagServiceImpl implements ArchivesTagService {
//绑定标签
switch (labelType){
case 1:
oldTid = archivesSummaryRepository.findByArchivesId(parentId).getTagNo();
ArchivesSummary archivesSummary = archivesSummaryRepository.findByArchivesId(parentId);
archivesTable = archivesSummary.getArchivesTableName();
oldTid = archivesSummary.getTagNo();
archivesSummaryRepository.bindTag(tid,parentId);
String sql = "update "+archivesTable+" set tid = null where id = '"+parentId+"'";
String sql = "update "+archivesTable+" set tid = '"+tid+"' where id = '"+parentId+"'";
returnCount = entityManager.createNativeQuery(sql).executeUpdate();
title = entityManager.createNativeQuery("select maintitle from "+archivesTable+" where id = '"+parentId+"'").getResultList().get(0);
break;

3
archives/src/main/java/com/storeroom/modules/dictionary/repository/ArchivesTypeRepository.java

@ -12,6 +12,9 @@ public interface ArchivesTypeRepository extends JpaRepository<ArchivesType, Stri
List<ArchivesType> findByCnName(String cn);
@Query("from ArchivesType where pid = ?1")
ArchivesType findByPid(String pid);
@Query("select pid from ArchivesType where id = ?1")
String findPidById(String id);

Loading…
Cancel
Save