package com.hotent.project.manager.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.hotent.base.util.StringUtil; import com.hotent.base.util.UniqueIdUtil; import com.hotent.baseInfo.manager.AuditedUnitManager; import com.hotent.baseInfo.manager.CostDocumentTemplateFileManager; import com.hotent.baseInfo.manager.CostDocumentTemplateManager; import com.hotent.baseInfo.manager.CostDocumentWhManager; import com.hotent.baseInfo.model.AuditedUnit; import com.hotent.baseInfo.model.CostDocumentTemplate; import com.hotent.baseInfo.model.CostDocumentTemplateFile; import com.hotent.baseInfo.model.CostDocumentWh; import com.hotent.config.EipConfig; import com.hotent.constant.BaseConstant; import com.hotent.project.manager.CostProjectApprovalManager; import com.hotent.project.manager.CostProjectDocumentFileManager; import com.hotent.project.manager.CostProjectTaskEvidenceManager; import com.hotent.project.model.CostProjectApproval; import com.hotent.project.model.CostProjectDocument; import com.hotent.project.dao.CostProjectDocumentDao; import com.hotent.project.manager.CostProjectDocumentManager; import com.hotent.base.manager.impl.BaseManagerImpl; import com.hotent.project.model.CostProjectDocumentFile; import com.hotent.project.model.CostProjectTaskEvidence; import com.hotent.project.req.CostProjectDocumentPageReq; import com.hotent.project.req.CostProjectDocumentReq; import com.hotent.project.resp.CostProjectDocumentResp; import com.hotent.uc.api.model.IUser; import com.hotent.uc.exception.BaseException; import com.hotent.uc.manager.UserManager; import com.hotent.uc.model.User; import com.hotent.uc.util.ContextUtil; import com.hotent.util.FileUtils; import com.hotent.util.HtmlUtils; import com.hotent.util.wordexcelutils.*; import org.apache.commons.lang.StringUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.tools.ant.util.DateUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.YearMonth; import java.util.*; import java.util.stream.Collectors; import com.hotent.util.FileUploadUtil; import static org.apache.tools.ant.util.DateUtils.ISO8601_DATE_PATTERN; /** * 监审项目文书表 服务实现类 * * @author 超级管理员 * @company 山西清众科技股份有限公司 * @since 2025-09-26 */ @Service public class CostProjectDocumentManagerImpl extends BaseManagerImpl implements CostProjectDocumentManager { @Autowired private CostProjectDocumentFileManager costProjectDocumentFileManager; @Autowired private CostDocumentTemplateManager costDocumentTemplateManager; @Autowired private AuditedUnitManager auditedUnitManager; @Autowired private CostDocumentTemplateFileManager costDocumentTemplateFileManager; @Autowired private CostProjectTaskEvidenceManager costProjectTaskEvidenceManager; @Autowired private CostDocumentWhManager costDocumentWhManager; @Autowired private CostProjectApprovalManager costProjectApprovalManager; @Autowired private UserManager userService; @Autowired private CostDocumentTemplateFileManager costTemplateFileManager; @Override public CostProjectDocument getDetail(String id) { CostProjectDocument costProjectDocument = this.get(id); return costProjectDocument; } @Override public void deleteByIds(List ids) { List costProjectDocuments = this.listByIds(ids); if (costProjectDocuments!=null){ costProjectDocuments.forEach(item -> { //逻辑删除 item.setIsDeleted( BaseConstant.DELETE_FLAG); }); this.updateBatchById(costProjectDocuments); } } @Override @Transactional public void createOrUpdate(CostProjectDocument costProjectDocument) { //新建或更新 this.saveOrUpdate(costProjectDocument); } @Override public IPage pageList(CostProjectDocumentPageReq req) throws Exception { LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); if (req.getDocumentType() != null) { // LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); // lambdaQueryWrapper.eq(CostDocumentTemplate::getId, req.getDocumentType()); // lambdaQueryWrapper.eq(CostDocumentTemplate::getIsWh, "0"); qw.eq(CostProjectDocument::getDocumentType, req.getDocumentType()); } if (StringUtil.isNotEmpty(req.getProjectId())) { qw.eq(CostProjectDocument::getProjectId, req.getProjectId()); } if(req.getPermissionType().equals(1)){ IUser iUser = ContextUtil.getCurrentUser(); User user = userService.getByAccount(iUser.getAccount()); List auditedUnit=auditedUnitManager.getByUserAccount(user.getId()); List collected = auditedUnit.stream().map(AuditedUnit::getUnitId).distinct().collect(Collectors.toList()); qw.in(CostProjectDocument::getEnterpriseId, collected); } else if (req.getPermissionType().equals(2)) { IUser iUser = ContextUtil.getCurrentUser(); User user = userService.getByAccount(iUser.getAccount()); qw.eq(CostProjectDocument::getCreateBy, user.getAccount()); } IPage page = new Page<>(req.getPageNum(), req.getPageSize()); return this.page(page, qw); } // @Override // public void create(CostProjectDocument costProjectDocument) { // if (ObjectUtil.isEmpty(costProjectDocument.getDocumentId())) { // throw new BaseException("请选择文书模板"); // } // if (ObjectUtil.isEmpty(costProjectDocument.getProjectId())) { // throw new BaseException("请选择项目"); // } // if (ObjectUtil.isEmpty(costProjectDocument.getDocumentNumber())) { // throw new BaseException("请填写通知文号"); // } // if (ObjectUtil.isEmpty(costProjectDocument.getEnterpriseId())) { // throw new BaseException("请选择监审单位"); // } // costProjectDocument.setGenerateTime(LocalDateTime.now()); // costProjectDocument.setIsPushed("1"); // // CostDocumentTemplate costDocumentTemplate = this.costDocumentTemplateManager.get(costProjectDocument.getDocumentId()); // if (costDocumentTemplate == null || BaseConstant.DELETE_FLAG.equals(costDocumentTemplate.getIsDeleted())) { // throw new BaseException("文书模板不存在"); // } // costProjectDocument.setDocumentAlias(costDocumentTemplate.getAlias()); // AuditedUnit auditedUnit = auditedUnitManager.get(costProjectDocument.getEnterpriseId()); // if (auditedUnit == null || BaseConstant.DELETE_FLAG.equals(auditedUnit.getIsDeleted())) { // throw new BaseException("被监审单位不存在"); // } // CostDocumentWh costDocumentWh = costDocumentWhManager.get(costProjectDocument.getDocumentWhId()); // if (costDocumentWh == null || BaseConstant.DELETE_FLAG.equals(costDocumentWh.getIsDeleted())) { // throw new BaseException("文书文号不存在"); // } // // LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); // qw.eq(CostProjectDocument::getProjectId, costProjectDocument.getProjectId()); // qw.eq(CostProjectDocument::getDocumentId, costProjectDocument.getDocumentId()); // qw.eq(CostProjectDocument::getEnterpriseId, costProjectDocument.getEnterpriseId()); // if (this.count(qw) > 0) { // throw new BaseException("该项目监审单位已存在此文书"); // } // super.create(costProjectDocument); // // // } @Override @Transactional public String create(CostProjectDocumentReq req) throws Exception { if (ObjectUtil.isEmpty(req.getDocumentId())) { throw new BaseException("请选择文书模板"); } if (ObjectUtil.isEmpty(req.getProjectId())) { throw new BaseException("请选择项目"); } CostDocumentTemplate costDocumentTemplate = this.costDocumentTemplateManager.get(req.getDocumentId()); if (costDocumentTemplate == null || BaseConstant.DELETE_FLAG.equals(costDocumentTemplate.getIsDeleted())) { throw new BaseException("文书模板不存在"); } if (!costDocumentTemplate.getAlias().equals("cbjsgzdg") &&!costDocumentTemplate.getAlias().equals("cbjsjtsyjl") &&!costDocumentTemplate.getAlias().equals("cbshcbyjb1") &&!costDocumentTemplate.getAlias().equals("cbjstqzldjb") && ObjectUtil.isEmpty(req.getDocumentNumber())) { throw new BaseException("请填写通知文号"); } if (ObjectUtil.isEmpty(req.getEnterpriseId())) { throw new BaseException("请选择监审单位"); } req.setGenerateTime(LocalDateTime.now()); req.setIsPushed("1"); req.setDocumentAlias(costDocumentTemplate.getAlias()); AuditedUnit auditedUnit = auditedUnitManager.get(req.getEnterpriseId()); if (auditedUnit == null || BaseConstant.DELETE_FLAG.equals(auditedUnit.getIsDeleted())) { throw new BaseException("被监审单位不存在"); } CostDocumentWh costDocumentWh; //返回文号 String whNo; if (!costDocumentTemplate.getAlias().equals("cbjsgzdg") &&!costDocumentTemplate.getAlias().equals("cbjsjtsyjl") &&!costDocumentTemplate.getAlias().equals("cbshcbyjb1") &&!costDocumentTemplate.getAlias().equals("cbjstqzldjb")) { costDocumentWh= costDocumentWhManager.get(req.getDocumentWhId()); if (costDocumentWh == null || BaseConstant.DELETE_FLAG.equals(costDocumentWh.getIsDeleted())) { throw new BaseException("文书文号不存在"); } //返回文号 whNo = this.getWH(costDocumentWh); } else { costDocumentWh = null; whNo = ""; } LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); qw.eq(CostProjectDocument::getProjectId, req.getProjectId()); qw.eq(CostProjectDocument::getDocumentId, req.getDocumentId()); qw.eq(CostProjectDocument::getEnterpriseId, req.getEnterpriseId()); if (this.count(qw) > 0) { throw new BaseException("该项目监审单位已存在此文书"); } IUser iUser = ContextUtil.getCurrentUser(); User user = userService.getByAccount(iUser.getAccount()); CostProjectApproval costProjectApproval = costProjectApprovalManager.get(req.getProjectId()); //类型转换 CostProjectDocument costProjectDocument = new CostProjectDocument(); BeanUtil.copyProperties(req, costProjectDocument); costProjectDocument.setDocumentNumber(whNo); costProjectDocument.setDocumentName(costDocumentTemplate.getDocumentName()); costProjectDocument.setCreateBy(user.getCreateBy()); costProjectDocument.setDocumentType(costDocumentTemplate.getType()); costProjectDocument.setProjectId(costProjectApproval.getProjectId()); super.create(costProjectDocument); //文件关联信息赋值 req.getCostProjectDocumentFiles().forEach(costProjectDocumentFile -> { costProjectDocumentFile.setDocumentId(costProjectDocument.getDocumentId()); costProjectDocumentFile.setProjectId(costProjectDocument.getProjectId()); costProjectDocumentFile.setProjectDocumentId(costProjectDocument.getId()); switch (costProjectDocumentFile.getPinyin()) { case "SongDaWenShuWenHao": costProjectDocumentFile.setDataValue(whNo); break; } if (StringUtils.isNotBlank(costProjectDocumentFile.getTableName())){ if(StringUtil.isEmpty(costProjectDocumentFile.getWhereValue())){ costProjectDocumentFile.setWhereValue(costProjectApproval.getProjectId()); } else if (costProjectDocument.getDocumentAlias().equals("cbjsgzdg") &&!costProjectDocument.getDocumentAlias().equals("cbjsjtsyjl") &&!costProjectDocument.getDocumentAlias().equals("cbshcbyjb1") &&!costProjectDocument.getDocumentAlias().equals("cbjstqzldjb")) { String whereValue1 = costProjectDocumentFile.getWhereValue(); String replace = whereValue1.replace("?", "'" + costProjectApproval.getProjectId() + "'"); String replaced = replace.replace("&", auditedUnit.getUnitId()); costProjectDocumentFile.setWhereValue(replaced); } else { String whereValue1 = costProjectDocumentFile.getWhereValue(); String replace = whereValue1.replace("?", "'" + costProjectApproval.getProjectId() + "'"); costProjectDocumentFile.setWhereValue(replace); } String colValue = costTemplateFileManager.getColValue(costProjectDocumentFile.getTableName(), costProjectDocumentFile.getColName(), costProjectDocumentFile.getWhereName(), costProjectDocumentFile.getWhereValue()); //获取whereValue字段值 costProjectDocumentFile.setDataValue(colValue); } }); if (!costDocumentTemplate.getAlias().equals("sdhz")) { CostDocumentTemplate templateManagerById = costDocumentTemplateManager.getByAlias("sdhz"); if (templateManagerById==null) { throw new BaseException("未查询到送达回证文书模板信息,请先添加"); } ArrayList arrayList = new ArrayList<>(); CostProjectDocument projectDocument = new CostProjectDocument(); BeanUtil.copyProperties(costProjectDocument, projectDocument); projectDocument.setId(UniqueIdUtil.getSuid()); projectDocument.setCreateBy(user.getAccount()); projectDocument.setCreateTime(LocalDateTime.now()); /*QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("wh_type","187"); List list = costDocumentWhManager.list(wrapper); if (list == null || list.isEmpty()) { throw new BaseException("文书文号不存在"); } CostDocumentWh costDocument = list.get(0); //返回文号 String whno = this.getWH(costDocument);*/ projectDocument.setDocumentNumber(whNo); projectDocument.setElectronicDocumentUrl(templateManagerById.getFileUrl()); if(costDocumentWh!=null){ projectDocument.setDocumentWhId(costDocumentWh.getId()); } projectDocument.setDocumentId(String.valueOf(templateManagerById.getId())); projectDocument.setDocumentName(costProjectDocument.getDocumentName()+"-"+templateManagerById.getDocumentName()); projectDocument.setDocumentType(templateManagerById.getType()); projectDocument.setDocumentAlias(templateManagerById.getAlias()); //super.create(projectDocument); this.save(projectDocument); List documentFileList = costDocumentTemplateFileManager.getDocumentFileList(String.valueOf(templateManagerById.getId())); documentFileList.forEach(f->{ CostProjectDocumentFile costProjectDocumentFile = new CostProjectDocumentFile(); BeanUtils.copyProperties(f,costProjectDocumentFile); costProjectDocumentFile.setId(UniqueIdUtil.getUId()); costProjectDocumentFile.setCreateBy(user.getAccount()); costProjectDocumentFile.setCreateTime(LocalDateTime.now()); costProjectDocumentFile.setProjectId(costProjectApproval.getProjectId()); costProjectDocumentFile.setProjectDocumentId(projectDocument.getId()); //costProjectDocumentFile.setProjectId(costProjectDocument.getProjectId()); switch (f.getPinyin()) { case "JiaGeZhuGuanBuMenHuoChengBenDiaoChaJiGou": costProjectDocumentFile.setDataValue(costProjectApproval.getOrgName()); break; case "SongDaWenShuMingCheng": costProjectDocumentFile.setDataValue(costDocumentWh.getWhName()); break; case "SongDaWenShuWenHao": costProjectDocumentFile.setDataValue(projectDocument.getDocumentNumber()); break; case "ShouSongDaRen": costProjectDocumentFile.setDataValue(auditedUnit.getContactName()); break; case "BeiJianShenDanWeiBanGongDiDian": costProjectDocumentFile.setDataValue(auditedUnit.getAddress()); break; case "TongZhiSongDaShiJian": costProjectDocumentFile.setDataValue(DateUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss")); break; case "BeiJianShenDanWeiLianXiRenDianHua": costProjectDocumentFile.setDataValue(auditedUnit.getContactMobile()); break; default: costProjectDocumentFile.setDataValue(""); break; } /*if (StringUtils.isNotBlank(f.getTableName())){ if(StringUtil.isEmpty(costProjectDocumentFile.getWhereValue())){ costProjectDocumentFile.setWhereValue(costProjectApproval.getProjectId()); }else { String whereValue1 = costProjectDocumentFile.getWhereValue(); String replace = whereValue1.replace("?", "'" + costProjectApproval.getProjectId() + "'"); costProjectDocumentFile.setWhereValue(replace); } String colValue = costTemplateFileManager.getColValue(costProjectDocumentFile.getTableName(), costProjectDocumentFile.getColName(), costProjectDocumentFile.getWhereName(), costProjectDocumentFile.getWhereValue()); //获取whereValue字段值 costProjectDocumentFile.setDataValue(colValue); }*/ arrayList.add(costProjectDocumentFile); }); costProjectDocumentFileManager.saveBatch(arrayList); } //保存解析出的文件内容 costProjectDocumentFileManager.saveBatch(req.getCostProjectDocumentFiles()); return costProjectDocument.getId(); } public synchronized String getWH(CostDocumentWh costDocumentWh){ if("incremental".equals(costDocumentWh.getGenerateType())){ costDocumentWh.setCurrentValue(costDocumentWh.getCurrentValue()+1); costDocumentWh.setLastGenerateDate(LocalDate.now()); } else if ("daily".equals(costDocumentWh.getGenerateType())) { boolean b = LocalDate.now().isEqual(costDocumentWh.getLastGenerateDate()); if (!b) { costDocumentWh.setCurrentValue(costDocumentWh.getCurrentValue()+1); costDocumentWh.setLastGenerateDate(LocalDate.now()); } }else if ("monthly".equals(costDocumentWh.getGenerateType())) { LocalDate date = LocalDate.now(); // 获取当前日期 YearMonth currentYearMonth = YearMonth.from(date); if (currentYearMonth.equals(YearMonth.from(costDocumentWh.getLastGenerateDate()))) { costDocumentWh.setCurrentValue(costDocumentWh.getCurrentValue()+1); costDocumentWh.setLastGenerateDate(LocalDate.now()); } }else if ("yearly".equals(costDocumentWh.getGenerateType())) { LocalDate date = LocalDate.now(); // 获取当前日期 // 获取当前年份 int currentYear = date.getYear(); if (costDocumentWh.getLastGenerateDate().getYear() == currentYear) { costDocumentWh.setCurrentValue(costDocumentWh.getCurrentValue()+1); costDocumentWh.setLastGenerateDate(LocalDate.now()); } } costDocumentWhManager.update(costDocumentWh); return costDocumentWh.getRulePattern().replace("{prefixText}", costDocumentWh.getPrefixText()) .replace("{year}","【" +costDocumentWh.getYear()+"】").replace("{currentValue}", costDocumentWh.getCurrentValue().toString()); } @Override public List getDocumentFileList(String id) { CostProjectDocument costProjectDocument = this.get(id); if(costProjectDocument == null){ throw new BaseException("文书模板不存在"); } return null; } @Override public void updateProjectDocument(CostProjectDocumentReq req) { if (ObjectUtil.isEmpty(req.getId())) { throw new BaseException("请选择要修改的文书"); } if (ObjectUtil.isEmpty(req.getDocumentId())) { throw new BaseException("请选择文书模板"); } if (ObjectUtil.isEmpty(req.getProjectId())) { throw new BaseException("请选择项目"); } if (ObjectUtil.isEmpty(req.getDocumentNumber())) { throw new BaseException("请填写通知文号"); } if (ObjectUtil.isEmpty(req.getEnterpriseId())) { throw new BaseException("请选择监审单位"); } CostProjectDocument selectCostProjectDocument = this.get(req.getId()); if (selectCostProjectDocument == null) { throw new BaseException("请选择要修改的文书"); } req.setIsPushed("1"); CostDocumentTemplate costDocumentTemplate = this.costDocumentTemplateManager.get(req.getDocumentId()); if (costDocumentTemplate == null || BaseConstant.DELETE_FLAG.equals(costDocumentTemplate.getIsDeleted())) { throw new BaseException("文书模板不存在"); } req.setDocumentAlias(costDocumentTemplate.getAlias()); AuditedUnit auditedUnit = auditedUnitManager.get(req.getEnterpriseId()); if (auditedUnit == null || BaseConstant.DELETE_FLAG.equals(auditedUnit.getIsDeleted())) { throw new BaseException("被监审单位不存在"); } CostDocumentWh costDocumentWh = costDocumentWhManager.get(req.getDocumentWhId()); if (costDocumentWh == null || BaseConstant.DELETE_FLAG.equals(costDocumentWh.getIsDeleted())) { throw new BaseException("文书文号不存在"); } LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); qw.eq(CostProjectDocument::getProjectId, req.getProjectId()); qw.eq(CostProjectDocument::getDocumentId, req.getDocumentId()); qw.eq(CostProjectDocument::getEnterpriseId, req.getEnterpriseId()); /*if (this.count(qw) > 0) { throw new BaseException("该项目监审单位已存在此文书"); }*/ selectCostProjectDocument.setDocumentWhId(req.getDocumentWhId()); selectCostProjectDocument.setDocumentId(req.getDocumentId()); selectCostProjectDocument.setEnterpriseId(req.getEnterpriseId()); selectCostProjectDocument.setElectronicDocumentUrl(""); // 类型转换 BeanUtil.copyProperties(req,selectCostProjectDocument); super.update(selectCostProjectDocument); /*costProjectDocumentFileManager.remove(new LambdaQueryWrapper().eq(CostProjectDocumentFile::getProjectId,selectCostProjectDocument.getProjectId())); List costProjectDocumentFiles = req.getCostProjectDocumentFiles(); if (costProjectDocumentFiles != null){ for (CostProjectDocumentFile costProjectDocumentFile : costProjectDocumentFiles) { costProjectDocumentFile.setDocumentId(selectCostProjectDocument.getDocumentId()); costProjectDocumentFile.setProjectId(selectCostProjectDocument.getProjectId()); //costProjectDocumentFile.setProjectDocumentId(selectCostProjectDocument.); } }*/ req.getCostProjectDocumentFiles().forEach(f->{ f.setProjectDocumentId(selectCostProjectDocument.getId()); }); costProjectDocumentFileManager.updateBatchById(req.getCostProjectDocumentFiles()); } @Override public List getListByProjectId(String projectId) { LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); qw.eq(CostProjectDocument::getProjectId, projectId); List list = this.list(qw); if (ObjectUtil.isEmpty(list)) { return new ArrayList<>(); } return list; } @Override public CostProjectDocumentResp getByProjectId(String projectId){ //查询监审文书 LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); qw.eq(CostProjectDocument::getProjectId, projectId); qw.eq(CostProjectDocument::getIsDeleted, BaseConstant.NORMAL_STATUS); CostProjectDocument costProjectDocument = this.getOne(qw); //转换为返回类型 CostProjectDocumentResp costProjectDocumentResp = BeanUtil.copyProperties(costProjectDocument, CostProjectDocumentResp.class); //查询文书下的文书内容 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(CostProjectDocumentFile::getProjectId, costProjectDocument.getProjectId()); //获取文件内容返回 costProjectDocumentResp.setCostProjectDocumentFiles(costProjectDocumentFileManager.list(wrapper)); CostDocumentTemplate costDocumentTemplate = costDocumentTemplateManager.get(costProjectDocument.getDocumentId()); costProjectDocumentResp.setFullPath(EipConfig.getImgUrl()+costDocumentTemplate.getFileUrl()); return costProjectDocumentResp; } @Override public String createDocument(String id) { CostProjectDocument costProjectDocument = this.getDetail(id); List list = costProjectDocumentFileManager.getCostProjectDocumentFiles(costProjectDocument.getProjectId(),costProjectDocument.getDocumentId()); CostDocumentTemplate costDocumentTemplate = this.costDocumentTemplateManager.get(costProjectDocument.getDocumentId()); //生成文书 Map map = new HashMap<>(); list.stream().forEach(p->{ map.put("{"+p.getOriginalText()+"}", HtmlUtils.stripHtmlFast(p.getDataValue()) ); }); //先处理一种文件 String templatePath = costDocumentTemplate.getFileUrl().replace(BaseConstant.RESOURCE_PREFIX,""); templatePath = EipConfig.getProfile()+templatePath; String fileExtension = FileUploadUtil.getFileExtension(costDocumentTemplate.getFileUrl()); String fileName = FileUploadUtil.generateFileName(costDocumentTemplate.getDocumentName()+"."+fileExtension); String outputPath = FileUploadUtil.generateSavePath(EipConfig.getUploadPath(), fileName, fileExtension); try (FileInputStream fis = new FileInputStream(templatePath); XWPFDocument document = new XWPFDocument(fis); FileOutputStream fos = FileUtils.createFileOutputStream(outputPath);) { //FileOutputStream fos = new FileOutputStream(outputPath); //SimpleStylePreserver.smartReplaceKeepStyle(document,map); //BestPracticeReplacer.replaceTextBestPractice(document,map); //BestPracticeReplacer.applySmartStyles(document); if (!costProjectDocument.getDocumentAlias().equals("cbjstqzldjb")) { SmartTemplateWriter.writeToTemplate(document,map); }else { List costProjectTaskEvidences= costProjectTaskEvidenceManager.findEvidenceListByTaskIds(costProjectDocument.getProjectId(),costProjectDocument.getEnterpriseId()); if (!costProjectTaskEvidences.isEmpty()) { List mapList = costProjectTaskEvidences.stream().map(c -> { CompleteTemplateProcessor.TableRowData tableRowData = new CompleteTemplateProcessor.TableRowData(); /*Map hashMap = new HashMap<>(); hashMap.put("pageCount",c.getPageCount()); hashMap.put("remark",c.getRemark()); hashMap.put("documentName",c.getMaterialName());*/ tableRowData.setDocumentName(c.getMaterialName()); tableRowData.setRemark(c.getRemark()); tableRowData.setPageCount(c.getPageCount()); return tableRowData; }).collect(Collectors.toList()); //int sum = costProjectTaskEvidences.stream().mapToInt(CostProjectTaskEvidence::getPageCount).sum(); //SimpleTableFiller.fillTableSimple(document,null,mapList,costProjectTaskEvidences.size(),sum,DateUtils.format(new Date(),ISO8601_DATE_PATTERN)); AuditedUnit auditedUnit = auditedUnitManager.get(costProjectDocument.getEnterpriseId()); CompleteTemplateProcessor.processTemplateComplete(document,auditedUnit.getUnitName(),mapList,DateUtils.format(new Date(),ISO8601_DATE_PATTERN)); } } document.write(fos); } catch (IOException e) { throw new RuntimeException("处理Word文档时出错", e); } // DocumentProcessor.processWordDocument(templatePath,outputPath,map,new LinkedHashMap<>()); return EipConfig.getImgUrl()+FileUploadUtil.getPathFileName(outputPath,fileName); } @Override public void feedbackDocumentUrl(CostProjectDocumentReq req) { if (ObjectUtil.isEmpty(req.getId())) { throw new BaseException("请选择要修改的文书"); } if (ObjectUtil.isEmpty(req.getFeedbackDocumentUrl())) { throw new BaseException("被监审单位反馈资料附件ID集合不能为空"); } CostProjectDocument projectDocument = this.get(req.getId()); if(projectDocument==null){ throw new BaseException("根据id未查询到实体信息"); } projectDocument.setFeedbackDocumentUrl(req.getFeedbackDocumentUrl()); projectDocument.setFeedbackTime(LocalDateTime.now()); this.update(projectDocument); } }