Browse Source

Merge remote-tracking branch 'origin/master'

liuyc 2 năm trước cách đây
mục cha
commit
aa32d83efc

+ 15 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ArchivesAutoVO.java

@@ -138,6 +138,21 @@ public class ArchivesAutoVO extends ArchivesAuto {
 	 */
 	private String contractType;
 
+	/**
+	 * 柜子编号
+	 */
+	private Integer cabinetNumber;
+
+	/**
+	 * 案卷在柜子里的状态
+	 */
+	private Integer isSelect;
+
+	/**
+	 * 柜子内部搜索
+	 */
+	private String innerSearch;
+
 	@ApiModelProperty("批量保存")
 	private List<ArchivesAutoVO> list;
 	/**

+ 5 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ContractInfo.java

@@ -158,6 +158,11 @@ public class ContractInfo extends BaseEntity {
     @ApiModelProperty(value = "是否引用编号 '0'否 '1'是")
     private Integer isReferenceNumber;
 
+    /**
+     * 是否正在自动组卷中  0否  1是
+     */
+    private Integer isArchivesAuto;
+
 
     public String archivesUnit() {
 

+ 2 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ContractClient.java

@@ -67,5 +67,7 @@ public interface ContractClient {
     @GetMapping(API_PREFIX + "/getContractListByProjectId")
     List<ContractInfo> getContractListByProjectId(@RequestParam Long projectId);
 
+    @GetMapping(API_PREFIX + "/updateIsArchivesAutoById")
+    void updateIsArchivesAutoById(@RequestParam Long id, @RequestParam Integer isArchivesAuto);
 
 }

+ 25 - 11
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -35,8 +35,10 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.entity.ArchiveTreeContract;
+import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.feign.ArchiveTreeContractClient;
+import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.ProjectClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -72,6 +74,8 @@ public class ArchivesAutoController extends BladeController {
 	private final IArchiveAutoPdfService archiveAutoPdfService;
 	private final ArchiveTreeContractClient archiveTreeContractClient;
 	private ProjectClient projectClient;
+	private ContractClient contractClient;
+
 	@Autowired
 	private ExecutorService executorService;
 	/**
@@ -141,8 +145,15 @@ public class ArchivesAutoController extends BladeController {
 			return R.data(pages);
 		}else {
 			//档案柜
-			List<Map<String,List<Map<String,String>>>> lists =  archivesAutoService.getArchivesCabinet(archivesAuto);
-			return R.data(lists);
+			if(archivesAuto.getCabinetNumber() == null) {
+				List<Map<String, List<Map<String, String>>>> lists = archivesAutoService.getArchivesCabinet(archivesAuto);
+				return R.data(lists);
+			}else {
+				//查询具体柜子里的数据
+				archivesAuto.setSize(160);
+				archivesAuto.setCurrent(archivesAuto.getCabinetNumber());
+				return archivesAutoService.pageByArchivesAuto2(archivesAuto);
+			}
 		}
 	}
 
@@ -333,9 +344,10 @@ public class ArchivesAutoController extends BladeController {
 	public R archiveAutoPercentComplete(Long projectId,Long contractId,Long nodeId) {
 		try{
 			//先验证当前项目是否在自动组卷中,组卷中直接返回
-			ProjectInfo projectInfo = projectClient.getById(String.valueOf(projectId));
-			Integer isArchivesAuto = projectInfo.getIsArchivesAuto();
-			if(isArchivesAuto==0){
+			//ProjectInfo projectInfo = projectClient.getById(String.valueOf(projectId));
+			ContractInfo contract = contractClient.getContractById(contractId);
+			Integer isArchivesAuto = contract.getIsArchivesAuto();
+			if(isArchivesAuto==-1 || isArchivesAuto==null || isArchivesAuto==0){
 				isArchivesAuto=100;
 			}
 			return R.data(isArchivesAuto);
@@ -358,14 +370,16 @@ public class ArchivesAutoController extends BladeController {
 	public R archiveAutoMethod(Long projectId,Long contractId,Long nodeId) {
 		try{
 			//先验证当前项目是否在自动组卷中,组卷中直接返回
-			ProjectInfo projectInfo = projectClient.getById(String.valueOf(projectId));
-			Integer isArchivesAuto = projectInfo.getIsArchivesAuto();
-			if(isArchivesAuto!=null && isArchivesAuto!=0){
-				return R.fail("当前项目已经在自动组卷中,请耐心等待");
+			//ProjectInfo projectInfo = projectClient.getById(String.valueOf(projectId));
+			ContractInfo contract = contractClient.getContractById(contractId);
+
+			Integer isArchivesAuto = contract.getIsArchivesAuto();
+			if(isArchivesAuto!=-1 && isArchivesAuto!=null && isArchivesAuto!=0){
+				return R.fail("当前合同段已经在自动组卷中,请耐心等待");
 			}
 			log.info("开始自动组卷....");
 			//设置自动组卷中
-			projectClient.updateIsArchivesAutoById(projectId,1);
+			contractClient.updateIsArchivesAutoById(contractId,1);
 
 			archivesAutoService.archiveAutoMethodThread(projectId,contractId,nodeId);
 			return R.data("自动组卷中,请耐心等待");
@@ -373,7 +387,7 @@ public class ArchivesAutoController extends BladeController {
 			e.printStackTrace();
 			log.error("自动组卷保错。"+e.getMessage()+"--projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
 			//设置自动组卷结束
-			projectClient.updateIsArchivesAutoById(projectId,0);
+			contractClient.updateIsArchivesAutoById(contractId,0);
 			return R.fail(e.getMessage());
 		}
 

+ 5 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java

@@ -127,4 +127,9 @@ public interface ArchivesAutoMapper extends BaseMapper<ArchivesAuto> {
     String getUserRoleName(@Param("projectId") Long projectId, @Param("contractId") Long contractId, @Param("userId") Long userId);
 
     List<ArchivesAutoVO> getArchivesCabinet(@Param("vo") ArchivesAutoVO archivesAuto);
+
+	List<ArchivesAutoVO> pageByArchivesAuto3(IPage page, @Param("vo") ArchivesAutoVO vo);
+
+	List<ArchivesAutoVO> pageByArchivesAuto4(@Param("vo") ArchivesAutoVO vo);
+
 }

+ 58 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -477,6 +477,64 @@
         order by uaa.tree_sort,uaa.auto_file_sort,uaa.file_number asc
     </select>
 
+    <select id="pageByArchivesAuto3" resultMap="archivesAutoResultMap">
+        select uaa.* from
+        (SELECT id FROM m_archive_tree_contract WHERE project_id =#{vo.projectId}
+        and  ancestors like concat('%',#{vo.nodeId},'%')
+        ) matc left join u_archives_auto uaa on matc.id = uaa.node_id left join u_archive_file uaf on uaa.id =
+        uaf.archive_id
+        where uaa.is_deleted = 0 and uaa.is_archive = 1
+        GROUP BY uaa.id
+        order by uaa.tree_sort,uaa.auto_file_sort,uaa.file_number asc
+    </select>
+
+    <select id="pageByArchivesAuto4" resultMap="archivesAutoResultMap">
+        select uaa.id from
+        (SELECT id FROM m_archive_tree_contract WHERE project_id =#{vo.projectId}
+        and  ancestors like concat('%',#{vo.nodeId},'%')
+        ) matc left join u_archives_auto uaa on matc.id = uaa.node_id left join u_archive_file uaf on uaa.id =
+        uaf.archive_id
+        where uaa.is_deleted = 0 and uaa.is_archive = 1
+        <if test="vo.searchType == 1 and vo.queryValue != null and vo.queryValue != ''">
+            and uaa.name like concat('%',#{vo.queryValue},'%')
+        </if>
+        <if test="vo.searchType == 2 and vo.queryValue != null and vo.queryValue != ''">
+            and uaf.file_name like concat('%',#{vo.queryValue},'%')
+        </if>
+        <if test="vo.storageTimes != null and vo.storageTimes != ''">
+            and uaa.storage_time in
+            <foreach collection="vo.storageTimes" item="storageTime" open="(" separator="," close=")">
+                #{storageTime}
+            </foreach>
+        </if>
+        <if test="vo.secretLevels != null and vo.secretLevels != ''">
+            and uaa.secret_level in
+            <foreach collection="vo.secretLevels" item="secretLevel" open="(" separator="," close=")">
+                #{secretLevel}
+            </foreach>
+        </if>
+        <if test="vo.carrierTypes != null and vo.carrierTypes != ''">
+            and uaa.carrier_type in
+            <foreach collection="vo.carrierTypes" item="carrierType" open="(" separator="," close=")">
+                #{carrierType}
+            </foreach>
+        </if>
+        <if test="vo.years != null and vo.years != ''">
+            and
+            <foreach collection="vo.years" item="year" separator=" or" open="(" close=")">
+                #{year} BETWEEN DATE_FORMAT(uaa.start_date,'%Y') and DATE_FORMAT(uaa.end_date ,'%Y')
+            </foreach>
+        </if>
+        <if test="vo.months != null and vo.months != ''">
+            and
+            <foreach collection="vo.months" item="month" separator=" or" open="(" close=")">
+                #{month} BETWEEN DATE_FORMAT(uaa.start_date,'%c') and DATE_FORMAT(uaa.end_date ,'%c')
+            </foreach>
+        </if>
+        GROUP BY uaa.id
+        order by uaa.tree_sort,uaa.auto_file_sort,uaa.file_number asc
+    </select>
+
     <select id="getArchivesCabinet" resultMap="archivesAutoResultMap">
         select uaa.* from
         (SELECT id FROM m_archive_tree_contract WHERE project_id =#{vo.projectId}

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

@@ -20,6 +20,7 @@ import org.springblade.archive.entity.ArchivesAuto;
 import org.springblade.archive.vo.ArchivesAutoVO;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.tool.api.R;
 import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.user.entity.User;
@@ -85,4 +86,6 @@ public interface IArchivesAutoService extends BaseService<ArchivesAuto> {
 	List<User> getArchiveDestroyUser();
 
 	List<Map<String,List<Map<String,String>>>> getArchivesCabinet(ArchivesAutoVO archivesAuto);
+
+	R pageByArchivesAuto2(ArchivesAutoVO archivesAuto);
 }

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

@@ -45,6 +45,7 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.manager.entity.ArchiveTreeContract;
@@ -156,6 +157,82 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		return page.setRecords(archivesAutos);
 	}
 
+	@Override
+	public R pageByArchivesAuto2(ArchivesAutoVO vo) {
+		IPage<ArchivesAutoVO> page = new Page<>(vo.getCurrent(),vo.getSize());
+		if (StringUtils.isNotBlank(vo.getStorageTime())) {
+			vo.setStorageTimes(Arrays.asList(vo.getStorageTime().split(",")));
+		}
+		if (StringUtils.isNotBlank(vo.getSecretLevel())){
+			vo.setSecretLevels(Arrays.asList(vo.getSecretLevel().split(",")));
+		}
+		if (StringUtils.isNotBlank(vo.getCarrierType())) {
+			vo.setCarrierTypes(Arrays.asList(vo.getCarrierType().split(",")));
+		}
+		if (StringUtils.isNotBlank(vo.getYear())) {
+			vo.setYears(Arrays.asList(vo.getYear().split(",")));
+		}
+		if (StringUtils.isNotBlank(vo.getMonth())) {
+			vo.setMonths(Arrays.asList(vo.getMonth().split(",")));
+		}
+		if (StringUtils.isNotBlank(vo.getCarrierType())) {
+			vo.setCarrierTypes(Arrays.asList(vo.getCarrierType().split(",")));
+		}
+		//获取单位首节点
+		ArchiveTreeContract	contract = archiveTreeContractClient.getFirstNodeByTreeCode(vo.getProjectId(),vo.getArchiveType());
+		vo.setNodeId(contract.getId());
+		//根据单位查询出当前箱子所有档案,最大为160条
+		List<ArchivesAutoVO> archivesAutos = baseMapper.pageByArchivesAuto3(page, vo);
+		//根据条件筛选
+		if (vo.getInnerSearch() != null){
+			vo.setQueryValue(vo.getInnerSearch());
+			vo.setSearchType(1);
+			vo.setStorageTimes(null);
+			vo.setSecretLevels(null);
+			vo.setCarrierTypes(null);
+			vo.setYears(null);
+			vo.setMonths(null);
+		}
+		List<ArchivesAutoVO> selectAutos = baseMapper.pageByArchivesAuto4(vo);
+		List<Long> ids = new ArrayList<>();
+		if (selectAutos != null && selectAutos.size() > 0) {
+			ids = selectAutos.stream().map(l -> l.getId()).collect(Collectors.toList());
+		}else {
+			ids.add(-1L);
+		}
+		if (archivesAutos != null && archivesAutos.size() >0) {
+			for (ArchivesAutoVO aa : archivesAutos) {
+				if (ids.contains(aa.getId())){
+					aa.setIsSelect(1);
+				}else {
+					aa.setIsSelect(0);
+				}
+				if (StringUtils.isNotBlank(aa.getStorageTime())) {
+					aa.setStorageTimeValue("3".equals(aa.getStorageTime()) ? "永久" : ("2".equals(aa.getStorageTime()) ? "30年" : "10年"));
+				}
+				if (StringUtils.isNotBlank(aa.getSecretLevel())) {
+					aa.setSecretLevelValue("1".equals(aa.getSecretLevel()) ? "机密" : ("2".equals(aa.getSecretLevel()) ? "绝密" : "秘密"));
+				}
+			}
+			//格式
+			List<List<ArchivesAutoVO>> listList = CommonUtil.splitList(archivesAutos, 8);
+			//一页,所有格子
+			List<Map<String, List<ArchivesAutoVO>>> allCell = new ArrayList<>();
+			//
+			for (List<ArchivesAutoVO> list : listList) {
+				//一个格子
+				List<ArchivesAutoVO> oneCell = new ArrayList<>();
+				oneCell.addAll(list);
+				Map<String, List<ArchivesAutoVO>> map = new HashMap<>();
+				map.put("children",oneCell);
+				allCell.add(map);
+			}
+			return R.data(allCell);
+		}else {
+			return null;
+		}
+	}
+
 	/**
 	 * 根据搜索获取档案柜
 	 * @param archivesAuto
@@ -180,10 +257,14 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 				//一个柜子
 				Map<String, String> map = new HashMap<>();
 				map.put("id",CabinetTotal+"");
-				map.put("name",CabinetTotal+"");
-				String[] min = list.get(0).getFileNumber().split("-");
-				String[] max = list.get(list.size()-1).getFileNumber().split("-");
-				map.put("content",min[min.length-1]+"~"+max[max.length-1]);
+				if (CabinetTotal < 10){
+					map.put("name","0"+CabinetTotal);
+				}else {
+					map.put("name",CabinetTotal+"");
+				}
+				String[] min = list.get(0).getFileNumber().split("_");
+				String[] max = list.get(list.size()-1).getFileNumber().split("_");
+				map.put("content","档号"+min[min.length-1]+"~"+"档号"+max[max.length-1]);
 				//把每一个柜子都添加
 				allCabinet.add(map);
 			}
@@ -1723,13 +1804,13 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 				log.info("[自动组卷]{}","开始对未锁定案卷拆卷。projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
 				splitArchvies(projectId,contractId,nodeId);
 				//设置完成度10%
-				projectClient.updateIsArchivesAutoById(projectId,10);
+				contractClient.updateIsArchivesAutoById(contractId,10);
 
 				//项目自动组卷入口
 				log.info("[自动组卷]{}","开始自动组卷。projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
 				archiveAutoMethod(projectId,contractId,nodeId);
 				//设置完成度80%
-				projectClient.updateIsArchivesAutoById(projectId,80);
+				contractClient.updateIsArchivesAutoById(contractId,80);
 
 				//刷新项目档号
 				log.info("[自动组卷]{}","开始刷新组卷档号。projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
@@ -1737,13 +1818,13 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 
 				//设置自动组卷结束
-				projectClient.updateIsArchivesAutoById(projectId,0);
+				contractClient.updateIsArchivesAutoById(contractId,0);
 				log.info("[自动组卷]{}","自动组卷完成。projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
 			}catch (Exception e){
 				e.printStackTrace();
 				log.error("自动组卷报错。"+e.getMessage()+"--projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
 				//设置自动组卷结束
-				projectClient.updateIsArchivesAutoById(projectId,0);
+				contractClient.updateIsArchivesAutoById(contractId,0);
 			}
 		});
 	}

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

@@ -333,7 +333,7 @@
     <select id="getAllArchiveFileByContractType" resultType="org.springblade.business.vo.ArchiveFileVO">
         SELECT uaf.*, matc.tree_code as 'contractType'
         FROM u_archive_file uaf
-                 inner join m_archive_tree_contract matc on uaf.node_id = matc.id
+                 left join m_archive_tree_contract matc on uaf.node_id = matc.id
         WHERE uaf.project_id = #{projectId} and uaf.is_deleted = 0
             and (uaf.is_auto_file is null or uaf.is_auto_file != 1);
     </select>

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ContractClientImpl.java

@@ -86,5 +86,12 @@ public class ContractClientImpl implements ContractClient {
         return list;
     }
 
+    @Override
+    public void updateIsArchivesAutoById(Long id, Integer isArchivesAuto) {
+        ContractInfo contractInfo = contractInfoService.getById(id);
+        contractInfo.setIsArchivesAuto(isArchivesAuto);
+        contractInfoService.updateById(contractInfo);
+    }
+
 
 }