Browse Source

fix:翻译补全

master
15881625488@163.com 3 months ago
parent
commit
087fc990b5
10 changed files with 502 additions and 350 deletions
  1. +18
    -7
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/controller/StudyFormFillController.java
  2. +13
    -0
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/StudyFormFillJcgj.java
  3. +7
    -7
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/GyzjJcnrUtil.java
  4. +8
    -8
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/MjyJcnrUtil.java
  5. +113
    -0
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/TemplateUtil.java
  6. +12
    -0
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/PdfExportUtil.java
  7. +37
    -39
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/resource/Dosage.java
  8. +36
    -41
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/resource/Drug.java
  9. +61
    -51
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/template/SP001.java

+ 18
- 7
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/controller/StudyFormFillController.java View File

@ -34,6 +34,8 @@ public class StudyFormFillController extends BaseController {
private IStudyFormFillJcgjService studyFormFillJcgjService;
@Autowired
private IStudyFormFillQmxxService studyFormFillQmxxService;
@Autowired
private ITemplateService templateService;
/**
* 上传文件存储在本地的根路径
*/
@ -98,13 +100,22 @@ public class StudyFormFillController extends BaseController {
StudyFormFillQmxx studyFormFillQmxx = new StudyFormFillQmxx();
studyFormFillQmxx.setFormId(form.getFormId());
List<StudyFormFillQmxx> studyFormFillQmxxList = studyFormFillQmxxService.queryList(studyFormFillQmxx);
return AjaxResult.success(localFilePrefix + PdfExportUtil.export(
"com.hxhq.business.utils.pdf.template.sp.Sp001",
"exportDetail",
studyFormFillService.queryInfo(form.getFormId()),
studyFormFillQmxxList,
studyFormFillJcgjList,
localFilePath));
StudyFormFill studyFormFill=studyFormFillService.getById(form.getFormId());
Template template=templateService.getById(studyFormFill.getTemplateId());
if(template!=null){
return AjaxResult.success(localFilePrefix + PdfExportUtil.export(
"com.hxhq.business.utils.pdf.template."+template.getSn(),
"exportDetail",
studyFormFill,
template,
studyFormFillQmxxList,
studyFormFillJcgjList,
form.getLang(),
localFilePath));
}else{
return AjaxResult.error("模板不存在或已删除");
}
}
/**

+ 13
- 0
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/StudyFormFillJcgj.java View File

@ -1,5 +1,6 @@
package com.hxhq.business.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hxhq.common.core.domain.MpBaseEntity;
@ -45,6 +46,18 @@ public class StudyFormFillJcgj extends MpBaseEntity
/** 签名人名称-英文 */
private String qmrMcEn;
/** 语言 */
@TableField(exist = false)
private String lang;
public String getLang() {
return lang;
}
public void setLang(String lang) {
this.lang = lang;
}
public String getJcmcEn() {
return jcmcEn;
}

+ 7
- 7
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/GyzjJcnrUtil.java View File

@ -15,7 +15,7 @@ public class GyzjJcnrUtil {
private static HashMap<String,String> mapLang=new HashMap<>();
static {
mapLang.put("入库","In Storage");
mapLang.put("未入库","未入库");
mapLang.put("未入库","Not in Storage");
mapLang.put("已发放","In Use");
mapLang.put("已锁定","'Locked'");
mapLang.put("待归档","Pending Archiving");
@ -98,12 +98,12 @@ public class GyzjJcnrUtil {
mapLang.put("取出","Take Out");
mapLang.put("表单名称","Preset Name");
mapLang.put("锁定发放记录","锁定发放记录");
mapLang.put("解锁发放记录","解锁发放记录");
mapLang.put("给药制剂入库","给药制剂入库");
mapLang.put("同意入库","同意入库");
mapLang.put("拒绝入库","拒绝入库");
mapLang.put("目的","目的");
mapLang.put("锁定发放记录","Lock Record");
mapLang.put("解锁发放记录","Unlock Record");
mapLang.put("给药制剂入库","Dose Formulation Check-in");
mapLang.put("同意入库","Approve Check-in");
mapLang.put("拒绝入库","Reject Check-in");
mapLang.put("目的","Purpose");
}

+ 8
- 8
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/MjyJcnrUtil.java View File

@ -16,7 +16,7 @@ public class MjyJcnrUtil {
private static HashMap<String,String> mapLang=new HashMap<>();
static {
mapLang.put("入库","In Storage");
mapLang.put("未入库","未入库");
mapLang.put("未入库","Not in Storage");
mapLang.put("已发放","In Use");
mapLang.put("已锁定","'Locked'");
mapLang.put("待归档","Pending Archiving");
@ -94,10 +94,10 @@ public class MjyJcnrUtil {
mapLang.put("取出","Take Out");
mapLang.put("表单名称","Preset Name");
mapLang.put("锁定发放记录","锁定发放记录");
mapLang.put("解锁发放记录","解锁发放记录");
mapLang.put("麻精药入库","麻精药入库");
mapLang.put("目的","目的");
mapLang.put("锁定发放记录","Lock Record");
mapLang.put("解锁发放记录","Unlock Record");
mapLang.put("麻精药入库","Controlled Drug Check-in");
mapLang.put("目的","Purpose");
mapLang.put("入库位置","入库位置");
mapLang.put("入库条件","入库条件");
mapLang.put("减少量","减少量");
@ -112,7 +112,7 @@ public class MjyJcnrUtil {
logger.info(getJcnrEn(formData));
}
/**
* 获取签名意义英文
* 获取英文
* @param qmyy
* @return
*/
@ -121,7 +121,7 @@ public class MjyJcnrUtil {
}
/**
* 稽查名称英文
* 获取稽查内容英文
* @param map
* @return
*/
@ -134,7 +134,7 @@ public class MjyJcnrUtil {
}
/**
* 稽查名称英文
* 获取稽查内容英文
* @param map
* @return
*/

+ 113
- 0
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/TemplateUtil.java View File

@ -0,0 +1,113 @@
package com.hxhq.business.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author tanfei
*/
public class TemplateUtil {
private static final Logger logger = LoggerFactory.getLogger(TemplateUtil.class.getName());
private static HashMap<String,String> mapLang=new HashMap<>();
static {
mapLang.put("试验基本信息","Test Basic Information");
mapLang.put("试验试剂信息","Test Reagent Information");
mapLang.put("仪器使用信息","Instrument Usage Information");
mapLang.put("存储条件","Storage Conditions");
mapLang.put("操作步骤","Operation Steps");
mapLang.put("备注","Remarks");
mapLang.put("试验名称","Study Name");
mapLang.put("试验编号","Study Number");
mapLang.put("方法编号","Method Code");
mapLang.put("版本号","Version Number");
mapLang.put("试验配制条件","Study Configuration Conditions");
mapLang.put("预填","Pre-Fill");
mapLang.put("实际","Actual");
mapLang.put("配置时间","Configuration Time");
mapLang.put("开始时间","Start Time");
mapLang.put("结束时间","End Time");
mapLang.put("目标溶液名称","Target Solution Name");
mapLang.put("目标溶液编号","Target Solution Code");
mapLang.put("目标溶液预计浓度","Target Solution Expected Concentration");
mapLang.put("目标溶液实际浓度","Target Solution Actual Concentration");
mapLang.put("目标溶液预计体积","Target Solution Expected Volume");
mapLang.put("目标溶液实际体积","Target Solution Actual Volume");
mapLang.put("有效周期","Effective Period");
mapLang.put("失效日","Expiry Date");
mapLang.put("处理批编号","Analysis Batch Number");
mapLang.put("容器材质","Container Material");
mapLang.put("处理时间","Work Time");
mapLang.put("试剂名称","Reagent Name");
mapLang.put("编号","Code");
mapLang.put("批号","Batch Number");
mapLang.put("浓度/含量/纯度","Concentration/Content/Purity");
mapLang.put("来源","Source");
mapLang.put("仪器名称","Instrument Name");
mapLang.put("仪器型号","Instrument Model");
mapLang.put("仪器编号","Instrument Number");
mapLang.put("下次测试/校准/检定日期","Next Test/Calibration/Verification Date");
mapLang.put("给药剂量或组别","Administration Dose or Group");
mapLang.put("配制浓度","Preparation Concentration");
mapLang.put("配制体积","Preparation Volume");
mapLang.put("其他","Other");
mapLang.put("其他信息","Other Information");
mapLang.put("单位","unit");
mapLang.put("签名人","Signed By");
mapLang.put("签名意义","Meaning of Signature");
mapLang.put("签名时间","Date");
mapLang.put("备注原因","Comment/Reason");
}
public static void main(String[] args) {
Map<String, String> formData = new LinkedHashMap<>();
formData.put("申请备注", "1111");
formData.put("审核备注", "22");
logger.info(getJcnrEn(formData));
}
/**
* 获取英文
* @param qmyy
* @return
*/
public static String getEn(String qmyy) {
return mapLang.get(qmyy);
}
/**
* 获取稽查内容英文
* @param map
* @return
*/
public static String getJcnrEn(Map<String, String> map) {
Map<String, String> result =new LinkedHashMap<>();
for (Map.Entry<String, String> entry : map.entrySet()) {
result.put(mapLang.get(entry.getKey()),entry.getValue());
}
return JctUtil.formatStr(result);
}
/**
* 获取稽查内容英文
* @param map
* @return
*/
public static Map<String, String> getMapEn(Map<String, String> map) {
Map<String, String> result =new LinkedHashMap<>();
for (Map.Entry<String, String> entry : map.entrySet()) {
result.put(mapLang.get(entry.getKey()),entry.getValue());
}
return result;
}
}

+ 12
- 0
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/PdfExportUtil.java View File

@ -1,11 +1,13 @@
package com.hxhq.business.utils.pdf;
import com.hxhq.common.core.exception.ServiceException;
import com.hxhq.common.core.utils.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
import java.util.Date;
/**
* pdf导出基类
@ -63,4 +65,14 @@ public class PdfExportUtil {
throw new ServiceException(ex.getMessage());
}
}
/**
* 时间转化
* @param time
* @return
*/
public static String parseDateToStr(Date time){
return DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",time);
}
}

+ 37
- 39
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/resource/Dosage.java View File

@ -8,6 +8,7 @@ import com.hxhq.business.dto.gyzj.DetailDto;
import com.hxhq.business.enums.zykgl.ZjztEnum;
import com.hxhq.business.utils.GyzjJcnrUtil;
import com.hxhq.business.utils.pdf.PdfBaseUtil;
import com.hxhq.business.utils.pdf.PdfExportUtil;
import com.hxhq.common.core.utils.StringUtils;
import com.hxhq.common.security.utils.SecurityUtils;
import com.hxhq.system.api.model.LoginUser;
@ -17,10 +18,8 @@ import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.*;
@ -31,7 +30,7 @@ import java.util.*;
*/
public class Dosage {
private static final Logger logger = LoggerFactory.getLogger(Dosage.class.getName());
public String language="zh";
/**
* 导出
*
@ -39,40 +38,40 @@ public class Dosage {
* @return
*/
public String exportDetail(DetailDto gyzj, List<GyzjTz> gyzjTzList, List<GyzjJcgj> gyzjJcgjList, String lang, String localFilePath) {
language=lang;
Document document = null;
FileOutputStream fos = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String filePath = PdfBaseUtil.getFilePath(localFilePath);
try {
String sign = "en".equals(lang) ? "hxhq" : "华西海圻";
String sign = "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 + PdfExportUtil.parseDateToStr(new Date()), null);
// 基本信息
PdfBaseUtil.addUnderlinedTitle(document, "en".equals(lang) ? GyzjJcnrUtil.getEn("基本信息") : "基本信息", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("基本信息"), 10, true);
Map<String, String> formData1 = new LinkedHashMap<>();
formData1.put("名称", gyzj.getMc());
formData1.put("编号", gyzj.getBh());
formData1.put("浓度", gyzj.getNd() + gyzj.getNddw());
formData1.put("库存量", gyzj.getKc() + gyzj.getKcdw());
formData1.put("失效日期", sdf.format(gyzj.getSxrq()));
formData1.put("存储条件", gyzj.getCctj());
formData1.put("存储位置", gyzj.getCcwz());
formData1.put("制剂状态", "en".equals(lang) ? (GyzjJcnrUtil.getEn(ZjztEnum.getEnumByValue(gyzj.getZjzt()).getText())) : ZjztEnum.getEnumByValue(gyzj.getZjzt()).getText());
PdfBaseUtil.addFormTableColumns(document, "en".equals(lang) ? GyzjJcnrUtil.getMapEn(formData1) : formData1, 2);
formData1.put(getName("名称"), gyzj.getMc());
formData1.put(getName("编号"), gyzj.getBh());
formData1.put(getName("浓度"), gyzj.getNd() + gyzj.getNddw());
formData1.put(getName("库存量"), gyzj.getKc() + gyzj.getKcdw());
formData1.put(getName("失效日期"), PdfExportUtil.parseDateToStr(gyzj.getSxrq()));
formData1.put(getName("存储条件"), gyzj.getCctj());
formData1.put(getName("存储位置"), gyzj.getCcwz());
formData1.put(getName("制剂状态"), "en".equals(language) ? (GyzjJcnrUtil.getEn(ZjztEnum.getEnumByValue(gyzj.getZjzt()).getText())) : ZjztEnum.getEnumByValue(gyzj.getZjzt()).getText());
PdfBaseUtil.addFormTableColumns(document, formData1, 2);
// 表单信息
PdfBaseUtil.addUnderlinedTitle(document, "en".equals(lang) ? GyzjJcnrUtil.getEn("表单信息") : "表单信息", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("表单信息"), 10, true);
Map<String, String> formData3 = new LinkedHashMap<>();
formData3.put("所属试验信息", gyzj.getStudyMc());
formData3.put("所属表单", gyzj.getBdMc());
formData3.put("表单所属人", gyzj.getBdgsrMc());
PdfBaseUtil.addFormTableColumns(document, "en".equals(lang) ? GyzjJcnrUtil.getMapEn(formData3) : formData3, 2);
PdfBaseUtil.addUnderlinedTitle(document, "en".equals(lang) ? GyzjJcnrUtil.getEn("给药制剂台账") : "给药制剂台账", 10, true);
formData3.put(getName("所属试验信息"), gyzj.getStudyMc());
formData3.put(getName("所属表单"), gyzj.getBdMc());
formData3.put(getName("表单所属人"), gyzj.getBdgsrMc());
PdfBaseUtil.addFormTableColumns(document, formData3, 2);
PdfBaseUtil.addUnderlinedTitle(document, getName("给药制剂台账") , 10, true);
// 台账
addTz(document, gyzjTzList, lang);
PdfBaseUtil.addUnderlinedTitle(document, "en".equals(lang) ? GyzjJcnrUtil.getEn("稽查轨迹") : "稽查轨迹", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("稽查轨迹") , 10, true);
//稽查轨迹
addJcgj(document, gyzjJcgjList, lang);
logger.info("生成成功:{}", filePath);
@ -103,7 +102,7 @@ public class Dosage {
* @throws DocumentException
*/
public void addTz(Document document, List<GyzjTz> gyzjTzList, 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, 8, Font.NORMAL);
@ -111,16 +110,7 @@ public class Dosage {
// 8. 创建表格
PdfPTable table = new PdfPTable(8);
table.setWidthPercentage(100);
String[] headers = {
"en".equals(lang) ? GyzjJcnrUtil.getEn("使用人") : "使用人",
"en".equals(lang) ? GyzjJcnrUtil.getEn("领取/归还人") : "领取/归还人",
"en".equals(lang) ? GyzjJcnrUtil.getEn("发放/接收人") : "发放/接收人",
"en".equals(lang) ? GyzjJcnrUtil.getEn("操作类型") : "操作类型",
"en".equals(lang) ? GyzjJcnrUtil.getEn("表单名称") : "表单名称",
"en".equals(lang) ? GyzjJcnrUtil.getEn("操作量") : "操作量",
"en".equals(lang) ? GyzjJcnrUtil.getEn("备注/原因") : "备注/原因",
"en".equals(lang) ? GyzjJcnrUtil.getEn("操作时间") : "操作时间"
};
String[] headers = {getName("使用人"),getName("领取/归还人"),getName("发放/接收人"),getName("操作类型"),getName("表单名称"),getName("操作量"),getName("备注/原因"),getName("操作时间")};
for (String header : headers) {
PdfPCell cell = new PdfPCell(new Phrase(header, headerFont));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
@ -143,7 +133,7 @@ public class Dosage {
table.addCell(PdfBaseUtil.createCell(gyzjTz.getBdMc(), contentFont));
table.addCell(PdfBaseUtil.createCell(gyzjTz.getCzl() + gyzjTz.getCzldw(), contentFont));
table.addCell(PdfBaseUtil.createCell(gyzjTz.getRemark(), contentFont));
table.addCell(PdfBaseUtil.createCell(sdf.format(gyzjTz.getCreateTime()), contentFont));
table.addCell(PdfBaseUtil.createCell(PdfExportUtil.parseDateToStr(gyzjTz.getCreateTime()), contentFont));
rowNum++;
}
document.add(table);
@ -158,9 +148,8 @@ public class Dosage {
* @throws DocumentException
*/
public void addJcgj(Document document, List<GyzjJcgj> gyzjJcgjList, String lang) throws IOException, DocumentException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (GyzjJcgj jcgj : gyzjJcgjList) {
PdfBaseUtil.addUnderlinedTitle(document, sdf.format(jcgj.getCreateTime()) + " " + ("en".equals(lang) ? GyzjJcnrUtil.getEn(jcgj.getJcmc()) : jcgj.getJcmc()), 10, false);
PdfBaseUtil.addUnderlinedTitle(document, PdfExportUtil.parseDateToStr(jcgj.getCreateTime())+ " " + getName(jcgj.getJcmc()), 10, false);
StringJoiner result = new StringJoiner(", ");
if ("en".equals(lang)) {
if (StringUtils.isNoneBlank(jcgj.getJcnrEn())) {
@ -188,14 +177,23 @@ public class Dosage {
}
}
if (StringUtils.isNoneBlank(jcgj.getRemark())) {
result.add(("en".equals(lang) ? GyzjJcnrUtil.getEn("备注") + ":" : "备注:") + jcgj.getRemark());
result.add(getName("备注")+":" + jcgj.getRemark());
}
if (StringUtils.isNoneBlank(jcgj.getRemark())) {
result.add(("en".equals(lang) ? GyzjJcnrUtil.getEn("签名人") + ":" : "签名人:") + jcgj.getQmrMc());
result.add(getName("签名人")+":" + jcgj.getQmrMc());
}
PdfBaseUtil.addUnderlinedTitle(document, result.toString(), 10, false);
}
}
/**
* 获取名称
* @param name
* @return
*/
public String getName(String name){
return "en".equals(language) ? GyzjJcnrUtil.getEn(name) : name;
}
}

+ 36
- 41
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/resource/Drug.java View File

@ -1,14 +1,13 @@
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.*;
import com.hxhq.business.dto.mjy.DetailDto;
import com.hxhq.business.enums.zykgl.ZjztEnum;
import com.hxhq.business.utils.GyzjJcnrUtil;
import com.hxhq.business.utils.MjyJcnrUtil;
import com.hxhq.business.utils.pdf.PdfBaseUtil;
import com.hxhq.business.utils.pdf.PdfExportUtil;
import com.hxhq.common.core.utils.StringUtils;
import com.hxhq.common.security.utils.SecurityUtils;
import com.hxhq.system.api.model.LoginUser;
@ -18,10 +17,8 @@ import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;
@ -32,7 +29,7 @@ import java.util.List;
*/
public class Drug {
private static final Logger logger = LoggerFactory.getLogger(Drug.class.getName());
public String language="zh";
/**
* 导出
*
@ -40,40 +37,40 @@ public class Drug {
* @return
*/
public String exportDetail(DetailDto mjy, List<MjyTz> mjyTzList, List<MjyJcgj> mjyJcgjList, String lang, String localFilePath) {
language=lang;
Document document = null;
FileOutputStream fos = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String filePath = PdfBaseUtil.getFilePath(localFilePath);
try {
String sign = "en".equals(lang) ? "hxhq" : "华西海圻";
String sign = "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 + PdfExportUtil.parseDateToStr(new Date()), null);
// 基本信息
PdfBaseUtil.addUnderlinedTitle(document, "en".equals(lang) ? MjyJcnrUtil.getEn("基本信息") : "基本信息", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("基本信息"), 10, true);
Map<String, String> 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("失效日期", sdf.format(mjy.getSxrq()));
formData1.put("存储条件", mjy.getCctj());
formData1.put("存储位置", mjy.getCcwz());
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);
formData1.put(getName("名称"), mjy.getMc());
formData1.put(getName("编号"), mjy.getBh());
formData1.put(getName("浓度"), mjy.getNd() + mjy.getNddw());
formData1.put(getName("库存量"), mjy.getKc() + mjy.getKcdw());
formData1.put(getName("失效日期"), PdfExportUtil.parseDateToStr(mjy.getSxrq()));
formData1.put(getName("存储条件"), mjy.getCctj());
formData1.put(getName("存储位置"), mjy.getCcwz());
formData1.put(getName("制剂状态"), "en".equals(language) ? (MjyJcnrUtil.getEn(ZjztEnum.getEnumByValue(mjy.getZjzt()).getText())) : ZjztEnum.getEnumByValue(mjy.getZjzt()).getText());
PdfBaseUtil.addFormTableColumns(document, formData1, 2);
// 表单信息
PdfBaseUtil.addUnderlinedTitle(document, "en".equals(lang) ? MjyJcnrUtil.getEn("表单信息") : "表单信息", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("表单信息"), 10, true);
Map<String, String> formData3 = new LinkedHashMap<>();
formData3.put("所属试验信息", mjy.getStudyMc());
formData3.put("所属表单", mjy.getBdMc());
formData3.put("表单所属人", mjy.getBdgsrMc());
PdfBaseUtil.addFormTableColumns(document, "en".equals(lang) ? MjyJcnrUtil.getMapEn(formData3) : formData3, 2);
PdfBaseUtil.addUnderlinedTitle(document, "en".equals(lang) ? MjyJcnrUtil.getEn("给药制剂台账") : "给药制剂台账", 10, true);
formData3.put(getName("所属试验信息"), mjy.getStudyMc());
formData3.put(getName("所属表单"), mjy.getBdMc());
formData3.put(getName("表单所属人"), mjy.getBdgsrMc());
PdfBaseUtil.addFormTableColumns(document, formData3, 2);
PdfBaseUtil.addUnderlinedTitle(document, getName("给药制剂台账") , 10, true);
// 台账
addTz(document, mjyTzList, lang);
PdfBaseUtil.addUnderlinedTitle(document, "en".equals(lang) ? MjyJcnrUtil.getEn("稽查轨迹") : "稽查轨迹", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("稽查轨迹") , 10, true);
//稽查轨迹
addJcgj(document, mjyJcgjList, lang);
logger.info("生成成功:{}", filePath);
@ -104,7 +101,7 @@ public class Drug {
* @throws 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, 8, Font.NORMAL);
@ -112,16 +109,7 @@ public class Drug {
// 8. 创建表格
PdfPTable table = new PdfPTable(8);
table.setWidthPercentage(100);
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) ? GyzjJcnrUtil.getEn("表单名称") : "表单名称",
"en".equals(lang) ? MjyJcnrUtil.getEn("操作量") : "操作量",
"en".equals(lang) ? MjyJcnrUtil.getEn("备注/原因") : "备注/原因",
"en".equals(lang) ? MjyJcnrUtil.getEn("操作时间") : "操作时间"
};
String[] headers = {getName("使用人"),getName("领取/归还人"),getName("发放/接收人"),getName("操作类型"),getName("表单名称"),getName("操作量"),getName("备注/原因"),getName("操作时间")};
for (String header : headers) {
PdfPCell cell = new PdfPCell(new Phrase(header, headerFont));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
@ -144,7 +132,7 @@ public class Drug {
table.addCell(PdfBaseUtil.createCell(mjyTz.getBdMc(), 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));
table.addCell(PdfBaseUtil.createCell(PdfExportUtil.parseDateToStr(mjyTz.getCreateTime()), contentFont));
rowNum++;
}
document.add(table);
@ -159,9 +147,8 @@ public class Drug {
* @throws 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()) + " " + ("en".equals(lang) ? MjyJcnrUtil.getEn(jcgj.getJcmc()) : jcgj.getJcmc()), 10, false);
PdfBaseUtil.addUnderlinedTitle(document, PdfExportUtil.parseDateToStr(jcgj.getCreateTime())+ " " + getName(jcgj.getJcmc()), 10, false);
StringJoiner result = new StringJoiner(", ");
if ("en".equals(lang)) {
if (StringUtils.isNoneBlank(jcgj.getJcnrEn())) {
@ -189,14 +176,22 @@ public class Drug {
}
}
if (StringUtils.isNoneBlank(jcgj.getRemark())) {
result.add(("en".equals(lang) ? MjyJcnrUtil.getEn("备注") + ":" : "备注:") + jcgj.getRemark());
result.add(getName("备注")+":" + jcgj.getRemark());
}
if (StringUtils.isNoneBlank(jcgj.getRemark())) {
result.add(("en".equals(lang) ? MjyJcnrUtil.getEn("签名人") + ":" : "签名人:") + jcgj.getQmrMc());
result.add(getName("签名人")+":" + jcgj.getQmrMc());
}
PdfBaseUtil.addUnderlinedTitle(document, result.toString(), 10, false);
}
}
/**
* 获取名称
* @param name
* @return
*/
public String getName(String name){
return "en".equals(language) ? MjyJcnrUtil.getEn(name) : name;
}
}

hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/template/sp/Sp001.java → hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/template/SP001.java View File

@ -1,12 +1,13 @@
package com.hxhq.business.utils.pdf.template.sp;
package com.hxhq.business.utils.pdf.template;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hxhq.business.domain.*;
import com.hxhq.business.dto.mjy.DetailDto;
import com.hxhq.business.utils.TemplateUtil;
import com.hxhq.business.utils.pdf.PdfBaseUtil;
import com.hxhq.business.utils.pdf.PdfExportUtil;
import com.hxhq.common.core.utils.StringUtils;
import com.hxhq.common.security.utils.SecurityUtils;
import com.hxhq.system.api.model.LoginUser;
@ -19,17 +20,17 @@ import org.slf4j.LoggerFactory;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;
/**
* 色谱001
* 色谱-生物样品分析溶液配制表
*
* @author tanfei
*/
public class Sp001 {
private static final Logger logger = LoggerFactory.getLogger(Sp001.class.getName());
public class SP001 {
private static final Logger logger = LoggerFactory.getLogger(SP001.class.getName());
public String language = "zh";
/**
* 导出
@ -37,69 +38,69 @@ public class Sp001 {
* @param studyFormFill
* @return
*/
public String exportDetail(StudyFormFill studyFormFill, List<StudyFormFillQmxx> studyFormFillQmxxList, List<StudyFormFillJcgj> studyFormFillJcgjList, String localFilePath) {
public String exportDetail(StudyFormFill studyFormFill,Template template, List<StudyFormFillQmxx> studyFormFillQmxxList, List<StudyFormFillJcgj> studyFormFillJcgjList, String lang, String localFilePath) {
language = lang;
Document document = null;
FileOutputStream fos = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String filePath = PdfBaseUtil.getFilePath(localFilePath);
try {
String sign = "华西海圻";
String sign = "hxhq";
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null) {
sign = loginUser.getSysUser().getNickName();
}
document = PdfBaseUtil.init(document, fos, filePath, sign + sdf.format(new Date()), studyFormFill.getBdmc());
document = PdfBaseUtil.init(document, fos, filePath, sign +PdfExportUtil.parseDateToStr(new Date()), "en".equals(language)?template.getShowSn():template.getName());
// 基本信息
JSONObject bdnr = JSONObject.parseObject(studyFormFill.getBdnr());
PdfBaseUtil.addUnderlinedTitle(document, "试验基本信息", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("试验基本信息"), 10, true);
Map<String, String> formData1 = new LinkedHashMap<>();
formData1.put("试验名称", studyFormFill.getStudyMc());
formData1.put("试验编号", studyFormFill.getStudySn());
formData1.put("方法编号", bdnr.getString("methodCode"));
formData1.put("版本号", bdnr.getString("methodCode"));
formData1.put(getName("试验名称"), studyFormFill.getStudyMc());
formData1.put(getName("试验编号"), studyFormFill.getStudySn());
formData1.put(getName("方法编号"), bdnr.getString("methodCode"));
formData1.put(getName("版本号"), bdnr.getString("methodCode"));
PdfBaseUtil.addFormTableColumns(document, formData1, 2);
PdfBaseUtil.addUnderlinedTitle(document, "试验配置条件", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("试验配置条件"), 10, true);
Map<String, String> formData2 = new LinkedHashMap<>();
formData2.put("预填", bdnr.getString("pre") + (StringUtils.isNoneBlank(bdnr.getString("preOther")) ? bdnr.getString("preOther") : ""));
formData2.put("实际", bdnr.getString("act") + (StringUtils.isNoneBlank(bdnr.getString("actOther")) ? bdnr.getString("actOther") : ""));
formData2.put(getName("预填"), bdnr.getString("pre") + (StringUtils.isNoneBlank(bdnr.getString("preOther")) ? bdnr.getString("preOther") : ""));
formData2.put(getName("实际"), bdnr.getString("act") + (StringUtils.isNoneBlank(bdnr.getString("actOther")) ? bdnr.getString("actOther") : ""));
PdfBaseUtil.addFormTableColumns(document, formData2, 2);
PdfBaseUtil.addUnderlinedTitle(document, "配置时间", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("配置时间"), 10, true);
Map<String, String> formData3 = new LinkedHashMap<>();
formData3.put("开始时间", studyFormFill.getStartDate() != null ? sdf.format(studyFormFill.getStartDate()) : "");
formData3.put("结束时间", studyFormFill.getEndDate() != null ? sdf.format(studyFormFill.getEndDate()) : "");
formData3.put(getName("开始时间"), studyFormFill.getStartDate() != null ? PdfExportUtil.parseDateToStr(studyFormFill.getStartDate()) : "");
formData3.put(getName("结束时间"), studyFormFill.getEndDate() != null ? PdfExportUtil.parseDateToStr(studyFormFill.getEndDate()) : "");
PdfBaseUtil.addFormTableColumns(document, formData3, 2);
// 签名信息
PdfBaseUtil.addUnderlinedTitle(document, "试验试剂信息", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("试验试剂信息"), 10, true);
addResource(document, studyFormFill.getResource());
PdfBaseUtil.addUnderlinedTitle(document, "仪器使用信息", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, "存储条件", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("仪器使用信息"), 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("存储条件"), 10, true);
Map<String, String> formData4 = new LinkedHashMap<>();
formData4.put("存储条件",bdnr.getString("storageCondition")+ (StringUtils.isNoneBlank(bdnr.getString("storageConditionOther")) ? bdnr.getString("storageConditionOther") : ""));
formData4.put(getName("存储条件"), bdnr.getString("storageCondition") + (StringUtils.isNoneBlank(bdnr.getString("storageConditionOther")) ? bdnr.getString("storageConditionOther") : ""));
PdfBaseUtil.addFormTableColumns(document, formData4, 1);
PdfBaseUtil.addUnderlinedTitle(document, "操作步骤", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("操作步骤"), 10, true);
Map<String, String> formData5 = new LinkedHashMap<>();
formData5.put("目标溶液名称", bdnr.getString("targetName"));
formData5.put("目标溶液编号", bdnr.getString("targetCode")+bdnr.getString("targetCodeSn"));
formData5.put("目标溶液预计浓度", bdnr.getString("targetPreConcentration")+bdnr.getString("targetPreConcentrationUnit"));
formData5.put("目标溶液实际浓度", bdnr.getString("targetActConcentration")+bdnr.getString("targetPreConcentrationUnit"));
formData5.put("目标溶液预计体积", bdnr.getString("targetPreVolume")+bdnr.getString("targetPreVolumeUnit"));
formData5.put("目标溶液实际体积", bdnr.getString("targetActVolume")+bdnr.getString("targetActVolumeUnit"));
formData5.put("有效周期", bdnr.getString("effectivePeriod")+bdnr.getString("effectivePeriodUnit"));
formData5.put("失效日", bdnr.getString("sxrq"));
formData5.put(getName("目标溶液名称"), bdnr.getString("targetName"));
formData5.put(getName("目标溶液编号"), bdnr.getString("targetCode") + bdnr.getString("targetCodeSn"));
formData5.put(getName("目标溶液预计浓度"), bdnr.getString("targetPreConcentration") + bdnr.getString("targetPreConcentrationUnit"));
formData5.put(getName("目标溶液实际浓度"), bdnr.getString("targetActConcentration") + bdnr.getString("targetPreConcentrationUnit"));
formData5.put(getName("目标溶液预计体积"), bdnr.getString("targetPreVolume") + bdnr.getString("targetPreVolumeUnit"));
formData5.put(getName("目标溶液实际体积"), bdnr.getString("targetActVolume") + bdnr.getString("targetActVolumeUnit"));
formData5.put(getName("有效周期"), bdnr.getString("effectivePeriod") + bdnr.getString("effectivePeriodUnit"));
formData5.put(getName("失效日"), bdnr.getString("sxrq"));
PdfBaseUtil.addFormTableColumns(document, formData5, 2);
PdfBaseUtil.addUnderlinedTitle(document, "备注"+(StringUtils.isNoneBlank(bdnr.getString("remark")) ? ":"+bdnr.getString("remark") : ""), 10, false);
PdfBaseUtil.addUnderlinedTitle(document, getName("备注") + ":" +(StringUtils.isNoneBlank(bdnr.getString("remark")) ? bdnr.getString("remark") : ""), 10, false);
// 签名信息
PdfBaseUtil.addUnderlinedTitle(document, "签名信息", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("签名信息"), 10, true);
addQmxx(document, studyFormFillQmxxList);
//稽查轨迹
PdfBaseUtil.addUnderlinedTitle(document, "稽查轨迹", 10, true);
PdfBaseUtil.addUnderlinedTitle(document, getName("稽查轨迹"), 10, true);
addJcgj(document, studyFormFillJcgjList);
logger.info("生成成功:{}", filePath);
} catch (Exception e) {
@ -131,8 +132,7 @@ public class Sp001 {
public void addResource(Document document, String resource) throws IOException, DocumentException {
// [{"mc":"布洛芬","bh":"BLF260115-0014","ph":"","nd":"18ng/mL","source":"ELN配制","ndz":18,"nddw":"ng/mL","kc":1190,"kcdw":"3","syl":"4","syldw":"3","yxzq":360,"yxzqdw":"days"}]
if (StringUtils.isNoneBlank(resource)) {
JSONArray jsonArray=JSONArray.parseArray(resource);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
JSONArray jsonArray = JSONArray.parseArray(resource);
// 9. 表头
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font headerFont = new Font(bfChinese, 10, Font.NORMAL);
@ -140,7 +140,7 @@ public class Sp001 {
// 8. 创建表格
PdfPTable table = new PdfPTable(6);
table.setWidthPercentage(100);
String[] headers = {"试剂名称", "编号", "批号", "浓度/含量/纯度","来源","失效日"};
String[] headers = {getName("试剂名称"), getName("编号"), getName("批号"), getName("浓度/含量/纯度"), getName("来源"), getName("失效日")};
for (String header : headers) {
PdfPCell cell = new PdfPCell(new Phrase(header, headerFont));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
@ -162,7 +162,7 @@ public class Sp001 {
table.addCell(PdfBaseUtil.createCell(obj.getString("ph"), contentFont));
table.addCell(PdfBaseUtil.createCell(obj.getString("nd"), contentFont));
table.addCell(PdfBaseUtil.createCell(obj.getString("source"), contentFont));
table.addCell(PdfBaseUtil.createCell(StringUtils.isNoneBlank(obj.getString("sxrq"))?obj.getString("sxrq"):"", contentFont));
table.addCell(PdfBaseUtil.createCell(StringUtils.isNoneBlank(obj.getString("sxrq")) ? obj.getString("sxrq") : "", contentFont));
rowNum++;
}
document.add(table);
@ -180,7 +180,6 @@ public class Sp001 {
* @throws DocumentException
*/
public void addQmxx(Document document, List<StudyFormFillQmxx> studyFormFillQmxxList) 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);
@ -188,7 +187,7 @@ public class Sp001 {
// 8. 创建表格
PdfPTable table = new PdfPTable(4);
table.setWidthPercentage(100);
String[] headers = {"签名人", "签名意义", "签名时间", "备注原因"};
String[] headers = {getName("签名人"), getName("签名意义"), getName("签名时间"), getName("备注原因")};
for (String header : headers) {
PdfPCell cell = new PdfPCell(new Phrase(header, headerFont));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
@ -206,7 +205,7 @@ public class Sp001 {
}
table.addCell(PdfBaseUtil.createCell(studyFormFillQmxx.getQmrMc(), contentFont));
table.addCell(PdfBaseUtil.createCell(studyFormFillQmxx.getQmyy(), contentFont));
table.addCell(PdfBaseUtil.createCell(sdf.format(studyFormFillQmxx.getCreateTime()), contentFont));
table.addCell(PdfBaseUtil.createCell(PdfExportUtil.parseDateToStr(studyFormFillQmxx.getCreateTime()), contentFont));
table.addCell(PdfBaseUtil.createCell(studyFormFillQmxx.getRemark(), contentFont));
rowNum++;
}
@ -222,27 +221,38 @@ public class Sp001 {
* @throws DocumentException
*/
public void addJcgj(Document document, List<StudyFormFillJcgj> studyFormFillJcgjList) throws IOException, DocumentException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (StudyFormFillJcgj jcgj : studyFormFillJcgjList) {
PdfBaseUtil.addUnderlinedTitle(document, sdf.format(jcgj.getCreateTime()) + " " + jcgj.getJcmc(), 10, false);
PdfBaseUtil.addUnderlinedTitle(document, PdfExportUtil.parseDateToStr(jcgj.getCreateTime()) + " " + 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")!=null? node.get("value").asText():"";
result.add(name + ":" + value);
if (node.get("name") != null) {
String name = node.get("name").asText();
String value = node.get("value") != null ? node.get("value").asText() : "";
result.add(name + ":" + value);
}
}
}
if (StringUtils.isNoneBlank(jcgj.getRemark())) {
result.add("备注:" + jcgj.getRemark());
result.add(getName("备注") + ":" + jcgj.getRemark());
}
if (StringUtils.isNoneBlank(jcgj.getRemark())) {
result.add("签名人:" + jcgj.getQmrMc());
result.add(getName("签名人") + ":" + jcgj.getQmrMc());
}
PdfBaseUtil.addUnderlinedTitle(document, result.toString(), 10, false);
}
}
/**
* 获取名称
*
* @param name
* @return
*/
public String getName(String name) {
return "en".equals(language) ? TemplateUtil.getEn(name) : name;
}
}

Loading…
Cancel
Save