diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/template/TemplateBaseUtil.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/template/TemplateBaseUtil.java index 9597c6f..8d144f2 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/template/TemplateBaseUtil.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/template/TemplateBaseUtil.java @@ -33,27 +33,6 @@ public class TemplateBaseUtil { /** - * 试验信息 - * 试验名称,试验编号,方法编号,版本号 - * @param document - * @param studyFormFill - * @param bdnr - * @param lang - * @throws IOException - * @throws DocumentException - */ - public static void addStudyInfo(Document document, StudyFormFill studyFormFill, JSONObject bdnr, String lang) throws IOException, DocumentException { - language = lang; - PdfBaseUtil.addUnderlinedTitle(document, getName("试验基本信息"), 10, true); - Map formData1 = new LinkedHashMap<>(); - formData1.put(getName("试验名称"), studyFormFill.getStudyMc()); - formData1.put(getName("试验编号"), studyFormFill.getStudySn()); - formData1.put(getName("方法编号"), (StringUtils.isNoneBlank(bdnr.getString("methodCode")) ? bdnr.getString("methodCode") : "")); - formData1.put(getName("版本号"), (StringUtils.isNoneBlank(bdnr.getString("methodCode")) ? bdnr.getString("methodCode") : "")); - PdfBaseUtil.addFormTableColumns(document, formData1, 2); - } - - /** * 试验试剂信息 * * @param document @@ -270,4 +249,39 @@ public class TemplateBaseUtil { return "en".equals(language) ? TemplateUtil.getEn(name) : name; } + /** + * 获取勾选标志 + * + * @param key + * @param key + * @return + */ + public static String getCheck(String key, JSONObject jsonObject) { + Boolean result = false; + if (jsonObject.getString(key) != null) { + result = true; + } + return result?" √":""; + } + + /** + * 获取复核标志 + * + * @param key + * @param jsonArray + * @return + */ + public static String getFh(String key, JSONArray jsonArray) { + Boolean result = false; + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject obj = jsonArray.getJSONObject(i); + if (obj != null && key.equals(obj.getString("key"))) { + result = true; + break; + } + } + return result?" ?":""; + } + + } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/template/gsp/SYWZPZJHB.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/template/gsp/SYWZPZJHB.java new file mode 100644 index 0000000..b3bf4fc --- /dev/null +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/utils/pdf/template/gsp/SYWZPZJHB.java @@ -0,0 +1,99 @@ +package com.hxhq.business.utils.pdf.template.gsp; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.hxhq.business.domain.StudyFormFill; +import com.hxhq.business.domain.StudyFormFillJcgj; +import com.hxhq.business.domain.StudyFormFillQmxx; +import com.hxhq.business.utils.pdf.PdfBaseUtil; +import com.hxhq.business.utils.pdf.PdfExportUtil; +import com.hxhq.business.utils.pdf.template.TemplateBaseUtil; +import com.hxhq.common.core.utils.StringUtils; +import com.hxhq.common.security.utils.SecurityUtils; +import com.hxhq.system.api.model.LoginUser; +import com.itextpdf.text.Document; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * 色谱-生物样品分析溶液配制表 + * + * @author tanfei + */ +public class SYWZPZJHB { + private static final Logger logger = LoggerFactory.getLogger(SYWZPZJHB.class.getName()); + public String language = "zh"; + + /** + * 导出 + * + * @param studyFormFill + * @return + */ + public String exportDetail(StudyFormFill studyFormFill, List studyFormFillQmxxList, List studyFormFillJcgjList, String lang,Integer jcgjlx, String localFilePath) { + language = lang; + Document document = null; + FileOutputStream fos = null; + String filePath = PdfBaseUtil.getFilePath(localFilePath,"Template"); + try { + String sign = "hxhq"; + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null) { + sign = loginUser.getSysUser().getNickName(); + } + document = PdfBaseUtil.init(document, fos, filePath, sign +PdfExportUtil.parseDateToStr(new Date()), studyFormFill.getBdmc(),false); + JSONObject bdnr = JSONObject.parseObject(studyFormFill.getBdnr()); + JSONObject zdgxjl = JSONObject.parseObject(StringUtils.isNoneBlank(studyFormFill.getZdgxjl())?studyFormFill.getZdgxjl():"{}"); + JSONArray fhyjjl = JSONArray.parseArray(StringUtils.isNoneBlank(studyFormFill.getFhyjjl())?studyFormFill.getFhyjjl():"[]"); + + //region 表单信息 + + //试验基本信息 + PdfBaseUtil.addUnderlinedTitle(document, getName("试验基本信息"), 10, true); + Map formData1 = new LinkedHashMap<>(); + formData1.put(getName("试验名称"), studyFormFill.getStudyMc()); + formData1.put(getName("试验编号"), studyFormFill.getStudySn()); + PdfBaseUtil.addFormTableColumns(document, formData1, 2); + + //签名信息 + TemplateBaseUtil.addQmxx(document, studyFormFillQmxxList,language); + //稽查轨迹 + TemplateBaseUtil.addJcgj(document, studyFormFillJcgjList,jcgjlx,language); + logger.info("生成成功:{}", filePath); + } catch (Exception e) { + logger.error("生成失败", e); + throw new RuntimeException("生成失败: " + e.getMessage()); + } finally { + if (document != null) { + document.close(); + } + if (fos != null) { + try { + fos.close(); + } catch (IOException e) { + logger.error("关闭文件流失败", e); + } + } + } + return filePath; + } + + + /** + * 获取名称 + * + * @param name + * @return + */ + public String getName(String name) { + return TemplateBaseUtil.getNameByLanguage(name,language); + } + +} 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 33eaa0b..7717d91 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,5 +1,6 @@ package com.hxhq.business.utils.pdf.template.sp; +import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.hxhq.business.domain.*; import com.hxhq.business.utils.pdf.PdfBaseUtil; @@ -43,16 +44,26 @@ public class SP001 { if (loginUser != null) { sign = loginUser.getSysUser().getNickName(); } - document = PdfBaseUtil.init(document, fos, filePath, sign +PdfExportUtil.parseDateToStr(new Date()), "en".equals(language)?studyFormFill.getTemplateMcEn():studyFormFill.getTemplateMc(),false); + document = PdfBaseUtil.init(document, fos, filePath, sign +PdfExportUtil.parseDateToStr(new Date()), studyFormFill.getBdmc(),false); JSONObject bdnr = JSONObject.parseObject(studyFormFill.getBdnr()); - //试验基本信息 - TemplateBaseUtil.addStudyInfo( document, studyFormFill, bdnr, lang); + JSONObject zdgxjl = JSONObject.parseObject(StringUtils.isNoneBlank(studyFormFill.getZdgxjl())?studyFormFill.getZdgxjl():"{}"); + JSONArray fhyjjl = JSONArray.parseArray(StringUtils.isNoneBlank(studyFormFill.getFhyjjl())?studyFormFill.getFhyjjl():"[]"); //region 表单信息 + + //试验基本信息 + PdfBaseUtil.addUnderlinedTitle(document, getName("试验基本信息"), 10, true); + Map formData1 = new LinkedHashMap<>(); + formData1.put(getName("试验名称"), studyFormFill.getStudyMc()); + formData1.put(getName("试验编号"), studyFormFill.getStudySn()); + formData1.put(getName("方法编号"), (StringUtils.isNoneBlank(bdnr.getString("methodCode")) ? bdnr.getString("methodCode") : "")+TemplateBaseUtil.getCheck("_methodCode",zdgxjl)+TemplateBaseUtil.getFh("_methodCode",fhyjjl)); + formData1.put(getName("版本号"), (StringUtils.isNoneBlank(bdnr.getString("versionNum")) ? bdnr.getString("versionNum") : "")+TemplateBaseUtil.getCheck("_versionNum",zdgxjl)+TemplateBaseUtil.getFh("_versionNum",fhyjjl)); + PdfBaseUtil.addFormTableColumns(document, formData1, 2); + PdfBaseUtil.addUnderlinedTitle(document, getName("试验配置条件"), 10, true); Map formData2 = new LinkedHashMap<>(); formData2.put(getName("预填"),(StringUtils.isNoneBlank(bdnr.getString("pre"))? bdnr.getString("pre"):"") + (StringUtils.isNoneBlank(bdnr.getString("preOther")) ? bdnr.getString("preOther") : "")); - formData2.put(getName("实际"),(StringUtils.isNoneBlank(bdnr.getString("act"))? bdnr.getString("act"):"") + (StringUtils.isNoneBlank(bdnr.getString("actOther")) ? bdnr.getString("actOther") : "")); + formData2.put(getName("实际"),(StringUtils.isNoneBlank(bdnr.getString("act"))? bdnr.getString("act"):"") + (StringUtils.isNoneBlank(bdnr.getString("actOther")) ? bdnr.getString("actOther") : "")+TemplateBaseUtil.getCheck("_act",zdgxjl)+TemplateBaseUtil.getFh("_act",fhyjjl)); PdfBaseUtil.addFormTableColumns(document, formData2, 2); PdfBaseUtil.addUnderlinedTitle(document, getName("配置时间"), 10, true); @@ -77,13 +88,13 @@ public class SP001 { 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("targetActConcentration") + bdnr.getString("targetPreConcentrationUnit")+TemplateBaseUtil.getCheck("_targetActConcentration",zdgxjl)+TemplateBaseUtil.getFh("_targetActConcentration",fhyjjl)); formData5.put(getName("目标溶液预计体积"), bdnr.getString("targetPreVolume") + bdnr.getString("targetPreVolumeUnit")); - formData5.put(getName("目标溶液实际体积"), bdnr.getString("targetActVolume") + bdnr.getString("targetActVolumeUnit")); + formData5.put(getName("目标溶液实际体积"), bdnr.getString("targetActVolume") + bdnr.getString("targetActVolumeUnit")+TemplateBaseUtil.getCheck("_targetActVolume",zdgxjl)+TemplateBaseUtil.getFh("_targetActVolume",fhyjjl)); formData5.put(getName("有效周期"), bdnr.getString("effectivePeriod") + bdnr.getString("effectivePeriodUnit")); formData5.put(getName("失效日"), bdnr.getString("expireDate")); PdfBaseUtil.addFormTableColumns(document, formData5, 2); - PdfBaseUtil.addUnderlinedTitle(document, getName("备注") + ":" +(StringUtils.isNoneBlank(bdnr.getString("remark")) ? bdnr.getString("remark") : ""), 10, false); + PdfBaseUtil.addUnderlinedTitle(document, getName("备注") + ":" +(StringUtils.isNoneBlank(bdnr.getString("remark")) ? bdnr.getString("remark") : "")+(TemplateBaseUtil.getCheck("_remark",zdgxjl)+TemplateBaseUtil.getFh("_remark",fhyjjl)), 10, false); //endregion //签名信息