Browse Source

1.修改bug

2.新增盘点
master
xia 3 years ago
parent
commit
407471d0c3
  1. 31
      archives/src/main/java/com/storeroom/modules/archives/controller/ArrangeController.java
  2. 82
      archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java
  3. 59
      archives/src/main/java/com/storeroom/modules/archives/controller/RFIDController.java
  4. 41
      archives/src/main/java/com/storeroom/modules/archives/domain/ArchivesCaseLog.java
  5. 52
      archives/src/main/java/com/storeroom/modules/archives/domain/ArchivesCheckBill.java
  6. 79
      archives/src/main/java/com/storeroom/modules/archives/domain/ArchivesCheckBillDetails.java
  7. 21
      archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseLogRepository.java
  8. 23
      archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java
  9. 78
      archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCheckBillDetailsRepository.java
  10. 18
      archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCheckBillRepository.java
  11. 4
      archives/src/main/java/com/storeroom/modules/archives/repository/BorrowArchivesRepository.java
  12. 13
      archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java
  13. 10
      archives/src/main/java/com/storeroom/modules/archives/service/ArrangeService.java
  14. 19
      archives/src/main/java/com/storeroom/modules/archives/service/dto/ArrangeAddDTO.java
  15. 92
      archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java
  16. 16
      archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java
  17. 69
      archives/src/main/java/com/storeroom/modules/archives/service/impl/ArrangeServiceImpl.java

31
archives/src/main/java/com/storeroom/modules/archives/controller/ArrangeController.java

@ -0,0 +1,31 @@
package com.storeroom.modules.archives.controller;
import com.storeroom.modules.archives.service.ArrangeService;
import com.storeroom.modules.archives.service.dto.ArrangeAddDTO;
import com.storeroom.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
@Api(tags = "档案盘点")
@RequestMapping("/api/arrange")
public class ArrangeController {
private final ArrangeService arrangeService;
@ApiOperation("新增盘点")
@PostMapping("/addArrange")
public ApiResponse<Object> addArrange(
@Validated @RequestBody ArrangeAddDTO dto
){
return ApiResponse.success(arrangeService.addArrange(dto));
}
}

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

@ -1,6 +1,10 @@
package com.storeroom.modules.archives.controller;
import cn.hutool.json.JSONObject;
import com.storeroom.annotaion.rest.AnonymousGetMapping;
import com.storeroom.modules.archives.domain.ArchivesCase;
import com.storeroom.modules.archives.domain.ArchivesCaseLog;
import com.storeroom.modules.common.ExcelUtil;
import com.storeroom.utils.enums.ResponseStatus;
import com.storeroom.modules.archives.service.ArchivesCaseService;
import com.storeroom.modules.archives.service.dto.ArchivesCaseCartoningDTO;
@ -9,10 +13,17 @@ import com.storeroom.utils.ApiResponse;
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.util.StringUtils;
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.ArrayList;
import java.util.Date;
import java.util.List;
@RestController
@ -21,14 +32,15 @@ import java.util.List;
@RequestMapping("/api/case")
public class CaseController {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
private final ArchivesCaseService caseService;
@ApiOperation("档案盒列表")
@GetMapping("/initCaseList")
public ApiResponse<Object> initCaseList(
String tid, String caseName,String barcode, Pageable page
Integer storageType,String tid, String caseName,String barcode, Pageable page
){
return ApiResponse.success(caseService.initCaseList(tid,caseName,barcode,page));
return ApiResponse.success(caseService.initCaseList(storageType,tid,caseName,barcode,page));
}
@ApiOperation("获取全部档案盒")
@ -132,4 +144,70 @@ public class CaseController {
return ApiResponse.success(caseService.findInCase(caseId));
}
@ApiOperation("删除盒")
@PostMapping("/del")
public ApiResponse<Object> del(
@Validated @RequestBody List<String> caseId
){
List<ArchivesCase> doDel = new ArrayList<>();
List<ArchivesCase> noDel = new ArrayList<>();
//盒已入库/已装盒 不可删
for(String id : caseId){
ArchivesCase archivesCase = caseService.findById(id);
if(null != archivesCase && StringUtils.isEmpty(archivesCase.getFolderLocation()) && archivesCase.getDepositNum() == 0){
doDel.add(archivesCase);
}else{
noDel.add(archivesCase);
}
}
if(doDel.size()!=0){
caseService.batchDelCase(doDel);
}
JSONObject json = new JSONObject();
json.put("doDel",doDel);
json.put("noDel",noDel);
return ApiResponse.success(json);
}
@ApiOperation("档案盒记录")
@GetMapping("/initCaseLog")
public ApiResponse<Object> initCaseLog(
Integer operationType,String caseName,String tid,String barcode,Pageable page
){
return ApiResponse.success(caseService.initCaseLog(operationType,caseName,tid,barcode,page));
}
@ApiOperation("导出盒日志记录")
@AnonymousGetMapping("/exportCaseLogList")
@ResponseBody
public void exportCaseLogList(
HttpServletResponse response,
@RequestParam("logIds") List<Integer> logIds
){
List<ArchivesCaseLog> logs = caseService.initCaseLogList(logIds);
String[] Etitle = {"序号","类型","盒名称","TID","条形码","操作人","操作时间"};
String [][] content = new String[logs.size()][];
for(int i = 0;i< logs.size();i++) {
content[i] = new String[Etitle.length];
ArchivesCaseLog log = logs.get(i);
content[i][0] = i+1+"";
content[i][1] = log.getOperationType() == 1 ? "装盒":"拆盒";
content[i][2] = log.getCaseName();
content[i][3] = log.getTid();
content[i][4] = log.getBarcode();
content[i][5] = log.getCreateBy();
content[i][6] = 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();
}
}
}

59
archives/src/main/java/com/storeroom/modules/archives/controller/RFIDController.java

@ -5,7 +5,9 @@ import cn.hutool.http.HttpResource;
import com.alibaba.fastjson.JSONObject;
import com.google.common.base.Strings;
import com.storeroom.annotaion.rest.AnonymousGetMapping;
import com.storeroom.annotaion.rest.AnonymousPostMapping;
import com.storeroom.modules.archives.service.ArchivesTagService;
import com.storeroom.modules.archives.service.BorrowService;
import com.storeroom.modules.device.service.DeviceService;
import com.storeroom.modules.device.service.DeviceSpecParamService;
import com.storeroom.modules.device.service.dto.DeviceSpecParamDto;
@ -20,14 +22,15 @@ import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -43,6 +46,7 @@ public class RFIDController {
private final DeviceService deviceService;
private final DeviceSpecParamService deviceSpecParamService;
private final ArchivesTagService archivesTagService;
private final BorrowService borrowService;
@ApiOperation("读取epc和Tid号")
@GetMapping("/ReadEpc")
@ -245,4 +249,53 @@ public class RFIDController {
return ApiResponse.success(macAddr);
}
@ApiOperation("借出确认列表")
@AnonymousGetMapping("/initWaitBorrowList")
public ApiResponse<Object> initWaitBorrowList(
String orderNo, String borrowerName, String phone, Pageable page
){
return ApiResponse.success(borrowService.initWaitBorrowList(orderNo,borrowerName,phone,page));
}
@ApiOperation("归还确认列表")
@AnonymousGetMapping("/initReturnConfirmList")
public ApiResponse<Object> initReturnConfirmList(
String orderNo,String borrowerName,String phone,String archiveNo,String folderLocationDetails,
String caseName,String barcode,String tid,Pageable page
){
return ApiResponse.success(borrowService.initReturnConfirmList(orderNo,borrowerName,phone,archiveNo,folderLocationDetails,caseName,barcode,tid,page));
}
@ApiOperation("借阅者列表")
@AnonymousGetMapping("/initBorrower")
public ApiResponse<Object> initBorrower(
String query,String phone,Pageable page
){
return ApiResponse.success(borrowService.initBorrower(query,phone,page));
}
@ApiOperation("借出确认")
@AnonymousPostMapping("/billBorrowConfirm")
public ApiResponse<Object> billBorrowConfirm(
@Validated @RequestBody List<String> orderNos
){
return ApiResponse.success(borrowService.billBorrowConfirm(orderNos));
}
@ApiOperation("归还确认")
@AnonymousPostMapping("/archivesReturnConfirm")
public ApiResponse<Object> archivesReturnConfirm(
@Validated @RequestBody List<String> rbIds
){
return ApiResponse.success(borrowService.archivesReturnConfirm(rbIds));
}
@ApiOperation("根据单据查看详情")
@AnonymousGetMapping("/initBillDetailsByOrderNo")
public ApiResponse<Object> initBillDetailsByOrderNo(
String orderNo
){
return ApiResponse.success(borrowService.initBillDetailsByOrderNo(orderNo));
}
}

41
archives/src/main/java/com/storeroom/modules/archives/domain/ArchivesCaseLog.java

@ -0,0 +1,41 @@
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 = "archives_case_log")
public class ArchivesCaseLog extends BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Integer id;
@Column(name = "case_id")
@ApiModelProperty(value = "盒id")
private String caseId;
@Column(name = "operation_type")
@ApiModelProperty(value = "操作类型 1.装盒 2.拆盒")
private Integer operationType;
@Column(name = "case_name")
@ApiModelProperty(value = "盒名称")
private String caseName;
@Column(name = "tid")
@ApiModelProperty(value = "标签id")
private String tid;
@Column(name = "barcode")
@ApiModelProperty(value = "条形码")
private String barcode;
}

52
archives/src/main/java/com/storeroom/modules/archives/domain/ArchivesCheckBill.java

@ -0,0 +1,52 @@
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.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
@Entity
@Getter
@Setter
@Table(name = "archives_check_bill")
public class ArchivesCheckBill extends BaseEntity implements Serializable {
@Id
@Column(name = "id")
private String id;
@Column(name = "region")
@ApiModelProperty(value = "所在区域")
private String region;
@Column(name = "check_state")
@ApiModelProperty(value = "0.待执行 1.执行中 2.已执行")
private Integer checkState;
@Column(name = "correct")
@ApiModelProperty(value = "在库档案")
private Integer correct;
@Column(name = "checked")
@ApiModelProperty(value = "已盘点档案")
private Integer checked;
@Column(name = "no_check")
@ApiModelProperty(value = "未盘点档案")
private Integer noCheck;
@Column(name = "borrowed")
@ApiModelProperty(value = "已借出档案")
private Integer borrowed;
@Column(name = "dislocation")
@ApiModelProperty(value = "错位档案")
private Integer dislocation;
}

79
archives/src/main/java/com/storeroom/modules/archives/domain/ArchivesCheckBillDetails.java

@ -0,0 +1,79 @@
package com.storeroom.modules.archives.domain;
import com.storeroom.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;
@Entity
@Getter
@Setter
@Table(name = "archives_check_bill_details")
public class ArchivesCheckBillDetails implements Serializable {
@Id
@Column(name = "id")
private String id;
@Column(name = "bill_id")
@ApiModelProperty(value = "盘点单id")
private String billId;
@Column(name = "check_result")
@ApiModelProperty(value = "盘点结果 0.未盘点 1.在库 2.错位 3.已借")
private Integer checkResult;
@Column(name = "child")
@ApiModelProperty(value = "子条目数")
private Integer child;
@Column(name = "category_type")
@ApiModelProperty(value = "门类级别")
private Integer 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;
@Column(name = "create_time")
@ApiModelProperty(value = "创建时间")
private Timestamp createTime;
}

21
archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseLogRepository.java

@ -0,0 +1,21 @@
package com.storeroom.modules.archives.repository;
import com.storeroom.modules.archives.domain.ArchivesCaseLog;
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 ArchivesCaseLogRepository extends JpaRepository<ArchivesCaseLog, Integer>{
@Query(nativeQuery = true,
value = "select * from archives_case_log " +
"where if(?1 is null,1=1,operation_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) order by create_time desc")
Page<ArchivesCaseLog> initCaseLog(Integer operationType, String caseName, String tid, String barcode,Pageable page);
}

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

@ -19,16 +19,21 @@ public interface ArchivesCaseRepository extends JpaRepository<ArchivesCase, Stri
@Query(nativeQuery = true,
value = "select * from archives_case where 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<ArchivesCase> initCaseList(String caseName, String tid,String barcode, Pageable page);
"if(?2 is null,1=1,tid like ?2) and if(?3 is null,1=1,barcode like ?3) and " +
"if(?4 is null,1=1,storage_type = ?4) ")
Page<ArchivesCase> initCaseList(String caseName, String tid,String barcode,Integer storageType, 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) ")
countQuery = "select count(1) 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) ",
value = "select id,case_name,case_type,tid,barcode,shelf_id,folder_location,deposit_num,storage_type,storage_time,create_by,update_by,create_time,update_time," +
"(SELECT group_concat(DISTINCT CONCAT( room.NAME, ' ', di.device_name, ' ', ace.folder_location_details)) FROM archives_case_cartoning acc INNER JOIN archives_case ace ON acc.case_id = ace.id INNER JOIN device_archives_tag dat ON ace.folder_location = dat.position INNER JOIN device_info di ON dat.device_info_id = di.id INNER JOIN storeroom room ON room.id = di.storeroom_id WHERE ace.id = t.id) as folder_location_details " +
"from archives_case t 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) order by t.create_time desc ")
Page<ArchivesCase> readyIntoCase(String caseName, String tid,String barcode,List storageType, Pageable page);
@Query(nativeQuery = true,
@ -46,7 +51,7 @@ public interface ArchivesCaseRepository extends JpaRepository<ArchivesCase, Stri
"AND if(?1 is null,1=1,ace.case_name like ?1) " +
"AND if(?2 is null,1=1,asum.archive_no like ?2) " +
"AND if(?3 is null,1=1,asum.maintitle like ?3) " +
"AND if(?4 is null,1=1,CONCAT(room.name ,'-' , di.device_name , '-' , dat.position_name) like ?4) ")
"AND if(?4 is null,1=1,CONCAT(room.name ,'-' , di.device_name , '-' , dat.position_name) like ?4) order by storage_time desc")
Page<Map<String,Object>> alReadyInto(String caseName, String archiveNo, String title, String location, Pageable page);
@ -117,4 +122,12 @@ 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);
@Query(nativeQuery = true,
value = "SELECT group_concat(DISTINCT CONCAT( room.NAME, ' ', di.device_name, ' ', ace.folder_location_details)) " +
"FROM archives_case_cartoning acc INNER JOIN archives_case ace ON acc.case_id = ace.id " +
"INNER JOIN device_archives_tag dat ON ace.folder_location = dat.position " +
"INNER JOIN device_info di ON dat.device_info_id = di.id " +
"INNER JOIN storeroom room ON room.id = di.storeroom_id WHERE ace.id = ?1 ")
String findLocationDetailsByCaseId(String caseId);
}

78
archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCheckBillDetailsRepository.java

@ -0,0 +1,78 @@
package com.storeroom.modules.archives.repository;
import com.storeroom.modules.archives.domain.ArchivesCheckBillDetails;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
public interface ArchivesCheckBillDetailsRepository extends JpaRepository<ArchivesCheckBillDetails, String>{
@Query(nativeQuery = true,
value = "select replace(uuid(),'-','') as id,?1 as bill_id,(select if(count(1)=0,0,3) from borrow_archives ba where ba.archives_id = asy.archives_id and borrow_type = 3) as check_result," +
"asy.child,asy.category_type,asy.category_name,asy.fonds_no," +
"asy.archive_no,asy.archive_year,asy.maintitle,asy.security_class," +
"asy.department,asy.case_name,asy.folder_location_details,asy.create_time " +
"from archives_summary asy where " +
"asy.archives_id in (select DISTINCT acc.parent_id from archives_case_cartoning acc " +
"inner join archives_case ace on acc.case_id = ace.id " +
"inner join device_archives_tag dat on ace.folder_location = dat.position) ")
List<ArchivesCheckBillDetails> findDetailsAll(String billId);
@Query(nativeQuery = true,
countQuery = "select count(1) from archives_summary asy where " +
"asy.archives_id in (select DISTINCT acc.parent_id from archives_case_cartoning acc " +
"inner join archives_case ace on acc.case_id = ace.id " +
"inner join device_archives_tag dat on ace.folder_location = dat.position where if(?1 is null,1=1,dat.device_info_id in ?1)) ",
value = "select null as id,asy.child,asy.category_type as categoryType,asy.category_name as categoryName,asy.fonds_no as fondsNo," +
"?2 as billId,(select if(count(1)=0,0,3) from borrow_archives ba where ba.archives_id = asy.archives_id and borrow_type = 3) as checkResult," +
"asy.archive_no as archiveNo,asy.archive_year as archiveYear,asy.maintitle,asy.security_class as securityClass,asy.department,asy.case_name as caseName," +
"asy.folder_location_details as folderLocationDetails,asy.create_time as createTime from archives_summary asy " +
"where " +
"asy.archives_id in (select DISTINCT acc.parent_id from archives_case_cartoning acc " +
"inner join archives_case ace on acc.case_id = ace.id " +
"inner join device_archives_tag dat on ace.folder_location = dat.position where if(?1 is null,1=1,dat.device_info_id in ?1)) " +
"order by create_time desc")
List<ArchivesCheckBillDetails> findDetailsAllByDeviceId(List<String> deviceIds,String billId);
@Query(nativeQuery = true,
countQuery = "select count(1) from archives_summary asy where" +
"if(?1 is null,1=1,category_id in ?1) and " +
"asy.archives_id in (select DISTINCT acc.parent_id from archives_case_cartoning acc " +
"inner join archives_case ace on acc.case_id = ace.id " +
"inner join device_archives_tag dat on ace.folder_location = dat.position) ",
value = "select null as id,asy.child,asy.category_type as categoryType,asy.category_name as categoryName,asy.fonds_no as fondsNo," +
"?2 as billId,(select if(count(1)=0,0,3) from borrow_archives ba where ba.archives_id = asy.archives_id and borrow_type = 3) as checkResult," +
"asy.archive_no as archiveNo,asy.archive_year as archiveYear,asy.maintitle,asy.security_class as securityClass,asy.department,asy.case_name as caseName," +
"asy.folder_location_details as folderLocationDetails,asy.create_time as createTime from archives_summary asy " +
"where " +
"if(?1 is null,1=1,category_id in ?1) and " +
"asy.archives_id in (select DISTINCT acc.parent_id from archives_case_cartoning acc " +
"inner join archives_case ace on acc.case_id = ace.id " +
"inner join device_archives_tag dat on ace.folder_location = dat.position) " +
"order by create_time desc")
List<ArchivesCheckBillDetails> findDetailsAllByCategoryId(List<String> categroyIds,String billId);
@Query(nativeQuery = true,
countQuery = "select count(1) from archives_summary asy where" +
"if(?2 is null,1=1,category_id in ?2) and " +
"asy.archives_id in (select DISTINCT acc.parent_id from archives_case_cartoning acc " +
"inner join archives_case ace on acc.case_id = ace.id " +
"inner join device_archives_tag dat on ace.folder_location = dat.position where if(?1 is null,1=1,dat.device_info_id in ?1)) ",
value = "select null as id,asy.child,asy.category_type as categoryType,asy.category_name as categoryName,asy.fonds_no as fondsNo," +
"?3 as billId,(select if(count(1)=0,0,3) from borrow_archives ba where ba.archives_id = asy.archives_id and borrow_type = 3) as checkResult," +
"asy.archive_no as archiveNo,asy.archive_year as archiveYear,asy.maintitle,asy.security_class as securityClass,asy.department,asy.case_name as caseName," +
"asy.folder_location_details as folderLocationDetails,asy.create_time as createTime from archives_summary asy " +
"where " +
"if(?2 is null,1=1,category_id in ?2) and " +
"asy.archives_id in (select DISTINCT acc.parent_id from archives_case_cartoning acc " +
"inner join archives_case ace on acc.case_id = ace.id " +
"inner join device_archives_tag dat on ace.folder_location = dat.position where if(?1 is null,1=1,dat.device_info_id in ?1)) " +
"order by create_time desc")
List<ArchivesCheckBillDetails> findDetailsAllByDeviceIdAndCategoryId(List<String> deviceIds,List<String> categroyIds,String billId);
@Query(nativeQuery = true,
value = "select count(1) from archives_check_bill_details where check_result = 3 ")
Integer findBorrowCountByOrderId(String orderIds);
}

18
archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCheckBillRepository.java

@ -0,0 +1,18 @@
package com.storeroom.modules.archives.repository;
import com.storeroom.modules.archives.domain.ArchivesCheckBill;
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;
public interface ArchivesCheckBillRepository extends JpaRepository<ArchivesCheckBill, String>{
@Query(nativeQuery = true,
value = "select CONCAT ('PD', DATE_FORMAT(now(), '%Y%m%d'),RIGHT(CONCAT " +
"('00000' , ifnull(max(SUBSTR(id, LENGTH(CONCAT('JY',DATE_FORMAT(now(), '%Y%m%d'))) + 1," +
"LENGTH(id) - LENGTH(CONCAT ('JY' , DATE_FORMAT(now(), '%Y%m%d'))))) + 1, 1)), 5)) AS id " +
"from archives_check_bill where SUBSTR(id, 3, 8)=substr(DATE_FORMAT(now(),'%Y%m%d') , 1, 8)")
String getOrderId();
}

4
archives/src/main/java/com/storeroom/modules/archives/repository/BorrowArchivesRepository.java

@ -24,12 +24,12 @@ public interface BorrowArchivesRepository extends JpaRepository<BorrowArchives,
@Query(nativeQuery = true,
value = "select asy.archives_id as archivesId,1 as borrowType,asy.category_id as categoryId,asy.tag_no as tid,asy.barcode," +
"asy.category_name as categoryName,asy.archive_no as archiveNo,asy.maintitle,asy.case_name as caseName," +
"(select GROUP_CONCAT(CONCAT(room.name ,'-' , di.device_name , '-' , dat.position_name)) as seat " +
"(select GROUP_CONCAT(DISTINCT CONCAT(room.name ,'-' , di.device_name , '-' , dat.position_name)) as seat " +
"from archives_case_cartoning acc inner join archives_case ace on acc.case_id = ace.id " +
"inner join device_archives_tag dat on dat.id = ace.shelf_id " +
"inner join device_info di ON dat.device_info_id = di.id " +
"inner join storeroom room ON di.storeroom_id = room.id " +
"where acc.archives_id = asy.archives_id) as folderLocationDetails " +
"where acc.parent_id = asy.archives_id) as folderLocationDetails " +
"from archives_summary asy where asy.archives_id in ?1 ")
List<Map<String,Object>> findAllByArchivesIdss(List<String> archiveIds);

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

@ -1,9 +1,6 @@
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.domain.*;
import com.storeroom.modules.archives.service.dto.ArchivesCaseCartoningDTO;
import com.storeroom.modules.archives.service.dto.CaseDTO;
import com.storeroom.modules.archives.service.dto.CollectDTO;
@ -17,7 +14,7 @@ public interface ArchivesCaseService {
//根据id获取档案盒信息
ArchivesCase findById(String caseId);
//初始化档案盒列表
Object initCaseList(String tid, String caseName,String barcode, Pageable page);
Object initCaseList(Integer storageType,String tid, String caseName,String barcode, Pageable page);
Object initCaseAll(Pageable page);
//判断档案盒名称是否重复
Object caseNameIsRepeat(String caseId,String caseName);
@ -41,6 +38,10 @@ public interface ArchivesCaseService {
Object unpacking(List<String> caseId);
//查看盒内详情
Object findInCase(String caseId);
//批量删除盒 解除相关标签
void batchDelCase(List<ArchivesCase> doDel);
//初始化档案盒日志
Object initCaseLog(Integer operationType,String caseName,String tid,String barcode,Pageable page);
//设备删除 设备内是否有档案
Boolean isHaveArchives(List<String> deviceId);
@ -77,6 +78,8 @@ public interface ArchivesCaseService {
Object initStorageLogDetailes(Integer logId);
//根据id集合获取出入库列表
List<StorageLog> initStorageLogList(List<Integer> logs);
//根据id集合获取档案盒装拆盒记录
List<ArchivesCaseLog> initCaseLogList(List<Integer> logs);
//第三方回调
Integer externalCallback(String caseId);
}

10
archives/src/main/java/com/storeroom/modules/archives/service/ArrangeService.java

@ -0,0 +1,10 @@
package com.storeroom.modules.archives.service;
import com.storeroom.modules.archives.service.dto.ArrangeAddDTO;
public interface ArrangeService {
//新增盘点
Object addArrange(ArrangeAddDTO dto);
}

19
archives/src/main/java/com/storeroom/modules/archives/service/dto/ArrangeAddDTO.java

@ -0,0 +1,19 @@
package com.storeroom.modules.archives.service.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class ArrangeAddDTO {
//设备id集合
private List<String> deviceIds;
//门类id集合
private List<String> categoryIds;
//所属区域
private String region;
}

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

@ -7,6 +7,7 @@ import com.storeroom.modules.archives.domain.vo.StorageDetailesVO;
import com.storeroom.modules.archives.repository.*;
import com.storeroom.modules.archives.domain.ArchivesCase;
import com.storeroom.modules.archives.service.ArchivesCaseService;
import com.storeroom.modules.archives.service.ArchivesTagService;
import com.storeroom.modules.archives.service.dto.ArchivesCaseCartoningDTO;
import com.storeroom.modules.archives.domain.vo.ArchivesCaseVO;
import com.storeroom.modules.archives.service.dto.CaseDTO;
@ -50,6 +51,8 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
private final StorageLogRepository storageLogRepository;
private final StorageDetailsLogRepository storageDetailsLogRepository;
private final DeviceArchivesTagRepository deviceArchivesTagRepository;
private final ArchivesTagService archivesTagService;
private final ArchivesCaseLogRepository archivesCaseLogRepository;
@PersistenceContext
EntityManager entityManager;
@ -60,11 +63,11 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
}
@Override
public Object initCaseList(String tid, String caseName,String barcode, Pageable page) {
public Object initCaseList(Integer storageType,String tid, String caseName,String barcode, Pageable page) {
tid = StringUtils.isEmpty(tid) ? null : "%"+ tid +"%";
caseName = StringUtils.isEmpty(caseName) ? null : "%"+ caseName +"%";
barcode = StringUtils.isEmpty(barcode) ? null : "%"+ barcode +"%";
Page<ArchivesCase> pageCase = caseRepository.initCaseList(caseName,tid,barcode,page);
Page<ArchivesCase> pageCase = caseRepository.initCaseList(caseName,tid,barcode,storageType,page);
return PageUtil.toPage(pageCase);
}
@ -255,6 +258,7 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
entityManager.createNativeQuery(psql).executeUpdate();
archivesSummaryRepository.cartoning(dtos.get(0).getArchivesParentsId(),caseIdArr,caseNames.stream().collect(Collectors.joining(",")));
}
this.writeCaseLog(caseIds,1);
return archivesCaseCartonings.size();
}
@ -303,8 +307,10 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
@Override
@Transactional(rollbackFor = Exception.class)
public Object unpacking(List<String> caseIdList) {
Set<String> unpackingCaseIds = new HashSet<>();
Integer result = 0;
for(String caseId:caseIdList){
unpackingCaseIds.add(caseId);
ArchivesCase archivesCase = caseRepository.findById(caseId).get();
List<ArchivesSummary> editArchivesSummaries = new ArrayList<>();
List<String> archivesIds = new ArrayList<>();
@ -397,6 +403,7 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
caseRepository.cartoning(caseId,0,0);
result = result+1;
}
this.writeCaseLog(unpackingCaseIds,2);
return result;
}
@ -416,6 +423,33 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
return vo;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void batchDelCase(List<ArchivesCase> doDel) {
List<CaseDTO> unbind = new ArrayList<>();
//循环解除标签
for(ArchivesCase archivesCase:doDel){
if(!StringUtils.isEmpty(archivesCase.getTid())){
CaseDTO dto = new CaseDTO();
dto.setTid(archivesCase.getTid());
dto.setLabelType(2);
unbind.add(dto);
}
}
//解除标签
archivesTagService.unbindTag(unbind);
//删除盒
caseRepository.deleteAll(doDel);
}
@Override
public Object initCaseLog(Integer operationType, String caseName, String tid, String barcode,Pageable page) {
tid = StringUtils.isEmpty(tid) ? null : "%"+ tid +"%";
caseName = StringUtils.isEmpty(caseName) ? null : "%"+ caseName +"%";
barcode = StringUtils.isEmpty(barcode) ? null : "%"+ barcode +"%";
return PageUtil.toPage(archivesCaseLogRepository.initCaseLog(operationType,caseName,tid,barcode,page));
}
@Override
public Boolean isHaveArchives(List<String> deviceId) {
Integer count = caseRepository.isHaveArchives(deviceId);
@ -468,7 +502,7 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
ArchivesCase thisCase = caseRepository.findById(dto.getCaseId()).get();
thisCase.setShelfId(dto.getShelfId());
thisCase.setFolderLocation(dto.getPosition());
thisCase.setFolderLocationDetails(dto.getPositionName());
thisCase.setFolderLocationDetails(caseRepository.findLocationDetailsByCaseId(thisCase.getId()));
thisCase.setStorageType(isCallback ? 1:2);
cases.add(thisCase);
@ -483,7 +517,7 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
if(caseId.equals(dto1.getCaseId())){
newShelfId += dto1.getShelfId() + ",";
newLocation += dto1.getPosition() + ",";
newLocationName += dto1.getPositionName()+",";
newLocationName += caseRepository.findLocationDetailsByCaseId(dto1.getCaseId()) +",";
resultOk++;
}
}
@ -522,7 +556,7 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
ArchivesCase archivesCase = caseRepository.findCaseById(dto.getCaseId());
archivesCase.setShelfId(dto.getShelfId());
archivesCase.setFolderLocation(tag.getPosition());
archivesCase.setFolderLocationDetails(tag.getPosition_name());
archivesCase.setFolderLocationDetails(caseRepository.findLocationDetailsByCaseId(dto.getCaseId()));
archivesCase.setStorageType(2);
cases.add(archivesCase);
@ -541,7 +575,7 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
DeviceArchivesTag tag1 = optional1.get();
newShelfId += tag1.getId() + ",";
newLocation += tag1.getPosition() + ",";
newLocationName += tag1.getPosition_name()+",";
newLocationName += caseRepository.findLocationDetailsByCaseId(dto1.getCaseId())+",";
resultOk++;
}
}
@ -682,8 +716,24 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
@Override
public Object grantConfirm(List<String> caseIds) {
List<ArchivesCase> cases = caseRepository.findAllById(caseIds);
caseRepository.manualConfirm(caseIds,0);
// caseRepository.manualConfirm(caseIds,0);
for(ArchivesCase thisCase:cases){
//清空相关入库信息
thisCase.setStorageType(0);
thisCase.setShelfId(null);
thisCase.setFolderLocation(null);
thisCase.setFolderLocationDetails(null);
List<ArchivesSummary> thisSummarys = archivesSummaryRepository.findAllByCaseNoLike(thisCase.getId());
List<ArchivesSummary> grantSummary = new ArrayList<>();
for(ArchivesSummary thisSummary:thisSummarys){
thisSummary.setShelfId(null);
thisSummary.setFolderLocation(null);
thisSummary.setFolderLocationDetails(null);
grantSummary.add(thisSummary);
}
archivesSummaryRepository.saveAllAndFlush(grantSummary);
caseRepository.saveAndFlush(thisCase);
this.recordStorage(thisCase,4);
}
return caseIds.size();
@ -715,6 +765,9 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
return storageLogRepository.findAllById(logs);
}
@Override
public List<ArchivesCaseLog> initCaseLogList(List<Integer> logs) { return archivesCaseLogRepository.findAllById(logs);}
@Override
@Transactional
public Integer externalCallback(String caseId) {
@ -752,7 +805,7 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
log.setTid(thisCase.getTid());
log.setBarcode(thisCase.getBarcode());
log.setStorageType(StorageType);
log.setFolderLocationDetails(thisCase.getFolderLocationDetails());
log.setFolderLocationDetails(caseRepository.findLocationDetailsByCaseId(thisCase.getId()));
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>>() {});
@ -762,4 +815,27 @@ public class ArchivesCaseServiceImpl implements ArchivesCaseService {
storageDetailsLogRepository.saveAllAndFlush(sdLog);
return log;
}
//盒日志
private Integer writeCaseLog(Set<String> caseIds,Integer operationType){
List<ArchivesCaseLog> archivesCaseLogs = new ArrayList<>();
for(String caseId : caseIds){
ArchivesCase archivesCase = caseRepository.findCaseById(caseId);
if(null!=archivesCase){
ArchivesCaseLog log = new ArchivesCaseLog();
log.setCaseId(archivesCase.getId());
log.setCaseName(archivesCase.getCaseName());
log.setOperationType(operationType);
log.setTid(archivesCase.getTid());
log.setBarcode(archivesCase.getBarcode());
archivesCaseLogs.add(log);
}
}
if(archivesCaseLogs.size()!=0){
archivesCaseLogRepository.saveAll(archivesCaseLogs);
}
return archivesCaseLogs.size();
}
}

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

@ -177,8 +177,13 @@ public class ArchivesServiceImpl implements ArchivesService {
}
String queryField = queryFields.stream().map(String::valueOf).collect(Collectors.joining(","));
String queryTable = archivesType.getEnName();
String appendQuery = "tid,(select group_concat(case_name) from archives_case t where find_in_set(t.id,z.case_no))," +
"folder_location,borrow_type,barcode ";
String appendQuery = "tid,(select group_concat(case_name) from archives_case t where find_in_set(t.id,z.case_no)),";
if(archivesType.getIsType()==ArchivesTypeEnum.inChive.getCode()){
appendQuery = appendQuery + "(SELECT group_concat(DISTINCT CONCAT( room.NAME, ' ', di.device_name, ' ', ace.folder_location_details)) FROM archives_summary asy INNER JOIN archives_case_cartoning acc ON asy.archives_id = acc.archives_id INNER JOIN archives_case ace ON acc.case_id = ace.id INNER JOIN device_archives_tag dat ON ace.folder_location = dat.position INNER JOIN device_info di ON dat.device_info_id = di.id INNER JOIN storeroom room ON room.id = di.storeroom_id WHERE asy.archives_id = z.id),";
}else{
appendQuery = appendQuery + "(SELECT group_concat(DISTINCT CONCAT( room.NAME, ' ', di.device_name, ' ', ace.folder_location_details)) FROM archives_summary asy INNER JOIN archives_case_cartoning acc ON asy.archives_id = acc.parent_id INNER JOIN archives_case ace ON acc.case_id = ace.id INNER JOIN device_archives_tag dat ON ace.folder_location = dat.position INNER JOIN device_info di ON dat.device_info_id = di.id INNER JOIN storeroom room ON room.id = di.storeroom_id WHERE asy.archives_id = z.id),";
}
appendQuery = appendQuery + "(select borrow_type from borrow_archives where archives_id = z.id order by create_time desc limit 0,1),barcode ";
appendQuery = queryField.length() == 0 ? appendQuery : ","+appendQuery;
List<Object[]> list = entityManager.createNativeQuery("select "+queryField+appendQuery+" from "+queryTable + " z where z.id = '"+archivesId+"'").getResultList();
queryFields.add("tid");queryCnFields.add("TID");queryEditLength.add(null);queryisLine.add(null);
@ -491,7 +496,6 @@ public class ArchivesServiceImpl implements ArchivesService {
@Override
@Transactional(rollbackFor = Exception.class)
public Object editFile(ArchivesFileDTO dto) {
int result = 0;
String archiveId = "";
ArchivesType archivesType = archivesTypeRepository.findById(dto.getCategoryId()).get();
List<ArchivesDictionary> queryShow = archivesDictionaryRepository.findAllByCategoryIdAndIsTypeOrderByIsSequenceAsc(dto.getCategoryId(),3);
@ -517,10 +521,12 @@ public class ArchivesServiceImpl implements ArchivesService {
}
insertValue = insertValue.length() != 0 ? insertValue.substring(0,insertValue.length()-1) : "";
String sql = "insert into file_"+archivesType.getEnName()+"("+queryFields+") values ("+insertValue+")";
int thisresult = entityManager.createNativeQuery(sql).executeUpdate();
result += thisresult;
entityManager.createNativeQuery(sql).executeUpdate();
archiveId = json.get("archive_id")+"";
}
String sql = "select count(1) from file_"+archivesType.getEnName()+" where archive_id = '"+archiveId+"'";
List<Object> list = entityManager.createNativeQuery(sql).getResultList();
int result = Integer.parseInt(list.get(0)+"");
entityManager.createNativeQuery("update "+archivesType.getEnName()+" set child = "+result+" where id='"+archiveId+"'").executeUpdate();
entityManager.createNativeQuery("update archives_summary set child = "+result+" where archives_id = '"+archiveId+"'").executeUpdate();
return result;

69
archives/src/main/java/com/storeroom/modules/archives/service/impl/ArrangeServiceImpl.java

@ -0,0 +1,69 @@
package com.storeroom.modules.archives.service.impl;
import com.storeroom.modules.archives.domain.ArchivesCheckBill;
import com.storeroom.modules.archives.domain.ArchivesCheckBillDetails;
import com.storeroom.modules.archives.repository.ArchivesCheckBillDetailsRepository;
import com.storeroom.modules.archives.repository.ArchivesCheckBillRepository;
import com.storeroom.modules.archives.service.ArrangeService;
import com.storeroom.modules.archives.service.dto.ArrangeAddDTO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.List;
@Service
@RequiredArgsConstructor
public class ArrangeServiceImpl implements ArrangeService {
private final ArchivesCheckBillRepository archivesCheckBillRepository;
private final ArchivesCheckBillDetailsRepository archivesCheckBillDetailsRepository;
@Override
@Transactional
public Object addArrange(ArrangeAddDTO dto) {
ArchivesCheckBill bill = this.createBill(dto.getRegion(),0);
//未成功生成清单
if(null == bill)
return null;
//获取相关在库档案信息
List<ArchivesCheckBillDetails> checkDetaills = null;
if(null != dto.getDeviceIds() && dto.getDeviceIds().size() !=0 && null != dto.getCategoryIds() && dto.getCategoryIds().size() !=0){
checkDetaills = archivesCheckBillDetailsRepository.findDetailsAllByDeviceIdAndCategoryId(dto.getDeviceIds(),dto.getCategoryIds(),dto.getRegion());
}else if(null != dto.getDeviceIds() && dto.getDeviceIds().size() != 0){
checkDetaills = archivesCheckBillDetailsRepository.findDetailsAllByDeviceId(dto.getDeviceIds(),dto.getRegion());
}else if(null != dto.getCategoryIds() && dto.getCategoryIds().size() != 0){
checkDetaills = archivesCheckBillDetailsRepository.findDetailsAllByCategoryId(dto.getCategoryIds(),dto.getRegion());
}else{
checkDetaills = archivesCheckBillDetailsRepository.findDetailsAll(dto.getRegion());
}
checkDetaills = archivesCheckBillDetailsRepository.saveAll(checkDetaills);
bill.setBorrowed(archivesCheckBillDetailsRepository.findBorrowCountByOrderId(bill.getId()));
return bill;
}
//生成清单
public ArchivesCheckBill createBill(String region,Integer loop){
ArchivesCheckBill bill = null;
try {
bill = new ArchivesCheckBill();
bill.setId(archivesCheckBillRepository.getOrderId());
bill.setCheckState(0);
bill.setRegion(region);
bill.setCorrect(0);
bill.setChecked(0);
bill.setNoCheck(0);
bill.setBorrowed(0);
bill.setDislocation(0);
}catch (Exception e){
if(loop==4)
return null;
bill = this.createBill(region,loop);
}
return bill;
}
}
Loading…
Cancel
Save