Explorar o código

Merge remote-tracking branch 'origin/master'

liuyc %!s(int64=2) %!d(string=hai) anos
pai
achega
1a38bca8a0

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java

@@ -53,6 +53,9 @@ public interface ArchiveFileClient {
     @PostMapping(API_PREFIX + "/listWrappers")
     List<ArchiveFile> listWrappers(@RequestBody LambdaQueryWrapper<ArchiveFile> in);
 
+    @PostMapping(API_PREFIX + "/listbyIds")
+    List<ArchiveFile> listbyIds(@RequestBody List<Long> toLongList);
+
     @PostMapping(API_PREFIX + "/updateWrappers")
     boolean updateWrappers(@RequestBody LambdaUpdateWrapper<ArchiveFile> eq);
 

+ 21 - 5
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -266,7 +266,7 @@ public class ArchivesAutoController extends BladeController {
 	@ApiOperation(value = "获取归档树同级节点", notes = "传入节点id")
 	public R test() {
 
-		archiveAutoPdfService.test();
+		archivesAutoService.test();
 		return R.data("");
 	}
 
@@ -377,11 +377,20 @@ public class ArchivesAutoController extends BladeController {
 	@ApiOperation(value = "案卷迁移", notes = "传入ids,nodeId")
 	public R move(@ApiParam(value = "主键集合", required = true) @RequestParam String ids, @RequestParam Long nodeId) {
 
+		ArchiveTreeContract node = archiveTreeContractClient.getArchiveTreeContractById(nodeId);
+		if (node == null) {
+			return R.fail("找不到迁移的节点id");
+		}
+
 		List<ArchivesAuto> archivesAutos = archivesAutoService.listByIds(Func.toLongList(ids));
 		for (ArchivesAuto ar  :archivesAutos) {
 			ar.setNodeId(nodeId);
+			ar.setTreeSort(node.getTreeSort());
+			ar.setContractId(node.getContractId());
+//			if (node.getStorageType()!= null){
+//				ar.setCarrierType(node.getStorageType().toString());
+//			}
 		}
-
 		return R.status(archivesAutoService.updateBatchById(archivesAutos));
 	}
 
@@ -390,10 +399,15 @@ public class ArchivesAutoController extends BladeController {
 	 */
 	@PostMapping("/removeFiles")
 	@ApiOperationSupport(order = 15)
-	@ApiOperation(value = "删除案卷的卷内文件", notes = "传入ids")
-	public R removeFiles(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+	@ApiOperation(value = "删除案卷的卷内文件", notes = "传入文件ids,归档archiveId")
+	public R removeFiles(@ApiParam(value = "主键集合", required = true) @RequestParam String ids, @RequestParam Long archiveId) {
 
-		return R.status(archivesAutoService.removeFiles(ids));
+		ArchivesAuto archivesAuto = archivesAutoService.getById(archiveId);
+		if (archivesAuto != null && archivesAuto.getIsLock() == 1) {
+			return R.fail("案卷锁定中,能不能删除卷内文件");
+		}
+
+		return R.status(archivesAutoService.removeFiles(ids,archiveId));
 	}
 
 	/**
@@ -418,4 +432,6 @@ public class ArchivesAutoController extends BladeController {
 	public R batchUpdate(@Valid @RequestBody ArchivesAutoVO archivesAutoVo) {
 		return R.status(archivesAutoService.updateBatchById(JSONArray.parseArray(JSONObject.toJSONString(archivesAutoVo.getList()), ArchivesAuto.class)));
 	}
+
+
 }

+ 3 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchivesAutoService.java

@@ -68,9 +68,11 @@ public interface IArchivesAutoService extends BaseService<ArchivesAuto> {
 	boolean slipt(String ids);
 
 	//从案卷里删除文件
-	boolean removeFiles(String ids);
+	boolean removeFiles(String ids,Long archiveId);
 
 
 	//刷新某个项目的档号
 	void refreshFileNumberNoSlipt(Long projectId,Long contractId,Long nodeId);
+
+	void test();
 }

+ 53 - 12
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -236,6 +236,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	@Override
 	public void splitArchvies(Long projectId){
 		baseMapper.splitArchvies(projectId);
+		//TODO 清除案卷封面等pdf
+		//TODO 清除文件页面pdf
 	}
 
 	@Override
@@ -397,7 +399,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		if(StringUtils.isEmpty(treeCode)){
 			treeCode="owner";
 		}
-		String fileNumberPrefix=node.getFileNumberPrefix(); //档号前缀在节点设置
+		//String fileNumberPrefix=node.getFileNumberPrefix(); //档号前缀在节点设置
 		Integer fileNumberSuffix = null;//档号后缀按立卷单位生成流水号
 		if(indexMap.containsKey(treeCode)){
 			fileNumberSuffix = indexMap.get(treeCode);
@@ -407,7 +409,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			indexMap.put(treeCode,fileNumberSuffix+1);
 		}
 
-		archivesAuto.setFileNumber(fileNumberPrefix+fileNumberSuffix);//档号
+		archivesAuto.setFileNumber(fileNumberSuffix.toString());//档号
 		//archivesAuto.setMicron();//微缩号
 		archivesAuto.setUnit(unit);//立卷单位
 		//archivesAuto.setQuantity();//数量/单位
@@ -487,7 +489,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//TODO wbs节点
 		//不存在跨节点 项目名称+案卷题名规则(在后台归档目录树设置的)+后缀
 		//存在跨节点  获取当前所有节点的父级节点题名规则+所有同层级跨节点并卷的节点名称拼接+后缀
-		return archiveName;
+		return archiveName+node.getArchiveNameSuffix();
 	}
 	private String builtFilePageNo(ArchivesAuto archivesAuto,List<ArchiveFile> waitArchiveFiles){
 		//生成文件对应的页码,返回url
@@ -1192,29 +1194,53 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	}
 
 	/**
-	 * 从案卷删除文件
+	 * 从案卷删除文件,兵重新生成封面和打码文件
 	 * @param ids
 	 * @return
 	 */
-	public  boolean removeFiles(String ids) {
+	public  boolean removeFiles(String ids,Long archiveId) {
 		List<Long> fids = Func.toLongList(ids);
-		baseMapper.splitFiles(fids);
 
-		LambdaQueryWrapper<ArchiveFile> wrapper = Wrappers.lambdaQuery();
-		wrapper.in(ArchiveFile::getId, fids);
 
-		// 调用 listWrappers() 方法来获取符合条件的 ArchiveFile 对象列表
-		List<ArchiveFile> files = archiveFileClient.listWrappers(wrapper);
+		ArchivesAuto archivesAuto = this.getById(archiveId);
+
+		List<String> strIds = new ArrayList<>();
+		strIds.add(archiveId.toString());
+		List<ArchiveFile> files = archiveFileClient.getAllArchiveFileByArchiveIds(strIds);
+		List<ArchiveFile> waitArchiveFiles = new ArrayList<>();
 		if (files != null && files.size() > 0) {
 			List<String> removeFiles = new ArrayList<>();
-			//删除打码文件
 			for (ArchiveFile file : files) {
-				//打码的也要删除
+
 				if (StringUtils.isNotBlank(file.getPdfPageUrl())){
 					removeFiles.add(FileUtils.getAliYunSubUrl(file.getPdfPageUrl()));
 				}
+
+				if (!fids.contains(file.getId())) {
+					waitArchiveFiles.add(file);
+				}
 			}
+			//删除文件
 			iossClient.removeFiles(removeFiles);
+
+			//删除不用的案卷
+			if (fids.size() > 0) {
+				baseMapper.splitFiles(fids);
+			}
+
+			Long archivesAutoId = archivesAuto.getId();
+
+			//封面和生成文件页码
+			archiveAutoPdfService.buildArchiveFrontPdfs(archivesAuto.getProjectId(),archivesAuto,waitArchiveFiles);
+
+			builtFilePageNo(archivesAuto,waitArchiveFiles);//生成文件页码
+
+			for(ArchiveFile file:waitArchiveFiles){
+				file.setArchiveId(archivesAutoId);//设置文件所属案卷
+				file.setIsArchive(1);
+
+			}
+			archiveFileClient.updateArchiveFileForCreateArchive(waitArchiveFiles);
 		}
 
 		return true;
@@ -1303,6 +1329,21 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		return result;
 	}
 
+	public void test(){
+		String ids = "1654406079229165569";
+
+		List<Long> fids = Func.toLongList(ids);
+
+
+
+		LambdaQueryWrapper<ArchiveFile> wrapper = Wrappers.lambdaQuery();
+		wrapper.in(ArchiveFile::getId, fids);
+
+		// 调用 listWrappers() 方法来获取符合条件的 ArchiveFile 对象列表
+		List<ArchiveFile> files = archiveFileClient.listbyIds(fids);
+		System.out.println();
+	}
+
 
 
 }

+ 13 - 1
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.business.entity.ArchiveFile;
@@ -16,6 +17,8 @@ import org.springblade.common.utils.FileUtils;
 import org.springblade.common.vo.FileSize;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.feign.ContractClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.*;
@@ -77,9 +80,18 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
 
     @Override
     public List<ArchiveFile> listWrappers(LambdaQueryWrapper<ArchiveFile> in) {
-        return this.iArchiveFileService.list(in);
+        List<ArchiveFile> list =  this.iArchiveFileService.list(in);
+        return list;
     }
 
+    @Override
+    public List<ArchiveFile> listbyIds(@RequestBody List<Long> ids){
+        LambdaQueryWrapper<ArchiveFile> wrapper = Wrappers.lambdaQuery();
+        wrapper.in(ArchiveFile::getId, ids);
+        return  this.iArchiveFileService.list(wrapper);
+    }
+
+
     @Override
     public boolean updateWrappers(LambdaUpdateWrapper<ArchiveFile> eq) {
         return this.iArchiveFileService.update(eq);

+ 62 - 44
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java

@@ -286,7 +286,7 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
             }
 
             //修改数据
-            oldData.setPdfUrl("");
+//            oldData.setPdfUrl("");
             this.baseMapper.updateById(oldData);
 
         } else {
@@ -575,52 +575,70 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
                 return page;
 
             } else if (voResult.size() > 1) {
-                /**
-                 * @Author liuYC
-                 * @Date 2023年5月5日11:53:57
-                 * @Description
-                 *   处理资料查询,page资料填报数据与节点顺序同步展示问题,查询出当前选择节点下所有资料填报信息,
-                 *   然后匹配节点位置信息,不分页查询page数据,分页查询会导致数据匹配异常,处理完匹配后,再分页返回。
-                 */
-                //获取选择的节点下的所有子节点信息
-                WbsTreeContract oldSelectedNode = BeanUtil.copyProperties(node, WbsTreeContract.class);
-                List<WbsTreeContract> treeAll = this.getChildNodesZL(oldSelectedNode);
-                if (treeAll == null) {
-                    treeAll = new ArrayList<>();
-                }
-                treeAll.add(0, oldSelectedNode); //添加当前选择的节点为根节点
-
-                if (treeAll.size() > 1) {
-                    LinkedList<InformationQueryVO> resultData = new LinkedList<>();
-                    //将当前页数据中符合条件的记录都添加到结果列表中
-                    LinkedHashMap<Long, InformationQueryVO> dataMaps = voResult.stream()
-                            .collect(Collectors.toMap(InformationQueryVO::getWbsId, Function.identity(),
-                                    (oldValue, newValue) -> oldValue, LinkedHashMap::new));
-                    for (WbsTreeContract resultNode : treeAll) {
-                        InformationQueryVO queryVO = dataMaps.get(resultNode.getPKeyId());
-                        if (queryVO != null) {
-                            //按节点顺序插入
-                            resultData.add(queryVO);
-                        }
+                if (StringUtils.isNotEmpty(vo.getIsFirst())) {
+                    long current = (page.getCurrent() - 1) * page.getSize();
+                    if (current < 0) {
+                        throw new IllegalArgumentException("当前页码不能小于0");
+                    }
+                    //分页
+                    int currentNow = (int) (current / page.getSize() + 1); //当前页码
+                    int pageSize = (int) page.getSize(); //每页大小
+                    //计算起始位置和结束位置
+                    int fromIndex = (currentNow - 1) * pageSize;
+                    int toIndex = Math.min(currentNow * pageSize, voResult.size());
+                    List<InformationQueryVO> subList = voResult.subList(fromIndex, toIndex);
+                    page.setRecords(subList);
+                    page.setTotal(voResult.size());
+                    return page;
+                } else {
+
+                    /**
+                     * @Author liuYC
+                     * @Date 2023年5月5日11:53:57
+                     * @Description
+                     *   处理资料查询,page资料填报数据与节点顺序同步展示问题,查询出当前选择节点下所有资料填报信息,
+                     *   然后匹配节点位置信息,不分页查询page数据,分页查询会导致数据匹配异常,处理完匹配后,再分页返回。
+                     */
+                    //获取选择的节点下的所有子节点信息
+                    WbsTreeContract oldSelectedNode = BeanUtil.copyProperties(node, WbsTreeContract.class);
+                    List<WbsTreeContract> treeAll = this.getChildNodesZL(oldSelectedNode);
+                    if (treeAll == null) {
+                        treeAll = new ArrayList<>();
                     }
-                    if (resultData.size() > 0) {
-                        long current = (page.getCurrent() - 1) * page.getSize();
-                        if (current < 0) {
-                            throw new IllegalArgumentException("当前页码不能小于0");
+                    treeAll.add(0, oldSelectedNode); //添加当前选择的节点为根节点
+
+                    if (treeAll.size() > 1) {
+                        LinkedList<InformationQueryVO> resultData = new LinkedList<>();
+                        //将当前页数据中符合条件的记录都添加到结果列表中
+                        LinkedHashMap<Long, InformationQueryVO> dataMaps = voResult.stream()
+                                .collect(Collectors.toMap(InformationQueryVO::getWbsId, Function.identity(),
+                                        (oldValue, newValue) -> oldValue, LinkedHashMap::new));
+                        for (WbsTreeContract resultNode : treeAll) {
+                            InformationQueryVO queryVO = dataMaps.get(resultNode.getPKeyId());
+                            if (queryVO != null) {
+                                //按节点顺序插入
+                                resultData.add(queryVO);
+                            }
                         }
-                        //分页
-                        int currentNow = (int) (current / page.getSize() + 1); //当前页码
-                        int pageSize = (int) page.getSize(); //每页大小
-                        //计算起始位置和结束位置
-                        int fromIndex = (currentNow - 1) * pageSize;
-                        int toIndex = Math.min(currentNow * pageSize, resultData.size());
-                        List<InformationQueryVO> subList = resultData.subList(fromIndex, toIndex);
-                        page.setRecords(subList);
-                        page.setTotal(resultData.size());
-                        return page;
+                        if (resultData.size() > 0) {
+                            long current = (page.getCurrent() - 1) * page.getSize();
+                            if (current < 0) {
+                                throw new IllegalArgumentException("当前页码不能小于0");
+                            }
+                            //分页
+                            int currentNow = (int) (current / page.getSize() + 1); //当前页码
+                            int pageSize = (int) page.getSize(); //每页大小
+                            //计算起始位置和结束位置
+                            int fromIndex = (currentNow - 1) * pageSize;
+                            int toIndex = Math.min(currentNow * pageSize, resultData.size());
+                            List<InformationQueryVO> subList = resultData.subList(fromIndex, toIndex);
+                            page.setRecords(subList);
+                            page.setTotal(resultData.size());
+                            return page;
 
-                    } else {
-                        return page.setRecords(null);
+                        } else {
+                            return page.setRecords(null);
+                        }
                     }
                 }
             }

+ 7 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -21,6 +21,7 @@ import org.apache.commons.codec.Charsets;
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.poi.ss.usermodel.CellStyle;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
@@ -1857,8 +1858,13 @@ public class ExcelTabController extends BladeController {
                             CellRange cellRange = columns[i];
                             System.out.println(cellRange.getStyle().getFont().getSize());
                             if (cellRange.getStyle().getFont().getSize() >= 12) {
+                                String title = projectInfo.getProjectName();
+                                if (title.length() >= 30) {
+                                    cellRange.setRowHeight(40);
+                                    cellRange.getStyle().setWrapText(true);
+                                }
+                                cellRange.getStyle().getFont().setSize(18);
                                 cellRange.setText(projectInfo.getProjectName());
-                                cellRange.getStyle().getFont().setSize(20);
                                 break;
                             }
                         }

+ 6 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FirstController.java

@@ -251,8 +251,13 @@ public class FirstController extends BladeController {
                                         CellRange cellRange = columns[i];
                                         System.out.println(cellRange.getStyle().getFont().getSize());
                                         if (cellRange.getStyle().getFont().getSize() > 12 && StringUtils.isBlank(cellRange.getText())) {
+                                            String title = projectInfo.getProjectName();
+                                            if (title.length() >= 30) {
+                                                cellRange.setRowHeight(40);
+                                                cellRange.getStyle().setWrapText(true);
+                                            }
+                                            cellRange.getStyle().getFont().setSize(18);
                                             cellRange.setText(projectInfo.getProjectName());
-                                            cellRange.getStyle().getFont().setSize(14);
                                             break;
                                         }
                                     }

+ 6 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -681,12 +681,12 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     org.springblade.manager.entity.TableInfo table = tableInfoService.getBaseMapper().selectById(wbsTreePrivate.getInitTableId());
                     if (ObjectUtil.isNotEmpty(table)) {
                         //获取首件记录ID
-//                        String firstId = tableInfoList.get(0).getFirstId();
-                        String firstId = "";
-                        InformationQuery firstInfoByWbsId = informationQueryClient.getFirstInfoByWbsId(firstNodeId);
-                        if (firstInfoByWbsId != null){
-                            firstId = firstInfoByWbsId.getId() + "";
-                        }
+                        String firstId = tableInfoList.get(0).getFirstId();
+//                        String firstId = "";
+//                        InformationQuery firstInfoByWbsId = informationQueryClient.getFirstInfoByWbsId(firstNodeId);
+//                        if (firstInfoByWbsId != null){
+//                            firstId = firstInfoByWbsId.getId() + "";
+//                        }
                         if (StringUtils.isNotEmpty(firstId)) {
                             //删除掉旧数据
                             this.jdbcTemplate.execute("DELETE FROM " + table.getTabEnName() + " WHERE group_id = " + firstId);