|
|
|
@ -3,11 +3,10 @@ package com.hxhq.business.utils.pdf.resource; |
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException; |
|
|
|
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.StudyFormFillJcgj; |
|
|
|
import com.hxhq.business.domain.*; |
|
|
|
import com.hxhq.business.dto.mjy.DetailDto; |
|
|
|
import com.hxhq.business.enums.zykgl.ZjztEnum; |
|
|
|
import com.hxhq.business.utils.MjyJcnrUtil; |
|
|
|
import com.hxhq.business.utils.pdf.PdfBaseUtil; |
|
|
|
import com.hxhq.common.core.utils.StringUtils; |
|
|
|
import com.hxhq.common.security.utils.SecurityUtils; |
|
|
|
@ -39,20 +38,20 @@ public class Drug { |
|
|
|
* @param mjy |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public String exportDetail(DetailDto mjy, List<MjyTz> mjyTzList, List<MjyJcgj> mjyJcgjList, String localFilePath) { |
|
|
|
public String exportDetail(DetailDto mjy, List<MjyTz> mjyTzList, List<MjyJcgj> mjyJcgjList, String lang, String localFilePath) { |
|
|
|
Document document = null; |
|
|
|
FileOutputStream fos = null; |
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
String filePath = PdfBaseUtil.getFilePath(localFilePath); |
|
|
|
try { |
|
|
|
String sign="华西海圻"; |
|
|
|
LoginUser loginUser=SecurityUtils.getLoginUser(); |
|
|
|
if(loginUser!=null){ |
|
|
|
sign=loginUser.getSysUser().getNickName(); |
|
|
|
String sign = "en".equals(lang) ? "hxhq" : "华西海圻"; |
|
|
|
LoginUser loginUser = SecurityUtils.getLoginUser(); |
|
|
|
if (loginUser != null) { |
|
|
|
sign = loginUser.getSysUser().getNickName(); |
|
|
|
} |
|
|
|
document = PdfBaseUtil.init(document, fos, filePath, sign+sdf.format(new Date()), null); |
|
|
|
document = PdfBaseUtil.init(document, fos, filePath, sign + sdf.format(new Date()), null); |
|
|
|
// 基本信息 |
|
|
|
PdfBaseUtil.addUnderlinedTitle(document, "基本信息", 10,true); |
|
|
|
PdfBaseUtil.addUnderlinedTitle(document, "en".equals(lang) ? MjyJcnrUtil.getEn("基本信息") : "基本信息", 10, true); |
|
|
|
Map<String, String> formData1 = new LinkedHashMap<>(); |
|
|
|
formData1.put("名称", mjy.getMc()); |
|
|
|
formData1.put("编号", mjy.getBh()); |
|
|
|
@ -61,20 +60,21 @@ public class Drug { |
|
|
|
formData1.put("失效日期", sdf.format(mjy.getSxrq())); |
|
|
|
formData1.put("存储条件", mjy.getCctj()); |
|
|
|
formData1.put("存储位置", mjy.getCcwz()); |
|
|
|
PdfBaseUtil.addFormTableColumns(document, formData1, 2); |
|
|
|
formData1.put("制剂状态", "en".equals(lang) ? (MjyJcnrUtil.getEn(ZjztEnum.getEnumByValue(mjy.getZjzt()).getText())) : ZjztEnum.getEnumByValue(mjy.getZjzt()).getText()); |
|
|
|
PdfBaseUtil.addFormTableColumns(document, "en".equals(lang) ? MjyJcnrUtil.getMapEn(formData1) : formData1, 2); |
|
|
|
// 表单信息 |
|
|
|
PdfBaseUtil.addUnderlinedTitle(document, "表单信息", 10,true); |
|
|
|
PdfBaseUtil.addUnderlinedTitle(document, "en".equals(lang) ? MjyJcnrUtil.getEn("表单信息") : "表单信息", 10, true); |
|
|
|
Map<String, String> formData3 = new LinkedHashMap<>(); |
|
|
|
formData3.put("所属表单", mjy.getBdMc()); |
|
|
|
formData3.put("所属试验信息", mjy.getStudyMc()); |
|
|
|
formData3.put("所属表单", mjy.getBdMc()); |
|
|
|
formData3.put("表单所属人", mjy.getBdgsrMc()); |
|
|
|
PdfBaseUtil.addFormTableColumns(document, formData3, 2); |
|
|
|
PdfBaseUtil.addUnderlinedTitle(document, "麻精药台账", 10,true); |
|
|
|
PdfBaseUtil.addFormTableColumns(document, "en".equals(lang) ? MjyJcnrUtil.getMapEn(formData3) : formData3, 2); |
|
|
|
PdfBaseUtil.addUnderlinedTitle(document, "en".equals(lang) ? MjyJcnrUtil.getEn("给药制剂台账") : "给药制剂台账", 10, true); |
|
|
|
// 台账 |
|
|
|
addTz(document,mjyTzList); |
|
|
|
PdfBaseUtil.addUnderlinedTitle(document, "稽查轨迹", 10,true); |
|
|
|
addTz(document, mjyTzList, lang); |
|
|
|
PdfBaseUtil.addUnderlinedTitle(document, "en".equals(lang) ? MjyJcnrUtil.getEn("稽查轨迹") : "稽查轨迹", 10, true); |
|
|
|
//稽查轨迹 |
|
|
|
addJcgj(document,mjyJcgjList); |
|
|
|
addJcgj(document, mjyJcgjList, lang); |
|
|
|
logger.info("生成成功:{}", filePath); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("生成失败", e); |
|
|
|
@ -96,21 +96,30 @@ public class Drug { |
|
|
|
|
|
|
|
/** |
|
|
|
* 台账 |
|
|
|
* |
|
|
|
* @param document |
|
|
|
* @param mjyTzList |
|
|
|
* @throws IOException |
|
|
|
* @throws DocumentException |
|
|
|
*/ |
|
|
|
public void addTz(Document document,List<MjyTz> mjyTzList) throws IOException, DocumentException { |
|
|
|
public void addTz(Document document, List<MjyTz> mjyTzList, String lang) throws IOException, DocumentException { |
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
// 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); |
|
|
|
Font headerFont = new Font(bfChinese, 8, Font.NORMAL); |
|
|
|
Font contentFont = new Font(bfChinese, 8, Font.NORMAL); |
|
|
|
// 8. 创建表格 |
|
|
|
PdfPTable table = new PdfPTable(7); |
|
|
|
table.setWidthPercentage(100); |
|
|
|
String[] headers = {"使用人", "领取/归还人", "发放/接收人", "操作类型", "操作量", "备注/原因", "操作时间"}; |
|
|
|
String[] headers = { |
|
|
|
"en".equals(lang) ? MjyJcnrUtil.getEn("使用人") : "使用人", |
|
|
|
"en".equals(lang) ? MjyJcnrUtil.getEn("领取/归还人") : "领取/归还人", |
|
|
|
"en".equals(lang) ? MjyJcnrUtil.getEn("发放/接收人") : "发放/接收人", |
|
|
|
"en".equals(lang) ? MjyJcnrUtil.getEn("操作类型") : "操作类型", |
|
|
|
"en".equals(lang) ? MjyJcnrUtil.getEn("操作量") : "操作量", |
|
|
|
"en".equals(lang) ? MjyJcnrUtil.getEn("备注/原因") : "备注/原因", |
|
|
|
"en".equals(lang) ? MjyJcnrUtil.getEn("操作时间") : "操作时间" |
|
|
|
}; |
|
|
|
for (String header : headers) { |
|
|
|
PdfPCell cell = new PdfPCell(new Phrase(header, headerFont)); |
|
|
|
cell.setHorizontalAlignment(Element.ALIGN_CENTER); |
|
|
|
@ -127,10 +136,10 @@ public class Drug { |
|
|
|
table.getDefaultCell().setBackgroundColor(BaseColor.WHITE); |
|
|
|
} |
|
|
|
table.addCell(PdfBaseUtil.createCell(mjyTz.getQmrMc(), contentFont)); |
|
|
|
table.addCell(PdfBaseUtil.createCell(StringUtils.isNoneBlank(mjyTz.getLqrMc())?mjyTz.getLqrMc():""+(StringUtils.isNoneBlank(mjyTz.getGhrMc())?mjyTz.getGhrMc():""), contentFont)); |
|
|
|
table.addCell(PdfBaseUtil.createCell(StringUtils.isNoneBlank(mjyTz.getFfrMc())?mjyTz.getFfrMc():""+(StringUtils.isNoneBlank(mjyTz.getJsrMc())?mjyTz.getJsrMc():""), contentFont)); |
|
|
|
table.addCell(PdfBaseUtil.createCell(StringUtils.isNoneBlank(mjyTz.getLqrMc()) ? mjyTz.getLqrMc() : "" + (StringUtils.isNoneBlank(mjyTz.getGhrMc()) ? mjyTz.getGhrMc() : ""), contentFont)); |
|
|
|
table.addCell(PdfBaseUtil.createCell(StringUtils.isNoneBlank(mjyTz.getFfrMc()) ? mjyTz.getFfrMc() : "" + (StringUtils.isNoneBlank(mjyTz.getJsrMc()) ? mjyTz.getJsrMc() : ""), contentFont)); |
|
|
|
table.addCell(PdfBaseUtil.createCell(mjyTz.getQmyy(), contentFont)); |
|
|
|
table.addCell(PdfBaseUtil.createCell(mjyTz.getCzl()+mjyTz.getCzldw(), 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++; |
|
|
|
@ -140,32 +149,49 @@ public class Drug { |
|
|
|
|
|
|
|
/** |
|
|
|
* 稽查轨迹 |
|
|
|
* |
|
|
|
* @param document |
|
|
|
* @param mjyJcgjList |
|
|
|
* @throws IOException |
|
|
|
* @throws DocumentException |
|
|
|
*/ |
|
|
|
public void addJcgj(Document document,List<MjyJcgj> mjyJcgjList) throws IOException, DocumentException { |
|
|
|
public void addJcgj(Document document, List<MjyJcgj> mjyJcgjList, String lang) throws IOException, DocumentException { |
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
for (MjyJcgj jcgj : mjyJcgjList) { |
|
|
|
PdfBaseUtil.addUnderlinedTitle(document, sdf.format(jcgj.getCreateTime())+" "+jcgj.getJcmc() , 10,false); |
|
|
|
PdfBaseUtil.addUnderlinedTitle(document, sdf.format(jcgj.getCreateTime()) + " " + ("en".equals(lang) ? MjyJcnrUtil.getEn(jcgj.getJcmc()) : jcgj.getJcmc()), 10, false); |
|
|
|
StringJoiner result = new StringJoiner(", "); |
|
|
|
if(StringUtils.isNoneBlank(jcgj.getJcnr())){ |
|
|
|
ObjectMapper mapper = new ObjectMapper(); |
|
|
|
JsonNode jsonArray = mapper.readTree(jcgj.getJcnr()); |
|
|
|
for (JsonNode node : jsonArray) { |
|
|
|
String name = node.get("name").asText(); |
|
|
|
String value = node.get("value").asText(); |
|
|
|
result.add(name + ":" + value); |
|
|
|
if ("en".equals(lang)) { |
|
|
|
if (StringUtils.isNoneBlank(jcgj.getJcnrEn())) { |
|
|
|
ObjectMapper mapper = new ObjectMapper(); |
|
|
|
JsonNode jsonArray = mapper.readTree(jcgj.getJcnrEn()); |
|
|
|
for (JsonNode node : jsonArray) { |
|
|
|
if (node.get("name") != null) { |
|
|
|
String name = node.get("name").asText(); |
|
|
|
String value = node.get("value").asText(); |
|
|
|
result.add(name + ":" + value); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
if (StringUtils.isNoneBlank(jcgj.getJcnr())) { |
|
|
|
ObjectMapper mapper = new ObjectMapper(); |
|
|
|
JsonNode jsonArray = mapper.readTree(jcgj.getJcnr()); |
|
|
|
for (JsonNode node : jsonArray) { |
|
|
|
if (node.get("name") != null) { |
|
|
|
String name = node.get("name").asText(); |
|
|
|
String value = node.get("value").asText(); |
|
|
|
result.add(name + ":" + value); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if(StringUtils.isNoneBlank(jcgj.getRemark())){ |
|
|
|
result.add("备注:"+jcgj.getRemark()); |
|
|
|
if (StringUtils.isNoneBlank(jcgj.getRemark())) { |
|
|
|
result.add(("en".equals(lang) ? MjyJcnrUtil.getEn("备注") + ":" : "备注:") + jcgj.getRemark()); |
|
|
|
} |
|
|
|
if(StringUtils.isNoneBlank(jcgj.getRemark())){ |
|
|
|
result.add("签名人:"+jcgj.getQmrMc()); |
|
|
|
if (StringUtils.isNoneBlank(jcgj.getRemark())) { |
|
|
|
result.add(("en".equals(lang) ? MjyJcnrUtil.getEn("签名人") + ":" : "签名人:") + jcgj.getQmrMc()); |
|
|
|
} |
|
|
|
PdfBaseUtil.addUnderlinedTitle(document, result.toString(), 10,false); |
|
|
|
PdfBaseUtil.addUnderlinedTitle(document, result.toString(), 10, false); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|