From a215d601e36bfebc798ddb12936bf216ba7bef7a Mon Sep 17 00:00:00 2001 From: cc_caijp <1049976610@qq.com> Date: Wed, 14 Jan 2026 19:00:26 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=B8=82=E5=9C=BA=E4=B8=BB=E4=BD=93=E9=99=A4?= =?UTF-8?q?=E5=90=8D=E4=BF=AE=E5=A4=8D=E3=80=81=E8=A1=8C=E6=94=BF=E5=A4=8D?= =?UTF-8?q?=E8=AE=AE=E3=80=81=E6=92=A4=E9=94=80=E7=AD=89=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=A1=E6=89=B9=E8=A1=A8=E6=96=87=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../abnormal/service/TSAttachmentService.java | 8 ++ .../service/impl/TSAttachmentServiceImpl.java | 12 +- .../EntBaseExpelledInfoController.java | 7 ++ .../service/IExpelledApplyInfoService.java | 11 ++ .../impl/ExpelledApplyInfoServiceImpl.java | 119 ++++++++++++++++++ .../chinaweal/aiccs/config/CommonConfig.java | 8 ++ .../static/template/expelled/repairDoc.docx | Bin 0 -> 15462 bytes .../static/template/expelled/revokeDoc.docx | Bin 0 -> 15469 bytes 8 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 src/main/resources/static/template/expelled/repairDoc.docx create mode 100644 src/main/resources/static/template/expelled/revokeDoc.docx diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/abnormal/service/TSAttachmentService.java b/src/main/java/com/chinaweal/aiccs/aiccs/abnormal/service/TSAttachmentService.java index a20d992..612a36f 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/abnormal/service/TSAttachmentService.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/abnormal/service/TSAttachmentService.java @@ -80,4 +80,12 @@ public interface TSAttachmentService extends BaseService { IPage selectWritsListzx(Page page, AttachmentWritDto dto); void getMaterial(HttpServletResponse response, String id, String bizSeqNo, String attachType) throws IOException; + + /** + * 通过bizseq和attachtype获取文件信息 + * @param bizseq + * @param attachtype + * @return + */ + TSAttachment getByBizseqAndType(String bizseq, String attachtype); } diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/abnormal/service/impl/TSAttachmentServiceImpl.java b/src/main/java/com/chinaweal/aiccs/aiccs/abnormal/service/impl/TSAttachmentServiceImpl.java index 79e983a..3261de2 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/abnormal/service/impl/TSAttachmentServiceImpl.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/abnormal/service/impl/TSAttachmentServiceImpl.java @@ -38,13 +38,14 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.*; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.Base64; import java.util.List; import java.util.Map; import java.util.UUID; @@ -374,4 +375,9 @@ public class TSAttachmentServiceImpl extends BaseServiceImpl().eq(TSAttachment::getBizseq, bizseq).eq(TSAttachment::getAttachtype, attachtype)); + } } diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/expelled/controller/EntBaseExpelledInfoController.java b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/controller/EntBaseExpelledInfoController.java index 316f766..fa56877 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/expelled/controller/EntBaseExpelledInfoController.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/controller/EntBaseExpelledInfoController.java @@ -212,4 +212,11 @@ public class EntBaseExpelledInfoController extends BaseController { IPage data = expelledApplyInfoService.listRevokeAnnouncement(query); return RestResult.ok(data); } + + @ApiOperation(value = "23.下载文书", position = 23) + @GetMapping("/downloadDoc") + @ResponseBody + public void downloadDoc(HttpServletResponse response, String bizId, String attachType) { + expelledApplyInfoService.downloadDoc(response, bizId, attachType); + } } diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/IExpelledApplyInfoService.java b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/IExpelledApplyInfoService.java index 145164c..ab55299 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/IExpelledApplyInfoService.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/IExpelledApplyInfoService.java @@ -12,6 +12,7 @@ import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; import com.chinaweal.youfool.framework.springboot.rest.RestResult; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; /** * @Description: 市场主体除名申请业务表接口类 @@ -79,4 +80,14 @@ public interface IExpelledApplyInfoService extends IService { * 分页查询撤销除名公告管理 */ IPage listRevokeAnnouncement(BaseQuery query); + + /** + * 生成审批表 + */ + void createDoc(ExpelledApplyInfo applyInfo, TSTaskList tsTaskList); + + /** + * 下载审批表 + */ + void downloadDoc(HttpServletResponse response, String bizId, String attachType); } diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/impl/ExpelledApplyInfoServiceImpl.java b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/impl/ExpelledApplyInfoServiceImpl.java index f3674de..98cf29b 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/impl/ExpelledApplyInfoServiceImpl.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/impl/ExpelledApplyInfoServiceImpl.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.chinaweal.aiccs.aiccs.abnormal.entity.TSAttachment; +import com.chinaweal.aiccs.aiccs.abnormal.service.TSAttachmentService; import com.chinaweal.aiccs.aiccs.auditing.entity.TSOpinion; import com.chinaweal.aiccs.aiccs.auditing.service.TSOpinionService; import com.chinaweal.aiccs.aiccs.business.entity.TSTaskList; @@ -13,9 +15,11 @@ import com.chinaweal.aiccs.aiccs.business.rules.model.SequenceFlowModel; import com.chinaweal.aiccs.aiccs.business.service.TSTaskListService; import com.chinaweal.aiccs.aiccs.business.service.WorkFlowService; import com.chinaweal.aiccs.aiccs.expelled.entity.ExpelledApplyInfo; +import com.chinaweal.aiccs.aiccs.expelled.entity.ExpelledAuditInfo; import com.chinaweal.aiccs.aiccs.expelled.entity.ExpelledResultInfo; import com.chinaweal.aiccs.aiccs.expelled.mapper.ExpelledApplyInfoMapper; import com.chinaweal.aiccs.aiccs.expelled.service.IExpelledApplyInfoService; +import com.chinaweal.aiccs.aiccs.expelled.service.IExpelledAuditInfoService; import com.chinaweal.aiccs.aiccs.expelled.service.IExpelledResultInfoService; import com.chinaweal.aiccs.aiccs.expelled.vo.AuditInfoVo; import com.chinaweal.aiccs.aiccs.expelled.vo.RemoveApproveInfo; @@ -25,18 +29,27 @@ import com.chinaweal.aiccs.common.constant.Constant; import com.chinaweal.aiccs.common.util.FlowUtil; import com.chinaweal.aiccs.common.util.HandleWorkFlowUtil; import com.chinaweal.aiccs.common.util.WorkFlowUtil; +import com.chinaweal.aiccs.config.CommonConfig; import com.chinaweal.aiccs.utils.BeanUtil; import com.chinaweal.aicorg.model.AICUser; import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException; import com.chinaweal.youfool.framework.springboot.rest.RestResult; import com.chinaweal.youfool.framework.springboot.rest.ResultCode; +import com.deepoove.poi.XWPFTemplate; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.util.HashMap; import java.util.List; @@ -60,6 +73,10 @@ public class ExpelledApplyInfoServiceImpl extends ServiceImpl startRepairBiz(AuditInfoVo query, HttpServletRequest request) { @@ -662,6 +679,8 @@ public class ExpelledApplyInfoServiceImpl extends ServiceImpl map = new HashMap<>(); + map.put("orgName", applyInfo.getRemoveOrgName()); + map.put("entName", applyInfo.getEntName()); + map.put("uscc", applyInfo.getUscc()); + map.put("lerepName", applyInfo.getLerepName()); + map.put("address", applyInfo.getAddress()); + ExpelledAuditInfo auditInfo = expelledAuditInfoService.getById(applyInfo.getAuditId()); + if (auditInfo != null) { + map.put("docNo", auditInfo.getAuditNo()); + } + map.put("approveDate", applyInfo.getApproveDate()); + map.put("applyReason", applyInfo.getApplyReason()); + // 获取历史审批意见 + LambdaQueryWrapper opinionWrapper = new LambdaQueryWrapper<>(); + opinionWrapper.eq(TSOpinion::getBizseq, applyInfo.getBizId()) + .in(TSOpinion::getOpiniontype,"0", "1", "2") + .orderByAsc(TSOpinion::getHandledate); + List tsOpinions = opinionService.list(opinionWrapper); + for (TSOpinion item : tsOpinions) { + int index = Integer.parseInt(item.getOpiniontype()) + 1; + map.put("opinion" + index, item.getOpinioncontent()); + map.put("handler" + index, item.getHandler()); + map.put("year" + index, item.getHandledate().getYear()); + map.put("month" + index, item.getHandledate().getMonthValue()); + map.put("day" + index, item.getHandledate().getDayOfMonth()); + } + try { + // 文书模板路径 + String wordTemplatePath = "static" + File.separator + "template" + File.separator + "expelled" + File.separator + "repairDoc.docx"; + if (StringUtils.equals("92", applyInfo.getState()) || StringUtils.equals("93", applyInfo.getState())) { + wordTemplatePath = "static" + File.separator + "template" + File.separator + "expelled" + File.separator + "revokeDoc.docx"; + } + String resource = ExpelledApplyInfoServiceImpl.class.getClassLoader().getResource(wordTemplatePath).getPath(); + // URL解码 + resource = URLDecoder.decode(resource, "UTF-8"); + String realPath = CommonConfig.getUploadPath(); + realPath += File.separator + applyInfo.getBizId(); + File dir = new File(realPath); + if (!dir.exists()) { + dir.mkdirs(); + } + // 生成 + String docName = UUID.randomUUID().toString(); + XWPFTemplate.compile(resource).render(map).writeToFile(realPath + File.separator + docName + ".docx"); + // 保存记录 + String ext = ".docx"; + String fileName = docName + ext; + String tempPath = applyInfo.getBizId() + File.separator + fileName; + TSAttachment tsAttachment = new TSAttachment(); + tsAttachment.setCreatetype("1"); // 文件为系统生成 + tsAttachment.setBizseq(applyInfo.getBizId()); + tsAttachment.setFileext(ext); + tsAttachment.setFilename(fileName); + tsAttachment.setTemppath(tempPath); + tsAttachment.setAttachtype("1"); // 审批表 + tsAttachment.setUploaddate(LocalDate.now()); + attachmentService.save(tsAttachment); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void downloadDoc(HttpServletResponse response, String bizId, String attachType) { + TSAttachment tsAttachment = attachmentService.getByBizseqAndType(bizId, attachType); + if (tsAttachment == null) { + return; + } + // 获取流 + InputStream is = null; + OutputStream os = null; + try { + // 获取文件 + String realPath = CommonConfig.getUploadPathByDate(tsAttachment.getUploaddate()) + File.separator + tsAttachment.getTemppath(); + is = new FileInputStream(realPath); + os = response.getOutputStream(); + String fileName = new String(tsAttachment.getFilename().getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); + // 设置:当浏览器收到这份资源的时候,以下载的方式提醒用户,而不是直接显示 + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); + byte[] buffer = new byte[4096]; + int len; + while ((len = is.read(buffer)) != -1) { + os.write(buffer, 0, len); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("下载文书时发生异常:{}=", e); + return; + } finally { + try { + os.close(); + is.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } } diff --git a/src/main/java/com/chinaweal/aiccs/config/CommonConfig.java b/src/main/java/com/chinaweal/aiccs/config/CommonConfig.java index 11b7868..bf4242d 100644 --- a/src/main/java/com/chinaweal/aiccs/config/CommonConfig.java +++ b/src/main/java/com/chinaweal/aiccs/config/CommonConfig.java @@ -65,6 +65,14 @@ public class CommonConfig { return uploadDrive + uploadPath + datePath; } + public static String getUploadPathByDate(LocalDate now) { + String dateStr = now.format(DateTimeFormatter.ofPattern("dd")); + String monthStr = now.format(DateTimeFormatter.ofPattern("MM")); + String yearStr = now.format(DateTimeFormatter.ofPattern("yyyy")); + String datePath = File.separator + yearStr + File.separator + monthStr + File.separator + dateStr; + return uploadDrive + uploadPath + datePath; + } + /** * 获取涉嫌冒用上传目录 * diff --git a/src/main/resources/static/template/expelled/repairDoc.docx b/src/main/resources/static/template/expelled/repairDoc.docx new file mode 100644 index 0000000000000000000000000000000000000000..ea7c533a96f7661641bbf3a922807910cacdad1a GIT binary patch literal 15462 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 iY1Y4`7XKUg_oSh<}lF<-N(6 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