package com.pashanhoo.receive.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.pashanhoo.archive.entity.DgArchivesConverter; import com.pashanhoo.archive.entity.DgArchivesDO; import com.pashanhoo.archive.entity.vo.AddDgArchivesRequest; import com.pashanhoo.archive.mapper.DgArchivesMapper; import com.pashanhoo.archive.service.DgArchivesService; import com.pashanhoo.bdcdy.entity.DgBdcdyConverter; import com.pashanhoo.bdcdy.entity.DgBdcdyDO; import com.pashanhoo.bdcdy.entity.vo.AddDgBdcdyRequest; import com.pashanhoo.bdcdy.entity.vo.UpdateDgBdcdyRequest; import com.pashanhoo.bdcdy.service.DgBdcdyService; import com.pashanhoo.business.entity.DgBusinessDO; import com.pashanhoo.business.entity.vo.AddDgBusinessRequest; import com.pashanhoo.business.entity.vo.DgBusinessSearchRequest; import com.pashanhoo.business.mapper.DgBusinessMapper; import com.pashanhoo.business.service.DgBusinessService; import com.pashanhoo.catalog.entity.DgArchivesCatalogConverter; import com.pashanhoo.catalog.entity.DgArchivesCatalogDO; import com.pashanhoo.catalog.entity.vo.AddDgArchivesCatalogRequest; import com.pashanhoo.catalog.service.DgArchivesCatalogService; import com.pashanhoo.common.Result; import com.pashanhoo.common.util.fileupload.MinioUtil; import com.pashanhoo.file.entity.DgFileConverter; import com.pashanhoo.file.entity.DgFileDO; import com.pashanhoo.file.entity.vo.FileAttribute; import com.pashanhoo.file.service.DgFileService; import com.pashanhoo.receive.entity.DgReceiveConverter; import com.pashanhoo.receive.entity.DgReceiveDO; import com.pashanhoo.receive.entity.vo.AddDgReceiveRequest; import com.pashanhoo.receive.entity.vo.DgReceiveListVO; import com.pashanhoo.receive.entity.vo.DgReceiveSearchRequest; import com.pashanhoo.receive.entity.vo.DjywbmVO; import com.pashanhoo.receive.mapper.DgReceiveMapper; import com.pashanhoo.receive.service.DgReceiveService; import com.pashanhoo.receiverelation.entity.DgReceiveRelationConverter; import com.pashanhoo.receiverelation.entity.DgReceiveRelationDO; import com.pashanhoo.receiverelation.entity.vo.AddDgReceiveRelationRequest; import com.pashanhoo.receiverelation.service.DgReceiveRelationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * <p> * 档案接收记录 服务实现类 * </p> * * @author * @since 2021-11-05 */ @Service public class DgReceiveServiceImpl extends ServiceImpl<DgReceiveMapper, DgReceiveDO> implements DgReceiveService { @Autowired private DgReceiveConverter dgreceiveConverter; @Autowired private DgBdcdyConverter bdcdyConverter; @Autowired private DgReceiveMapper dgreceiveMapper; @Autowired private DgBusinessService businessService; @Autowired private DgBusinessMapper businessMapper; @Autowired private DgBdcdyService bdcdyService; @Autowired private DgArchivesService archivesService; @Autowired private DgArchivesMapper dgarchivesMapper; @Autowired private DgArchivesConverter archivesConverter; @Autowired private DgReceiveRelationService relationService; @Autowired private DgReceiveRelationConverter relationConverter; @Autowired private DgArchivesCatalogConverter catalogConverter; @Autowired private DgArchivesCatalogService catalogService; @Autowired private DgFileConverter fileConverter; @Autowired private DgFileService fileService; @Autowired private MinioUtil minioUtil; /** * 新增记录 * @param request * @return */ @Override @Transactional(rollbackFor = Exception.class) public Result insertDgReceive(AddDgReceiveRequest request) throws Exception{ long starttime=System.currentTimeMillis(); //TODO字段值校验 //新增接收表信息=============start=========== //获取接收编码 String receiveBsm= IdWorker.get32UUID(); request.setBms_receive(receiveBsm); DjywbmVO djywbmVO=dgreceiveMapper.getDjywbmInfo(request.getDjywbm()); DgReceiveDO dgreceiveDO = dgreceiveConverter.addRequest2DO(request); if(djywbmVO!=null){ dgreceiveDO.setDjywbm(djywbmVO.getDjywbm()); dgreceiveDO.setDjywmc(djywbmVO.getDjywmc()); dgreceiveDO.setGdfs(djywbmVO.getGdfs()); } this.save(dgreceiveDO); //新增接收表信息=============end=========== //获取登记传入的不动产单元List集合数据 List<AddDgBdcdyRequest> bdcdyRequestList=request.getBdcdyRequestList(); //获取登记传入的业务数据 AddDgBusinessRequest businessRequest=request.getBusinessRequest(); //获取目录信息 List<AddDgArchivesCatalogRequest> catalogRequestList=request.getCatalogRequests(); //归档方式(1:按业务归档,2:按单元归档,3:档案补充归档) if("1".equals(dgreceiveDO.getGdfs())){ //新增档案表基础信息 AddDgArchivesRequest archivesRequest=new AddDgArchivesRequest(); String bsm_archives= IdWorker.get32UUID(); archivesRequest.setBsmArchives(bsm_archives); archivesRequest.setDazt(1); archivesService.insertDgArchives(archivesRequest); //新增接收表和档案表关联关系表 AddDgReceiveRelationRequest relationRequest=new AddDgReceiveRelationRequest(); relationRequest.setBmsReceive(receiveBsm); relationRequest.setBsmArchives(bsm_archives); relationService.insertDgReceiveRelation(relationRequest); //新增目录和文件信息 dealCatalogAndFile(catalogRequestList,bsm_archives); }else if("2".equals(dgreceiveDO.getGdfs())){ List<AddDgReceiveRelationRequest> relationRequestList=new ArrayList<AddDgReceiveRelationRequest>(); List<AddDgArchivesRequest> archivesRequest=new ArrayList<AddDgArchivesRequest>(bdcdyRequestList.size()); AddDgArchivesRequest archivesRequest1=null; AddDgReceiveRelationRequest receiveRelationRequest=null; for (int i = 0; i < bdcdyRequestList.size(); i++) { //组装档案表基础信息 String bsm_archives= IdWorker.get32UUID(); archivesRequest1=new AddDgArchivesRequest(); archivesRequest1.setBsmArchives(bsm_archives); archivesRequest1.setDazt(1); archivesRequest.add(archivesRequest1); //组装接收表和档案表关联关系表 receiveRelationRequest=new AddDgReceiveRelationRequest(); receiveRelationRequest.setBmsReceive(receiveBsm); receiveRelationRequest.setBsmArchives(bsm_archives); relationRequestList.add(receiveRelationRequest); //新增目录和文件信息 dealCatalogAndFile(catalogRequestList,bsm_archives); } //批量新增接收表和档案表关联关系表 List<DgReceiveRelationDO> receiveRelationDOList=relationConverter.addReceiveRelationList(relationRequestList); relationService.saveBatch(receiveRelationDOList); //批量新增档案表基础信息 List<DgArchivesDO> archivesDOList=archivesConverter.addArchivesList(archivesRequest); archivesService.saveBatch(archivesDOList); }else if("3".equals(dgreceiveDO.getGdfs())){ //通过业务号和注销业务号查询业务表是否有数据,有数据则修改 DgBusinessSearchRequest searchRequest=new DgBusinessSearchRequest(); searchRequest.setYwh(businessRequest.getYwh()); searchRequest.setZxywh(businessRequest.getZxywh()); DgBusinessDO businessDO=businessService.searchDgBusiness(searchRequest); if(businessDO!=null){ businessDO.setZxlx(businessRequest.getZxlx()); //更新业务表中的注销类型 businessMapper.updateById(businessDO); Date zxsj=null; for (int i = 0; i < bdcdyRequestList.size(); i++) { if(businessDO.getBsmArchives().equals(bdcdyRequestList.get(i).getBsmArchives())){ zxsj=bdcdyRequestList.get(i).getZxsj(); break; } } //更新不动产单元表中的注销时间 UpdateDgBdcdyRequest updateDgBdcdyRequest=new UpdateDgBdcdyRequest(); updateDgBdcdyRequest.setBsmArchives(businessDO.getBsmArchives()); updateDgBdcdyRequest.setZxsj(zxsj); bdcdyService.updateDgBdcdyByArchive(updateDgBdcdyRequest); } } //新增业务表 businessService.insertDgBusiness(businessRequest); //批量新增不动产单元号表 List<DgBdcdyDO> bdcdyDOList=bdcdyConverter.addRequestListDO(bdcdyRequestList); bdcdyService.saveBatch(bdcdyDOList); long endtime=System.currentTimeMillis(); System.out.println("===================该方法总共耗时:"+(endtime-starttime)/1000+"秒"); return Result.ok(); } /** * 公共增加目录表和文件表信息 * @param catalogRequestList * @param bsm_archives */ private void dealCatalogAndFile(List<AddDgArchivesCatalogRequest> catalogRequestList,String bsm_archives) throws Exception{ try { //批量组装文件信息=======start========= List<DgFileDO> fileDOList=new ArrayList<DgFileDO>(); DgFileDO fileDO=null; for (int j = 0; j < catalogRequestList.size(); j++) { catalogRequestList.get(j).setBsmArchives(bsm_archives); String cataLogBsm= IdWorker.get32UUID(); catalogRequestList.get(j).setBsm_catalog(cataLogBsm); List<String> fileList=catalogRequestList.get(j).getFileList(); for (int k = 0; k <fileList.size() ; k++) { fileDO=new DgFileDO(); File file=new File(fileList.get(k)); InputStream is =new FileInputStream(file); String filetype=file.getName().substring(file.getName().lastIndexOf(".")); //文件上传 FileAttribute attribute=minioUtil.transferToMinio(is,file.getName(),filetype,String.valueOf(file.length())); fileDO.setBsmCatalog(cataLogBsm); fileDO.setKzm(attribute.getExpandName()); fileDO.setScr("admin"); fileDO.setFjurl(attribute.getSaveUrl()); fileDO.setFjsize(attribute.getFileSize()); fileDOList.add(fileDO); } } //批量组装文件信息=======end========= //批量组装目录信息 List<DgArchivesCatalogDO> catalogDOList=catalogConverter.addcataListDO(catalogRequestList); //批量新增目录信息 catalogService.saveBatch(catalogDOList); //批量新增对应文件信息 fileService.saveBatch(fileDOList); }catch (Exception ex){ throw ex; } } /** * 根据条件进行列表查询 * @param request * @return */ @Override public Result searchDgReceiveList(DgReceiveSearchRequest request) { Page<DgReceiveDO> pageParam = new Page<DgReceiveDO>(request.getCurrentPage(), request.getPageSize()); QueryWrapper<DgReceiveDO> wrapper = new QueryWrapper<>(); wrapper.eq(request.getYwh()!=null && !"".equals(request.getYwh()),"YWH",request.getYwh()); wrapper.eq(request.getQllx()!=null && !"".equals(request.getQllx()),"QLLX",request.getQllx()); wrapper.eq(request.getDjlx()!=null && !"".equals(request.getDjlx()),"DJLX",request.getDjlx()); wrapper.eq(request.getYwlyjbm()!=null && !"".equals(request.getYwlyjbm()),"YWLYJBM",request.getYwlyjbm()); wrapper.eq("STATE","0"); Page page = this.page(pageParam, wrapper); List<DgReceiveListVO> list=dgreceiveConverter.doList2ListVOList(page.getRecords()); return Result.ok(list); } @Override @Transactional(rollbackFor = Exception.class) public Result addBatchArchies(List<String> idList) { //更新接收表归档时间和归档状态 boolean receiveFlag=dgreceiveMapper.updateReceiveBatch(idList,"1");//整理状态(0:待处理,1:已归档) //查询接收表和档案表的关联关系表找出对应的档案 //档案状态(1:正在接收;2:正在补录;3:正在修改;4:在库;5:正在销毁;6:已销毁;7:正在借阅;8:已借阅) boolean archivesFlag=dgarchivesMapper.updateArchivesInfoByReceiveIdList(idList,"4"); if(receiveFlag && archivesFlag){ return Result.ok("操作成功"); }else{ return Result.ok("操作失败"); } } }