From 27ec09ff956a3ee4f523928d539d9c3b428b8b4d Mon Sep 17 00:00:00 2001 From: xia Date: Mon, 13 Jun 2022 16:42:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A1=A3=E6=A1=88=E7=9B=92=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=20=E8=A3=85=E7=9B=92=E3=80=81=E6=8B=86?= =?UTF-8?q?=E7=9B=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../archives/controller/CaseController.java | 18 +++- .../archives/domain/vo/ArchivesCaseVO.java | 22 +++++ .../ArchivesCaseCartoningRepository.java | 4 + .../repository/ArchivesCaseRepository.java | 7 ++ .../repository/ArchivesSummaryRepository.java | 14 ++++ .../archives/service/ArchivesCaseService.java | 7 +- .../service/dto/ArchivesCaseCartoningDTO.java | 21 +++++ .../service/impl/ArchivesCaseServiceImpl.java | 82 +++++++++++++++++-- 8 files changed, 167 insertions(+), 8 deletions(-) create mode 100644 archives/src/main/java/com/storeroom/modules/archives/domain/vo/ArchivesCaseVO.java create mode 100644 archives/src/main/java/com/storeroom/modules/archives/service/dto/ArchivesCaseCartoningDTO.java diff --git a/archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java b/archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java index 1c4d1a7..89cc1a7 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java +++ b/archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java @@ -3,6 +3,7 @@ package com.storeroom.modules.archives.controller; import com.storeroom.exception.constant.ResponseStatus; import com.storeroom.modules.archives.domain.ArchivesCaseCartoning; import com.storeroom.modules.archives.service.ArchivesCaseService; +import com.storeroom.modules.archives.service.dto.ArchivesCaseCartoningDTO; import com.storeroom.modules.archives.service.dto.CaseDTO; import com.storeroom.utils.ApiResponse; import io.swagger.annotations.Api; @@ -64,9 +65,24 @@ public class CaseController { @ApiOperation("装盒") @PostMapping("/cartoning") public ApiResponse cartoning( - @Validated @RequestBody List dtos + @Validated @RequestBody List dtos ){ + return ApiResponse.success(caseService.cartoning(dtos)); + } + + @ApiOperation("预备装盒") + @PostMapping("/doUnpacking") + public ApiResponse doUnpacking( + @Validated @RequestBody ArchivesCaseCartoningDTO dto + ){ + return ApiResponse.success(caseService.doUnpacking(dto.getCaseId())); + } + @ApiOperation("拆盒") + @PostMapping("/unpacking") + public ApiResponse unpacking( + @Validated @RequestBody List dtos + ){ return ApiResponse.success(caseService.cartoning(dtos)); } diff --git a/archives/src/main/java/com/storeroom/modules/archives/domain/vo/ArchivesCaseVO.java b/archives/src/main/java/com/storeroom/modules/archives/domain/vo/ArchivesCaseVO.java new file mode 100644 index 0000000..f5edbda --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/archives/domain/vo/ArchivesCaseVO.java @@ -0,0 +1,22 @@ +package com.storeroom.modules.archives.domain.vo; + +import com.storeroom.modules.archives.domain.ArchivesSummary; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class ArchivesCaseVO { + + private String id; + private String caseName; + private Integer caseType; + private String tid; + private String barcode; + private String folderLocation; + private String folderLocationDetails; + private Integer depositNum; + private List archives; +} diff --git a/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseCartoningRepository.java b/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseCartoningRepository.java index d868840..2ba5652 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseCartoningRepository.java +++ b/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseCartoningRepository.java @@ -7,6 +7,10 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import java.util.List; + public interface ArchivesCaseCartoningRepository extends JpaRepository{ + List findAllByCaseId(String caseId); + } diff --git a/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java b/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java index 1b90cff..a7bc7df 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java +++ b/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java @@ -8,6 +8,8 @@ import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + public interface ArchivesCaseRepository extends JpaRepository{ Page findAllByCaseNameLikeAndTidLikeAndBarcodeLike(String caseName, String tid,String barcode, Pageable page); @@ -18,6 +20,9 @@ public interface ArchivesCaseRepository extends JpaRepository findCaseName(List caseIds); + @Query(nativeQuery = true, value = "update archives_case set tid = null where tid = ?1") void unbindTag(String tid); @@ -31,4 +36,6 @@ public interface ArchivesCaseRepository extends JpaRepository findAllByCaseNoAndCategoryType(String caseId,Integer categoryType); + } diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java index f7a70cc..458597d 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java +++ b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java @@ -1,6 +1,7 @@ package com.storeroom.modules.archives.service; import com.storeroom.modules.archives.domain.ArchivesCaseCartoning; +import com.storeroom.modules.archives.service.dto.ArchivesCaseCartoningDTO; import com.storeroom.modules.archives.service.dto.CaseDTO; import org.springframework.data.domain.Pageable; @@ -18,7 +19,11 @@ public interface ArchivesCaseService { //档案盒装盒列表 Object initCartoningList(String tid, String caseName,String barcode,Integer caseType, Pageable page); //装盒 - Object cartoning(List dtos); + Object cartoning(List dtos); + //预拆盒 + Object doUnpacking(String caseId); + //拆盒 + Object unpacking(List dtos); } diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/dto/ArchivesCaseCartoningDTO.java b/archives/src/main/java/com/storeroom/modules/archives/service/dto/ArchivesCaseCartoningDTO.java new file mode 100644 index 0000000..be535d4 --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/archives/service/dto/ArchivesCaseCartoningDTO.java @@ -0,0 +1,21 @@ +package com.storeroom.modules.archives.service.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class ArchivesCaseCartoningDTO { + + + private String id; + private String archivesId; + private String archivesParentsId; + private String caseId; + private String caseName; + private String categoryId; + + +} diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java index 1c11576..3771307 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java +++ b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java @@ -7,13 +7,17 @@ import com.storeroom.modules.archives.repository.ArchivesCaseCartoningRepository import com.storeroom.modules.archives.repository.ArchivesCaseRepository; import com.storeroom.modules.archives.repository.ArchivesSummaryRepository; import com.storeroom.modules.archives.service.ArchivesCaseService; +import com.storeroom.modules.archives.service.dto.ArchivesCaseCartoningDTO; +import com.storeroom.modules.archives.domain.vo.ArchivesCaseVO; import com.storeroom.modules.archives.service.dto.CaseDTO; +import com.storeroom.modules.common.ArchivesTypeEnum; import com.storeroom.modules.dictionary.domain.ArchivesType; import com.storeroom.modules.dictionary.repository.ArchivesTypeRepository; import com.storeroom.utils.NanoIdUtils; import com.storeroom.utils.PageUtil; import com.storeroom.utils.StringUtils; import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -130,22 +134,31 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService { @Override @Transactional(rollbackFor = Exception.class) - public Object cartoning(List dtos) { + public Object cartoning(List dtos) { Set caseIds = new HashSet<>(); - dtos = archivesCaseCartoningRepository.saveAllAndFlush(dtos); + Set caseNames = new HashSet<>(); + List archivesCaseCartonings = dtos.stream().map(archivesCaseCartoning ->{ + ArchivesCaseCartoning Cartoning = new ArchivesCaseCartoning(); + caseIds.add(archivesCaseCartoning.getCaseId()); + caseNames.add(archivesCaseCartoning.getCaseName()); + BeanUtils.copyProperties(Cartoning,archivesCaseCartoning); + return Cartoning; + }).collect(Collectors.toList()); + archivesCaseCartonings = archivesCaseCartoningRepository.saveAllAndFlush(archivesCaseCartonings); ArchivesType archivesType = new ArchivesType(); Integer caseType = 0; - for(ArchivesCaseCartoning archivesCaseCartoning:dtos){ - caseIds.add(archivesCaseCartoning.getCaseId()); + for(int i = 0;i archivesSummaries = archivesSummaryRepository.findAllByCaseNoAndCategoryType(caseId, ArchivesTypeEnum.files.getCode()); + vo.setArchives(archivesSummaries); + returnList.add(vo); + //案卷类型盒 + }else if(archivesCase.getCaseType()==2){ + List archivesSummaries = archivesSummaryRepository.findAllByCaseNoAndCategoryType(caseId,ArchivesTypeEnum.inChive.getCode()); + Set caseIds = new HashSet<>(); + for(ArchivesSummary archivesSummary:archivesSummaries){ + caseIds.add(archivesSummary.getCaseNo()); + } + if(caseIds.size()==1){ + ArchivesCaseVO vo = new ArchivesCaseVO(); + BeanUtils.copyProperties(vo,archivesCase); + vo.setArchives(archivesSummaries); + returnList.add(vo); + }else{ + for (String thisCaseId:caseIds){ + ArchivesCase newCase = caseRepository.findById(thisCaseId).get(); + ArchivesCaseVO thisVo = new ArchivesCaseVO(); + BeanUtils.copyProperties(thisVo,newCase); + List newSummary = new ArrayList<>(); + for(ArchivesSummary thisSummary:archivesSummaries){ + if(thisCaseId.equals(thisSummary.getCaseNo())){ + newSummary.add(thisSummary); + } + } + returnList.add(thisVo); + } + } + + } + return returnList; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Object unpacking(List dtos) { + Set categoryIds = new HashSet<>(); + for(ArchivesCaseCartoningDTO dto:dtos){ + categoryIds.add(dto.getCategoryId()); + } + for(String categoryId:categoryIds){ + ArchivesType archivesType = archivesTypeRepository.findById(categoryId).get(); +// String sql = "update "+archivesType.getEnName()+" set case_no = null where id = '"+archivesCaseCartoning.getArchivesId()+"'"; +// entityManager.createNativeQuery(sql).executeUpdate(); + } return null; } }