Browse Source

新增档案模块 档案详情、档案元数据

修改档案盒 标签模块 绑定、解绑标签问题
master
xia 3 years ago
parent
commit
ba4d0be41f
  1. 16
      archives/src/main/java/com/storeroom/modules/archives/controller/ArchivesController.java
  2. 12
      archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java
  3. 2
      archives/src/main/java/com/storeroom/modules/archives/domain/vo/ArchivesDetailsVO.java
  4. 8
      archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java
  5. 4
      archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java
  6. 2
      archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java
  7. 53
      archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java
  8. 87
      archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java

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

@ -69,6 +69,14 @@ public class ArchivesController {
return ApiResponse.success(archivesService.archiveDetails(categoryId,archivesId));
}
@ApiOperation("档案元数据")
@GetMapping("/archivesMetadata")
public ApiResponse<Object> archivesMetadata(
String categoryId,String archivesId
){
return ApiResponse.success(archivesService.archivesMetadata(categoryId,archivesId));
}
@ApiOperation("档案预编辑")
@GetMapping("/doedit")
public ApiResponse<Object> doedit(
@ -216,4 +224,12 @@ public class ArchivesController {
return ApiResponse.success("/"+path);
}
@ApiOperation("标签管理")
@GetMapping("/initTagView")
public ApiResponse<Object> initTagView(
String query,Integer tagType,Pageable page
){
return ApiResponse.success(null);
}
}

12
archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java

@ -61,14 +61,22 @@ public class CaseController {
){
String binding = caseService.findIsBingdingLabel(dto.getTid());
String[] bindings = binding.split(",");
if("0".equals(bindings[1]) || dto.getCoverLabel()){
boolean coverLabel = null == dto.getCoverLabel() ? false : dto.getCoverLabel();
if("0".equals(bindings[1]) || coverLabel){
return ApiResponse.success(caseService.addCaseTag(dto.getId(),dto.getTid(),dto.getLabelType(),bindings[1],bindings[0]));
}else{
return ApiResponse.error(ResponseStatus.LABEL_BOUND);
}
}
@ApiOperation("解绑标签")
@PostMapping("/bingdingLabel")
public ApiResponse<Object> unbindTag(
@Validated @RequestBody CaseDTO dto
){
return ApiResponse.success(caseService.unbindTag(dto.getTid(),dto.getLabelType()));
}
@ApiOperation("档案盒装盒列表")
@GetMapping("/initCartoningList")
public ApiResponse<Object> initCartoningList(

2
archives/src/main/java/com/storeroom/modules/archives/domain/vo/ArchivesDetailsVO.java

@ -9,6 +9,8 @@ public class ArchivesDetailsVO {
private String fieldName;
private String fieldCnName;
private Integer editLength;
private Boolean isLine;
private Object context;
}

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

@ -25,12 +25,12 @@ public interface ArchivesCaseRepository extends JpaRepository<ArchivesCase, Stri
@Query("select caseName from ArchivesCase where id in ?1")
List<String> findCaseName(List caseIds);
@Query(nativeQuery = true,
value = "update archives_case set tid = null where tid = ?1")
@Modifying
@Query(value = "update ArchivesCase set tid = '' where tid = ?1")
void unbindTag(String tid);
@Query(nativeQuery = true,
value = "update archives_case set tid ?1 where id = ?2 ")
@Modifying
@Query(value = "update ArchivesCase set tid = ?1 where id = ?2 ")
Integer bindTag(String tid,String archivesId);
@Modifying

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

@ -18,8 +18,10 @@ public interface ArchivesCaseService {
Object edit(CaseDTO dto);
//查询该标签是否绑定过
String findIsBingdingLabel(String label);
//添加标签
//添加标签
Object addCaseTag(String caseId,String tid,Integer labelType,String bindingCount,String tagType);
//解绑标签
Object unbindTag(String tid,Integer labelType);
//档案盒装盒列表
Object initCartoningList(String tid, String caseName,String barcode,Integer caseType, Pageable page);
//装盒

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

@ -16,6 +16,8 @@ public interface ArchivesService {
String retention,String securityClass,String organizationMatter, boolean isdel,Pageable page);
//根据门类id 档案id 获取显示档案详情信息
List<ArchivesDetailsVO> archiveDetails(String categoryId,String archivesId);
//根据门类id 档案id 获取元数据
StringBuffer archivesMetadata(String categoryId,String archivesId);
//导出档案数据
List<Object[]> exportArchivesData(String categoryId,String archivesId,Pageable page);
//预编辑档案 初始化信息

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

@ -143,27 +143,46 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
default:
break;
}
//绑定标签
switch (labelType){
case 1:
archivesSummaryRepository.bindTag(tid,caseId);
String sql = "update "+archivesTable+" set tid = null where id = '"+caseId+"'";
returnCount = entityManager.createNativeQuery(sql).executeUpdate();
break;
case 2:
returnCount = caseRepository.bindTag(tid,caseId);
break;
case 3:
break;
default:
break;
}
}
//绑定标签
switch (labelType){
case 1:
archivesSummaryRepository.bindTag(tid,caseId);
String sql = "update "+archivesTable+" set tid = null where id = '"+caseId+"'";
returnCount = entityManager.createNativeQuery(sql).executeUpdate();
break;
case 2:
returnCount = caseRepository.bindTag(tid,caseId);
break;
case 3:
break;
default:
break;
}
return returnCount;
}
@Override
public Object unbindTag(String tid, Integer labelType) {
Integer result = 0;
switch (labelType){
case 1:
ArchivesSummary archivesSummary = archivesSummaryRepository.findFirstByTagNo(tid);
archivesSummaryRepository.unbindTag(tid);
String archivesTable = archivesSummary.getArchivesTableName();
String sql = "update "+archivesTable+" set tid = null where id = '"+archivesSummary.getArchivesId()+"'";
result = entityManager.createNativeQuery(sql).executeUpdate();
break;
case 2:
caseRepository.unbindTag(tid);
result = 1;
break;
default:
break;
}
return result;
}
@Override
public Object initCartoningList(String tid, String caseName, String barcode, Integer caseType, Pageable page) {
tid = StringUtils.isEmpty(tid) ? "" : tid;

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

@ -18,10 +18,14 @@ import com.storeroom.utils.NanoIdUtils;
import com.storeroom.utils.PageUtil;
import com.storeroom.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.jdom2.Document;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.jdom2.Element;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@ -82,11 +86,11 @@ public class ArchivesServiceImpl implements ArchivesService {
String queryparentsId = StringUtils.isEmpty(parentsId) ? " " : " and parent_id = '"+parentsId+"' ";
additional = StringUtils.isEmpty(archiveYear) ? archiveYear : additional + " and archive_year = '"+archiveYear+"'";
additional = StringUtils.isEmpty(department) ? department : additional + " and department = '"+department+"'";
additional = StringUtils.isEmpty(retention) ? retention : additional + " and retention = '"+retention+"'";
additional = StringUtils.isEmpty(securityClass) ? securityClass : additional + " and security_class = '"+securityClass+"'";
additional = StringUtils.isEmpty(organizationMatter) ? organizationMatter : additional + " and organization_matter = '"+organizationMatter+"'";
additional = StringUtils.isEmpty(archiveYear) ? additional : additional + " and archive_year = '"+archiveYear+"'";
additional = StringUtils.isEmpty(department) ? additional : additional + " and department = '"+department+"'";
additional = StringUtils.isEmpty(retention) ? additional : additional + " and retention = '"+retention+"'";
additional = StringUtils.isEmpty(securityClass) ? additional : additional + " and security_class = '"+securityClass+"'";
additional = StringUtils.isEmpty(organizationMatter) ? additional : additional + " and organization_matter = '"+organizationMatter+"'";
additional = StringUtils.isEmpty(query) ? additional : additional
+ " and (maintitle like '%"+query+"%' or archive_no like '%"+query+"%' or archive_year like '%"+query+"%') ";
@ -116,30 +120,89 @@ public class ArchivesServiceImpl implements ArchivesService {
@Override
public List<ArchivesDetailsVO> archiveDetails(String categoryId, String archivesId) {
List<ArchivesDetailsVO> returnVo = new ArrayList<>();
List<ArchivesDictionary> archivesDictionaries = archivesDictionaryRepository.findDisPlay(categoryId);
ArchivesType archivesType = archivesTypeRepository.findById(categoryId).get();
List<String> queryFields = archivesDictionaryRepository.findDisPlayField(categoryId);
List<String> queryCnFields = archivesDictionaryRepository.findDisPlayCnField(categoryId);
List<String> queryFields = new ArrayList<>();
List<String> queryCnFields = new ArrayList<>();
List<Integer> queryEditLength = new ArrayList<>();
List<Boolean> queryisLine = new ArrayList<>();
for(ArchivesDictionary archivesDictionary:archivesDictionaries){
queryFields.add(archivesDictionary.getFieldName());
queryCnFields.add(archivesDictionary.getFieldCnName());
queryEditLength.add(archivesDictionary.getEditLength());
queryisLine.add(archivesDictionary.getIsLine());
}
// archivesDictionaryRepository.findDisPlayField(categoryId);
// archivesDictionaryRepository.findDisPlayCnField(categoryId);
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)," +
"folder_location,borrow_type,barcode ";
List<Object[]> list = entityManager.createNativeQuery("select "+queryField+appendQuery+" from "+queryTable + " z where z.id = '"+archivesId+"'").getResultList();
queryFields.add("tid");queryCnFields.add("TID");
queryFields.add("case_name");queryCnFields.add("盒名称");
queryFields.add("folder_location");queryCnFields.add("库房位置");
queryFields.add("borrow_type");queryCnFields.add("借阅状态");
queryFields.add("barcode");queryCnFields.add("条形码");
queryFields.add("tid");queryCnFields.add("TID");queryEditLength.add(null);queryisLine.add(null);
queryFields.add("case_name");queryCnFields.add("盒名称");queryEditLength.add(null);queryisLine.add(null);
queryFields.add("folder_location");queryCnFields.add("库房位置");queryEditLength.add(null);queryisLine.add(null);
queryFields.add("borrow_type");queryCnFields.add("借阅状态");queryEditLength.add(null);queryisLine.add(null);
queryFields.add("barcode");queryCnFields.add("条形码");queryEditLength.add(null);queryisLine.add(null);
for(int i = 0;i<queryFields.size();i++){
Object[] obj = list.get(0);
ArchivesDetailsVO vo = new ArchivesDetailsVO();
vo.setFieldName(queryFields.get(i));
vo.setFieldCnName(queryCnFields.get(i));
vo.setEditLength(queryEditLength.get(i));
vo.setIsLine(queryisLine.get(i));
vo.setContext(obj[i]);
returnVo.add(vo);
}
return returnVo;
}
@Override
public StringBuffer archivesMetadata(String categoryId, String archivesId) {
ArchivesType archivesType = archivesTypeRepository.findById(categoryId).get();
List<ArchivesDictionary> ads = archivesDictionaryRepository.findAllByCategoryIdAndIsTypeAndIsInputOrderByIsSequenceAsc(categoryId,2,true);
List<String> queryFields = new ArrayList<>();
List<String> queryCnFields = new ArrayList<>();
for(ArchivesDictionary archivesDictionary:ads){
queryFields.add(archivesDictionary.getFieldName());
queryCnFields.add(archivesDictionary.getFieldCnName());
}
String queryField = queryFields.stream().map(String::valueOf).collect(Collectors.joining(","));
String queryTable = archivesType.getEnName();
String appendQuery = "";
if(archivesType.getIsType() == ArchivesTypeEnum.project.getCode() || archivesType.getIsType() == ArchivesTypeEnum.archives.getCode()){
String childrenTable = archivesTypeRepository.findEnNameByPid(archivesType.getId());
appendQuery = StringUtils.isEmpty(childrenTable) ? "0 as zj6 " :"(select count(1) from "+childrenTable+" c where c.parent_id = t.id) as zj6 ";
}else{
appendQuery = "(select count(1) from file_"+queryTable+" c where c.archive_id = t.id) as zj6 ";
}
List<Object[]> list = entityManager.createNativeQuery("select "+queryField+"" +
",roomplace as zj1,case_no as zj2,folder_location as zj3,tid as zj4,barcode as zj5,"+appendQuery +
" from "+queryTable + " t where id = '"+archivesId+"'").getResultList();
Object[] doeditEntity = list.size() > 0 ? list.get(0) : new Object[queryFields.size()+6];
StringBuffer sb = new StringBuffer();
sb.append("<? xml version=\"1.0\" encoding=\"UTF-8\"?>");
sb.append("<元数据信息>");
sb.append("<内容描述>");
for (int i = 0;i< queryFields.size();i++){
sb.append("<"+queryCnFields.get(i)+">"+doeditEntity[i]+"</"+queryCnFields.get(i)+">");
}
sb.append("</内容描述>");
sb.append("<系统数据>");
sb.append("<库房名>"+doeditEntity[queryFields.size()]+"</库房名>");
sb.append("<盒号>"+doeditEntity[queryFields.size()+1]+"</盒号>");
sb.append("<存放位置>"+doeditEntity[queryFields.size()+2]+"</存放位置>");
sb.append("<标签编号>"+doeditEntity[queryFields.size()+3]+"</标签编号>");
sb.append("<条码号>"+doeditEntity[queryFields.size()+4]+"</条码号>");
sb.append("<子条目数>"+doeditEntity[queryFields.size()+5]+"</子条目数>");
sb.append("</系统数据>");
sb.append("</元数据信息>");
return sb;
}
@Override
public List<Object[]> exportArchivesData(String categoryId, String archivesId,Pageable page) {
ArchivesType archivesType = archivesTypeRepository.findById(categoryId).get();

Loading…
Cancel
Save