From 7df0612603fdcb596ad8d0381274e280389fe2d4 Mon Sep 17 00:00:00 2001 From: xia Date: Fri, 15 Jul 2022 11:08:45 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=87=BA=E5=85=A5=E5=BA=93=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=B0=83=E6=95=B4=20=E8=B0=83=E5=8F=96=E7=AC=AC=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E8=AE=BE=E5=A4=87=E6=8E=A5=E5=8F=A3=202.=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=87=BA=E5=85=A5=E5=BA=93=E6=97=A5=E5=BF=97=E3=80=81?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/StorageController.java | 186 ++++++++++++++++-- .../archives/controller/TagController.java | 2 +- .../modules/archives/domain/StorageLog.java | 49 +++++ .../repository/ArchivesCaseRepository.java | 31 ++- .../repository/StorageLogRepository.java | 20 ++ .../archives/service/ArchivesCaseService.java | 15 ++ .../archives/service/ArchivesService.java | 3 + .../service/impl/ArchivesCaseServiceImpl.java | 104 +++++++++- .../service/impl/ArchivesServiceImpl.java | 7 +- .../modules/archives/util/HttpUtil.java | 79 ++++++++ .../storeroom/utils/enums/ResponseStatus.java | 8 +- .../DeviceArchivesTagRepository.java | 9 +- .../service/DeviceArchivesTagService.java | 8 +- .../service/impl/DeviceArchivesTagImpl.java | 9 +- 14 files changed, 498 insertions(+), 32 deletions(-) create mode 100644 archives/src/main/java/com/storeroom/modules/archives/domain/StorageLog.java create mode 100644 archives/src/main/java/com/storeroom/modules/archives/repository/StorageLogRepository.java create mode 100644 archives/src/main/java/com/storeroom/modules/archives/util/HttpUtil.java 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 89f2caf..617a956 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 @@ -1,21 +1,39 @@ package com.storeroom.modules.archives.controller; +import com.alibaba.fastjson.JSONObject; +import com.storeroom.annotaion.rest.AnonymousGetMapping; +import com.storeroom.annotaion.rest.AnonymousPostMapping; import com.storeroom.modules.archives.domain.ArchivesCase; +import com.storeroom.modules.archives.domain.ArchivesSummary; +import com.storeroom.modules.archives.domain.ArchivesTagLog; +import com.storeroom.modules.archives.domain.StorageLog; import com.storeroom.modules.archives.service.ArchivesCaseService; import com.storeroom.modules.archives.service.ArchivesService; import com.storeroom.modules.archives.service.dto.CaseDTO; import com.storeroom.modules.archives.service.dto.CollectDTO; +import com.storeroom.modules.archives.util.HttpUtil; +import com.storeroom.modules.common.ExcelUtil; +import com.storeroom.modules.device.domain.DeviceArchivesTag; +import com.storeroom.modules.device.domain.DeviceInfo; import com.storeroom.modules.device.domain.OperatingState; +import com.storeroom.modules.device.service.DeviceArchivesTagService; +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.enums.ResponseStatus; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.data.domain.Pageable; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; @RestController @@ -27,6 +45,10 @@ public class StorageController { private final ArchivesCaseService caseService; private final ArchivesService archivesService; private final OperatingStateService operatingStateService; + private final DeviceArchivesTagService deviceArchivesTagService; + private final DeviceService deviceService; + + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); @ApiOperation("可入库盒列表") @GetMapping("/readyInto") @@ -47,17 +69,22 @@ public class StorageController { @ApiOperation("初始化档案装盒信息") @GetMapping("/initCaseByArchives") public ApiResponse initCaseByArchives( - String archivesId + String caseId ){ - return ApiResponse.success(caseService.initCaseByArchives(archivesId)); + return ApiResponse.success(caseService.initCaseByArchives(caseId)); } @ApiOperation("根据层架位id判断是否被占用") @GetMapping("/isOccupy") public ApiResponse isOccupy( - String shelfId + String deviceId,String position,Integer deviceType ){ - return ApiResponse.success(archivesService.isShelfOccupy(shelfId)); + DeviceArchivesTag deviceArchivesTag = deviceArchivesTagService.findByDeviceInfoIdAndPosition(deviceId,position); + if(null == deviceArchivesTag) + return ApiResponse.error(ResponseStatus.Shelf_IS_NULL); + if(1==deviceType) + ApiResponse.success(true); + return ApiResponse.success(archivesService.isShelfOccupy(deviceArchivesTag.getId())); } @ApiOperation("入库") @@ -75,29 +102,154 @@ 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); } return ApiResponse.success(cases.size()); } + @ApiOperation("预人工确认") + @PostMapping("/readyCollectConfirm") + public ApiResponse readyCollectConfirm( + @Validated @RequestBody List caseIds + ){ + return ApiResponse.success(caseService.readyCollectConfirm(caseIds)); + } + + @ApiOperation("人工确认-入库") + @PostMapping("/collectConfirm") + public ApiResponse collectConfirm( + @Validated @RequestBody List caseIds + ){ + return ApiResponse.success(caseService.collectConfirm(caseIds)); + } + @ApiOperation("出库") @PostMapping("/grant") public ApiResponse grant( - @Validated @RequestBody List dtos + @Validated @RequestBody List archivesIds ){ - if(null == dtos || dtos.size()==0) - return ApiResponse.error(ResponseStatus.DEVICE_IS_NULL); - String deviceId = dtos.get(0).getDeviceId(); - //判断设备是否有回调 - OperatingState callback = operatingStateService.findByDeviceIdAndStateType(deviceId,2); - boolean isCallback = callback == null ? false : callback.getInBound(); - List cases = caseService.collect(isCallback,dtos); - //判断设备是否有联动 - OperatingState linkage = operatingStateService.findByDeviceIdAndStateType(deviceId,1); - if(null != linkage && linkage.getInBound()){ + 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(cases.size()); + return ApiResponse.success(result); } + @ApiOperation("人工确认-出库") + @PostMapping("/grantConfirm") + public ApiResponse grantConfirm( + @Validated @RequestBody List archivesIds + ){ + return ApiResponse.success(caseService.grantConfirm(archivesIds)); + } + + @ApiOperation("外部回调-确认出入库") + @AnonymousPostMapping("/externalCallback") + public ApiResponse externalCallback( + @Validated @RequestBody List archivesIds + ){ + return ApiResponse.success(caseService.grantConfirm(archivesIds)); + } + + @ApiOperation("出入库记录") + @GetMapping("/initStorageLogList") + public ApiResponse initStorageLogList( + Integer storageType, String caseName,String tid,String barcode, Pageable page + ){ + return ApiResponse.success(caseService.initStorageLogList(storageType,caseName,tid,barcode,page)); + } + + @ApiOperation("导出出入库记录") + @AnonymousGetMapping("/exportStorageLogList") + public void exportStorageLogList( + HttpServletResponse response, + @RequestParam("logIds") List logIds + ){ + List logs = caseService.initStorageLogList(logIds); + String[] Etitle = {"序号","状态","已装","盒名称","TID","条形码","存放位置","操作时间"}; + String [][] content = new String[logs.size()][]; + for(int i = 0;i< logs.size();i++){ + content[i] = new String[Etitle.length]; + StorageLog log = logs.get(i); + content[i][0] = i+1+""; + String storageType = ""; + switch (log.getStorageType()){ + case 1: + storageType = "待入"; + break; + case 2: + storageType = "已入"; + break; + case 3: + storageType = "待出"; + break; + case 4: + storageType = "已出"; + break; + default: + break; + } + content[i][1] = storageType; + content[i][2] = log.getDepositNum()+""; + content[i][3] = log.getCaseName(); + content[i][4] = log.getTid(); + content[i][5] = log.getBarcode(); + content[i][6] = log.getFolderLocationDetails(); + content[i][7] = format.format(new Date(log.getCreateTime().getTime())); + } + HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("sheet",Etitle,content,null); + try { + ExcelUtil.setResponseHeader(response, "出入库记录"+format.format(new Date())+".xls"); + OutputStream os = response.getOutputStream(); + wb.write(os); + os.flush(); + os.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + + + + } diff --git a/archives/src/main/java/com/storeroom/modules/archives/controller/TagController.java b/archives/src/main/java/com/storeroom/modules/archives/controller/TagController.java index 7a6e6b5..4771da6 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/controller/TagController.java +++ b/archives/src/main/java/com/storeroom/modules/archives/controller/TagController.java @@ -82,7 +82,7 @@ public class TagController { for(int i = 0;i{ @@ -19,18 +20,18 @@ public interface ArchivesCaseRepository extends JpaRepository initCaseList(String caseName, String tid,String barcode, Pageable page); @Query(nativeQuery = true, - value = "select * from archives_case where storage_type != 2 and if(?1 is null,1=1,case_name like ?1) and " + + value = "select * from archives_case where storage_type != 2 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) ") Page readyIntoCase(String caseName, String tid,String barcode, Pageable page); @Query(nativeQuery = true, - value = "SELECT asum.archives_id as archivesId,ace.storage_type as storageType,asum.child as child,asum.category_type as categoryType," + + value = "SELECT distinct asum.archives_id as archivesId,ace.storage_type as storageType,asum.child as child,asum.category_type as categoryType," + "asum.category_name as categoryName,asum.fonds_no as fondsNo,asum.archive_no as archiveNo,asum.archive_year as archiveYear," + "asum.maintitle as maintitle,asum.security_class as securityClass,asum.department as department,ace.case_name as caseName," + "CONCAT(room.name ,'-' , di.device_name , '-' , dat.position_name) as seat,ace.storage_time as storageTime " + "FROM archives_case ace " + "INNER JOIN archives_case_cartoning acc ON ace.id = acc.case_id " + - "INNER JOIN archives_summary asum ON acc.archives_id = asum.archives_id " + + "INNER JOIN archives_summary asum ON acc.parent_id = asum.archives_id " + "INNER JOIN device_archives_tag dat on asum.shelf_id = dat.id " + "INNER JOIN device_info di ON dat.device_info_id = di.id " + "INNER JOIN storeroom room ON di.storeroom_id = room.id " + @@ -75,5 +76,29 @@ public interface ArchivesCaseRepository extends JpaRepository initCaseByArchives(String archivesId); + @Query(nativeQuery = true, + value = "select ac.* 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 = ?1) group by ac.id ") + List initCaseAllByCaseId(String caseId); + @Modifying + @Transactional(rollbackFor = Exception.class) + @Query(nativeQuery = true, + value = "update archives_case set storage_type = ?2,deposit_num = ?3 where id in ?1") + void manualConfirm(List caseIds,Integer storageType); + + @Query(nativeQuery = true, + value = "select case_id from archives_case_cartoning acc where parent_id in ?1 group by case_id") + Set findCaseIdsByarchivesIds(List archivesIds); + + @Query(nativeQuery = true, + value = "select ac.id as caseId,ac.case_name as caseName,ac.case_type as caseType,ac.tid as tid,ac.barcode," + + "ac.shelf_id as shelfId,ac.folder_location as folderLocation,ac.folder_location_details as folderLocationDetails," + + "ac.deposit_num as depositNum,ac.storage_type as storageType,(select group_concat(asy.maintitle) " + + "from archives_summary asy inner join archives_case_cartoning inacc on asy.archives_id = inacc.archives_id " + + "where inacc.case_id = ac.id) as maintitles from archives_case ac where ac.id in " + + "(select case_id from archives_case_cartoning where parent_id in " + + "(select parent_id from archives_case_cartoning acc where case_id in ?1 group by parent_id) group by case_id);") + List> readyCollectConfirm(List caseIds); + } diff --git a/archives/src/main/java/com/storeroom/modules/archives/repository/StorageLogRepository.java b/archives/src/main/java/com/storeroom/modules/archives/repository/StorageLogRepository.java new file mode 100644 index 0000000..061e0bf --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/archives/repository/StorageLogRepository.java @@ -0,0 +1,20 @@ +package com.storeroom.modules.archives.repository; + +import com.storeroom.modules.archives.domain.StorageLog; +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; + +public interface StorageLogRepository extends JpaRepository{ + + @Query(nativeQuery = true, + value = "select * from storage_log where if(?1 is null,1=1,storage_type = ?1) " + + "and if(?2 is null,1=1,case_name like ?2) " + + "and if(?3 is null,1=1,tid like ?3) " + + "and if(?4 is null,1=1,barcode like ?4) ") + Page initStorageLogList(Integer storageType, String caseName, String tid, String barcode, Pageable page); + +} 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 745c254..77fe5c9 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 @@ -2,12 +2,15 @@ package com.storeroom.modules.archives.service; 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.service.dto.ArchivesCaseCartoningDTO; import com.storeroom.modules.archives.service.dto.CaseDTO; import com.storeroom.modules.archives.service.dto.CollectDTO; import org.springframework.data.domain.Pageable; import java.util.List; +import java.util.Map; public interface ArchivesCaseService { //初始化档案盒列表 @@ -43,4 +46,16 @@ public interface ArchivesCaseService { Object initCaseByArchives(String archivesId); //入库 List collect(boolean isCallback, List dtos); + //预手动恰如苦 + List> readyCollectConfirm(List caseIds); + //手动入库确认 + Object collectConfirm(List caseIds); + //出库 + Object grant(boolean isCallback,String caseIds); + //手动出库确认 + Object grantConfirm(List archivesIds); + //出入库记录 + Object initStorageLogList(Integer storageType, String caseName,String tid,String barcode, Pageable page); + //根据id集合获取出入库列表 + List initStorageLogList(List logs); } diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java index b854a36..1f33c49 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java +++ b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java @@ -1,5 +1,6 @@ package com.storeroom.modules.archives.service; +import com.storeroom.modules.archives.domain.ArchivesSummary; import com.storeroom.modules.archives.domain.vo.ArchivesDetailsVO; import com.storeroom.modules.archives.service.dto.ArchivesDTO; import com.storeroom.modules.archives.service.dto.ArchivesFileDTO; @@ -9,6 +10,8 @@ import org.springframework.data.domain.Pageable; import java.util.List; public interface ArchivesService { + //根据档案id获取档案详细数据 + ArchivesSummary findById(String archivesId); //初始化档案列表标题 Object initArchivesViewTable(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 4252a90..a2b23d8 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 @@ -3,15 +3,18 @@ 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.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.repository.DeviceArchivesTagRepository; import com.storeroom.modules.dictionary.domain.ArchivesType; import com.storeroom.modules.dictionary.repository.ArchivesTypeRepository; import com.storeroom.utils.NanoIdUtils; @@ -39,6 +42,8 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService { private final ArchivesSummaryRepository archivesSummaryRepository; private final ArchivesTypeRepository archivesTypeRepository; private final ArchivesCaseCartoningRepository archivesCaseCartoningRepository; + private final StorageLogRepository storageLogRepository; + private final DeviceArchivesTagRepository deviceArchivesTagRepository; @PersistenceContext EntityManager entityManager; @@ -415,8 +420,8 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService { } @Override - public Object initCaseByArchives(String archivesId) { - return caseRepository.initCaseByArchives(archivesId); + public Object initCaseByArchives(String caseId) { + return caseRepository.initCaseAllByCaseId(caseId); } @Override @@ -458,8 +463,101 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService { archices.add(summary); } } - caseRepository.saveAllAndFlush(cases); + cases = caseRepository.saveAllAndFlush(cases); 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); + } + storageLogRepository.saveAll(storageLogs); return cases; } + + @Override + public List> readyCollectConfirm(List caseIds) { + return caseRepository.readyCollectConfirm(caseIds); + } + + @Override + public Object collectConfirm(List caseIds) { + caseRepository.manualConfirm(caseIds,2); + return caseIds.size(); + } + + @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); + return caseIds.size(); + } + + @Override + public Object initStorageLogList(Integer storageType, String caseName, String tid, String barcode, Pageable page) { + caseName = StringUtils.isEmpty(caseName) ? null : "%"+ caseName +"%"; + tid = StringUtils.isEmpty(tid) ? null : "%"+ tid +"%"; + barcode = StringUtils.isEmpty(barcode) ? null : "%"+ barcode +"%"; + return PageUtil.toPage(storageLogRepository.initStorageLogList(storageType,caseName,tid,barcode,page)); + } + + @Override + public List initStorageLogList(List logs) { + return storageLogRepository.findAllById(logs); + } } diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java index e16c738..7afa057 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java +++ b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java @@ -48,6 +48,11 @@ public class ArchivesServiceImpl implements ArchivesService { @PersistenceContext EntityManager entityManager; + @Override + public ArchivesSummary findById(String archivesId) { + return archivesSummaryRepository.findByArchivesId(archivesId); + } + @Override public Object initArchivesViewTable(String categoryId) { List queryShow = archivesDictionaryRepository.findDisPlay(categoryId); @@ -923,6 +928,6 @@ public class ArchivesServiceImpl implements ArchivesService { @Override public boolean isShelfOccupy(String shelfId) { Integer count = archivesSummaryRepository.countAllByShelfId(shelfId); - return count==0 ? false:true; + return count==0 ? true:false; } } diff --git a/archives/src/main/java/com/storeroom/modules/archives/util/HttpUtil.java b/archives/src/main/java/com/storeroom/modules/archives/util/HttpUtil.java new file mode 100644 index 0000000..e03bf9a --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/archives/util/HttpUtil.java @@ -0,0 +1,79 @@ +package com.storeroom.modules.archives.util; + + +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONObject; +import org.apache.http.HttpEntity; +import org.apache.http.client.ResponseHandler; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.BasicResponseHandler; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; +//import cn.hutool.json.JSONObject; + +import java.io.IOException; +import java.sql.Timestamp; +import java.util.HashMap; + +public class HttpUtil { + + public static String wlwHttpURLConnection(String url, JSONObject reqBody, String appid, String appSecret, String sign){ + // 获得http请求 + String httpRes= HttpRequest.post(url) + .body(reqBody.toString()) + .header("Content-Type", "application/json;charset=utf-8") +// .header("appid",appid) + .header("timestamp",new Timestamp(System.currentTimeMillis()).toString()) +// .header("sign",sign) + .execute().body(); + return httpRes; + } + + + public static String request(String url,HashMap paramMap){ + //map转json + String json = JSONObject.toJSONString(paramMap); + String returnValue = "这是默认返回值,接口调用失败"; + CloseableHttpClient httpClient = HttpClients.createDefault(); + CloseableHttpResponse response = null; + HttpEntity entity = null; + ResponseHandler responseHandler = new BasicResponseHandler(); + try{ + //第一步:创建HttpClient对象 + httpClient = HttpClients.createDefault(); + //第二步:创建httpPost对象 + HttpPost httpPost = new HttpPost(url); + //第三步:设置请求头 + httpPost.addHeader("Content-Type","application/json;charset=utf-8"); + //第四步:给httpPost设置JSON格式的参数 + StringEntity requestEntity = new StringEntity(json,"UTF-8"); + requestEntity.setContentEncoding("UTF-8"); + httpPost.setHeader("Content-type", "application/json"); + httpPost.setEntity(requestEntity); + //第五步:发送HttpPost请求,获取返回值 + response = httpClient.execute(httpPost); //调接口获取返回值时,必须用此方法 + returnValue = httpClient.execute(httpPost,responseHandler); //调接口获取返回值时,必须用此方法 + + entity = response.getEntity(); + returnValue = EntityUtils.toString(entity, "UTF-8"); + } + catch(Exception e) + { + e.printStackTrace(); + } + finally { + try { + httpClient.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + //第六步:处理返回值 + System.out.println(returnValue); + return returnValue; + } + +} diff --git a/common/src/main/java/com/storeroom/utils/enums/ResponseStatus.java b/common/src/main/java/com/storeroom/utils/enums/ResponseStatus.java index b888396..e4c9ef3 100644 --- a/common/src/main/java/com/storeroom/utils/enums/ResponseStatus.java +++ b/common/src/main/java/com/storeroom/utils/enums/ResponseStatus.java @@ -23,8 +23,14 @@ public enum ResponseStatus { FIELD_REPEAT(5001,"当前字段重复"), //当前标签已被绑定 LABEL_BOUND(6201,"当前标签已被绑定"), + //档案为空 + ARCHIVES_IS_NULL(6301,"找不到当前档案"), //设备 为空 - DEVICE_IS_NULL(7001,"找不到当前设备"); + DEVICE_IS_NULL(7001,"找不到当前设备"), + //层架位不存在 + Shelf_IS_NULL(7010,"层架位不存在"), + //档案未入库 + ARCHIVES_NOT_COLLECT(8001,"该档案未入库"); 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 fc22dc5..747465d 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 @@ -18,7 +18,14 @@ public interface DeviceArchivesTagRepository extends JpaRepository findByDeviceInfoIdAndAndPosition(String deviceInfoId,String position); 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 386dc1f..8560d12 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,7 +1,9 @@ package com.storeroom.modules.device.service; -public interface DeviceArchivesTagService { - +import com.storeroom.modules.device.domain.DeviceArchivesTag; - Boolean findByDeviceInfoIdAndPosition(String deviceInfoId,String position); +public interface DeviceArchivesTagService { + //根据层架位id获取设备id + String findDeviceIdByShelfId(String shelfId); + DeviceArchivesTag findByDeviceInfoIdAndPosition(String deviceInfoId, String position); } 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 ace2308..92da52e 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 @@ -19,12 +19,17 @@ public class DeviceArchivesTagImpl implements DeviceArchivesTagService { private final DeviceArchivesTagRepository deviceArchivesTagRepository; @Override - public Boolean findByDeviceInfoIdAndPosition(String deviceInfoId, String position) { + public String findDeviceIdByShelfId(String shelfId) { + return deviceArchivesTagRepository.findDeviceIdByShelfId(shelfId); + } + + @Override + public DeviceArchivesTag findByDeviceInfoIdAndPosition(String deviceInfoId, String position) { if (StringUtils.isEmpty(deviceInfoId) && StringUtils.isEmpty(position)) { throw new BaseException("查询数据异常"); } List deviceArchivesTags = deviceArchivesTagRepository.findByDeviceInfoIdAndAndPosition(deviceInfoId, position); - return deviceArchivesTags.size() != 0; + return deviceArchivesTags.size() == 0 ? null:deviceArchivesTags.get(0); } }