Browse Source

1.新增出入库日志详情

2.修改出库逻辑
3.新增手持机接口
master
xia 3 years ago
parent
commit
e6673d8707
  1. 201
      archives/src/main/java/com/storeroom/modules/archives/controller/StorageController.java
  2. 69
      archives/src/main/java/com/storeroom/modules/archives/domain/StorageDetailsLog.java
  3. 13
      archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java
  4. 26
      archives/src/main/java/com/storeroom/modules/archives/repository/StorageDetailsLogRepository.java
  5. 14
      archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java
  6. 194
      archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java
  7. 7
      storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceArchivesTagRepository.java
  8. 9
      storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java
  9. 3
      storeroom/src/main/java/com/storeroom/modules/device/service/DeviceArchivesTagService.java
  10. 7
      storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceArchivesTagImpl.java

201
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<Object> findShelfAll(
Pageable page
){
return ApiResponse.success(deviceArchivesTagService.findAll(page));
}
@ApiOperation("入库")
@PostMapping("/collect")
public ApiResponse<Object> 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<Object> grant(
@Validated @RequestBody List<String> caseIds
){
List<String> caseIdAll = caseService.findCaseIdAllByCaseIds(caseIds);
Map<String,DeviceInfoDto> 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<Object> rfidCollect(
@Validated @RequestBody List<CollectDTO> dtos
){
return ApiResponse.success(dtos.size());
}
// 第一版本 出库 防止业务回滚 注释不删
// @ApiOperation("出库")
// @PostMapping("/grant")
// public ApiResponse<Object> grant(
// @Validated @RequestBody List<String> 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<Object> readyCollectConfirm(
@ -155,43 +267,12 @@ public class StorageController {
return ApiResponse.success(caseService.collectConfirm(caseIds));
}
@ApiOperation("出库")
@PostMapping("/grant")
public ApiResponse<Object> grant(
@Validated @RequestBody List<String> 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<Object> grantConfirm(
@Validated @RequestBody List<String> archivesIds
@Validated @RequestBody List<String> 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<Object> initStorageLogDetailes(
Integer logId
){
return ApiResponse.success(caseService.initStorageLogDetailes(logId));
}
@ApiOperation("导出出入库记录")
@AnonymousGetMapping("/exportStorageLogList")
@ResponseBody
public void exportStorageLogList(
HttpServletResponse response,
@RequestParam("logIds") List<Integer> logIds
@ -263,9 +353,4 @@ public class StorageController {
}
}
}

69
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;
}

13
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<ArchivesCase, Stri
"if(?2 is null,1=1,tid like ?2) and if(?3 is null,1=1,barcode like ?3) ")
Page<ArchivesCase> initCaseList(String caseName, String tid,String barcode, Pageable page);
@Query(nativeQuery = true,
value = "select * from archives_case order by create_time desc ")
Page<ArchivesCase> 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<ArchivesCase, Stri
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<ArchivesCase> 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<String> initCaseIdAllByCaseId(List<String> caseIds);
@Modifying
@Transactional(rollbackFor = Exception.class)
@Query(nativeQuery = true,
@ -107,6 +118,4 @@ public interface ArchivesCaseRepository extends JpaRepository<ArchivesCase, Stri
"(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<Map<String,Object>> readyCollectConfirm(List<String> caseIds);
}

26
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<StorageDetailsLog, Integer>{
@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<Map<String,Object>> inCaseArchives(String caseIds);
List<StorageDetailsLog> findAllByLogId(Integer logId);
}

14
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<Map<String,Object>> readyCollectConfirm(List<String> caseIds);
//手动入库确认
Object collectConfirm(List<String> caseIds);
//根据盒id获取相关案卷的所有盒id
List<String> findCaseIdAllByCaseIds(List<String> caseIds);
//根据盒Id获取设备
Map<String,DeviceInfoDto> findDevicesByCaseIds(List<String> caseIds);
//出库
Object grant(boolean isCallback,String caseIds);
Integer grant(boolean isCallback,String caseIds);
//手动出库确认
Object grantConfirm(List<String> archivesIds);
Object grantConfirm(List<String> caseIds);
//出入库记录
Object initStorageLogList(Integer storageType, String caseName,String tid,String barcode, Pageable page);
//出入库详情
Object initStorageLogDetailes(Integer logId);
//根据id集合获取出入库列表
List<StorageLog> initStorageLogList(List<Integer> logs);
//第三方回调

194
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<ArchivesCase> caseList = caseRepository.findAllByCaseName(caseName);
@ -486,15 +499,7 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
archivesSummaryRepository.saveAllAndFlush(archices);
List<StorageLog> 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<String> caseIds) {
List<ArchivesCase> 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<ArchivesCase> cases = new ArrayList<>();
public List<String> findCaseIdAllByCaseIds(List<String> caseIds) {
return caseRepository.initCaseIdAllByCaseId(caseIds);
}
@Override
public Map<String, DeviceInfoDto> findDevicesByCaseIds(List<String> caseIds) {
Map<String, DeviceInfoDto> 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<ArchivesSummary> 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<ArchivesSummary> thisSummarys = archivesSummaryRepository.findAllByCaseNoLike(caseId);
summarySet.addAll(thisSummarys);
}
archivesCase.setStorageType(0);
archivesCase.setShelfId(null);
archivesCase.setFolderLocation(null);
archivesCase.setFolderLocationDetails(null);
List<ArchivesSummary> thisSummarys = archivesSummaryRepository.findAllByCaseNoLike(caseId);
List<ArchivesSummary> 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<StorageLog> 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<ArchivesCase> 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<ArchivesSummary> 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<ArchivesSummary> thisSummarys = archivesSummaryRepository.findAllByCaseNoLike(caseId);
// summarySet.addAll(thisSummarys);
// }
// List<ArchivesSummary> 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<StorageLog> 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<String> archivesIds) {
Set<String> caseIds = caseRepository.findCaseIdsByarchivesIds(archivesIds);
caseRepository.manualConfirm(caseIds.stream().toList(),0);
public Object grantConfirm(List<String> caseIds) {
List<ArchivesCase> 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<StorageLog> initStorageLogList(List<Integer> 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<Map<String,Object>> lists = storageDetailsLogRepository.inCaseArchives(thisCase.getId());
List<StorageDetailsLog> sdLog = JSON.parseObject(JSON.toJSONString(lists), new TypeReference<List<StorageDetailsLog>>() {});
for(StorageDetailsLog logDetails:sdLog){
logDetails.setLogId(log.getId());
}
storageDetailsLogRepository.saveAllAndFlush(sdLog);
return log;
}
}

7
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<DeviceArchive
List<DeviceArchivesTag> 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<DeviceArchivesTag> findAllByPage(Pageable page);
}

9
storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java

@ -114,4 +114,13 @@ public interface DeviceInfoRepository extends JpaRepository<DeviceInfo, String>,
@Query(value = "select * from device_info where device_type_id=?1", nativeQuery = true)
Page<DeviceInfo> 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<DeviceInfo> queryStorageDeviceAll(Pageable pageable);
}

3
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);
}

7
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<DeviceArchivesTag> 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));
}
}
Loading…
Cancel
Save