diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/controller/MjyController.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/controller/MjyController.java index adb4e44..dd9f32e 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/controller/MjyController.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/controller/MjyController.java @@ -2,7 +2,6 @@ package com.hxhq.business.controller; import java.util.List; -import com.alibaba.fastjson2.JSONObject; import com.hxhq.business.domain.MjyJcgj; import com.hxhq.business.domain.MjyTz; import com.hxhq.business.dto.mjy.ListDto; @@ -13,6 +12,7 @@ import com.hxhq.business.utils.Pdf.PdfExportUtil; import com.hxhq.common.security.annotation.RequiresPermissions; import com.hxhq.common.security.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import com.hxhq.business.service.IMjyService; import com.hxhq.common.core.web.controller.BaseController; @@ -28,22 +28,30 @@ import com.hxhq.common.core.web.page.TableDataInfo; */ @RestController @RequestMapping("/business/mjy") -public class MjyController extends BaseController -{ +public class MjyController extends BaseController { @Autowired private IMjyService mjyService; @Autowired private IMjyTzService mjyTzService; @Autowired private IMjyJcgjService mjyJcgjService; + /** + * 上传文件存储在本地的根路径 + */ + @Value("${file.path}") + private String localFilePath; + /** + * 资源映射路径 前缀 + */ + @Value("${file.prefix}") + public String localFilePrefix; /** * 列表 */ - @RequiresPermissions({"business:studyMjy:list","business:nonTrialMjy:list","business:drugMjy:list"}) + @RequiresPermissions({"business:studyMjy:list", "business:nonTrialMjy:list", "business:drugMjy:list"}) @GetMapping("/studyList") - public TableDataInfo studyList(SearchForm form) - { + public TableDataInfo studyList(SearchForm form) { startPage(); List list = mjyService.queryStudyList(form); return getDataTable(list); @@ -54,8 +62,7 @@ public class MjyController extends BaseController */ @RequiresPermissions("business:resource:mjy:list") @GetMapping("/list") - public TableDataInfo list(SearchForm form) - { + public TableDataInfo list(SearchForm form) { startPage(); List list = mjyService.queryList(form); return getDataTable(list); @@ -66,8 +73,7 @@ public class MjyController extends BaseController */ @RequiresPermissions("business:resource:mjy:list") @GetMapping("/jcgjList") - public TableDataInfo jcgjList(MjyJcgj form) - { + public TableDataInfo jcgjList(MjyJcgj form) { startPage(); List list = mjyJcgjService.queryList(form); return getDataTable(list); @@ -78,8 +84,7 @@ public class MjyController extends BaseController */ @RequiresPermissions("business:resource:mjy:list") @GetMapping("/tzList") - public TableDataInfo tzList(MjyTz form) - { + public TableDataInfo tzList(MjyTz form) { startPage(); List list = mjyTzService.queryList(form); return getDataTable(list); @@ -90,8 +95,7 @@ public class MjyController extends BaseController */ @RequiresPermissions("business:resource:mjy:xq") @GetMapping(value = "/info") - public AjaxResult getInfo(Long id) - { + public AjaxResult getInfo(Long id) { return AjaxResult.success(mjyService.queryInfo(id)); } @@ -100,9 +104,20 @@ public class MjyController extends BaseController */ @RequiresPermissions("business:resource:mjy:xq") @GetMapping(value = "/exportDetail") - public AjaxResult exportDetail(Long id) - { - return AjaxResult.success(PdfExportUtil.export("com.hxhq.business.utils.Pdf.Resource.Drug","exportDetail", mjyService.queryInfo(id))); + public AjaxResult exportDetail(Long id) { + MjyJcgj mjyJcgj = new MjyJcgj(); + mjyJcgj.setMjyId(id); + List mjyJcgjList = mjyJcgjService.queryList(mjyJcgj); + MjyTz mjyTz = new MjyTz(); + mjyTz.setMjyId(id); + List mjyTzList = mjyTzService.queryList(mjyTz); + return AjaxResult.success(localFilePrefix + PdfExportUtil.export( + "com.hxhq.business.utils.Pdf.Resource.Drug", + "exportDetail", + mjyService.queryInfo(id), + mjyTzList, + mjyJcgjList, + localFilePath)); } @@ -111,8 +126,7 @@ public class MjyController extends BaseController */ @PostMapping("/jd") @RequiresPermissions("business:resource:mjy:jd") - public AjaxResult jd(@RequestBody JdForm form) - { + public AjaxResult jd(@RequestBody JdForm form) { form.setQmrId(SecurityUtils.getUserId()); mjyService.jd(form); return AjaxResult.success("操作成功"); @@ -123,8 +137,7 @@ public class MjyController extends BaseController */ @PostMapping("/plgd") @RequiresPermissions("business:resource:mjy:gd") - public AjaxResult plgd(@RequestBody GdForm form) - { + public AjaxResult plgd(@RequestBody GdForm form) { form.setQmrId(SecurityUtils.getUserId()); mjyService.plgd(form); return AjaxResult.success("操作成功"); @@ -135,8 +148,7 @@ public class MjyController extends BaseController */ @PostMapping("/gd") @RequiresPermissions("business:resource:mjy:gd") - public AjaxResult gd(@RequestBody GdForm form) - { + public AjaxResult gd(@RequestBody GdForm form) { form.setQmrId(SecurityUtils.getUserId()); mjyService.gd(form); return AjaxResult.success("操作成功"); @@ -148,8 +160,7 @@ public class MjyController extends BaseController */ @PostMapping("/plsd") @RequiresPermissions("business:resource:mjy:sd") - public AjaxResult plsd(@RequestBody SdForm form) - { + public AjaxResult plsd(@RequestBody SdForm form) { form.setQmrId(SecurityUtils.getUserId()); mjyService.plsd(form); return AjaxResult.success("操作成功"); @@ -160,8 +171,7 @@ public class MjyController extends BaseController */ @PostMapping("/sd") @RequiresPermissions("business:resource:mjy:sd") - public AjaxResult sd(@RequestBody SdForm form) - { + public AjaxResult sd(@RequestBody SdForm form) { form.setQmrId(SecurityUtils.getUserId()); mjyService.sd(form); return AjaxResult.success("操作成功"); @@ -173,8 +183,7 @@ public class MjyController extends BaseController */ @PostMapping("/js") @RequiresPermissions("business:resource:mjy:js") - public AjaxResult js(@RequestBody JsForm form) - { + public AjaxResult js(@RequestBody JsForm form) { form.setQmrId(SecurityUtils.getUserId()); mjyService.js(form); return AjaxResult.success("操作成功"); @@ -184,9 +193,8 @@ public class MjyController extends BaseController * 批量处置药剂 */ @PostMapping("/plczyj") - @RequiresPermissions({"business:resource:mjy:czyj","business:studyMjy:czyj","business:nonTrialMjy:czyj","business:drugMjy:czyj"}) - public AjaxResult plczyj(@RequestBody PlczyjForm form) - { + @RequiresPermissions({"business:resource:mjy:czyj", "business:studyMjy:czyj", "business:nonTrialMjy:czyj", "business:drugMjy:czyj"}) + public AjaxResult plczyj(@RequestBody PlczyjForm form) { form.setClrId(SecurityUtils.getUserId()); mjyService.plczyj(form); return AjaxResult.success("操作成功"); @@ -197,8 +205,7 @@ public class MjyController extends BaseController */ @PostMapping("/czyj") @RequiresPermissions("business:resource:mjy:czyj") - public AjaxResult czyj(@RequestBody CzyjForm form) - { + public AjaxResult czyj(@RequestBody CzyjForm form) { form.setClrId(SecurityUtils.getUserId()); mjyService.czyj(form); return AjaxResult.success("操作成功"); @@ -209,8 +216,7 @@ public class MjyController extends BaseController */ @PostMapping("/plczrq") @RequiresPermissions("business:resource:mjy:czrq") - public AjaxResult plczrq(@RequestBody PlczrqForm form) - { + public AjaxResult plczrq(@RequestBody PlczrqForm form) { form.setClrId(SecurityUtils.getUserId()); mjyService.plczrq(form); return AjaxResult.success("操作成功"); @@ -221,8 +227,7 @@ public class MjyController extends BaseController */ @PostMapping("/czrq") @RequiresPermissions("business:resource:mjy:czrq") - public AjaxResult czrq(@RequestBody CzrqForm form) - { + public AjaxResult czrq(@RequestBody CzrqForm form) { form.setClrId(SecurityUtils.getUserId()); mjyService.czrq(form); return AjaxResult.success("操作成功"); @@ -234,8 +239,7 @@ public class MjyController extends BaseController */ @PostMapping("ysff") @RequiresPermissions("business:resource:mjy:ysff") - public AjaxResult ysff(@RequestBody YsffForm form) - { + public AjaxResult ysff(@RequestBody YsffForm form) { form.setFfrId(SecurityUtils.getUserId()); mjyService.ysff(form); return AjaxResult.success("操作成功"); @@ -247,8 +251,7 @@ public class MjyController extends BaseController */ @PostMapping("ff") @RequiresPermissions("business:resource:mjy:ff") - public AjaxResult ff(@RequestBody FfForm form) - { + public AjaxResult ff(@RequestBody FfForm form) { mjyService.ff(form); return AjaxResult.success("操作成功"); } @@ -259,21 +262,18 @@ public class MjyController extends BaseController */ @PostMapping("plff") @RequiresPermissions("business:resource:mjy:ff") - public AjaxResult plff(@RequestBody PlffForm form) - { + public AjaxResult plff(@RequestBody PlffForm form) { mjyService.plff(form); return AjaxResult.success("操作成功"); } - /** * 编辑 */ @PostMapping("bj") - @RequiresPermissions({"business:resource:mjy:bj","business:studyMjy:bj","business:nonTrialMjy:bj","business:drugMjy:bj"}) - public AjaxResult bj(@RequestBody BjForm form) - { + @RequiresPermissions({"business:resource:mjy:bj", "business:studyMjy:bj", "business:nonTrialMjy:bj", "business:drugMjy:bj"}) + public AjaxResult bj(@RequestBody BjForm form) { form.setQmrId(SecurityUtils.getUserId()); mjyService.bj(form); return AjaxResult.success("操作成功"); @@ -285,22 +285,19 @@ public class MjyController extends BaseController */ @PostMapping("shbj") @RequiresPermissions("business:resource:mjy:shbj") - public AjaxResult shbj(@RequestBody ShbjForm form) - { + public AjaxResult shbj(@RequestBody ShbjForm form) { form.setQmrId(SecurityUtils.getUserId()); mjyService.shbj(form); return AjaxResult.success("操作成功"); } - /** * 修改库存 */ @PostMapping("xgkc") - @RequiresPermissions({"business:resource:mjy:xgkc","business:studyMjy:xgkc","business:nonTrialMjy:xgkc","business:drugMjy:xgkc"}) - public AjaxResult xgkc(@RequestBody XgkcForm form) - { + @RequiresPermissions({"business:resource:mjy:xgkc", "business:studyMjy:xgkc", "business:nonTrialMjy:xgkc", "business:drugMjy:xgkc"}) + public AjaxResult xgkc(@RequestBody XgkcForm form) { form.setQmrId(SecurityUtils.getUserId()); mjyService.xgkc(form); return AjaxResult.success("操作成功"); @@ -312,8 +309,7 @@ public class MjyController extends BaseController */ @PostMapping("shxgkc") @RequiresPermissions("business:resource:mjy:shxgkc") - public AjaxResult shxgkc(@RequestBody ShxgkcForm form) - { + public AjaxResult shxgkc(@RequestBody ShxgkcForm form) { form.setQmrId(SecurityUtils.getUserId()); mjyService.shxgkc(form); return AjaxResult.success("操作成功"); @@ -323,9 +319,8 @@ public class MjyController extends BaseController * 归还 */ @PostMapping("gh") - @RequiresPermissions({"business:resource:mjy:gh","business:studyMjy:gh","business:nonTrialMjy:gh","business:drugMjy:gh"}) - public AjaxResult gh(@RequestBody GhForm form) - { + @RequiresPermissions({"business:resource:mjy:gh", "business:studyMjy:gh", "business:nonTrialMjy:gh", "business:drugMjy:gh"}) + public AjaxResult gh(@RequestBody GhForm form) { form.setQmrId(SecurityUtils.getUserId()); mjyService.gh(form); return AjaxResult.success("操作成功"); @@ -336,8 +331,7 @@ public class MjyController extends BaseController */ @PostMapping("rk") @RequiresPermissions({"business:resource:mjy:rk"}) - public AjaxResult rk(@RequestBody RkForm form) - { + public AjaxResult rk(@RequestBody RkForm form) { mjyService.rk(form); return AjaxResult.success("操作成功"); } @@ -347,8 +341,7 @@ public class MjyController extends BaseController */ @PostMapping("/jy") @RequiresPermissions("business:resource:mjy:jy") - public AjaxResult jy(@RequestBody JyForm form) - { + public AjaxResult jy(@RequestBody JyForm form) { form.setQmrId(SecurityUtils.getUserId()); mjyService.jy(form); return AjaxResult.success("操作成功"); diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/PdfBaseUtil.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/PdfBaseUtil.java index 0565c2f..3079ec7 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/PdfBaseUtil.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/PdfBaseUtil.java @@ -21,6 +21,7 @@ import java.util.*; /** * pdf导出基类 + * * @author tanfei */ @Component @@ -28,15 +29,12 @@ public class PdfBaseUtil { private static final Logger logger = LoggerFactory.getLogger(PdfBaseUtil.class); - - private static String localFilePath="D:/hxhq/uploadPath"; - - /** * 生成PDF文件完整路径(按年月日创建文件夹) - * @return 完整文件路径,如:/data/files/2024/01/17/document_20240117123045.pdf + * + * @return 完整文件路径, */ - public static String getFilePath() { + public static String getFilePath(String localFilePath) { // 1. 获取当前年月日并创建文件夹 Date now = new Date(); SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy"); @@ -47,7 +45,7 @@ public class PdfBaseUtil { String year = yearFormat.format(now); String month = monthFormat.format(now); String day = dayFormat.format(now); - String timestamp = timestampFormat.format(now)+UUID.randomUUID(); + String timestamp = timestampFormat.format(now) + UUID.randomUUID(); // 2. 构建文件夹路径 String folderPath = localFilePath + File.separator + year + File.separator + month + File.separator + day; @@ -65,12 +63,13 @@ public class PdfBaseUtil { /** * 添加带下划线的标题 - * @param document PDF文档对象 + * + * @param document PDF文档对象 * @param titleText 标题文本 - * @param fontSize 字体大小 + * @param fontSize 字体大小 */ - public static void addUnderlinedTitle(Document document, String titleText, float fontSize) - throws DocumentException, IOException { + public static void addUnderlinedTitle(Document document, String titleText, float fontSize, Boolean hasLine) + throws DocumentException, IOException { // 创建中文字体 BaseFont baseFont = BaseFont.createFont( @@ -80,24 +79,25 @@ public class PdfBaseUtil { ); Font titleFont = new Font(baseFont, fontSize, Font.NORMAL, BaseColor.BLACK); - Font linFont = new Font(baseFont, fontSize, Font.NORMAL, BaseColor.BLACK); + Font linFont = new Font(baseFont, fontSize, Font.NORMAL, BaseColor.BLACK); // 创建标题段落 Paragraph titleParagraph = new Paragraph(titleText, titleFont); titleParagraph.setAlignment(Element.ALIGN_LEFT); - - // 添加下划线 - LineSeparator underline = new LineSeparator(linFont); - underline.setPercentage(100); // 宽度占50% - underline.setLineWidth(1); // 线粗 - underline.setAlignment(Element.ALIGN_LEFT); - - // 添加到文档 + titleParagraph.setSpacingAfter(5); document.add(titleParagraph); - document.add(underline); - // 添加一些间距 - document.add(new Paragraph(titleText)); // 空行 + if (hasLine) { + // 添加下划线 + LineSeparator underline = new LineSeparator(linFont); + underline.setPercentage(100); // 宽度占50% + underline.setLineWidth(1); // 线粗 + underline.setAlignment(Element.ALIGN_LEFT); + // 添加到文档 + document.add(underline); + // 添加一些间距 + document.add(new Paragraph(titleText)); // 空行 + } } /** @@ -122,7 +122,7 @@ public class PdfBaseUtil { fos = new FileOutputStream(filePath); PdfWriter writer = PdfWriter.getInstance(document, fos); // 设置页面事件,每页添加文字页眉 - writer.setPageEvent(new PdfBaseUtil.TextHeaderEvent(signText,headerText)); + writer.setPageEvent(new PdfBaseUtil.TextHeaderEvent(signText, headerText)); // 5. 设置PDF属性 document.addTitle("华西海圻"); document.addAuthor("华西海圻"); @@ -136,7 +136,9 @@ public class PdfBaseUtil { } } - /**创建表单 + /** + * 创建表单 + * * @param document * @param data * @param count @@ -149,7 +151,6 @@ public class PdfBaseUtil { // 创建3列表格 PdfPTable table = new PdfPTable(count); table.setWidthPercentage(100); - table.setSpacingBefore(10); table.setSpacingAfter(10); // 设置等宽列 @@ -202,7 +203,9 @@ public class PdfBaseUtil { document.add(table); } - /**创建表格 + /** + * 创建表格 + * * @param content * @param font * @return @@ -216,14 +219,6 @@ public class PdfBaseUtil { return cell; } - /** - * 生成文件名 - */ - public static String generateFileName() { - Random random = new Random(); - String timestamp = DateUtils.dateTimeNow("yyyyMMddHHmmss"); - return String.format("%s_%s.pdf", timestamp, random.nextInt(1000)); - } /** * 页面事件处理类 - 每页添加文字页眉 @@ -236,7 +231,7 @@ public class PdfBaseUtil { private int totalPages = 0; private PdfTemplate total; - public TextHeaderEvent(String signText,String headerText) throws Exception { + public TextHeaderEvent(String signText, String headerText) throws Exception { try { this.signText = signText; this.headerText = headerText; @@ -341,15 +336,15 @@ public class PdfBaseUtil { // 重复铺满水印 addRepeatedWatermark(content, width, height, signText); - // 添加页眉文字 - canvas.beginText(); - canvas.setFontAndSize(baseFont, fontSize); - canvas.setTextMatrix(textX, textY); - canvas.showText(headerText); - canvas.endText(); - - // 添加页眉分隔线(可选) - addHeaderLine(canvas, pageWidth, textY - 10); +// // 添加页眉文字 +// canvas.beginText(); +// canvas.setFontAndSize(baseFont, fontSize); +// canvas.setTextMatrix(textX, textY); +// canvas.showText(headerText); +// canvas.endText(); +// +// // 添加页眉分隔线(可选) +// addHeaderLine(canvas, pageWidth, textY - 10); } catch (Exception e) { e.printStackTrace(); @@ -358,6 +353,7 @@ public class PdfBaseUtil { /** * 添加水印 + * * @param content * @param width * @param height @@ -371,12 +367,12 @@ public class PdfBaseUtil { baseFont.getDescentPoint(signText, fontSize); // 计算间距 - float stepX = textWidth + 200; - float stepY = textHeight + 200; + float stepX = textWidth + 150; + float stepY = textHeight + 100; // 添加重复水印 - for (float x = textWidth/2 ; x < width; x += stepX) { - for (float y = textHeight/2 ; y < height; y += stepY) { + for (float x = textWidth / 2; x < width; x += stepX) { + for (float y = textHeight / 2; y < height; y += stepY) { content.beginText(); content.showTextAligned( Element.ALIGN_CENTER, @@ -392,6 +388,7 @@ public class PdfBaseUtil { /** * 添加页眉线 + * * @param canvas * @param pageWidth * @param yPos diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/PdfExportUtil.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/PdfExportUtil.java index a949b01..6d8eab8 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/PdfExportUtil.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/PdfExportUtil.java @@ -8,7 +8,8 @@ import org.springframework.stereotype.Component; import java.lang.reflect.Method; /** - * pdf导出 + * pdf导出基类 + * @author tanfei */ @Component public class PdfExportUtil { @@ -24,9 +25,8 @@ public class PdfExportUtil { // 改为不预先获取参数类型,而是在查找方法时动态匹配 Method method = null; for (Method m : clazz.getMethods()) { - if (m.getName().equals(methodName) && - m.getParameterCount() == params.length) { - method = m; + if (m.getName().equals(methodName)) { + method = m; } } @@ -41,8 +41,7 @@ public class PdfExportUtil { String result = export( "com.hxhq.business.utils.Pdf.Template.Sp.Sp001", "exportDetail", - "麻精药导出", - "张三 2025-12-12 14:52:52" + "D:/hxhq/uploadPath" ); } @@ -54,10 +53,10 @@ public class PdfExportUtil { * @param params * @return */ - public static String export(String className, String methodName, Object... params) { + public static String export(String className, String methodName, Object... params) { try { - String path= (String) invokeMethod(className, methodName, params); - return path.replace("D:\\hxhq\\uploadPath", "") + String path= (String) invokeMethod(className, methodName, params); + return path.replace(params[params.length - 1].toString().replace("/","\\" ), "") .replace("\\", "/"); } catch (Exception ex) { logger.error(ex.getMessage()); diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/Resource/Drug.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/Resource/Drug.java index 51ecea6..03025fd 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/Resource/Drug.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/Resource/Drug.java @@ -1,12 +1,21 @@ package com.hxhq.business.utils.Pdf.Resource; import com.alibaba.fastjson2.JSONObject; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.hxhq.business.domain.Mjy; +import com.hxhq.business.domain.MjyJcgj; +import com.hxhq.business.domain.MjyTz; +import com.hxhq.business.domain.StudyMethodRead; import com.hxhq.business.utils.Pdf.PdfBaseUtil; +import com.hxhq.common.core.utils.StringUtils; import com.hxhq.common.security.utils.SecurityUtils; -import com.itextpdf.text.BaseColor; -import com.itextpdf.text.Document; -import com.itextpdf.text.Element; +import com.hxhq.system.api.domain.SysUser; +import com.hxhq.system.api.model.LoginUser; +import com.itextpdf.text.*; +import com.itextpdf.text.pdf.BaseFont; +import com.itextpdf.text.pdf.PdfPCell; +import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.draw.LineSeparator; import org.apache.http.client.utils.DateUtils; import org.slf4j.Logger; @@ -14,8 +23,9 @@ import org.slf4j.LoggerFactory; import java.io.FileOutputStream; import java.io.IOException; -import java.util.LinkedHashMap; -import java.util.Map; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.List; /** * 麻精药详情 @@ -31,31 +41,94 @@ public class Drug { * @param mjy * @return */ - public String exportDetail(Mjy mjy) { + public String exportDetail(Mjy mjy, List mjyTzList, List mjyJcgjList, String localFilePath) { Document document = null; FileOutputStream fos = null; - String filePath =PdfBaseUtil.getFilePath(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String filePath = PdfBaseUtil.getFilePath(localFilePath); try { - document = PdfBaseUtil.init(document, fos, filePath, SecurityUtils.getNickName(), mjy.getMc()); + String sign="华西海圻"; + LoginUser loginUser=SecurityUtils.getLoginUser(); + if(loginUser!=null){ + sign=loginUser.getSysUser().getNickName(); + } + document = PdfBaseUtil.init(document, fos, filePath, sign+sdf.format(new Date()), mjy.getMc()); // 基本信息 - PdfBaseUtil.addUnderlinedTitle(document, "基本信息", 10); + PdfBaseUtil.addUnderlinedTitle(document, "基本信息", 10,true); Map formData1 = new LinkedHashMap<>(); formData1.put("名称", mjy.getMc()); formData1.put("编号", mjy.getBh()); formData1.put("浓度", mjy.getNd() + mjy.getNddw()); formData1.put("库存量", mjy.getKc() + mjy.getKcdw()); - formData1.put("失效日期", DateUtils.formatDate(mjy.getSxrq())); + formData1.put("失效日期", sdf.format(mjy.getSxrq())); formData1.put("存储条件", mjy.getCctj()); formData1.put("存储位置", mjy.getCcwz()); PdfBaseUtil.addFormTableColumns(document, formData1, 2); // 表单信息 - PdfBaseUtil.addUnderlinedTitle(document, "表单信息", 10); + PdfBaseUtil.addUnderlinedTitle(document, "表单信息", 10,true); Map formData3 = new LinkedHashMap<>(); formData3.put("所属表单", ""); formData3.put("所属试验信息", mjy.getMdIds()); formData3.put("表单所属人", mjy.getBdId().toString()); PdfBaseUtil.addFormTableColumns(document, formData3, 2); + PdfBaseUtil.addUnderlinedTitle(document, "麻精药台账", 10,true); + // 9. 表头 + BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); + Font headerFont = new Font(bfChinese, 10, Font.NORMAL); + Font contentFont = new Font(bfChinese, 10, Font.NORMAL); + // 8. 创建表格 + PdfPTable table = new PdfPTable(7); + table.setWidthPercentage(100); + String[] headers = {"使用人", "领取/归还人", "发放/接收人", "操作类型", "操作量", "备注/原因", "操作时间"}; + for (String header : headers) { + PdfPCell cell = new PdfPCell(new Phrase(header, headerFont)); + cell.setHorizontalAlignment(Element.ALIGN_CENTER); + cell.setBackgroundColor(BaseColor.WHITE); + cell.setPadding(8); + cell.setBorderWidth(1); + table.addCell(cell); + } + + // 台账 + int rowNum = 0; + for (MjyTz mjyTz : mjyTzList) { + // 交替行颜色 + if (rowNum % 2 == 0) { + table.getDefaultCell().setBackgroundColor(BaseColor.WHITE); + } else { + table.getDefaultCell().setBackgroundColor(BaseColor.WHITE); + } + table.addCell(PdfBaseUtil.createCell(mjyTz.getQmrMc(), contentFont)); + table.addCell(PdfBaseUtil.createCell(mjyTz.getLqrMc(), contentFont)); + table.addCell(PdfBaseUtil.createCell(mjyTz.getGhrMc(), contentFont)); + table.addCell(PdfBaseUtil.createCell(mjyTz.getQmyy(), contentFont)); + table.addCell(PdfBaseUtil.createCell(mjyTz.getCzl()+mjyTz.getCzldw(), contentFont)); + table.addCell(PdfBaseUtil.createCell(mjyTz.getRemark(), contentFont)); + table.addCell(PdfBaseUtil.createCell(sdf.format(mjyTz.getCreateTime()), contentFont)); + rowNum++; + } + document.add(table); + PdfBaseUtil.addUnderlinedTitle(document, "稽查轨迹", 10,true); + //稽查轨迹 + for (MjyJcgj mjyJcgj : mjyJcgjList) { + PdfBaseUtil.addUnderlinedTitle(document, sdf.format(mjyJcgj.getCreateTime())+" "+mjyJcgj.getJcmc() , 10,false); + StringJoiner result = new StringJoiner(", "); + ObjectMapper mapper = new ObjectMapper(); + JsonNode jsonArray = mapper.readTree(mjyJcgj.getJcnr()); + for (JsonNode node : jsonArray) { + String name = node.get("name").asText(); + String value = node.get("value").asText(); + result.add(name + ":" + value); + } + if(StringUtils.isNoneBlank(mjyJcgj.getRemark())){ + result.add("备注:"+mjyJcgj.getRemark()); + } + if(StringUtils.isNoneBlank(mjyJcgj.getRemark())){ + result.add("签名人:"+mjyJcgj.getQmrMc()); + } + PdfBaseUtil.addUnderlinedTitle(document, result.toString(), 10,false); + } logger.info("生成成功:{}", filePath); } catch (Exception e) { logger.error("生成失败", e); diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/Template/Sp/Sp001.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/Template/Sp/Sp001.java index cde5cad..eeac752 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/Template/Sp/Sp001.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/Pdf/Template/Sp/Sp001.java @@ -1,6 +1,9 @@ package com.hxhq.business.utils.Pdf.Template.Sp; import com.hxhq.business.utils.Pdf.PdfBaseUtil; +import com.hxhq.common.security.utils.SecurityUtils; +import com.hxhq.system.api.domain.SysUser; +import com.hxhq.system.api.model.LoginUser; import com.itextpdf.text.Document; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,16 +20,19 @@ public class Sp001 { private static final Logger logger = LoggerFactory.getLogger(Sp001.class.getName()); /**导出 - * @param headerText - * @param signText * @return */ - public static String exportDetail( String headerText,String signText) { + public static String exportDetail(String localFilePath) { Document document = null; FileOutputStream fos = null; - String filePath = new PdfBaseUtil().getFilePath(); + String filePath = PdfBaseUtil.getFilePath(localFilePath); try { - document=PdfBaseUtil.init(document,fos,filePath,signText,headerText); + String sign="华西海圻"; + LoginUser loginUser=SecurityUtils.getLoginUser(); + if(loginUser!=null){ + sign=loginUser.getSysUser().getNickName(); + } + document=PdfBaseUtil.init(document,fos,filePath,sign,"华西海圻"); Map formData = new LinkedHashMap<>(); formData.put("姓名","张三"); formData.put("性别", "男");