Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

liuyc 2 gadi atpakaļ
vecāks
revīzija
21d852e90a
19 mainītis faili ar 192 papildinājumiem un 99 dzēšanām
  1. 22 6
      blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/LargeFileEndpoint.java
  2. 2 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ElementFormulaMapping.java
  3. 3 3
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ArchiveTreeContractClient.java
  4. 1 0
      blade-service-api/pom.xml
  5. 22 8
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java
  6. 24 17
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java
  7. 10 10
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  8. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java
  9. 52 34
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml
  10. 19 6
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java
  11. 5 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java
  12. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsParamController.java
  13. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeContractImpl.java
  14. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.java
  15. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml
  16. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ElementFormulaMappingMapper.xml
  17. 3 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  18. 20 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java
  19. 1 0
      blade-service/pom.xml

+ 22 - 6
blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/LargeFileEndpoint.java

@@ -295,13 +295,24 @@ public class LargeFileEndpoint {
 		QueryWrapper<LargeFile> wrapper = new QueryWrapper<LargeFile>()
 				.eq("file_key", param.getIdentifier()).eq("is_deleted",0).eq("shard_index",param.getChunkNumber()).orderByDesc("shard_index");
 		LargeFile list = iLargeFileService.getOne(wrapper);
-		if(list != null ){
-			result.setSuccess(true);
-			result.setMsg("该分片已上传!");
-			result.setData(list.getShardIndex());
-			result.setCode(200);
-			return result;
+		int state =0;
+
+		if(list != null){
+			if(StringUtils.isNotEmpty(list.getPath())){
+				File chfile = new File(list.getPath());
+				if(chfile.exists()){
+					result.setSuccess(true);
+					result.setMsg("该分片已上传!");
+					result.setData(list.getShardIndex());
+					result.setCode(200);
+					return result;
+				}else{
+					iLargeFileService.remove(wrapper);
+				}
+			}
 		}
+
+
 		// 文件名称
 		String fileName = getFileName(param);
 		// 临时文件名称
@@ -309,6 +320,7 @@ public class LargeFileEndpoint {
 		// 获取文件路径
 		/**Windows文件路径要加在哪个盘**/
 		String filePath =ParamCache.getValue(CommonConstant.SYS_LOCAL_URL)+"largeFile/";
+		//String filePath ="/Users/hongchuangyanfa/Desktop/largeFile/";
 
 		File tempFile = buildUploadFile(tempFileName);
 
@@ -336,6 +348,8 @@ public class LargeFileEndpoint {
 		largeFile.setSuffix(param.getObjectType());
 		iLargeFileService.save(largeFile);
 
+		if(param.getTotalChunks()== param.getChunkNumber()){
+			Thread.sleep(400);
 		//第八步 检查文件是否全部完成上传
 		lock.lock();
 		try {
@@ -404,6 +418,7 @@ public class LargeFileEndpoint {
 		} finally {
 			lock.unlock();
 		}
+		}
 		result.setCode(200);
 		result.setSuccess(true);
 		result.setMsg("上传成功!");
@@ -451,6 +466,7 @@ public class LargeFileEndpoint {
 	 */
 	private String buildUploadDir() {
 		String fullDir =ParamCache.getValue(CommonConstant.SYS_LOCAL_URL)+"largeFile/";
+		//String fullDir ="/Users/hongchuangyanfa/Desktop/largeFile/";
 		File dir = new File(fullDir);
 		if (!dir.exists()) {
 			dir.mkdirs();

+ 2 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ElementFormulaMapping.java

@@ -22,6 +22,8 @@ public class ElementFormulaMapping extends BaseEntity {
     private Long nodeId;
     @Size(max = 20)
     private Long formulaId;
+    @Size(max = 20)
+    private Long wbsId;
     private Long projectId;
     private Integer scope;
     private Long paramId;

+ 3 - 3
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ArchiveTreeContractClient.java

@@ -18,7 +18,7 @@ public interface ArchiveTreeContractClient {
     String API_PREFIX = "/api/manager/archiveContract";
 
     @PostMapping(API_PREFIX + "/queryAllChildByAncestors")
-    List<ArchiveTreeContract> queryAllChildByAncestors(@RequestParam String id,@RequestParam Long contractId);
+    List<ArchiveTreeContract> queryAllChildByAncestors(@RequestParam String id,@RequestParam(required = false) Long contractId);
 
 
     @PostMapping(API_PREFIX + "/getHavedFileNodeByProjectID")
@@ -30,8 +30,8 @@ public interface ArchiveTreeContractClient {
     @PostMapping(API_PREFIX + "/getListByProjectId")
     List<ArchiveTreeContract> getListByProjectId(@RequestParam Long projectId);
 
-    @PostMapping(API_PREFIX + "/getSelectNodeByGroupId")
-    List<ArchiveTreeContract> getSelectNodeByGroupId(@RequestParam Long projectId,@RequestParam Long archiveAutoGroupId);
+    @PostMapping(API_PREFIX + "/getStorageNodeByGroupId")
+    List<ArchiveTreeContract> getStorageNodeByGroupId(@RequestParam Long projectId,@RequestParam Long archiveAutoGroupId);
 
     @PostMapping(API_PREFIX + "/getArchiveTreeContractById")
     ArchiveTreeContract getArchiveTreeContractById(@RequestParam Long id);

+ 1 - 0
blade-service-api/pom.xml

@@ -25,6 +25,7 @@
         <module>blade-manager-api</module>
         <module>blade-e-visa-api</module>
         <module>blade-archive-api</module>
+        <module>blade-control-api</module>
     </modules>
 
     <dependencies>

+ 22 - 8
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java

@@ -23,7 +23,9 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.evisa.feign.EVisaClient;
 import org.springblade.manager.entity.ArchiveTree;
 import org.springblade.manager.entity.ArchiveTreeContract;
+import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.feign.ArchiveTreeContractClient;
+import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springblade.resource.feign.IOSSClient;
 import org.springframework.web.bind.annotation.*;
@@ -54,6 +56,7 @@ public class ArchiveFileController extends BladeController {
     private final ArchiveTreeContractClient archiveTreeContractClient;
     private final EVisaClient eVisaClient;
     private final WbsTreeContractClient wbsTreeContractClient;
+    private final ContractClient contractClient;
     /**
      * 上传文件
      *
@@ -113,15 +116,15 @@ public class ArchiveFileController extends BladeController {
     @ApiOperation(value = "分页")
     public R<Object> page( ArchiveFileVO queryVo){
         if(queryVo.getNodeIds().isEmpty() || queryVo.getNodeIds().equals("")){
-            return  R.data(null);
-        }
-        List<ArchiveTreeContract> archiveTreeContracts = this.archiveTreeContractClient.queryAllChildByAncestors(queryVo.getNodeIds(),queryVo.getContractId() == null?null:Long.parseLong(queryVo.getContractId()));
-        if(archiveTreeContracts != null && archiveTreeContracts.size() > 0){
-            List<String> ids = JSONArray.parseArray(JSONObject.toJSONString(archiveTreeContracts.stream().map(ArchiveTreeContract::getId).distinct().collect(Collectors.toList())), String.class);
-            ids.add(queryVo.getNodeIds());
-            queryVo.setNodeIdArray(ids);
-        }
 
+        }else {
+            List<ArchiveTreeContract> archiveTreeContracts = this.archiveTreeContractClient.queryAllChildByAncestors(queryVo.getNodeIds(), queryVo.getContractId() == null ? null : Long.parseLong(queryVo.getContractId()));
+            if (archiveTreeContracts != null && archiveTreeContracts.size() > 0) {
+                List<String> ids = JSONArray.parseArray(JSONObject.toJSONString(archiveTreeContracts.stream().map(ArchiveTreeContract::getId).distinct().collect(Collectors.toList())), String.class);
+                ids.add(queryVo.getNodeIds());
+                queryVo.setNodeIdArray(ids);
+            }
+        }
         return R.data(this.archiveFileClient.selectArchiveFilePage(queryVo));
     }
     /**
@@ -320,4 +323,15 @@ public class ArchiveFileController extends BladeController {
     public R removeAllocation(@RequestParam String boxName,@RequestParam Integer boxNumber) {
         return R.status(this.archiveFileClient.updateArchiveFileByBoxNameOne(boxName,boxNumber));
     }
+
+    /**
+     * 获取当前责任者
+     */
+    @GetMapping("/getDutyUser")
+    @ApiOperationSupport(order = 15)
+    @ApiOperation(value = "文件收集-上传文件责任者")
+    public R getDutyUser(Long contractId) {
+        ContractInfo contractById = contractClient.getContractById(contractId);
+        return R.data(contractById);
+    }
 }

+ 24 - 17
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -326,25 +326,32 @@ public class ArchivesAutoController extends BladeController {
 	 */
 	@PostMapping("/archiveAutoMethod")
 	public R archiveAutoMethod(Long projectId,Long contractId,Long nodeId) {
-		//先验证当前项目是否在自动组卷中,组卷中直接返回
-		ProjectInfo projectInfo = projectClient.getById(String.valueOf(projectId));
-		Integer isArchivesAuto = projectInfo.getIsArchivesAuto();
-		if(isArchivesAuto!=null && isArchivesAuto==1){
-			return R.fail("当前项目已经在自动组卷中");
+		try{
+			//先验证当前项目是否在自动组卷中,组卷中直接返回
+			ProjectInfo projectInfo = projectClient.getById(String.valueOf(projectId));
+			Integer isArchivesAuto = projectInfo.getIsArchivesAuto();
+			if(isArchivesAuto!=null && isArchivesAuto==1){
+				return R.fail("当前项目已经在自动组卷中");
+			}
+			//设置自动组卷中
+			projectClient.updateIsArchivesAutoById(projectId,1);
+
+			//将项目未锁定案卷拆卷
+			archivesAutoService.splitArchvies(projectId);
+			//项目自动组卷入口
+			archivesAutoService.archiveAutoMethod(projectId);
+			//刷新项目档号
+			archivesAutoService.refreshFileNumberNoSlipt(projectId,contractId,nodeId);
+
+			return R.data("自动组卷结束");
+		}catch (Exception e){
+			e.printStackTrace();
+			return R.fail(e.getMessage());
+		}finally {
+			//设置自动组卷结束
+			projectClient.updateIsArchivesAutoById(projectId,0);
 		}
-		//设置自动组卷中
-		projectClient.updateIsArchivesAutoById(projectId,1);
-
-		//将项目未锁定案卷拆卷
-		archivesAutoService.splitArchvies(projectId);
-		//项目自动组卷入口
-		archivesAutoService.archiveAutoMethod(projectId);
-		//刷新项目档号
-		archivesAutoService.refreshFileNumberNoSlipt(projectId,contractId,nodeId);
 
-		//设置自动组卷结束
-		projectClient.updateIsArchivesAutoById(projectId,0);
-		return R.data("自动组卷结束");
 	}
 
 	/**

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

@@ -532,8 +532,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 		String archiveStartDateAndEndDate = getArchiveStartDateAndEndDate(waitArchiveFiles);
 		String[] split = archiveStartDateAndEndDate.split(",");
-		String startDate=split[0];
-		String endDate=split[1];
+		String startDate= split.length>=1 ?split[0]:"";
+		String endDate=split.length>=2 ?split[1]:"";
 		int fileN =waitArchiveFiles.size();
 
 		String archiveName=builtArchiveName(waitArchiveFiles,node,false);//获取案卷题名
@@ -565,14 +565,14 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	private void createArchive2(List<ArchiveFile> waitArchiveFiles, Long archiveAutoGroupId,Long projectId){
 
 		//获取同一分类archiveAutoGroupId下设置的(设置规则时选中的)节点,排好序
-		List<ArchiveTreeContract> selectList=archiveTreeContractClient.getSelectNodeByGroupId(projectId,archiveAutoGroupId);
-		//分类并卷节点默认采用设置节点的第一个节点为案卷归属节点。
+		List<ArchiveTreeContract> selectList=archiveTreeContractClient.getStorageNodeByGroupId(projectId,archiveAutoGroupId);
+		//分类并卷节点默认采用同类型下第一个存储节点为归属节点
 		ArchiveTreeContract node = selectList.get(0);
 		//获取案卷文件起止时间
 		String archiveStartDateAndEndDate = getArchiveStartDateAndEndDate(waitArchiveFiles);
 		String[] split = archiveStartDateAndEndDate.split(",");
-		String startDate=split[0];
-		String endDate=split[1];
+		String startDate= split.length>=1 ?split[0]:"";
+		String endDate=split.length>=2 ?split[1]:"";
 		int fileN =waitArchiveFiles.size();
 		//获取案卷内文件总页数
 		int pageN=0;
@@ -610,8 +610,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//获取案卷文件起止时间
 		String archiveStartDateAndEndDate = getArchiveStartDateAndEndDate(waitArchiveFiles);
 		String[] split = archiveStartDateAndEndDate.split(",");
-		String startDate=split[0];
-		String endDate=split[1];
+		String startDate= split.length>=1 ?split[0]:"";
+		String endDate=split.length>=2 ?split[1]:"";
 		int fileN =waitArchiveFiles.size();
 
 
@@ -654,8 +654,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//获取案卷文件起止时间
 		String archiveStartDateAndEndDate = getArchiveStartDateAndEndDate(waitArchiveFiles);
 		String[] split = archiveStartDateAndEndDate.split(",");
-		String startDate=split[0];
-		String endDate=split[1];
+		String startDate= split.length>=1 ?split[0]:"";
+		String endDate=split.length>=2 ?split[1]:"";
 		int fileN =waitArchiveFiles.size();
 		//获取案卷内文件总页数
 		int pageN=0;

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java

@@ -36,7 +36,7 @@ public interface ArchiveFileMapper extends BaseMapper<ArchiveFile> {
 
 	Integer selectArchiveFilePageByBoxNameCount(@Param("vo") ArchiveFileVO vo);
 	/**
-	 * 自定义分页
+	 * 自定义分页 (如果有节点id传入,排序优先级按节点排序)
 	 */
 	List<ArchiveFile> selectArchiveFilePage(@Param("current") Integer current, @Param("size") Integer size, @Param("vo") ArchiveFileVO vo);
 

+ 52 - 34
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -67,84 +67,102 @@
     </update>
 
     <select id="selectArchiveFileCount" resultType="java.lang.Integer">
-        select count(id) from u_archive_file where is_deleted = 0
+        select count(u.id) from u_archive_file u
+        <if test="vo.nodeIds != null and vo.nodeIds != ''">
+         left join m_archive_tree_contract t on t.id = u.node_id
+        </if>
+         where u.is_deleted = 0
         <if test="vo.isApprovalValue != null and vo.isApprovalValue != ''">
-            and status = #{vo.isApprovalValue}
+            and u.status = #{vo.isApprovalValue}
         </if>
         <if test="vo.isCertificationValue != null and vo.isCertificationValue != ''">
-            and is_certification = #{vo.isCertificationValue}
+            and u.is_certification = #{vo.isCertificationValue}
         </if>
         <if test="vo.projectId != null and vo.projectId != ''">
-            and project_id = #{vo.projectId}
+            and u.project_id = #{vo.projectId}
         </if>
         <if test="vo.archiveId != null and vo.archiveId != ''">
-            and archive_id = #{vo.archiveId}
+            and u.archive_id = #{vo.archiveId}
         </if>
         <choose>
             <when test="vo.isArchive != null and vo.isArchive != ''">
-                and  is_auto_file = #{vo.isArchive}
+                and  u.is_auto_file = #{vo.isArchive}
+            </when>
+            <when test="vo.archiveId != null and vo.archiveId != ''">
+                and 1=1
             </when>
             <otherwise>
-                and (is_auto_file is null or is_auto_file != 1)
+                and (u.is_auto_file is null or u.is_auto_file != 1)
             </otherwise>
         </choose>
         <if test="vo.nodeIds != null and vo.nodeIds != ''">
-            and node_id in
+            and u.node_id in
             <foreach collection="vo.nodeIdArray" item="nodeId" open="(" separator="," close=")">
                 #{nodeId}
             </foreach>
         </if>
         <if test="vo.queryValue != null and vo.queryValue != ''">
             and (
-                file_name like concat('%',#{vo.queryValue},'%') or
-                file_number like concat('%',#{vo.queryValue},'%') or
-                duty_user like concat('%',#{vo.queryValue},'%') or
-                sheet_source like concat('%',#{vo.queryValue},'%') or
-                drawing_no like concat('%',#{vo.queryValue},'%') or
-                cite_change_number like concat('%',#{vo.queryValue},'%')
+            u.file_name like concat('%',#{vo.queryValue},'%') or
+            u.file_number like concat('%',#{vo.queryValue},'%') or
+            u.duty_user like concat('%',#{vo.queryValue},'%') or
+            u.sheet_source like concat('%',#{vo.queryValue},'%') or
+            u.drawing_no like concat('%',#{vo.queryValue},'%') or
+            u.cite_change_number like concat('%',#{vo.queryValue},'%')
                 )
         </if>
     </select>
 
     <select id="selectArchiveFilePage" resultMap="archiveFileResultMap">
-        select * from u_archive_file where is_deleted = 0
+        select u.* from u_archive_file u
+        <if test="vo.nodeIds != null and vo.nodeIds != ''">
+            left join m_archive_tree_contract t on t.id = u.node_id
+        </if>
+        where u.is_deleted = 0
         <if test="vo.isApprovalValue != null and vo.isApprovalValue != ''">
-            and status = #{vo.isApprovalValue}
+            and u.status = #{vo.isApprovalValue}
         </if>
         <if test="vo.isCertificationValue != null and vo.isCertificationValue != ''">
-            and is_certification = #{vo.isCertificationValue}
+            and u.is_certification = #{vo.isCertificationValue}
         </if>
         <if test="vo.projectId != null and vo.projectId != ''">
-            and project_id = #{vo.projectId}
+            and u.project_id = #{vo.projectId}
         </if>
         <if test="vo.archiveId != null and vo.archiveId != ''">
-            and archive_id = #{vo.archiveId}
+            and u.archive_id = #{vo.archiveId}
         </if>
         <choose>
             <when test="vo.isArchive != null and vo.isArchive != ''">
-                and  is_auto_file = #{vo.isArchive}
+                and  u.is_auto_file = #{vo.isArchive}
+            </when>
+            <when test="vo.archiveId != null and vo.archiveId != ''">
+                and 1=1
             </when>
             <otherwise>
-                and (is_auto_file is null or is_auto_file != 1)
+                and (u.is_auto_file is null or u.is_auto_file != 1)
             </otherwise>
         </choose>
         <if test="vo.nodeIds != null and vo.nodeIds != ''">
-            and node_id in
+            and u.node_id in
             <foreach collection="vo.nodeIdArray" item="nodeId" open="(" separator="," close=")">
                 #{nodeId}
             </foreach>
         </if>
         <if test="vo.queryValue != null and vo.queryValue != ''">
             and (
-                file_name like concat('%',#{vo.queryValue},'%') or
-                file_number like concat('%',#{vo.queryValue},'%') or
-                duty_user like concat('%',#{vo.queryValue},'%') or
-                sheet_source like concat('%',#{vo.queryValue},'%') or
-                drawing_no like concat('%',#{vo.queryValue},'%') or
-                cite_change_number like concat('%',#{vo.queryValue},'%')
+            u.file_name like concat('%',#{vo.queryValue},'%') or
+            u.file_number like concat('%',#{vo.queryValue},'%') or
+            u.duty_user like concat('%',#{vo.queryValue},'%') or
+            u.sheet_source like concat('%',#{vo.queryValue},'%') or
+            u.drawing_no like concat('%',#{vo.queryValue},'%') or
+            u.cite_change_number like concat('%',#{vo.queryValue},'%')
             )
         </if>
-        order by sort,create_time DESC
+        order by
+        <if test="vo.nodeIds != null and vo.nodeIds != ''">
+             t.tree_sort,
+        </if>
+        u.sort,u.create_time
         limit #{current}, #{size}
     </select>
 
@@ -185,7 +203,7 @@
             cite_change_number like concat('%',#{vo.queryValue},'%')
             )
         </if>
-        order by box_number,sort,create_time DESC
+        order by box_number,sort,create_time
 
     </select>
     <select id="selectArchiveFilePageByBoxName" resultMap="archiveFileResultMap">
@@ -225,7 +243,7 @@
             cite_change_number like concat('%',#{vo.queryValue},'%')
             )
         </if>
-        order by box_number,sort,create_time DESC
+        order by box_number,sort,create_time
         limit #{current}, #{size}
     </select>
     <select id="getDeleteDataByIds" resultType="org.springblade.business.entity.ArchiveFile">
@@ -253,7 +271,7 @@
 
     <select id="selectBoxNameAndBoxNumber" resultType="java.util.Map">
         select box_name as boxName,box_number as boxNumber,group_concat(DISTINCT id ORDER BY id ASC SEPARATOR ',') as ids
-         from u_archive_file where node_id = #{nodeId} and box_number is not null
+         from u_archive_file where node_id = #{nodeId} and (box_number is not null or box_number != '')
          group by box_name order by box_number asc
     </select>
 
@@ -274,7 +292,7 @@
                 #{id}
             </foreach>
         </if>
-        order by sort,create_time DESC
+        order by sort,create_time
     </select>
     <select id="getArchiveFileByFileIds" resultMap="archiveFileResultMap">
         select * from u_archive_file where is_deleted = 0
@@ -284,7 +302,7 @@
                 #{id}
             </foreach>
         </if>
-        order by sort,create_time DESC
+        order by sort,create_time
     </select>
     <select id="getListByProjectId" resultType="org.springblade.business.entity.ArchiveFile">
         select id,project_id as projectId,node_id as nodeId,file_number as fileNumber,file_name as fileName,file_time as fileTime,file_url as fileUrl,pdf_file_url as pdfFileUrl,archive_id as archiveId,status,is_deleted as isDeleted,create_time as createTime

+ 19 - 6
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java

@@ -17,10 +17,7 @@ import org.springblade.system.feign.IDictBizClient;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  *  服务实现类
@@ -98,7 +95,21 @@ public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, A
 
 	@Override
 	public void updateArchiveFileSort(List<ArchiveFileVO> list) {
-
+		List<Integer> listInt = new ArrayList<>();
+		for(int i=0;i<list.size();i++){
+			listInt.add(list.get(i).getSort());
+		}
+		//按照从大到小进行排序
+//		Collections.sort(listInt, new Comparator<Integer>() {
+//			@Override
+//			public int compare(Integer integer, Integer t1) {
+//				return integer-t1;
+//			}
+//		});
+		Collections.sort(listInt);
+		for(int i=0;i<list.size();i++){
+			list.get(i).setSort(listInt.get(i));
+		}
 		this.updateBatchById(JSONArray.parseArray(JSONObject.toJSONString(list), ArchiveFile.class));
 	}
 
@@ -115,7 +126,9 @@ public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, A
 			baseMapper.updateArchiveFileByBoxNameOne(boxName,boxNumber);
 			if(map.get("ids") != null ) {
 				String ids = (String) map.get("ids");
-				baseMapper.updateArchiveFileByBoxName(Func.toLongList(ids), boxName, boxNumber);
+				if(!ids.isEmpty()) {
+					baseMapper.updateArchiveFileByBoxName(Func.toLongList(ids), boxName, boxNumber);
+				}
 			}
 		}
 		return true;

+ 5 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java

@@ -14,6 +14,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
@@ -99,6 +100,9 @@ public class FormulaController {
                  efm.setScope(f.getScope());
                  efm.setNodeId(f.getNodeId());
                  efm.setProjectId(f.getProjectId());
+                  if(f.getScope()<=2&&f.getScope()>0){
+                         throw new ServiceException("缺少wbsId");
+                  }
                  this.elementFormulaMappingService.save(efm);
                  /*假如不存在projectId则认为是系统级模版公式,必须同步给所有项目TODO*/
                  return R.data(fa.getId(),"新增成功");
@@ -167,7 +171,7 @@ public class FormulaController {
     public R<FormulaBean> detail(FormulaBean f) {
         if(f.getElementId()!=null){
             StringBuilder sb = new StringBuilder("select b.* from m_element_formula_mapping a INNER JOIN m_formula b on a.formula_id=b.id where a.element_id="+f.getElementId()+" and b.is_deleted=0 and a.scope ="+f.getScope());
-           if(StringUtils.isEquals(0,f.getScale())){
+           if(StringUtils.isNotEquals(0,f.getScope())){
                if(Func.isNotEmpty(f.getNodeId())){
                    sb.append(" and a.node_id=").append(f.getNodeId());
                }

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

@@ -92,7 +92,7 @@ public class WbsParamController {
                 /*应该检查接触关联的参数公式还是否存在引用,不存在的情况也要删去*/
             }
             if (CollectionUtil.isNotEmpty(wps)) {
-                Map<Boolean, List<WbsParamBean>> map = wps.stream().collect(Collectors.partitioningBy(e -> e.getId() != null));
+                Map<Boolean, List<WbsParamBean>> map = wps.stream().peek(w-> w.setType(pb.getType())).collect(Collectors.partitioningBy(e -> e.getId() != null));
                 List<WbsParamBean> saveList = map.get(false);
                 List<WbsParamBean> updateList = map.get(true);
                 if (CollectionUtil.isNotEmpty(saveList)) {

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeContractImpl.java

@@ -55,8 +55,8 @@ public class ArchiveTreeContractImpl implements ArchiveTreeContractClient {
     }
 
     @Override
-    public List<ArchiveTreeContract> getSelectNodeByGroupId(Long projectId,Long archiveAutoGroupId) {
-        List<ArchiveTreeContract> list = archiveTreeContractMapper.getSelectNodeByGroupId(projectId,archiveAutoGroupId);
+    public List<ArchiveTreeContract> getStorageNodeByGroupId(Long projectId,Long archiveAutoGroupId) {
+        List<ArchiveTreeContract> list = archiveTreeContractMapper.getStorageNodeByGroupId(projectId,archiveAutoGroupId);
         archiveTreeContractService.fillDefaultArchiveAutoInfo(list);
         return list;
     }

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.java

@@ -74,7 +74,7 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
 
 	List<ArchiveTreeContract> getListByProjectId(@Param("projectId")Long projectId);
 
-	List<ArchiveTreeContract> getSelectNodeByGroupId(@Param("projectId") Long projectId,@Param("archiveAutoGroupId") Long archiveAutoGroupId);
+	List<ArchiveTreeContract> getStorageNodeByGroupId(@Param("projectId") Long projectId,@Param("archiveAutoGroupId") Long archiveAutoGroupId);
 
 	@MapKey("id")
 	List<Map<String, Object>> getArchiveTreeAndArchiveCount(@Param("projectId") Long projectId,@Param("nodeId") Long nodeId);

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -338,7 +338,7 @@
     </select>
 
 
-    <select id="getSelectNodeByGroupId" resultMap="archiveTreeContractResultMap">
+    <select id="getStorageNodeByGroupId" resultMap="archiveTreeContractResultMap">
         SELECT
             *
         FROM
@@ -348,7 +348,7 @@
           AND project_id = #{projectId}
           AND is_deleted = 0
           AND archive_auto_type =2
-          AND archive_auto_group_select =1
+          AND is_storage_node =1
           AND archive_auto_group_id =#{archiveAutoGroupId}
         order by tree_sort asc
     </select>

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ElementFormulaMappingMapper.xml

@@ -12,6 +12,7 @@
         <result column="isDeleted" property="is_deleted"/>
         <result column="elementId" property="element_id"/>
         <result column="nodeId" property="node_id"/>
+        <result column="wbsId" property="wbs_id"/>
         <result column="formulaId" property="formula_id"/>
         <result column="projectId" property="project_id"/>
         <result column="paramId" property="param_id"/>

+ 3 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -755,7 +755,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             /*检验单附表处理*/
             List<FormData> inspectionList = new ArrayList<>();
             /*0检验表1评定表*/
-            this.tec.getTableAll().stream().filter(e -> e.getNodeName().contains("检验单") || e.getNodeName().contains("评定表")).forEach(e -> {
+            this.tec.getTableAll().stream().filter(e -> e.getTableType().equals(1) || e.getNodeName().contains("评定表")).forEach(e -> {
                 /*获取所有挂在表里的元素映射关系*/
                 this.tec.getKeyMappers().stream().filter(p -> p.getPkId().equals(e.getPKeyId())).forEach(k -> {
                     /*元素长度筛选超页的元素*/
@@ -779,7 +779,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                         WbsTreeContract wtc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getParentId, one.getParentId()).eq(WbsTreeContract::getContractId,tec.getContractId()).eq(WbsTreeContract::getWbsId, one.getWbsId()).and(e->e.eq(WbsTreeContract::getNodeName, pd?"质量检验评定表(附表)":"质量检验表(附表)").or().eq(WbsTreeContract::getFullName, pd?"质量检验评定表(附表)":"质量检验表(附表)")));
                         if (wtc != null) {
                             /*附表的顺序在检验单或者评定表之后*/
-                            int sort=this.tec.getTableAll().stream().filter(e -> e.getNodeName().contains("检验单") || e.getNodeName().contains("评定表")).map(NodeTable::getSort).max(Integer::compareTo).orElse(30);
+                            int sort=this.tec.getTableAll().stream().filter(e ->e.getTableType().equals(1) || e.getNodeName().contains("评定表")).map(NodeTable::getSort).max(Integer::compareTo).orElse(30);
                             this.wbsTreeContractService.update(Wrappers.<WbsTreeContract>lambdaUpdate()
                                     .set(WbsTreeContract::getSort,sort).set(WbsTreeContract::getContractType,-1).set(WbsTreeContract::getAncestors,one.getAncestors())
                                     .set(WbsTreeContract::getIsCopeTab,2)
@@ -1242,7 +1242,7 @@ public  List<ElementData> setScale(Integer scale,List<ElementData> data){
                 "from "+tableName+" a " +
                 "inner join m_table_info b on a.init_table_name=b.tab_en_name " +
                 "INNER JOIN m_wbs_form_element c on b.id=c.f_id " +
-                "where a.p_key_id in("+pkIds+")  ORDER BY field(a.p_key_id,"+pkIds+")");
+                "where a.p_key_id in("+pkIds+")  and c.is_deleted=0  ORDER BY field(a.p_key_id,"+pkIds+")");
     }
 
     private void setFormula(List<KeyMapper> list,List<Map<String,Object>> efMap){

+ 20 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -498,6 +498,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return integer > 0;
     }
 
+
+    /**
+     * @Param [id 表, nodeId 工序, type 1:WBS 0:项目]
+     **/
     @Override
     public List<WbsFormElementVO> selectFormElements(String id, String nodeId, Integer type) {
         List<WbsFormElementVO> wbsFormElements = wbsTreeMapper.selectFormElements(id);
@@ -517,7 +521,19 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             /*TYPE==1就是WBS级别*/
             Integer scopeA = com.mixsmart.utils.StringUtils.isEquals(type, 1) ? FormulaBean.WBS_GLOBAL : FormulaBean.PRO_GLOBAL;
             Integer scopeB = com.mixsmart.utils.StringUtils.isEquals(type, 1) ? FormulaBean.WBS_PART : FormulaBean.PRO_PART;
-            List<Long> longs = this.jdbcTemplate.queryForList("select a.id from m_wbs_form_element a inner join m_element_formula_mapping b on a.id=b.element_id where a.id in(" + elementIds + ") and b.scope=" + scopeA, Long.class);
+            String sqlTmp;
+            WbsTreePrivate treePrivate;
+            WbsTree wbsTree;
+            if (com.mixsmart.utils.StringUtils.isEquals(type, 1)){
+                 wbsTree =this.wbsTreeMapper.selectById(nodeId);
+                sqlTmp="select a.id from m_wbs_form_element a inner join m_element_formula_mapping b on a.id=b.element_id where a.id in(" + elementIds + ") and b.wbs_id="+wbsTree.getWbsId()+" and b.scope=" + scopeA;
+            }else  if (com.mixsmart.utils.StringUtils.isEquals(type, 0)){
+                 treePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, nodeId));
+                sqlTmp="select a.id from m_wbs_form_element a inner join m_element_formula_mapping b on a.id=b.element_id join m_wbs_tree_private c on c.parent_id=b.node_id where a.id in(" + elementIds + ") and c.project_id="+treePrivate.getProjectId()+" and b.scope=" + scopeA;
+            }else{
+                sqlTmp="select a.id from m_wbs_form_element a inner join m_element_formula_mapping b on a.id=b.element_id where a.id in(" + elementIds + ") and b.scope=" + scopeA;
+            }
+            List<Long> longs = this.jdbcTemplate.queryForList(sqlTmp, Long.class);
             wbsFormElements.forEach(e -> {
                 e.setGlobalFormula(longs.contains(e.getId()) ? 1 : 0);
             });
@@ -525,10 +541,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             if (com.mixsmart.utils.StringUtils.isEquals(type, 1)) {
                 sql = "select c.element_id from m_wbs_tree a INNER JOIN m_wbs_tree b on a.parent_id=b.id INNER JOIN m_element_formula_mapping c on b.id=c.node_id where  a.id=" + id + " and c.scope=" + scopeB + " and c.element_id in(" + elementIds + ")";
             } else if (com.mixsmart.utils.StringUtils.isEquals(type, 0)) {
-                WbsTreePrivate treePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, id));
-                sql = "select c.element_id from m_wbs_tree_private a INNER JOIN m_wbs_tree b on a.parent_id=b.id INNER JOIN m_element_formula_mapping c on b.id=c.node_id where  a.p_key_id=" + id + " and c.scope=" + scopeB + " and c.element_id in(" + elementIds + ")  and c.project_id=" + treePrivate.getProjectId();
+                 treePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, id));
+                sql = "select c.element_id from m_wbs_tree_private a  INNER JOIN m_element_formula_mapping c on a.parent_id=c.node_id where  a.p_key_id=" + id + " and c.scope=" + scopeB + " and c.element_id in(" + elementIds + ")  and c.project_id=" + treePrivate.getProjectId();
             } else if (com.mixsmart.utils.StringUtils.isEquals(type, 3)) {
-                WbsTreePrivate treePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, nodeId));
+                 treePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, nodeId));
                 sql = "select c.element_id from m_wbs_tree_private a INNER JOIN m_wbs_tree b on a.parent_id=b.id INNER JOIN m_element_formula_mapping c on b.id=c.node_id where  a.p_key_id=" + id + " and c.scope=35 and c.element_id in(" + elementIds + ")  and c.project_id=" + treePrivate.getProjectId();
             } else {
                 sql = "select c.element_id from m_wbs_tree a INNER JOIN m_wbs_tree b on a.parent_id=b.id INNER JOIN m_element_formula_mapping c on b.id=c.node_id where  a.id=" + id + " and c.scope=35 and c.element_id in(" + elementIds + ")";

+ 1 - 0
blade-service/pom.xml

@@ -25,6 +25,7 @@
         <module>blade-business</module>
         <module>blade-e-visa</module>
         <module>blade-archive</module>
+        <module>blade-control</module>
     </modules>
 
     <dependencies>