|
@@ -24,11 +24,13 @@ import com.aliyun.oss.OSSClient;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
+import org.springblade.archive.dto.SaveApplyDTO;
|
|
import org.springblade.archive.entity.ArchiveProjectConfig;
|
|
import org.springblade.archive.entity.ArchiveProjectConfig;
|
|
import org.springblade.archive.entity.ArchivesAuto;
|
|
import org.springblade.archive.entity.ArchivesAuto;
|
|
import org.springblade.archive.service.IArchiveAutoPdfService;
|
|
import org.springblade.archive.service.IArchiveAutoPdfService;
|
|
@@ -37,14 +39,18 @@ import org.springblade.archive.service.IArchiveProjectConfigService;
|
|
import org.springblade.archive.utils.ArchiveTreeUtil;
|
|
import org.springblade.archive.utils.ArchiveTreeUtil;
|
|
import org.springblade.archive.utils.FileTransJavaDemo;
|
|
import org.springblade.archive.utils.FileTransJavaDemo;
|
|
import org.springblade.archive.utils.FileUtils;
|
|
import org.springblade.archive.utils.FileUtils;
|
|
|
|
+import org.springblade.archive.vo.ArchiveInspectPreviewVO;
|
|
import org.springblade.archive.vo.ArchivesAutoVO;
|
|
import org.springblade.archive.vo.ArchivesAutoVO;
|
|
import org.springblade.archive.mapper.ArchivesAutoMapper;
|
|
import org.springblade.archive.mapper.ArchivesAutoMapper;
|
|
import org.springblade.archive.service.IArchivesAutoService;
|
|
import org.springblade.archive.service.IArchivesAutoService;
|
|
import org.springblade.archive.vo.ArchivesAutoVO2;
|
|
import org.springblade.archive.vo.ArchivesAutoVO2;
|
|
import org.springblade.archive.vo.CheckoutVO;
|
|
import org.springblade.archive.vo.CheckoutVO;
|
|
import org.springblade.business.entity.ArchiveFile;
|
|
import org.springblade.business.entity.ArchiveFile;
|
|
|
|
+import org.springblade.business.entity.Task;
|
|
|
|
+import org.springblade.business.entity.TaskParallel;
|
|
import org.springblade.business.feign.ArchiveFileClient;
|
|
import org.springblade.business.feign.ArchiveFileClient;
|
|
import org.springblade.business.feign.MetadataClassificationClient;
|
|
import org.springblade.business.feign.MetadataClassificationClient;
|
|
|
|
+import org.springblade.business.feign.TaskClient;
|
|
import org.springblade.business.vo.ArchiveFileVO;
|
|
import org.springblade.business.vo.ArchiveFileVO;
|
|
import org.springblade.common.utils.CommonUtil;
|
|
import org.springblade.common.utils.CommonUtil;
|
|
import org.springblade.common.utils.IDUtils;
|
|
import org.springblade.common.utils.IDUtils;
|
|
@@ -77,10 +83,12 @@ import org.springblade.system.feign.IDictBizClient;
|
|
import org.springblade.system.user.entity.User;
|
|
import org.springblade.system.user.entity.User;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.scheduling.annotation.EnableAsync;
|
|
import org.springframework.scheduling.annotation.EnableAsync;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
@@ -128,6 +136,10 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
|
|
|
|
private final IArchiveOfflineVersionInfoService versionInfoService;
|
|
private final IArchiveOfflineVersionInfoService versionInfoService;
|
|
|
|
|
|
|
|
+ private final TaskClient taskClient;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public IPage<ArchivesAutoVO> selectArchivesAutoPage(IPage<ArchivesAutoVO> page, ArchivesAutoVO archivesAuto) {
|
|
public IPage<ArchivesAutoVO> selectArchivesAutoPage(IPage<ArchivesAutoVO> page, ArchivesAutoVO archivesAuto) {
|
|
@@ -857,6 +869,10 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
ArchivesAuto archivesAuto = new ArchivesAuto();
|
|
ArchivesAuto archivesAuto = new ArchivesAuto();
|
|
archivesAuto.setProjectId(node.getProjectId());
|
|
archivesAuto.setProjectId(node.getProjectId());
|
|
archivesAuto.setContractId(node.getContractId());
|
|
archivesAuto.setContractId(node.getContractId());
|
|
|
|
+ //增加保护
|
|
|
|
+ if (StringUtils.isNotEmpty(archiveName) && archiveName.length() > 450){
|
|
|
|
+ archiveName = archiveName.substring(0,450);
|
|
|
|
+ }
|
|
archivesAuto.setName(archiveName);//案卷题名
|
|
archivesAuto.setName(archiveName);//案卷题名
|
|
if(indexMap==null){
|
|
if(indexMap==null){
|
|
indexMap=new HashMap<>(); //监理,施工的按合同段分类从0开始依次设置档号,建设单位的没有合同段 就先按一类依次设置
|
|
indexMap=new HashMap<>(); //监理,施工的按合同段分类从0开始依次设置档号,建设单位的没有合同段 就先按一类依次设置
|
|
@@ -1088,11 +1104,29 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
String nodeId = file.getNodeId();
|
|
String nodeId = file.getNodeId();
|
|
nodeIdSet.add(nodeId);
|
|
nodeIdSet.add(nodeId);
|
|
}
|
|
}
|
|
- for(String nodeId:nodeIdSet){
|
|
|
|
- ArchiveTreeContract treeNode = archiveTreeContractClient.getArchiveTreeContractById(Long.parseLong(nodeId));
|
|
|
|
- String nodeName = treeNode.getNodeName();
|
|
|
|
- archiveName=archiveName+nodeName;
|
|
|
|
|
|
+ if (nodeIdSet.size() >= 3) {
|
|
|
|
+ for(String nodeId:nodeIdSet){
|
|
|
|
+ ArchiveTreeContract treeNode = archiveTreeContractClient.getArchiveTreeContractById(Long.parseLong(nodeId));
|
|
|
|
+ if (treeNode== null ) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ArchiveTreeContract pNode = archiveTreeContractClient.getArchiveTreeContractById(treeNode.getParentId());
|
|
|
|
+ if (pNode == null) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ String nodeName = pNode.getNodeName();
|
|
|
|
+ archiveName=archiveName+nodeName;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ for(String nodeId:nodeIdSet){
|
|
|
|
+ ArchiveTreeContract treeNode = archiveTreeContractClient.getArchiveTreeContractById(Long.parseLong(nodeId));
|
|
|
|
+ String nodeName = treeNode.getNodeName();
|
|
|
|
+ archiveName=archiveName+nodeName;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|
|
}else{
|
|
}else{
|
|
//不存在跨节点 项目名称+节点名称
|
|
//不存在跨节点 项目名称+节点名称
|
|
archiveName=archiveName+node.getNodeName();
|
|
archiveName=archiveName+node.getNodeName();
|
|
@@ -1835,7 +1869,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
if (StringUtils.isEmpty(pdfPageUrl)) {
|
|
if (StringUtils.isEmpty(pdfPageUrl)) {
|
|
pdfPageUrl = archiveFile.getPdfFileUrl();
|
|
pdfPageUrl = archiveFile.getPdfFileUrl();
|
|
}else{
|
|
}else{
|
|
- fileUrls.add(pdfPageUrl);
|
|
|
|
|
|
+ //fileUrls.add(pdfPageUrl);
|
|
}
|
|
}
|
|
if (StringUtils.isEmpty(pdfPageUrl) || !pdfPageUrl.contains("pdf")) {
|
|
if (StringUtils.isEmpty(pdfPageUrl) || !pdfPageUrl.contains("pdf")) {
|
|
continue;
|
|
continue;
|
|
@@ -2352,6 +2386,21 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
return R.data(jsonObject);
|
|
return R.data(jsonObject);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 验收申请-汇总目录
|
|
|
|
+ * @param projectId
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public List<ArchiveInspectPreviewVO> getAllUnitArchivesView(Long projectId) {
|
|
|
|
+ List<ArchiveInspectPreviewVO> vos = new ArrayList<>();
|
|
|
|
+ vos.add(this.getArchivesAutoViewByUnit(1,projectId,0));
|
|
|
|
+ vos.add(this.getArchivesAutoViewByUnit(2,projectId,0));
|
|
|
|
+ vos.add(this.getArchivesAutoViewByUnit(3,projectId,0));
|
|
|
|
+ vos.removeIf(Objects::isNull);
|
|
|
|
+ return vos;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 在线验收-根据单位显示档案
|
|
* 在线验收-根据单位显示档案
|
|
* @param unitType
|
|
* @param unitType
|
|
@@ -2359,43 +2408,74 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public List<CheckoutVO> getArchivesAutoViewByUnit(Integer unitType, Long projectId) {
|
|
|
|
- //判断单位
|
|
|
|
- if (unitType == 1){
|
|
|
|
- //获取所有主节点,如果没有档案不显示可以取消
|
|
|
|
- List<ArchiveTreeContract> nodes = baseMapper.getUnitNodeByProjectId(projectId);
|
|
|
|
- if (nodes == null || nodes.size() <= 0){
|
|
|
|
- return null;
|
|
|
|
- }
|
|
|
|
- String node = nodes.get(0).getAncestors().split(",")[2];
|
|
|
|
- //获取建设单位的所有档案
|
|
|
|
- List<ArchivesAutoVO2> vo2s = baseMapper.getUnitAllArchive(node);
|
|
|
|
- if (vo2s == null || vo2s.size() <= 0){
|
|
|
|
- return null;
|
|
|
|
- }
|
|
|
|
- List<CheckoutVO> list = new ArrayList<>();
|
|
|
|
- CheckoutVO vo = new CheckoutVO();
|
|
|
|
- vo.setNodeName("建设单位归档资料");
|
|
|
|
- vo.setTotal(vo2s.size());
|
|
|
|
- list.add(vo);
|
|
|
|
- //根据主节点分组
|
|
|
|
- Map<String, List<ArchivesAutoVO2>> map = vo2s.parallelStream().collect(Collectors.groupingBy(ArchivesAutoVO2::getMasterNode));
|
|
|
|
- //循环主节点并且存入数据
|
|
|
|
- for (ArchiveTreeContract contract : nodes) {
|
|
|
|
- CheckoutVO v = new CheckoutVO();
|
|
|
|
- v.setNodeName(contract.getFullName());
|
|
|
|
- List<ArchivesAutoVO2> vo2List = map.get(contract.getId()+"");
|
|
|
|
- if (vo2List != null && vo2List.size() > 0){
|
|
|
|
- v.setTotal(vo2List.size());
|
|
|
|
- v.setList(vo2List);
|
|
|
|
- }else {
|
|
|
|
- v.setTotal(0);
|
|
|
|
- }
|
|
|
|
- list.add(v);
|
|
|
|
|
|
+ public ArchiveInspectPreviewVO getArchivesAutoViewByUnit(Integer unitType, Long projectId,Integer isApply) {
|
|
|
|
+ //设置节点类型
|
|
|
|
+ String nodeType = null;
|
|
|
|
+ if (unitType == 2){
|
|
|
|
+ nodeType = "S";
|
|
|
|
+ }else if (unitType == 3){
|
|
|
|
+ nodeType = "C";
|
|
|
|
+ }else if (unitType == 4){
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ //返回值
|
|
|
|
+ ArchiveInspectPreviewVO vo = new ArchiveInspectPreviewVO();
|
|
|
|
+ //状态,用于判断是二级节点还是三级节点
|
|
|
|
+ Boolean isSecondNode = true;
|
|
|
|
+ //获取当前单位首节点
|
|
|
|
+ ArchiveTreeContract FirstNode = baseMapper.getUnitFirstNode(projectId, nodeType);
|
|
|
|
+ if (FirstNode == null){
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ String unitName = FirstNode.getNodeName();
|
|
|
|
+ //获取当前单位下的二级节点
|
|
|
|
+ List<ArchiveTreeContract> unitNodes = baseMapper.getUnitSecondNode(FirstNode.getId());
|
|
|
|
+ if (unitNodes == null || unitNodes.size() == 0){
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ //判断二级节点是否为合同段节点
|
|
|
|
+ Boolean isContractNode = false;
|
|
|
|
+ if (unitNodes.get(0).getExtType() != null && unitNodes.get(0).getExtType() == 2) {
|
|
|
|
+ isContractNode = true;
|
|
|
|
+ }
|
|
|
|
+ if (isContractNode){
|
|
|
|
+ isSecondNode = false;
|
|
|
|
+ //如果为合同段节点,则跳过当前节点,获取三级节点
|
|
|
|
+ List<Long> ids = unitNodes.stream().map(l -> l.getId()).collect(Collectors.toList());
|
|
|
|
+ unitNodes = baseMapper.getTertiaryNode(ids);
|
|
|
|
+ }
|
|
|
|
+ //获取单位下面所有档案,根据节点等级
|
|
|
|
+ List<ArchivesAutoVO2> unitAllArchive = new ArrayList<>();
|
|
|
|
+ if (isContractNode){
|
|
|
|
+ unitAllArchive = baseMapper.getUnitAllArchive2(FirstNode.getId(),5,isApply);
|
|
|
|
+ }else {
|
|
|
|
+ unitAllArchive = baseMapper.getUnitAllArchive2(FirstNode.getId(),4,isApply);
|
|
|
|
+ }
|
|
|
|
+ if (unitAllArchive.size() == 0){
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ vo.setUnitInfo(unitName+"("+unitAllArchive.size()+"卷)");
|
|
|
|
+ List<ArchiveInspectPreviewVO.NodeList> nodeLists = new ArrayList<>();
|
|
|
|
+ //档案按照二级节点分组
|
|
|
|
+ Map<Long, List<ArchivesAutoVO2>> archiveMap = unitAllArchive.stream().collect(Collectors.groupingBy(ArchivesAutoVO2::getMasterNode));
|
|
|
|
+ //循环二级节点,分别统计档案数据,把档案设置进结果集
|
|
|
|
+ for (ArchiveTreeContract unitNode : unitNodes) {
|
|
|
|
+ //获取节点名称
|
|
|
|
+ String nodeName = unitNode.getNodeName();
|
|
|
|
+ //获取节点档案
|
|
|
|
+ List<ArchivesAutoVO2> list = archiveMap.get(unitNode.getId());
|
|
|
|
+ ArchiveInspectPreviewVO.NodeList nodeList = new ArchiveInspectPreviewVO.NodeList();
|
|
|
|
+ if (list == null || list.size() == 0){
|
|
|
|
+ //如果档案为空,直接设置名称跳出
|
|
|
|
+ nodeList.setNodeInfo(nodeName+"(0卷)");
|
|
|
|
+ }else {
|
|
|
|
+ nodeList.setNodeInfo(nodeName+"("+list.size()+"卷)");
|
|
|
|
+ nodeList.setList(list);
|
|
}
|
|
}
|
|
- return list;
|
|
|
|
|
|
+ nodeLists.add(nodeList);
|
|
}
|
|
}
|
|
- return null;
|
|
|
|
|
|
+ vo.setNodeLists(nodeLists);
|
|
|
|
+ return vo;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -2479,6 +2559,95 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional
|
|
|
|
+ public void saveApply(SaveApplyDTO dto) {
|
|
|
|
+ //先获取当前用户是否已经存在验收任务
|
|
|
|
+ Boolean aBoolean = this.getApplyStatus(dto.getProjectId());
|
|
|
|
+ if (aBoolean){
|
|
|
|
+ throw new ServiceException("当前专家已存在验收任务,请勿重复上报");
|
|
|
|
+ }
|
|
|
|
+ //设置任务表信息
|
|
|
|
+ Task task = new Task();
|
|
|
|
+ Long id = SnowFlakeUtil.getId();
|
|
|
|
+ task.setId(id);
|
|
|
|
+ task.setProcessInstanceId(id.toString());
|
|
|
|
+ task.setProcessDefinitionId(id.toString());
|
|
|
|
+ task.setProjectId(dto.getProjectId()+"");
|
|
|
|
+ task.setAttachmentPdfUrl(dto.getAttachmentPdfUrl());
|
|
|
|
+ task.setCreateTime(new Date());
|
|
|
|
+ //设置合同段为当前项目指挥部合同段
|
|
|
|
+ List<ContractInfo> contractInfos = contractClient.getContractByProjectIdAndType(Long.parseLong(task.getProjectId()), 3);
|
|
|
|
+ if (contractInfos == null || contractInfos.size() != 1){
|
|
|
|
+ throw new ServiceException("申请验收失败,未找到当前项目的指挥部合同段,请联系管理员");
|
|
|
|
+ }
|
|
|
|
+ task.setContractId(contractInfos.get(0).getId()+"");
|
|
|
|
+ task.setStartTime(dto.getStartDate().toString());
|
|
|
|
+ task.setReportUser(AuthUtil.getUserId().toString());
|
|
|
|
+ task.setReportUserName(AuthUtil.getUserName());
|
|
|
|
+ task.setTaskName(dto.getTaskName());
|
|
|
|
+ task.setTaskContent(dto.getTaskContent());
|
|
|
|
+ //数据指向设置为专家信息
|
|
|
|
+ List<SaveApplyDTO.ExpertInfo> list = dto.getList();
|
|
|
|
+ if (list == null || list.size() == 0){
|
|
|
|
+ throw new ServiceException("请设置专家信息");
|
|
|
|
+ }
|
|
|
|
+ task.setFormDataId(JSON.toJSONString(list));
|
|
|
|
+ //类型设置2验收任务
|
|
|
|
+ task.setType(2);
|
|
|
|
+ //上报类型4档案数据
|
|
|
|
+ task.setApprovalType(4);
|
|
|
|
+ task.setStatus(1);
|
|
|
|
+ //档案id
|
|
|
|
+ task.setArchiveIds(dto.getArchiveIds());
|
|
|
|
+ taskClient.saveTask(task);
|
|
|
|
+ //根据任务人设置task_parallel
|
|
|
|
+ List<SaveApplyDTO.CustomUserTask> userTasks = dto.getUserTasks();
|
|
|
|
+ if (userTasks == null || userTasks.size() == 0){
|
|
|
|
+ throw new ServiceException("请选择任务人");
|
|
|
|
+ }
|
|
|
|
+ for (SaveApplyDTO.CustomUserTask info : userTasks) {
|
|
|
|
+ TaskParallel taskParallel = new TaskParallel();
|
|
|
|
+ taskParallel.setProcessInstanceId(id.toString());
|
|
|
|
+ taskParallel.setParallelProcessInstanceId(id.toString());
|
|
|
|
+ taskParallel.setTaskUser(info.getUserId());
|
|
|
|
+ taskParallel.setTaskUserName(info.getUserName());
|
|
|
|
+ taskParallel.setStatus(1);
|
|
|
|
+ taskClient.saveTaskParallel(taskParallel);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public R<Boolean> batchUpdateIsApply(Integer isApply, List<Long> ids) {
|
|
|
|
+ this.update(new LambdaUpdateWrapper<ArchivesAuto>()
|
|
|
|
+ .set(ArchivesAuto::getIsApply,isApply)
|
|
|
|
+ .in(ArchivesAuto::getId,ids));
|
|
|
|
+ return R.data(true);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Boolean getApplyStatus(Long projectId) {
|
|
|
|
+ //查出所有当前用户待审批的验收任务
|
|
|
|
+ Long userId = AuthUtil.getUserId();
|
|
|
|
+ List<Task> tasks = taskClient.queryUserTask(projectId,2, userId, 1);
|
|
|
|
+ if (tasks == null || tasks.size() == 0){
|
|
|
|
+ return false;
|
|
|
|
+ }else {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void annulApply(Long projectId) {
|
|
|
|
+ Long userId = AuthUtil.getUserId();
|
|
|
|
+ Boolean aBoolean = taskClient.deleteUserTask(projectId, userId);
|
|
|
|
+ if (!aBoolean){
|
|
|
|
+ throw new ServiceException("撤销失败,请联系管理员");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
public void deleteFile(String defaultDir,Long id){
|
|
public void deleteFile(String defaultDir,Long id){
|
|
String dir = defaultDir+"/"+id;
|
|
String dir = defaultDir+"/"+id;
|
|
String file = defaultDir+"/"+id+".zip";
|
|
String file = defaultDir+"/"+id+".zip";
|