diff --git a/archives/src/main/java/com/storeroom/modules/archives/controller/StorageController.java b/archives/src/main/java/com/storeroom/modules/archives/controller/StorageController.java index 76aacbf..8220474 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/controller/StorageController.java +++ b/archives/src/main/java/com/storeroom/modules/archives/controller/StorageController.java @@ -21,6 +21,7 @@ import com.storeroom.modules.device.service.DeviceService; import com.storeroom.modules.device.service.OperatingStateService; import com.storeroom.modules.device.service.dto.DeviceInfoDto; import com.storeroom.utils.ApiResponse; +import com.storeroom.utils.StringUtils; import com.storeroom.utils.enums.ResponseStatus; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -35,6 +36,7 @@ import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.Map; @RestController @RequiredArgsConstructor @@ -100,6 +102,14 @@ public class StorageController { } } + @ApiOperation("获取所有层架位信息") + @AnonymousGetMapping("/findShelfAll") + public ApiResponse findShelfAll( + Pageable page + ){ + return ApiResponse.success(deviceArchivesTagService.findAll(page)); + } + @ApiOperation("入库") @PostMapping("/collect") public ApiResponse collect( @@ -108,6 +118,7 @@ public class StorageController { if(null == dtos || dtos.size()==0) return ApiResponse.error(ResponseStatus.DEVICE_IS_NULL); String deviceId = dtos.get(0).getDeviceId(); + DeviceInfoDto device = deviceService.findById(deviceId); //判断设备是否有回调 OperatingState callback = operatingStateService.findByDeviceIdAndStateType(deviceId,2); boolean isCallback = callback == null ? false : callback.getInBound(); @@ -115,30 +126,131 @@ public class StorageController { //判断设备是否有联动 OperatingState linkage = operatingStateService.findByDeviceIdAndStateType(deviceId,1); if(null != linkage && linkage.getInBound()){ - DeviceInfoDto device = deviceService.findById(deviceId); - String url = "http://"+device.getDeviceIp()+":"+device.getDevicePort()+"IntelligentCabinetAPIServer/Task"; - JSONObject json = new JSONObject(); - json.put("id","1716F6C668C83A929C738B"); - json.put("type",1); - json.put("title","一盒一卷"); - json.put("filebox","1716F6C668C83A929C738B"); - json.put("dangNum","一盒一卷"); - json.put("position","1区5列6节2层左"); - JSONObject json1 = new JSONObject(); - json1.put("storeCode","12345678"); - json1.put("quNo","1"); - json1.put("colNo","5"); - json1.put("leNo","6"); - json1.put("divNo","2"); - json1.put("zyNo","1"); - json.put("positionKey",json1); - json.put("filetype",2); - String reselt = HttpUtil.wlwHttpURLConnection(url,json,null,null,null); - System.out.println(reselt); + for(ArchivesCase thisCase:cases){ + Integer deviceType = thisCase.getFolderLocation().split("-").length == 5?1:2; + try { + if(deviceType==1){ + String[] shelf = thisCase.getFolderLocation().split("-"); + String url = "http://"+device.getDeviceIp()+":"+device.getDevicePort()+"IntelligentCabinetAPIServer/Task"; + JSONObject json = new JSONObject(); + json.put("id",thisCase.getId()); + json.put("type",1); + json.put("title",thisCase.getCaseName()); + json.put("filebox",thisCase.getId()); + json.put("position",thisCase.getFolderLocation()); + JSONObject json1 = new JSONObject(); + json1.put("storeCode", StringUtils.isEmpty(device.getStoreroomCode()) ? "12345678" : device.getStoreroomCode()); + json1.put("quNo",shelf[0]); + json1.put("colNo",shelf[1]); + json1.put("leNo",shelf[2]); + json1.put("divNo",shelf[3]); + json1.put("zyNo",shelf[4]); + json.put("positionKey",json1); + json.put("filetype",thisCase.getCaseType()); + String reselt = HttpUtil.wlwHttpURLConnection(url,json,null,null,null); + }else{ + + } + }catch (Exception e){ + e.printStackTrace(); + } + } } return ApiResponse.success(cases.size()); } + @ApiOperation("出库") + @PostMapping("/grant") + public ApiResponse grant( + @Validated @RequestBody List caseIds + ){ + List caseIdAll = caseService.findCaseIdAllByCaseIds(caseIds); + Map devices = caseService.findDevicesByCaseIds(caseIdAll); + for(String caseId:caseIdAll){ + ArchivesCase thisCase = caseService.findById(caseId); + DeviceInfoDto device = devices.get(caseId); + if(null != device){ + //判断设备是否有回调 + OperatingState callback = operatingStateService.findByDeviceIdAndStateType(device.getDeviceId(),2); + boolean isCallback = callback == null ? false : callback.getInBound(); + Integer deviceType = caseService.grant(isCallback,caseId); + + //判断设备是否有联动 + OperatingState linkage = operatingStateService.findByDeviceIdAndStateType(device.getDeviceId(),1); + if(null != linkage && linkage.getOutBound()){ + try { + if(deviceType==1){ + String[] shelf = thisCase.getFolderLocation().split("-"); + String url = "http://"+device.getDeviceIp()+":"+device.getDevicePort()+"IntelligentCabinetAPIServer/Task"; + JSONObject json = new JSONObject(); + json.put("id",caseId); + json.put("type",2); + json.put("title",thisCase.getCaseName()); + json.put("filebox",caseId); + json.put("position",thisCase.getFolderLocation()); + JSONObject json1 = new JSONObject(); + json1.put("storeCode", StringUtils.isEmpty(device.getStoreroomCode()) ? "12345678" : device.getStoreroomCode()); + json1.put("quNo",shelf[0]); + json1.put("colNo",shelf[1]); + json1.put("leNo",shelf[2]); + json1.put("divNo",shelf[3]); + json1.put("zyNo",shelf[4]); + json.put("positionKey",json1); + json.put("filetype",thisCase.getCaseType()); + String reselt = HttpUtil.wlwHttpURLConnection(url,json,null,null,null); + }else{ + + } + }catch(Exception e){ + e.printStackTrace(); + } + } + } + } + return ApiResponse.success(caseIds.size()); + } + + @ApiOperation("手持机-入库") + @AnonymousPostMapping("/rfidCollect") + public ApiResponse rfidCollect( + @Validated @RequestBody List dtos + ){ + + return ApiResponse.success(dtos.size()); + } + +// 第一版本 出库 防止业务回滚 注释不删 +// @ApiOperation("出库") +// @PostMapping("/grant") +// public ApiResponse grant( +// @Validated @RequestBody List archivesIds +// ){ +// Integer result = 0; +// for(String archivesId:archivesIds){ +// ArchivesSummary archivesSummary = archivesService.findById(archivesId); +// if(null == archivesSummary) +// continue; +// String[] shelfIds = archivesSummary.getShelfId().split(","); +// if(shelfIds.length==0) +// continue; +// String deviceId = deviceArchivesTagService.findDeviceIdByShelfId(shelfIds[0]); +// //判断设备是否有回调 +// OperatingState callback = operatingStateService.findByDeviceIdAndStateType(deviceId,2); +// boolean isCallback = callback == null ? false : callback.getOutBound(); +// caseService.grant(isCallback,archivesSummary.getCaseNo()); +// +// //判断设备是否有联动 +// OperatingState linkage = operatingStateService.findByDeviceIdAndStateType(deviceId,1); +// if(null != linkage && linkage.getOutBound()){ +// DeviceInfo device = new DeviceInfo(); +// String url = "http://"+device.getDeviceIp()+":"+device.getDevicePort()+"IntelligentCabinetAPIServer/Task"; +//// HttpUtil.wlwHttpURLConnection(url,) +// } +// result++; +// } +// return ApiResponse.success(result); +// } + @ApiOperation("预人工确认") @PostMapping("/readyCollectConfirm") public ApiResponse readyCollectConfirm( @@ -155,43 +267,12 @@ public class StorageController { return ApiResponse.success(caseService.collectConfirm(caseIds)); } - @ApiOperation("出库") - @PostMapping("/grant") - public ApiResponse grant( - @Validated @RequestBody List archivesIds - ){ - Integer result = 0; - for(String archivesId:archivesIds){ - ArchivesSummary archivesSummary = archivesService.findById(archivesId); - if(null == archivesSummary) - continue; - String[] shelfIds = archivesSummary.getShelfId().split(","); - if(shelfIds.length==0) - continue; - String deviceId = deviceArchivesTagService.findDeviceIdByShelfId(shelfIds[0]); - //判断设备是否有回调 - OperatingState callback = operatingStateService.findByDeviceIdAndStateType(deviceId,2); - boolean isCallback = callback == null ? false : callback.getOutBound(); - caseService.grant(isCallback,archivesSummary.getCaseNo()); - - //判断设备是否有联动 - OperatingState linkage = operatingStateService.findByDeviceIdAndStateType(deviceId,1); - if(null != linkage && linkage.getOutBound()){ - DeviceInfo device = new DeviceInfo(); - String url = "http://"+device.getDeviceIp()+":"+device.getDevicePort()+"IntelligentCabinetAPIServer/Task"; -// HttpUtil.wlwHttpURLConnection(url,) - } - result++; - } - return ApiResponse.success(result); - } - @ApiOperation("人工确认-出库") @PostMapping("/grantConfirm") public ApiResponse grantConfirm( - @Validated @RequestBody List archivesIds + @Validated @RequestBody List caseIds ){ - return ApiResponse.success(caseService.grantConfirm(archivesIds)); + return ApiResponse.success(caseService.grantConfirm(caseIds)); } @ApiOperation("外部回调-确认出入库") @@ -213,8 +294,17 @@ public class StorageController { return ApiResponse.success(caseService.initStorageLogList(storageType,caseName,tid,barcode,page)); } + @ApiOperation("出入库详情") + @GetMapping("/initStorageLogDetailes") + public ApiResponse initStorageLogDetailes( + Integer logId + ){ + return ApiResponse.success(caseService.initStorageLogDetailes(logId)); + } + @ApiOperation("导出出入库记录") @AnonymousGetMapping("/exportStorageLogList") + @ResponseBody public void exportStorageLogList( HttpServletResponse response, @RequestParam("logIds") List logIds @@ -263,9 +353,4 @@ public class StorageController { } } - - - - - } diff --git a/archives/src/main/java/com/storeroom/modules/archives/domain/StorageDetailsLog.java b/archives/src/main/java/com/storeroom/modules/archives/domain/StorageDetailsLog.java new file mode 100644 index 0000000..9bf926f --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/archives/domain/StorageDetailsLog.java @@ -0,0 +1,69 @@ +package com.storeroom.modules.archives.domain; + +import com.storeroom.base.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.*; +import java.io.Serializable; + +@Entity +@Getter +@Setter +@Table(name = "storage_details_log") +public class StorageDetailsLog extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy= GenerationType.IDENTITY) + private Integer id; + + @Column(name = "log_id") + @ApiModelProperty(value = "日志id") + private Integer logId; + + @Column(name = "child") + @ApiModelProperty(value = "子条目数") + private Integer child; + + @Column(name = "category_type") + @ApiModelProperty(value = "门类级别") + private String categoryType; + + @Column(name = "category_name") + @ApiModelProperty(value = "门类名称") + private String categoryName; + + @Column(name = "fonds_no") + @ApiModelProperty(value = "全宗号") + private String fondsNo; + + @Column(name = "archive_no") + @ApiModelProperty(value = "档号") + private String archiveNo; + + @Column(name = "archive_year") + @ApiModelProperty(value = "归档年度") + private Integer archiveYear; + + @Column(name = "maintitle") + @ApiModelProperty(value = "题名") + private String maintitle; + + @Column(name = "security_class") + @ApiModelProperty(value = "保密程度") + private String securityClass; + + @Column(name = "department") + @ApiModelProperty(value = "部门名称") + private String department; + + @Column(name = "case_name") + @ApiModelProperty(value = "盒名称") + private String caseName; + + @Column(name = "folder_location_details") + @ApiModelProperty(value = "存放位置") + private String folderLocationDetails; + +} 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 e0b523b..0d376ac 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 @@ -1,6 +1,7 @@ package com.storeroom.modules.archives.repository; import com.storeroom.modules.archives.domain.ArchivesCase; +import com.storeroom.modules.device.domain.DeviceInfo; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; @@ -22,6 +23,10 @@ public interface ArchivesCaseRepository extends JpaRepository initCaseList(String caseName, String tid,String barcode, Pageable page); + @Query(nativeQuery = true, + value = "select * from archives_case order by create_time desc ") + Page initCaseAll(Pageable page); + @Query(nativeQuery = true, value = "select * from archives_case where storage_type in ?4 and deposit_num != 0 and if(?1 is null,1=1,case_name like ?1) and " + "if(?2 is null,1=1,tid like ?2) and if(?3 is null,1=1,barcode like ?3) ") @@ -88,6 +93,12 @@ public interface ArchivesCaseRepository extends JpaRepository initCaseAllByCaseId(String caseId); + + @Query(nativeQuery = true, + value = "select ac.id from archives_case ac inner join archives_case_cartoning acc on ac.id=acc.case_id where acc.parent_id IN " + + "(select in1.parent_id from archives_case_cartoning in1 where in1.case_id in ?1) group by ac.id ") + List initCaseIdAllByCaseId(List caseIds); + @Modifying @Transactional(rollbackFor = Exception.class) @Query(nativeQuery = true, @@ -107,6 +118,4 @@ public interface ArchivesCaseRepository extends JpaRepository> readyCollectConfirm(List caseIds); - - } diff --git a/archives/src/main/java/com/storeroom/modules/archives/repository/StorageDetailsLogRepository.java b/archives/src/main/java/com/storeroom/modules/archives/repository/StorageDetailsLogRepository.java new file mode 100644 index 0000000..4a383ee --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/archives/repository/StorageDetailsLogRepository.java @@ -0,0 +1,26 @@ +package com.storeroom.modules.archives.repository; + +import com.storeroom.modules.archives.domain.StorageDetailsLog; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; +import java.util.Map; + +public interface StorageDetailsLogRepository extends JpaRepository{ + + @Query(nativeQuery = true, + value = "select asy.child,asy.category_type as categoryType,asy.category_name as categoryName," + + "asy.fonds_no as fondsNo,asy.archive_no as archiveNo,asy.archive_year as archiveYear," + + "asy.maintitle,asy.security_class as securityClass,asy.department,ace.case_name as caseName," + + "ace.folder_location_details as folderLocationDetails from archives_case ace " + + "inner join archives_case_cartoning acc on ace.id = acc.case_id " + + "inner join archives_summary asy on acc.archives_id = asy.archives_id " + + "where ace.id = ?1") + List> inCaseArchives(String caseIds); + + List findAllByLogId(Integer logId); + +} 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 008a970..a158205 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 @@ -7,14 +7,18 @@ import com.storeroom.modules.archives.domain.StorageLog; import com.storeroom.modules.archives.service.dto.ArchivesCaseCartoningDTO; import com.storeroom.modules.archives.service.dto.CaseDTO; import com.storeroom.modules.archives.service.dto.CollectDTO; +import com.storeroom.modules.device.service.dto.DeviceInfoDto; import org.springframework.data.domain.Pageable; import java.util.List; import java.util.Map; public interface ArchivesCaseService { + //根据id获取档案盒信息 + ArchivesCase findById(String caseId); //初始化档案盒列表 Object initCaseList(String tid, String caseName,String barcode, Pageable page); + Object initCaseAll(Pageable page); //判断档案盒名称是否重复 Object caseNameIsRepeat(String caseId,String caseName); //判断档案盒条形码是否重复 @@ -55,12 +59,18 @@ public interface ArchivesCaseService { List> readyCollectConfirm(List caseIds); //手动入库确认 Object collectConfirm(List caseIds); + //根据盒id获取相关案卷的所有盒id + List findCaseIdAllByCaseIds(List caseIds); + //根据盒Id获取设备 + Map findDevicesByCaseIds(List caseIds); //出库 - Object grant(boolean isCallback,String caseIds); + Integer grant(boolean isCallback,String caseIds); //手动出库确认 - Object grantConfirm(List archivesIds); + Object grantConfirm(List caseIds); //出入库记录 Object initStorageLogList(Integer storageType, String caseName,String tid,String barcode, Pageable page); + //出入库详情 + Object initStorageLogDetailes(Integer logId); //根据id集合获取出入库列表 List initStorageLogList(List logs); //第三方回调 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 8414bc9..4efb875 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 @@ -1,20 +1,20 @@ package com.storeroom.modules.archives.service.impl; -import com.storeroom.modules.archives.domain.ArchivesCase; -import com.storeroom.modules.archives.domain.ArchivesCaseCartoning; -import com.storeroom.modules.archives.domain.ArchivesSummary; -import com.storeroom.modules.archives.domain.StorageLog; -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.repository.StorageLogRepository; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; +import com.storeroom.modules.archives.domain.*; +import com.storeroom.modules.archives.repository.*; 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.archives.service.dto.CollectDTO; import com.storeroom.modules.common.ArchivesTypeEnum; +import com.storeroom.modules.device.domain.DeviceInfo; import com.storeroom.modules.device.repository.DeviceArchivesTagRepository; +import com.storeroom.modules.device.repository.DeviceInfoRepository; +import com.storeroom.modules.device.service.dto.DeviceInfoDto; +import com.storeroom.modules.device.service.mapstruct.DeviceInfoMapper; import com.storeroom.modules.dictionary.domain.ArchivesType; import com.storeroom.modules.dictionary.repository.ArchivesTypeRepository; import com.storeroom.utils.NanoIdUtils; @@ -38,16 +38,24 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class ArchivesCaseServiceImpl implements ArchivesCaseService { + private final DeviceInfoMapper deviceInfoMapper; + private final DeviceInfoRepository deviceInfoRepository; private final ArchivesCaseRepository caseRepository; private final ArchivesSummaryRepository archivesSummaryRepository; private final ArchivesTypeRepository archivesTypeRepository; private final ArchivesCaseCartoningRepository archivesCaseCartoningRepository; private final StorageLogRepository storageLogRepository; + private final StorageDetailsLogRepository storageDetailsLogRepository; private final DeviceArchivesTagRepository deviceArchivesTagRepository; @PersistenceContext EntityManager entityManager; + @Override + public ArchivesCase findById(String caseId) { + return caseRepository.findCaseById(caseId); + } + @Override public Object initCaseList(String tid, String caseName,String barcode, Pageable page) { tid = StringUtils.isEmpty(tid) ? null : "%"+ tid +"%"; @@ -57,6 +65,11 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService { return PageUtil.toPage(pageCase); } + @Override + public Object initCaseAll(Pageable page) { + return PageUtil.toPage(caseRepository.initCaseAll(page)); + } + @Override public Object caseNameIsRepeat(String caseId, String caseName) { List caseList = caseRepository.findAllByCaseName(caseName); @@ -486,15 +499,7 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService { archivesSummaryRepository.saveAllAndFlush(archices); List storageLogs = new ArrayList<>(); for (ArchivesCase archivesCase:cases){ - StorageLog log = new StorageLog(); - log.setCaseId(archivesCase.getId()); - log.setCaseName(archivesCase.getCaseName()); - log.setDepositNum(archivesCase.getDepositNum()); - log.setTid(archivesCase.getTid()); - log.setBarcode(archivesCase.getBarcode()); - log.setStorageType(isCallback ? 1:2); - log.setFolderLocationDetails(deviceArchivesTagRepository.findPositionDetailsByShelfId(archivesCase.getShelfId())); - storageLogs.add(log); + this.recordStorage(archivesCase,isCallback ? 1:2); } storageLogRepository.saveAll(storageLogs); return cases; @@ -507,63 +512,113 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService { @Override public Object collectConfirm(List caseIds) { + List cases = caseRepository.findAllById(caseIds); caseRepository.manualConfirm(caseIds,2); + for(ArchivesCase thisCase:cases){ + this.recordStorage(thisCase,2); + } return caseIds.size(); } @Override - public Object grant(boolean isCallback, String caseNo) { - String[] caseIds = caseNo.split(","); - List cases = new ArrayList<>(); + public List findCaseIdAllByCaseIds(List caseIds) { + return caseRepository.initCaseIdAllByCaseId(caseIds); + } + + @Override + public Map findDevicesByCaseIds(List caseIds) { + Map map = new HashMap<>(); + for(String caseId:caseIds){ + DeviceInfo deviceInfo = deviceInfoRepository.findDeviceByCaseId(caseId); + if(null != deviceInfo) + map.put(caseId,deviceInfoMapper.toDto(deviceInfo)); + } + return map; + } + + @Override + public Integer grant(boolean isCallback, String caseId) { + ArchivesCase archivesCase = caseRepository.findById(caseId).get(); + Integer deviceType = archivesCase.getFolderLocation().split("-").length == 5?1:2; if(isCallback){ - for(String caseId:caseIds){ - ArchivesCase thisCase = caseRepository.findById(caseId).get(); - thisCase.setStorageType(3); - cases.add(thisCase); - } - cases = caseRepository.saveAllAndFlush(cases); + archivesCase.setStorageType(3); }else{ - Set summarySet = new HashSet<>(); - for(String caseId:caseIds){ - ArchivesCase thisCase = caseRepository.findById(caseId).get(); - thisCase.setStorageType(0); - thisCase.setShelfId(null); - thisCase.setFolderLocation(null); - thisCase.setFolderLocationDetails(null); - cases.add(thisCase); - List thisSummarys = archivesSummaryRepository.findAllByCaseNoLike(caseId); - summarySet.addAll(thisSummarys); - } + archivesCase.setStorageType(0); + archivesCase.setShelfId(null); + archivesCase.setFolderLocation(null); + archivesCase.setFolderLocationDetails(null); + + List thisSummarys = archivesSummaryRepository.findAllByCaseNoLike(caseId); List grantSummary = new ArrayList<>(); - for(ArchivesSummary thisSummary:summarySet){ + for(ArchivesSummary thisSummary:thisSummarys){ thisSummary.setShelfId(null); thisSummary.setFolderLocation(null); thisSummary.setFolderLocationDetails(null); grantSummary.add(thisSummary); } - cases = caseRepository.saveAllAndFlush(cases); archivesSummaryRepository.saveAllAndFlush(grantSummary); } - List storageLogs = new ArrayList<>(); - for (ArchivesCase archivesCase:cases){ - StorageLog log = new StorageLog(); - log.setCaseId(archivesCase.getId()); - log.setCaseName(archivesCase.getCaseName()); - log.setDepositNum(archivesCase.getDepositNum()); - log.setTid(archivesCase.getTid()); - log.setBarcode(archivesCase.getBarcode()); - log.setStorageType(isCallback ? 3:4); - log.setFolderLocationDetails(isCallback ? deviceArchivesTagRepository.findPositionDetailsByShelfId(archivesCase.getShelfId()) : null); - storageLogs.add(log); - } - storageLogRepository.saveAll(storageLogs); - return caseIds.length; + archivesCase = caseRepository.saveAndFlush(archivesCase); + this.recordStorage(archivesCase,isCallback ? 3:4); + return deviceType; } +// @Override +// public Object grant(boolean isCallback, String caseNo) { +// String[] caseIds = caseNo.split(","); +// List cases = new ArrayList<>(); +// if(isCallback){ +// for(String caseId:caseIds){ +// ArchivesCase thisCase = caseRepository.findById(caseId).get(); +// thisCase.setStorageType(3); +// cases.add(thisCase); +// } +// cases = caseRepository.saveAllAndFlush(cases); +// }else{ +// Set summarySet = new HashSet<>(); +// for(String caseId:caseIds){ +// ArchivesCase thisCase = caseRepository.findById(caseId).get(); +// thisCase.setStorageType(0); +// thisCase.setShelfId(null); +// thisCase.setFolderLocation(null); +// thisCase.setFolderLocationDetails(null); +// cases.add(thisCase); +// List thisSummarys = archivesSummaryRepository.findAllByCaseNoLike(caseId); +// summarySet.addAll(thisSummarys); +// } +// List grantSummary = new ArrayList<>(); +// for(ArchivesSummary thisSummary:summarySet){ +// thisSummary.setShelfId(null); +// thisSummary.setFolderLocation(null); +// thisSummary.setFolderLocationDetails(null); +// grantSummary.add(thisSummary); +// } +// cases = caseRepository.saveAllAndFlush(cases); +// archivesSummaryRepository.saveAllAndFlush(grantSummary); +// } +// List storageLogs = new ArrayList<>(); +// for (ArchivesCase archivesCase:cases){ +// StorageLog log = new StorageLog(); +// log.setCaseId(archivesCase.getId()); +// log.setCaseName(archivesCase.getCaseName()); +// log.setDepositNum(archivesCase.getDepositNum()); +// log.setTid(archivesCase.getTid()); +// log.setBarcode(archivesCase.getBarcode()); +// log.setStorageType(isCallback ? 3:4); +// log.setFolderLocationDetails(isCallback ? deviceArchivesTagRepository.findPositionDetailsByShelfId(archivesCase.getShelfId()) : null); +// storageLogs.add(log); +// } +// storageLogRepository.saveAll(storageLogs); +// return caseIds.length; +// } + @Override - public Object grantConfirm(List archivesIds) { - Set caseIds = caseRepository.findCaseIdsByarchivesIds(archivesIds); - caseRepository.manualConfirm(caseIds.stream().toList(),0); + public Object grantConfirm(List caseIds) { + List cases = caseRepository.findAllById(caseIds); + caseRepository.manualConfirm(caseIds,0); + for(ArchivesCase thisCase:cases){ + this.recordStorage(thisCase,4); + } return caseIds.size(); } @@ -575,6 +630,11 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService { return PageUtil.toPage(storageLogRepository.initStorageLogList(storageType,caseName,tid,barcode,page)); } + @Override + public Object initStorageLogDetailes(Integer logId) { + return storageDetailsLogRepository.findAllByLogId(logId); + } + @Override public List initStorageLogList(List logs) { return storageLogRepository.findAllById(logs); @@ -596,4 +656,26 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService { caseRepository.saveAndFlush(archivesCase); return null; } + + + + //添加出入库日志 + public StorageLog recordStorage(ArchivesCase thisCase,Integer StorageType){ + StorageLog log = new StorageLog(); + log.setCaseId(thisCase.getId()); + log.setCaseName(thisCase.getCaseName()); + log.setDepositNum(thisCase.getDepositNum()); + log.setTid(thisCase.getTid()); + log.setBarcode(thisCase.getBarcode()); + log.setStorageType(StorageType); + log.setFolderLocationDetails(thisCase.getFolderLocationDetails()); + log = storageLogRepository.save(log); + List> lists = storageDetailsLogRepository.inCaseArchives(thisCase.getId()); + List sdLog = JSON.parseObject(JSON.toJSONString(lists), new TypeReference>() {}); + for(StorageDetailsLog logDetails:sdLog){ + logDetails.setLogId(log.getId()); + } + storageDetailsLogRepository.saveAllAndFlush(sdLog); + return log; + } } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceArchivesTagRepository.java b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceArchivesTagRepository.java index 747465d..71603e7 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceArchivesTagRepository.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceArchivesTagRepository.java @@ -1,6 +1,8 @@ package com.storeroom.modules.device.repository; import com.storeroom.modules.device.domain.DeviceArchivesTag; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Modifying; @@ -29,4 +31,9 @@ public interface DeviceArchivesTagRepository extends JpaRepository findByDeviceInfoIdAndAndPosition(String deviceInfoId,String position); + @Query(nativeQuery = true, + countQuery = "select * from device_archives_tag", + value = "select * from device_archives_tag order by device_info_id asc,position asc") + Page findAllByPage(Pageable page); + } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java index 0e1b76b..f141f7c 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java @@ -114,4 +114,13 @@ public interface DeviceInfoRepository extends JpaRepository, @Query(value = "select * from device_info where device_type_id=?1", nativeQuery = true) Page findDeviceTypeList(String deviceTypeId, Pageable pageable); + @Query(nativeQuery = true + ,value = "select * from device_info where id = (select device_info_id from device_archives_tag where id = (select shelf_id from archives_case where id = ?1))") + DeviceInfo findDeviceByCaseId(String caseId); + + @Query(nativeQuery = true, + countQuery = "select * from device_info where device_type_id in (select id from device_type where name in ('密集架','回转柜'))", + value = "select * from device_info where device_type_id in (select id from device_type where name in ('密集架','回转柜')) order by create_time asc") + Page queryStorageDeviceAll(Pageable pageable); + } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceArchivesTagService.java b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceArchivesTagService.java index 8560d12..8a5d681 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceArchivesTagService.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceArchivesTagService.java @@ -1,9 +1,12 @@ package com.storeroom.modules.device.service; import com.storeroom.modules.device.domain.DeviceArchivesTag; +import org.springframework.data.domain.Pageable; public interface DeviceArchivesTagService { //根据层架位id获取设备id String findDeviceIdByShelfId(String shelfId); DeviceArchivesTag findByDeviceInfoIdAndPosition(String deviceInfoId, String position); + //根据分页获取全部层架位信息 + Object findAll(Pageable page); } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceArchivesTagImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceArchivesTagImpl.java index 92da52e..1d688a7 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceArchivesTagImpl.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceArchivesTagImpl.java @@ -4,8 +4,10 @@ import com.storeroom.exception.BaseException; import com.storeroom.modules.device.domain.DeviceArchivesTag; import com.storeroom.modules.device.repository.DeviceArchivesTagRepository; import com.storeroom.modules.device.service.DeviceArchivesTagService; +import com.storeroom.utils.PageUtil; import com.storeroom.utils.StringUtils; import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.util.List; @@ -32,4 +34,9 @@ public class DeviceArchivesTagImpl implements DeviceArchivesTagService { List deviceArchivesTags = deviceArchivesTagRepository.findByDeviceInfoIdAndAndPosition(deviceInfoId, position); return deviceArchivesTags.size() == 0 ? null:deviceArchivesTags.get(0); } + + @Override + public Object findAll(Pageable page) { + return PageUtil.toPage(deviceArchivesTagRepository.findAllByPage(page)); + } }