Browse Source

优化门类问题

master
xia 3 years ago
parent
commit
8c5c4e5949
  1. 6
      archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java
  2. 8
      archives/src/main/java/com/storeroom/modules/archives/repository/BorrowArchivesRepository.java
  3. 6
      archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java
  4. 7
      archives/src/main/java/com/storeroom/modules/dictionary/controller/ArchivesDictrionaryController.java
  5. 2
      archives/src/main/java/com/storeroom/modules/dictionary/controller/FieldController.java
  6. 4
      archives/src/main/java/com/storeroom/modules/dictionary/domain/ArchivesType.java
  7. 15
      archives/src/main/java/com/storeroom/modules/dictionary/repository/ArchivesDictionaryRepository.java
  8. 8
      archives/src/main/java/com/storeroom/modules/dictionary/repository/ArchivesTypeRepository.java
  9. 3
      archives/src/main/java/com/storeroom/modules/dictionary/service/ArchivesDictionaryService.java
  10. 2
      archives/src/main/java/com/storeroom/modules/dictionary/service/FieldService.java
  11. 57
      archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesDictionaryImpl.java
  12. 43
      archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesTypeServiceImpl.java
  13. 3
      archives/src/main/java/com/storeroom/modules/dictionary/service/impl/FieldServiceImpl.java

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

@ -126,11 +126,7 @@ public interface ArchivesCaseRepository extends JpaRepository<ArchivesCase, Stri
List<Map<String,Object>> readyCollectConfirm(List<String> caseIds);
@Query(nativeQuery = true,
value = "SELECT group_concat(DISTINCT CONCAT( room.NAME, ' ', di.device_name, ' ', ace.folder_location_details)) " +
"FROM archives_case_cartoning acc INNER JOIN archives_case ace ON acc.case_id = ace.id " +
"INNER JOIN device_archives_tag dat ON ace.folder_location = dat.position " +
"INNER JOIN device_info di ON dat.device_info_id = di.id " +
"INNER JOIN storeroom room ON room.id = di.storeroom_id WHERE ace.id = ?1 ")
value = "SELECT ace.folder_location_details FROM archives_case ace WHERE ace.id = ?1 ")
String findLocationDetailsByCaseId(String caseId);
@Query(nativeQuery = true,

8
archives/src/main/java/com/storeroom/modules/archives/repository/BorrowArchivesRepository.java

@ -157,18 +157,18 @@ public interface BorrowArchivesRepository extends JpaRepository<BorrowArchives,
Integer getNoAbnormalByOrderNo(String orderNo);
@Query(nativeQuery = true,
value = "select concat(maintitle,'档案已加入待借申请,请及时处理') as title,update_time from borrow_archives where borrow_type = 1 order by update_time desc")
value = "select concat('待借档案:',maintitle,'档案已加入待借申请,请及时处理') as title,update_time from borrow_archives where borrow_type = 1 order by update_time desc")
List<Map<String,Object>> waitBorrow1();
@Query(nativeQuery = true,
value = "select concat(br.borrower_name,'已登记,请及时处理') as title,ba.update_time from borrow_archives ba " +
value = "select concat('借出确认:',br.borrower_name,'档案已登记,请及时处理') as title,ba.update_time from borrow_archives ba " +
"inner join borrow_bill_archives bba on ba.id = bba.ba_id inner join borrow_bill bbl on bba.bill_id = bbl.id " +
"inner join borrower br on bbl.borrower_id = br.id where ba.borrow_type = 2 order by ba.update_time desc")
List<Map<String,Object>> waitBorrow2();
@Query(nativeQuery = true,
value = "select concat(maintitle,'档案已逾期,请及时处理') as title,ba.update_time from borrow_archives ba inner join borrow_bill_archives bba on ba.id = bba.ba_id inner join borrow_bill bbl on bba.bill_id = bbl.id where ba.borrow_type = 3 and bbl.borrow_end <= now() order by ba.update_time desc")
value = "select concat('逾期警告:',maintitle,'档案已逾期,请及时处理') as title,ba.update_time from borrow_archives ba inner join borrow_bill_archives bba on ba.id = bba.ba_id inner join borrow_bill bbl on bba.bill_id = bbl.id where ba.borrow_type = 3 and bbl.borrow_end <= now() order by ba.update_time desc")
List<Map<String,Object>> waitBorrow4();
@Query(nativeQuery = true,
value = "select concat(maintitle,'档案已到归还时间,请及时处理') as title,ba.update_time from borrow_archives ba inner join borrow_bill_archives bba on ba.id = bba.ba_id inner join borrow_bill bbl on bba.bill_id = bbl.id where ba.borrow_type = 3 and bbl.borrow_end >= now() and TIMESTAMPDIFF(hour,now(),bbl.borrow_end) <= 24 order by ba.update_time desc")
value = "select concat('即将到期:',maintitle,'档案即将到期,请及时处理') as title,ba.update_time from borrow_archives ba inner join borrow_bill_archives bba on ba.id = bba.ba_id inner join borrow_bill bbl on bba.bill_id = bbl.id where ba.borrow_type = 3 and bbl.borrow_end >= now() and TIMESTAMPDIFF(hour,now(),bbl.borrow_end) <= 24 order by ba.update_time desc")
List<Map<String,Object>> waitBorrow3();

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

@ -674,7 +674,7 @@ 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.getEnName()+" where parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
List<String> list3 = entityManager.createNativeQuery(query3sql).getResultList();
@ -684,6 +684,8 @@ public class ArchivesServiceImpl implements ArchivesService {
+"' where id in ('"+list3.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";
//获取卷内表名
String enName_4 = archivesTypeRepository.findEnNameByPid(archivesType.getId());
if(null == enName_4)
return result;
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();
//删除卷内
@ -710,6 +712,8 @@ public class ArchivesServiceImpl implements ArchivesService {
//若删除为案卷
}else if(archivesType.getIsType() == 3){
String enName_4 = archivesTypeRepository.findEnNameByPid(archivesType.getId());
if(null == enName_4)
return result;
String update4sql = "update " + enName_4 + " set is_delete_time = '" +delTime+"',is_delete_man='"+dto.getDelMan()
+"' where parent_id in ('"+ids.stream().map(String::valueOf).collect(Collectors.joining("','"))+"')";

7
archives/src/main/java/com/storeroom/modules/dictionary/controller/ArchivesDictrionaryController.java

@ -75,6 +75,13 @@ public class ArchivesDictrionaryController {
if (StringUtils.isEmpty(arcdicDto.getDictionaryConfigId().getId()) || arcdicDto.getDictionaryConfigId().getId().equals("null")) {
arcdicDto.setDictionaryConfigId(null);
}
boolean isFieldRepeat = arcdicService.isFieldRepeat(arcdicDto.getCategoryId(),arcdicDto.getFieldName(),arcdicDto.getId());
if(!isFieldRepeat)
throw new BaseException("字段标识不能重复");
boolean isFieldCnRepeat = arcdicService.isFieldCnRepeat(arcdicDto.getCategoryId(),arcdicDto.getFieldCnName(),arcdicDto.getId());
if(!isFieldCnRepeat)
throw new BaseException("字段名称不能重复");
arcdicService.update(arcdicDto);
return ApiResponse.success(ResponseStatus.SUCCESS);
}

2
archives/src/main/java/com/storeroom/modules/dictionary/controller/FieldController.java

@ -28,7 +28,7 @@ public class FieldController {
public ApiResponse<Object> edit(
@Validated @RequestBody FieldDTO dto
){
String returnCode = fieldService.edit(dto,"test");
String returnCode = fieldService.edit(dto);
return returnCode != null ? ApiResponse.error(ResponseStatus.FIELD_REPEAT) :
ApiResponse.success(dto.getId() == null ? ResponseStatus.SUCCESS : HttpStatus.NO_CONTENT);
}

4
archives/src/main/java/com/storeroom/modules/dictionary/domain/ArchivesType.java

@ -59,8 +59,8 @@ public class ArchivesType extends BaseEntity implements Serializable {
@Column(name = "is_type_metic")
@ApiModelProperty(value = "是否为模板档案")
@JSONField(ordinal = 7)
private Boolean isTypeMetic;
// @JSONField(ordinal = 7)
private boolean isTypeMetic;
@Column(name = "remark")

15
archives/src/main/java/com/storeroom/modules/dictionary/repository/ArchivesDictionaryRepository.java

@ -1,10 +1,13 @@
package com.storeroom.modules.dictionary.repository;
import com.storeroom.modules.dictionary.domain.ArchivesDictionary;
import org.apache.commons.compress.harmony.pack200.Archive;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@ -20,6 +23,10 @@ public interface ArchivesDictionaryRepository extends JpaRepository<ArchivesDict
List<ArchivesDictionary> findAllByCategoryIdAndIsTypeOrderByIsSequenceAsc(String categoryId,Integer isType);
ArchivesDictionary findFirstByCategoryIdAndFieldNameAndFieldCnName(String categoryId, String fieldName, String fieldCnName);
ArchivesDictionary findFirstByCategoryIdAndFieldName(String categoryId, String fieldName);
ArchivesDictionary findFirstByCategoryIdAndFieldCnName(String categoryId, String fieldCnName);
List<ArchivesDictionary> findAllByCategoryIdAndIsTypeAndIsInputOrderByIsSequenceAsc(String categoryId,Integer isType, boolean isInput);
List<ArchivesDictionary> findAllByCategoryIdAndIsTypeAndIsRepeat(String categoryId,Integer isType,boolean isRepeat);
@ -62,10 +69,6 @@ public interface ArchivesDictionaryRepository extends JpaRepository<ArchivesDict
@Query(value = "select * from archives_dictionary where field_name = ?1 or field_cn_name = ?2 ", nativeQuery = true)
List<ArchivesDictionary> querybyName(String fName, String fcName);
ArchivesDictionary findFirstByCategoryIdAndFieldName(String categoryId,String fieldName);
/**
* 查询字段隐藏状态
* @param state
@ -73,5 +76,9 @@ public interface ArchivesDictionaryRepository extends JpaRepository<ArchivesDict
*/
List<ArchivesDictionary> findByIsDisplayAndCategoryId(Boolean state,String categoryId);
@Modifying
@Transactional(rollbackFor = Exception.class)
@Query(nativeQuery = true,value = "delete from archives_dictionary where category_id = ?1")
void deleteByCategoryId(String categoryId);
}

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

@ -26,4 +26,12 @@ public interface ArchivesTypeRepository extends JpaRepository<ArchivesType, Stri
@Query("select enName from ArchivesType where pid = ?1")
String findEnNameByPid(String pid);
@Query(nativeQuery = true,
value = "select count(1) from archives_summary where category_id = ?1 and is_delete_time is null")
Integer findContextCount(String catecoryId);
@Query(nativeQuery = true,
value = "select count(1) from archives_summary where category_id = ?1 and is_delete_time is null")
Integer findSonContextCount(String catecoryId);
}

3
archives/src/main/java/com/storeroom/modules/dictionary/service/ArchivesDictionaryService.java

@ -25,6 +25,9 @@ public interface ArchivesDictionaryService {
*/
List<ArchivesDictionaryDTO> getAll(ArchivesDicStateDTO archivesDicStateDTO);
boolean isFieldRepeat(String categoryId,String fieldName,String id);
boolean isFieldCnRepeat(String categoryId,String fieldCnName,String id);
/**
* 通过id 查询字段数据

2
archives/src/main/java/com/storeroom/modules/dictionary/service/FieldService.java

@ -12,7 +12,7 @@ import java.util.List;
public interface FieldService {
//编辑字段信息
String edit(FieldDTO dto,String userName);
String edit(FieldDTO dto);
//分类获取字段数据
List<FieldVO> findGroupType(Integer isType);
//获取自动生成表字段

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

@ -63,6 +63,26 @@ public class ArchivesDictionaryImpl implements ArchivesDictionaryService {
return dtoList;
}
@Override
public boolean isFieldRepeat(String categoryId, String fieldName, String id) {
ArchivesDictionary archivesDictionary = archivesDictionaryRepository.findFirstByCategoryIdAndFieldName(categoryId,fieldName);
if(archivesDictionary == null)
return true;
if(archivesDictionary.getId().equals(id))
return true;
return false;
}
@Override
public boolean isFieldCnRepeat(String categoryId, String fieldCnName, String id) {
ArchivesDictionary archivesDictionary = archivesDictionaryRepository.findFirstByCategoryIdAndFieldCnName(categoryId,fieldCnName);
if(archivesDictionary == null)
return true;
if(archivesDictionary.getId().equals(id))
return true;
return false;
}
@Override
public ArchivesDictionaryDTO findById(String adId) {
return archivesDictionaryMapper.toDto(archivesDictionaryRepository.findById(adId).orElseGet(ArchivesDictionary::new));
@ -114,25 +134,27 @@ public class ArchivesDictionaryImpl implements ArchivesDictionaryService {
@Transactional
public void create(ArchivesDictionaryDTO arcdicDto) {
ArchivesDictionary arc = archivesDictionaryMapper.toEntity(arcdicDto);
List<ArchivesDictionary> arc1 = archivesDictionaryRepository.querybyName(arc.getFieldName(), arc.getFieldCnName());
if (arc1.size() == 0) {
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 {
ArchivesDictionary fieldName = archivesDictionaryRepository.findFirstByCategoryIdAndFieldName(arcdicDto.getCategoryId(),arcdicDto.getFieldName());
ArchivesDictionary fieldCnName = archivesDictionaryRepository.findFirstByCategoryIdAndFieldCnName(arcdicDto.getCategoryId(),arcdicDto.getFieldCnName());
if(fieldName != null)
throw new BaseException("字段标识不能重复");
if(fieldCnName!=null)
throw new BaseException("字段名称不能重复");
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();
}
@Override
@ -236,6 +258,7 @@ public class ArchivesDictionaryImpl implements ArchivesDictionaryService {
archivesDisplaySmallDTOS.forEach(item -> {
ArchivesDictionary archivesDictionary = archivesDictionaryRepository.findById(item.getId()).orElseGet(ArchivesDictionary::new);
if (archivesDictionary != null) {
archivesDictionary.setQueue(item.getQueue());
archivesDictionary.setDisplayOrderBy(item.getDisplayOrderBy());
archivesDictionaryRepository.save(archivesDictionary);
} else {

43
archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesTypeServiceImpl.java

@ -3,6 +3,7 @@ package com.storeroom.modules.dictionary.service.impl;
import com.storeroom.exception.BaseException;
import com.storeroom.modules.common.ArchivesTypeEnum;
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.ArchivesTypeService;
import com.storeroom.modules.dictionary.service.DynamicTableService;
@ -32,6 +33,7 @@ public class ArchivesTypeServiceImpl implements ArchivesTypeService {
private final ArchivesTypeMapper archivesTypeMapper;
private final ArchivesTypeRepository archivesTypeRepository;
private final DynamicTableService dynamicTableService;
private final ArchivesDictionaryRepository archivesDictionaryRepository;
@Override
@ -88,7 +90,7 @@ public class ArchivesTypeServiceImpl implements ArchivesTypeService {
at2.setPid(at1.getPid());
at2.setIsType(at1.getIsType());
at2.setIsType(at1.getIsType());
at2.setIsTypeMetic(at1.getIsTypeMetic());
at2.setTypeMetic(at1.isTypeMetic());
at2.setCategorySeq(at1.getCategorySeq());
at2.setRemark(at1.getRemark());
archivesTypeRepository.save(at2);
@ -99,9 +101,48 @@ public class ArchivesTypeServiceImpl implements ArchivesTypeService {
@Transactional(rollbackFor = Exception.class)
public void delete(String id) {
ArchivesType archivesType=archivesTypeRepository.findById(id).orElseGet(ArchivesType::new);
if(archivesType.isTypeMetic())
throw new BaseException("系统门类不可删除");
Integer count = archivesTypeRepository.findContextCount(archivesType.getId());
if(count!=0)
throw new BaseException("该门类存在档案信息,不可删除");
//查询子类
if(archivesType.getIsType()!=ArchivesTypeEnum.files.getCode() && archivesType.getIsType() != ArchivesTypeEnum.inChive.getCode())
{
Integer sonCount = archivesTypeRepository.findSonContextCount(archivesType.getId());
if(sonCount>0)
throw new BaseException("该门类其子级门类存在档案信息,不可删除");
}
String tableName = archivesType.getEnName();
dynamicTableService.DeleteTable(tableName);
archivesTypeRepository.deleteById(id);
archivesDictionaryRepository.deleteByCategoryId(id);
if(archivesType.getIsType()==ArchivesTypeEnum.files.getCode() || archivesType.getIsType() == ArchivesTypeEnum.inChive.getCode())
dynamicTableService.DeleteTable("file_"+tableName);
Set<ArchivesType> sonIds = this.findSonCategoryIds(archivesType.getId(),new HashSet<ArchivesType>());
for(ArchivesType thisType:sonIds){
String tableName1 = thisType.getEnName();
dynamicTableService.DeleteTable(tableName1);
archivesTypeRepository.deleteById(thisType.getId());
archivesDictionaryRepository.deleteByCategoryId(thisType.getId());
if(archivesType.getIsType()==ArchivesTypeEnum.files.getCode() || archivesType.getIsType() == ArchivesTypeEnum.inChive.getCode())
dynamicTableService.DeleteTable("file_"+tableName1);
}
}
public Set<ArchivesType> findSonCategoryIds(String categoryIds,Set<ArchivesType> setIds){
if(StringUtils.isEmpty(categoryIds))
return setIds;
List<ArchivesType> list = archivesTypeRepository.findAllByPid(categoryIds);
for(ArchivesType archivesType:list){
setIds.add(archivesType);
this.findSonCategoryIds(archivesType.getId(),setIds);
}
return setIds;
}
@Override

3
archives/src/main/java/com/storeroom/modules/dictionary/service/impl/FieldServiceImpl.java

@ -21,14 +21,13 @@ public class FieldServiceImpl implements FieldService {
private final FieldRepository fieldRepository;
@Override
public String edit(FieldDTO dto, String userName) {
public String edit(FieldDTO dto) {
Field field = new Field();
if(null != dto.getId()){
field = fieldRepository.findById(dto.getId()).get();
}else{
String newId = NanoIdUtils.randomNanoId();
field.setId(newId);
field.setCreateBy(userName);
}
String origId = fieldRepository.findIdFirstByFieldName(dto.getFieldName());
if(null != origId && !origId.equals(dto.getId())){

Loading…
Cancel
Save