Commit e5aa03ac authored by 施翔轲's avatar 施翔轲

项目台账文件导入列表:上传、删除

parent c495d520
package com.dsk.cscec.controller;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.common.annotation.Log;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.R;
import com.dsk.common.enums.BusinessType;
import com.dsk.common.exception.ServiceException;
import com.dsk.cscec.domain.CbProjectFile;
import com.dsk.cscec.domain.bo.ProjectFileUploadBo;
import com.dsk.cscec.domain.bo.QueryCbProjectFileDetailBo;
import com.dsk.cscec.service.CbProjectFileService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.dsk.system.domain.vo.SysOssVo;
import com.dsk.system.service.ISysOssService;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.io.UnsupportedEncodingException;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 项目成本文件表(CbProjectFile)表控制层
......@@ -14,13 +33,54 @@ import javax.annotation.Resource;
*/
@RestController
@RequestMapping("cbProjectFile")
public class CbProjectFileController {
public class CbProjectFileController extends BaseController {
/**
* 服务对象
*/
@Resource
private CbProjectFileService baseService;
@Resource
private ISysOssService iSysOssService;
/**
* 上传项目台账文件
*/
@Log(title = "项目台账上传OSS对象存储", businessType = BusinessType.INSERT)
@PostMapping(value = "/uploadCbProjectFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Map<String, String>> uploadCbProjectFile(@Validated @ModelAttribute ProjectFileUploadBo fileUploadBo) throws UnsupportedEncodingException {
MultipartFile file = fileUploadBo.getFile();
if (ObjectUtil.isNull(file)) {
return R.fail("上传文件不能为空");
}
SysOssVo oss = iSysOssService.upload(file);
//添加项目上传文件记录
try {
baseService.addProjectFile(fileUploadBo, oss);
} catch (ServiceException e) {
//删除oss中的文件
iSysOssService.deleteWithValidByIds(Collections.singletonList(oss.getOssId()), true);
throw e;
}
Map<String, String> map = new HashMap<>(2);
map.put("fileName", oss.getOriginalName());
map.put("fileOssId", oss.getOssId().toString());
map.put("fileOssUrl", oss.getUrl());
return R.ok(map);
}
}
/**
* 删除项目台账文件
*/
@DeleteMapping("/deleteCbProjectFile/{fileId}")
public R<Void> deleteCbProjectFile(@NotNull(message = "文件ID不能为空") @PathVariable Long fileId) {
return toAjax(baseService.deleteProjectFile(fileId));
}
///**
// * 根据项目ID获取项目文件详情
// */
//@GetMapping("/getProjectFileDetail")
//public R<List<CbProjectFile>> getProjectFileDetail(@Validated @RequestBody QueryCbProjectFileDetailBo queryBo) {
// return R.ok(baseService.getProjectFileDetail(queryBo));
//}
}
\ No newline at end of file
......@@ -31,7 +31,7 @@ public class CbProjectFile extends BaseEntity implements Serializable {
*/
private Integer cbStage;
/**
* 成本类型(0:直接费成本、1:工料汇总、2:措施项目、3:其他项目、4:现场经费、5:成本汇总)
* 成本类型(0:直接费成本、1:工料汇总、2:措施项目、3:其他项目、4:现场经费、5:成本汇总、6:未确定
*/
private Integer cbType;
/**
......@@ -47,7 +47,7 @@ public class CbProjectFile extends BaseEntity implements Serializable {
*/
private String fileOssUrl;
/**
* 文件解析状态(0:待解析、1:解析中、2:解析成功、3:解析失败)
* 项目文件状态(0:未上传、1:待解析、2:解析中、3:解析成功、4:解析失败)
*/
private Integer fileParseStatus;
/**
......
package com.dsk.cscec.domain.bo;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.NotNull;
/**
* @author sxk
* @date 2024.02.06
* @time 16:07
*/
@Data
public class ProjectFileUploadBo {
private MultipartFile file;
@NotNull(message = "项目ID不能为空")
private Long projectId;
@NotNull(message = "成本阶段不能为空")
private Integer cbStage;
@NotNull(message = "成本类型不能为空")
private Integer cbType;
}
......@@ -2,6 +2,11 @@ package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.CbProjectFile;
import com.dsk.cscec.domain.bo.QueryCbProjectFileDetailBo;
import com.dsk.cscec.domain.bo.ProjectFileUploadBo;
import com.dsk.system.domain.vo.SysOssVo;
import java.util.List;
/**
* 项目成本文件表(CbProjectFile)表服务接口
......@@ -10,5 +15,28 @@ import com.dsk.cscec.domain.CbProjectFile;
* @since 2024-02-05 14:01:06
*/
public interface CbProjectFileService extends IService<CbProjectFile> {
/**
* 添加项目上传文件记录
*
* @param fileUploadBo 上传信息
* @param oss oss信息
*/
void addProjectFile(ProjectFileUploadBo fileUploadBo, SysOssVo oss);
/**
* 逻辑删除项目上传文件记录
*
* @param fileId 文件ID
* @return 删除结果
*/
Integer deleteProjectFile(Long fileId);
///**
// * 根据项目ID获取项目文件详情
// *
// * @param queryBo 查询体
// * @return 文件详情列表
// */
//List<CbProjectFile> getProjectFileDetail(QueryCbProjectFileDetailBo queryBo);
}
package com.dsk.cscec.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.exception.ServiceException;
import com.dsk.cscec.constant.CbProjectConstants;
import com.dsk.cscec.domain.CbProjectFile;
import com.dsk.cscec.domain.CbProjectRecord;
import com.dsk.cscec.domain.bo.QueryCbProjectFileDetailBo;
import com.dsk.cscec.domain.bo.ProjectFileUploadBo;
import com.dsk.cscec.mapper.CbProjectFileMapper;
import com.dsk.cscec.mapper.CbProjectRecordMapper;
import com.dsk.cscec.service.CbProjectFileService;
import com.dsk.system.domain.vo.SysOssVo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* 项目成本文件表(CbProjectFile)表服务实现类
......@@ -18,5 +30,68 @@ import javax.annotation.Resource;
public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, CbProjectFile> implements CbProjectFileService {
@Resource
private CbProjectFileMapper baseMapper;
@Resource
private CbProjectRecordMapper projectRecordMapper;
/**
* 添加项目上传文件记录
*
* @param fileUploadBo 上传信息
* @param oss oss信息
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void addProjectFile(ProjectFileUploadBo fileUploadBo, SysOssVo oss) {
//校验项目是否存在
if (!projectRecordMapper.exists(new LambdaQueryWrapper<CbProjectRecord>()
.eq(CbProjectRecord::getId, fileUploadBo.getProjectId())
.eq(CbProjectRecord::getDelFlag, CbProjectConstants.DELETE_FLAG_EXIST))) {
throw new ServiceException("项目ID无效,该项目不存在");
}
CbProjectFile projectFile = BeanUtil.toBean(fileUploadBo, CbProjectFile.class);
projectFile.setFileName(oss.getOriginalName());
projectFile.setFileOssId(oss.getOssId().toString());
projectFile.setFileOssUrl(oss.getUrl());
//项目文件状态:解析中
projectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSING);
//删除状态:未删除
projectFile.setDelFlag(CbProjectConstants.DELETE_FLAG_EXIST);
baseMapper.insert(projectFile);
}
/**
* 逻辑删除项目上传文件记录
*
* @param fileId 文件ID
* @return 删除结果
*/
@Override
public Integer deleteProjectFile(Long fileId) {
CbProjectFile projectFile = baseMapper.selectById(fileId);
Assert.notNull(projectFile,"该文件不存在");
projectFile.setDelFlag(CbProjectConstants.DELETE_FLAG_NOT_EXIST);
return baseMapper.updateById(projectFile);
}
///**
// * 根据项目ID获取项目文件详情
// *
// * @param queryBo 查询体
// * @return 文件详情列表
// */
//@Override
//public List<CbProjectFile> getProjectFileDetail(QueryCbProjectFileDetailBo queryBo) {
// return baseMapper.selectList(new LambdaQueryWrapper<CbProjectFile>()
// .eq(CbProjectFile::getProjectId, queryBo.getProjectId())
// .eq(CbProjectFile::getCbStage, queryBo.getCbStage())
// //成本类型:未确定,即创建项目后未上传任何文件
// .ne(CbProjectFile::getCbType, CbProjectConstants.CB_TYPE_NOT_CONFIRM)
// .eq(CbProjectFile::getDelFlag, CbProjectConstants.DELETE_FLAG_EXIST)
// //项目文件状态:未上传
// .eq(CbProjectFile::getFileParseStatus, CbProjectConstants.PROJECT_FILE_STATUS_NOT_UPLOAD)
// .or()
// //项目文件状态:待解析
// .eq(CbProjectFile::getFileParseStatus, CbProjectConstants.PROJECT_FILE_STATUS_WAIT_PARSE));
//}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment