package com.gqy.document.service.impl; import java.util.*; import java.util.stream.Collectors; import com.alibaba.fastjson2.JSONArray; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.gqy.common.constant.Constants; import com.gqy.common.core.domain.AjaxResult; import com.gqy.common.core.domain.AjaxResultCQY; import com.gqy.common.core.text.Convert; import com.gqy.common.exception.ServiceException; import com.gqy.common.utils.*; import com.gqy.document.domain.DcDocument; import com.gqy.document.domain.ProductDocument; import com.gqy.document.domain.vo.PageResult; import com.gqy.document.domain.Document; import com.gqy.document.domain.ProjectDocument; import com.gqy.document.mapper.DcProductMapper; import com.gqy.document.mapper.DocumentMapper; import com.gqy.document.mapper.ProductDocumentMapper; import com.gqy.document.mapper.ProjectDocumentMapper; import com.gqy.document.service.IDocumentService; import org.apache.commons.collections4.CollectionUtils; import org.apache.poi.ss.usermodel.IconMultiStateFormatting; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; /** * 【请填写功能名称】Service业务层处理 * * @author raycos * @date 2024-10-30 */ @Service public class DcDocumentServiceImpl implements IDocumentService { private static final Logger log = LoggerFactory.getLogger(DcDocumentServiceImpl.class); @Autowired private DocumentMapper documentMapper; /** * 查询 * @param page * @param pageSize * @param dcDocument * @return */ public PageResult selectDcDocumentList(Integer page, Integer pageSize, DcDocument dcDocument,Map maps){ PageHelper.startPage(page, pageSize); List list = documentMapper.selectDcDocumentList(dcDocument); //isContentShow true 显示 false 不显现 boolean isContentShow = false; if (maps != null && maps.get("isContentShow") != null) { isContentShow = (boolean) maps.get("isContentShow"); } if (!isContentShow && list != null) { for (DcDocument dcDocument1 : list) { if (dcDocument1 != null) { dcDocument1.setDcm_data(""); } } } PageInfo pageInfo = new PageInfo<>(list); return new PageResult( pageInfo.getPageNum(), pageInfo.getPageSize(), pageInfo.getPages(), pageInfo.getTotal(), pageInfo.getList() ); } public List selectDcDocumentList(DcDocument dcDocument) { return documentMapper.selectDcDocumentList(dcDocument); } /** * 插入 * @param dcDocument * @return */ public int insertDcDocument(DcDocument dcDocument) { dcDocument.setDcm_status(Constants.status_5); return documentMapper.insertDcDocument(dcDocument); } /** * 更新 * @param dcDocument * @return */ public int updateDcDocument(DcDocument dcDocument) { return documentMapper.updateDcDocument(dcDocument); } /** * 删除 * @param id * @return */ public int deleteDcDocumentById(Long id){ DcDocument dcDocument = documentMapper.selectDcDocumentByDcmId(id); dcDocument.setDcm_status(Constants.status_4); return documentMapper.updateDcDocument(dcDocument); } /** * * chax * @param id * @return */ public DcDocument selectDcDocumentByDcmId(Long id){ return documentMapper.selectDcDocumentByDcmId(id); } // @Autowired // private DocumentMapper documentMapper; // // @Autowired // private ProjectDocumentMapper projectDocumentMapper; // // @Autowired // private ProductDocumentMapper productDocumentMapper; // // /** // * 更新文档 // * @param document // * @return // */ // @Transactional // public AjaxResultCQY updateDocument(Document document) { //// try { //// log.info("开始更新文档信息, 文档ID: {}", document.getId()); //// // 1. 检查文档是否存在 //// Document existDoc = documentMapper.info(document.getId()); //// if (existDoc == null) { //// log.warn("文档不存在, 文档ID: {}", document.getId()); //// return AjaxResultCQY.error("更新文档信息失败:文档不存在"); //// } //// // 2. 更新文档基本信息 //// log.info("更新文档基本信息: {}", document); //// int rows = documentMapper.updateDocument(document); //// if (rows <= 0) { //// return AjaxResultCQY.error("更新文档基本信息失败"); //// } //// // 3. 更新产品关联 //// log.info("开始更新文档产品关联, 文档ID: {}", document.getId()); //// productDocumentMapper.deleteProductDocumentByDocId(document.getId()); //// if (CollectionUtils.isNotEmpty(document.getLinks())) { //// //// List productDocs = document.getLinks().stream() //// .map(productId -> { //// ProductDocument pd = new ProductDocument(); //// pd.setDocument_id(document.getId()); //// pd.setProduct_id(Long.valueOf(productId)); //// pd.setStatus(5); //// return pd; //// }) //// .collect(Collectors.toList()); //// productDocumentMapper.batchInsertProductDocument(productDocs); //// } //// //// log.info("开始更新文档项目关联, 文档ID: {}", document.getId()); //// projectDocumentMapper.deleteProjectDocumentByDocId(document.getId()); //// if (CollectionUtils.isNotEmpty(document.getProjects())) { //// List projectDocs = document.getProjects().stream().map(projectId -> { //// ProjectDocument pd = new ProjectDocument(); //// pd.setDoc_id(document.getId()); //// pd.setProject_id(Long.valueOf(projectId)); //// pd.setStatus(5); //// return pd; //// }).collect(Collectors.toList()); //// projectDocumentMapper.batchInsertProjectDocument(projectDocs); //// } //// log.info("文档更新成功, 文档ID: {}", document.getId()); //// return AjaxResultCQY.success(document.getId()); //// }catch (Exception e){ //// log.error("更新文档失败, 文档ID: {}, 错误信息: {}", document.getId(), e.getMessage(), e); //// return AjaxResultCQY.error("更新文档失败:" + e.getMessage()); //// } // return null; // } // // /** // * 创建文档 // * @param request // * @param file // * @return // */ // @Transactional // public AjaxResultCQY create(Map request, MultipartFile file) { //// try { //// // 1. 获取表单参数 //// String title = (String) request.get("title"); //// String data = (String)request.get("data"); //// Integer isTemplate = (Integer)request.get("is_template"); //// Integer status = (Integer)request.get("status"); //// String projects = (String)request.get("projects"); //// //// // 2. 参数校验 //// if (StringUtils.isEmpty(title)) { //// return AjaxResultCQY.error("文档标题不能为空"); //// } //// //// Integer templateFlag = Convert.toInt(isTemplate, 0); ////// if (templateFlag == 0 && StringUtils.isEmpty(request.get("category_id").toString())) { ////// return AjaxResult.error("保存文档时,分类不能为空"); ////// } //// //// // Integer categoryId = Integer.valueOf(request.get("category_id").toString()); //// //// //// // 3. 检查标题是否重复 //// Document existDoc = documentMapper.checkDocumentTitleUnique(title, templateFlag); //// if (StringUtils.isNotNull(existDoc)) { //// String type = templateFlag == 1 ? "模板" : "文档"; //// return AjaxResultCQY.error(String.format("%s标题 '%s' 已存在", type, title)); //// } //// ////// // 4. 处理文件上传 ////// String fileUrl = ""; ////// if (file != null && !file.isEmpty()) { ////// SysFile sysFile = sysFileService.uploadFile(file); ////// if (sysFile != null) { ////// fileUrl = sysFile.getUrl(); ////// // 如果是文本文件,尝试读取内容 ////// if (FileTypeUtils.isText(file.getOriginalFilename())) { ////// data = FileUtils.readString(file); ////// } ////// } ////// } //// //// // 5. 创建文档对象 //// Document document = new Document(); //// document.setTitle(title); ////// document.setData(StringUtils.isNotEmpty(data) ? data : fileUrl); //// document.setData(StringUtils.isNotEmpty(data) ? data : ""); //// document.setUser_id(SecurityUtils.getUserId()); //// //document.setCategory_id( Long.valueOf(categoryId)); //// document.setIs_template(templateFlag); //// document.setStatus(Convert.toInt(status, 5)); //// document.setCreateTime(DateUtils.getNowDate()); //// document.setUpdateTime(DateUtils.getNowDate()); //// document.setCreateBy(SecurityUtils.getUsername()); //// //// // 6. 保存文档 //// int rows = documentMapper.insertDocument(document); //// if (rows <= 0) { //// return AjaxResultCQY.error("创建文档失败"); //// } //// //// // 7. 处理项目关联 //// if (StringUtils.isNotEmpty(projects)) { //// try { //// JSONArray projectArray = JSONArray.parseArray(projects); //// List projectDocList = new ArrayList<>(); //// //// for (int i = 0; i < projectArray.size(); i++) { //// ProjectDocument pd = new ProjectDocument(); //// pd.setDoc_id(document.getId()); //// pd.setProject_id(projectArray.getLong(i)); //// pd.setStatus(5); //// pd.setCreate_time(DateUtils.getNowDate()); //// pd.setCreate_by(SecurityUtils.getUsername()); //// projectDocList.add(pd); //// } //// //// if (!projectDocList.isEmpty()) { //// projectDocumentMapper.batchInsertProjectDocument(projectDocList); //// } //// } catch (Exception e) { //// throw new ServiceException("处理项目关联失败"); //// } //// } //// //// return AjaxResultCQY.success("创建成功", document.getId()); //// } catch (Exception e) { //// e.printStackTrace(); //// throw new ServiceException("创建文档失败:" + e.getMessage()); //// } // return null; // } // // @Override // public PageResult pageDocument(Integer page, Integer pageSize, Document document) { // try { // // 1. 设置分页参数 // PageHelper.startPage(page, pageSize); // // // 2. 执行查询 // List> list = documentMapper.pageDocument(document); // // // 3. 获取分页信息 // PageInfo> pageInfo = new PageInfo<>(list); // // // 4. 封装并返回结果 // return new PageResult( // pageInfo.getPageNum(), // pageInfo.getPageSize(), // pageInfo.getPages(), // pageInfo.getTotal(), // pageInfo.getList() // ); // // } catch (Exception e) { // log.error("查询文档列表失败", e); // return new PageResult(page, pageSize); // } // // } // // /** // * 查询文档列表 // * @param page // * @param pageSize // * @param document // * @return // */ // public PageResult searchlistDoc(Integer page, Integer pageSize,Document document) { //// //// try { //// // 1. 设置分页参数 //// PageHelper.startPage(page, pageSize); //// // 2. 执行查询 //// List list = documentMapper.selectDocumentList(document); //// // 3. 获取分页信息 //// PageInfo pageInfo = new PageInfo<>(list); //// // 4. 封装并返回结果 //// return new PageResult( //// pageInfo.getPageNum(), //// pageInfo.getPageSize(), //// pageInfo.getPages(), //// pageInfo.getTotal(), //// pageInfo.getList() //// ); //// //// } catch (Exception e) { //// log.error("查询文档列表失败", e); //// return new PageResult(page, pageSize); //// } // return null; // } // // // /** // * 查询文档详情 // * // * @param id 文档ID // * @return 文档信息 // */ // public Map info(Long id) { // Document doc = documentMapper.info(id); // Map result = new HashMap<>(); // result.put("id", doc.getId()); // result.put("title", doc.getTitle()); // result.put("data", doc.getData()); // // result.put("user_id", doc.getUserId()); // // // 获取关联产品 // result.put("linkProduct", documentMapper.selectProductDocumentsByDocId(id)); // result.put("links", ""); // // // 获取关联项目 // result.put("linkProject", documentMapper.selectProjectDocumentsByDocId(id)); // result.put("projects", ""); // // result.put("category_id", doc.getCategory_id()); // result.put("createTime", doc.getCreateTime()); // result.put("status", doc.getStatus()); // result.put("is_template", doc.getIs_template()); // // return result; // } // // /** // * 查询文档列表 // * // * @param document 文档信息 // * @return 文档集合 // */ // public List searchList(Document document){ // return documentMapper.searchList(document); // } }