Browse Source

修复档案盒、门类字段新增删除bug

master
xia 2 years ago
parent
commit
c6f0904a41
  1. 18
      archives/src/main/java/com/storeroom/modules/archives/controller/ArchivesController.java
  2. 7
      archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesSummaryRepository.java
  3. 4
      archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java
  4. 2
      archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java
  5. 27
      archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java
  6. 23
      archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesDictionaryImpl.java

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

@ -203,6 +203,23 @@ public class ArchivesController {
return ApiResponse.success(archivesService.completelyDelete(dto));
}
@ApiOperation("门类下档案数")
@GetMapping("/countByCategory")
public ApiResponse<Object> countByCategory(
String categoryId
){
return ApiResponse.success(archivesService.countByCategory(categoryId));
}
@ApiOperation("删除门类所有档案(总表)")
@PostMapping("/deleteByCategory")
public ApiResponse<Object> deleteByCategory(
@Validated @RequestBody ArchivesDTO dto
){
archivesService.deleteByCategory(dto.getCategoryId());
return ApiResponse.success(true);
}
@ApiOperation("档案类别数量统计")
@GetMapping("/initArchivesTypeNum")
public ApiResponse<Object> initArchivesTypeNum(Integer year)
@ -214,6 +231,7 @@ public class ArchivesController {
@GetMapping("/initArchivesTypeStatistics")
public ApiResponse<Object> initArchivesTypeStatistics(String yearMonth)
{
yearMonth = StringUtils.isEmpty(yearMonth) ? null : yearMonth;
return ApiResponse.success(archivesService.initArchivesTypeStatistics(yearMonth));
}

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

@ -201,7 +201,7 @@ public interface ArchivesSummaryRepository extends JpaRepository<ArchivesSummary
Integer getArchivesNumByTpye(Integer type,Integer year);
@Query(nativeQuery = true,
value = "select count(1) from archives_summary where category_id = ?1 and if(?2 is null,1=1,DATE_FORMAT(create_time,'%Y-%m') = ?2)")
value = "select count(1) from archives_summary where category_id in ?1 and if(?2 is null,1=1,DATE_FORMAT(create_time,'%Y-%m') = ?2)")
Integer getArchivesNumByCategoryIds(List categoryIds,String yearMonth);
@Query(nativeQuery = true,
@ -216,4 +216,9 @@ public interface ArchivesSummaryRepository extends JpaRepository<ArchivesSummary
"inner join archives_type t2 on t1.category_root_id = t2.id order by num desc")
List<Map<String,Integer>> initArchivesSearchRanking(String yearMonth);
@Modifying
@Transactional(rollbackFor = Exception.class)
@Query(nativeQuery = true,value = "delete from archives_summary where category_id = ?1")
void deleteByCategoryId(String categoryId);
}

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

@ -53,6 +53,10 @@ public interface ArchivesService {
Object delete(ArchivesDTO dto);
//档案从回收站还原
Object reduction(ArchivesDTO dto);
//根据门类获取档案数量
Object countByCategory(String categoryId);
//根据门类删除总表档案
void deleteByCategory(String categoryId);
//档案回收站删除
Object completelyDelete(ArchivesDTO dto);
//根据门类id获取所有父级id

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

@ -461,7 +461,7 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
List<String> r = new ArrayList();
for(String caseId:caseIds){
Integer borrowType = caseRepository.findBorrowCase(caseId);
if(null != borrowType && borrowType != 4){
if(null != borrowType && borrowType != 4 && borrowType != -1){
r.add(caseId);
}
}

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

@ -674,16 +674,16 @@ public class ArchivesServiceImpl implements ArchivesService {
//若删除为项目
if(archivesType.getIsType() == 2){
//获取档案表名
ArchivesType archivesType_3 = archivesTypeRepository.findByPid(archivesType.getId());
// 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("','"))+"')";
String query3sql = "select id from "+archivesType.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 = '" +delTime+"',is_delete_man='"+dto.getDelMan()
String update3sql = "update " + archivesType.getEnName() + " set is_delete_time = '" +delTime+"',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 enName_4 = archivesTypeRepository.findEnNameByPid(archivesType.getId());
String query4sql = "select id from "+enName_4+" where parent_id in ('"+list3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
List<String> list4 = entityManager.createNativeQuery(query4sql).getResultList();
//删除卷内
@ -904,6 +904,25 @@ public class ArchivesServiceImpl implements ArchivesService {
return success;
}
@Override
public Object countByCategory(String categoryId) {
Optional<ArchivesType> optional = archivesTypeRepository.findById(categoryId);
if(!optional.isPresent())
return 0;
String sql = "select count(1) from " +optional.get().getEnName() +" where is_delete_time is null";
List<Object> list = entityManager.createNativeQuery(sql).getResultList();
if(list == null || list.size()==0)
return 0;
return list.get(0);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteByCategory(String categoryId) {
archivesSummaryRepository.deleteByCategoryId(categoryId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Object completelyDelete(ArchivesDTO dto) {

23
archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesDictionaryImpl.java

@ -3,16 +3,21 @@ package com.storeroom.modules.dictionary.service.impl;
import com.storeroom.exception.BaseException;
import com.storeroom.modules.dictionary.domain.ArchivesDictionary;
import com.storeroom.modules.dictionary.domain.ArchivesType;
import com.storeroom.modules.dictionary.repository.ArchivesDictionaryRepository;
import com.storeroom.modules.dictionary.repository.ArchivesTypeRepository;
import com.storeroom.modules.dictionary.service.ArchivesDictionaryService;
import com.storeroom.modules.dictionary.service.dto.*;
import com.storeroom.modules.dictionary.service.mapstruct.ArchivesDictionaryMapper;
import com.storeroom.utils.NanoIdUtils;
import com.storeroom.utils.StringUtils;
import com.storeroom.utils.ValidationUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
@ -22,6 +27,9 @@ import java.util.Set;
@RequiredArgsConstructor
public class ArchivesDictionaryImpl implements ArchivesDictionaryService {
@PersistenceContext
EntityManager entityManager;
private final ArchivesTypeRepository archivesTypeRepository;
private final ArchivesDictionaryRepository archivesDictionaryRepository;
private final ArchivesDictionaryMapper archivesDictionaryMapper;
@ -111,6 +119,17 @@ public class ArchivesDictionaryImpl implements ArchivesDictionaryService {
arc.setId(NanoIdUtils.randomNanoId());
arc.setIsInput(true);
archivesDictionaryRepository.save(arc);
String colType = arcdicDto.getIsDataType() == 1?"varchar":"int";
colType = colType+"("+arcdicDto.getIsColumnLength()+") ";
String adddefault = " ";
if(!StringUtils.isEmpty(arcdicDto.getIsDefaultValue())){
adddefault = " default ";
adddefault = arcdicDto.getIsDataType() == 2 ? adddefault+arcdicDto.getIsDefaultValue() : adddefault+"'"+arcdicDto.getIsDefaultValue()+"'";
}
ArchivesType archivesType = archivesTypeRepository.findById(arcdicDto.getCategoryId()).get();
String sql = "alter table "+archivesType.getEnName()+" add "+arc.getFieldName()+" "+colType+adddefault+" comment '"+arc.getFieldCnName()+"'";
entityManager.createNativeQuery(sql).executeUpdate();
} else {
throw new BaseException("字段名称不能重复");
}
@ -119,7 +138,11 @@ public class ArchivesDictionaryImpl implements ArchivesDictionaryService {
@Override
@Transactional
public void delete(String id) {
ArchivesDictionary archivesDictionary = archivesDictionaryRepository.findById(id).get();
ArchivesType archivesType = archivesTypeRepository.findById(archivesDictionary.getCategoryId()).get();
archivesDictionaryRepository.deleteById(id);
String sql = "alter table "+archivesType.getEnName()+" DROP COLUMN "+archivesDictionary.getFieldName();
entityManager.createNativeQuery(sql).executeUpdate();
}
@Override

Loading…
Cancel
Save