From c42f62b32bac302a7ac9fcde7489f7c5fc6e11aa Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期五, 06 十二月 2024 15:35:17 +0800 Subject: [PATCH] zjh20241205-3 --- ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java | 1301 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 1,234 insertions(+), 67 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java index bb05d00..5441cdd 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java @@ -5,6 +5,7 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.text.NumberFormat; +import java.text.SimpleDateFormat; import java.util.*; import java.util.List; import java.util.stream.Collectors; @@ -21,6 +22,7 @@ import com.itextpdf.text.pdf.draw.LineSeparator; import com.ltkj.common.core.domain.entity.SysDictData; import com.ltkj.common.utils.DateUtils; +import com.ltkj.common.utils.PDFDocumentUtil; import com.ltkj.common.utils.SecurityUtils; import com.ltkj.common.utils.StringUtils; import com.ltkj.framework.config.MatchUtils; @@ -31,15 +33,17 @@ import com.ltkj.system.service.ISysDictDataService; import com.ltkj.system.service.ISysUserService; import com.ltkj.web.config.pdfutils.MergePdf; -import com.ltkj.web.config.pdfutils.MyHeaderFooter; import com.ltkj.web.config.pdfutils.PDFBinaryUtil; import com.ltkj.web.config.pdfutils.PdfUtils; +import com.ltkj.web.controller.his.HisPDFUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.bind.annotation.*; import com.ltkj.common.core.controller.BaseController; import com.ltkj.common.core.domain.AjaxResult; @@ -54,7 +58,7 @@ */ @RestController @RequestMapping("/system/report") -@Api(tags = "浣撴鎶ュ憡") +@Api(tags = "AAAA_浣撴鎶ュ憡") @Transactional public class TjReportController extends BaseController { @Resource @@ -77,6 +81,8 @@ private ITjReportTemplateService reportTemplateService; @Value("${path.filePath}") private String value; + @Value("${path.reportServer}") + private String urlValue; @Resource private ISysUserService userService; @Resource @@ -90,20 +96,26 @@ private ISysDictDataService dictDataService; @Resource private ITbTransitionService transitionService; + @Autowired + private ITjBigPositiveService tjBigPositiveService; + @Autowired + private HisPDFUtil hisPDFUtil; @GetMapping("/savePdf") @ApiOperation(value = "浠庢湰鍦板瓨鍌ㄦā鏉垮埌鏁版嵁搴�") public AjaxResult savePdf() { //浠庢枃浠跺湴鍧�璇诲叆PDF鏂囦欢 浠呭瓨鍌ㄤ竴娆� - String base64String = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\浣撴妯℃澘4.pdf"); + String base64String = PDFBinaryUtil.getPDFBinary(configService.selectConfigByKey("default_pdf5Template")); + reportTemplateService.remove(new LambdaQueryWrapper<TjReportTemplate>().eq(TjReportTemplate::getName,"浣撴鎶ュ憡妯℃澘5")); TjReportTemplate tem = new TjReportTemplate(); - tem.setName("浣撴鎶ュ憡妯℃澘4"); - tem.setRemark("浣撴鎶ュ憡妯℃澘4"); + tem.setName("浣撴鎶ュ憡妯℃澘5"); + tem.setRemark("浣撴鎶ュ憡妯℃澘5"); tem.setTemplate(base64String); tem.setFlag("1"); tem.setOpen("0"); + tem.setCreateTime(DateUtil.date()); final boolean save = reportTemplateService.save(tem); - if(save){ + if (save) { return AjaxResult.success("淇濆瓨鎴愬姛"); } return AjaxResult.success("淇濆瓨澶辫触"); @@ -254,11 +266,693 @@ // return toAjax(tjReportService.deleteTjReportByReIds(reIds)); // }*/ + @Autowired + private TjCheckController tjCheckController; + @GetMapping("/toPdf/{TjNumber}") @ApiOperation(value = "鎵撳嵃浣撴鎶ュ憡涓簆df") @Transactional public AjaxResult toPdf(@PathVariable("TjNumber") @ApiParam(value = "浣撴鍙�") String tjNumber) { + // AjaxResult error = null; + // 涔嬪墠鐨勪唬鐮� 浼樺寲閫熷害 +// System.out.println("----------------------------------oldFun寮�濮�-------------------------------------------------------"); +// error = oldFun(tjNumber); +// System.out.println("--------------------------------------缁撴潫---------------------------------------------------"); + // 鎾ら攢鎿嶄綔 +// revocationReport(tjNumber); +// 鏍规嵁鏌愪汉tj鍙蜂互鍙奝roId杩涜鎵撳嵃鍓嶇殑璇锋眰 +// tjCheckController.getTjdetailList(tjNumber,null,1); +// List<UpdateOrderRemarkVo> updateOrderRemarkVos = new ArrayList<>(); +// UpdateOrderRemarkVo remarkVo = new UpdateOrderRemarkVo(); +// remarkVo.setRemarks("鏈寮傚父"); +// remarkVo.setTjNumber("02132240308102232"); +// remarkVo.setProId("1633660948860522555"); +// updateOrderRemarkVos.add(remarkVo); +// tjCheckController.checkUpdateOrderRemark(updateOrderRemarkVos); +// System.out.println("---------------------------------------newFun寮�濮�--------------------------------------------------"); + // 浠ュ墠娴嬭瘯pdf鏂规硶 +// error = newFun(tjNumber); +// System.out.println("-------------------------------------------缁撴潫----------------------------------------------"); + // 鎾ら攢 +// revocationReport(tjNumber); +// if (error != null) { +// return error; +// } +// return AjaxResult.success("璇ョ敤鎴蜂綋妫�鏈畬鎴愶紝涓嶈兘鎵撳嵃鎶ュ憡锛侊紒锛�"); + String config = configService.selectConfigByKey("sfjcwjhyqxm"); + if(null != config && config.equalsIgnoreCase("Y")){ + int num = tjOrderRemarkService.getTjYqOrderRemarkByTjNum(tjNumber); + if (num > 0) return AjaxResult.error("瀛樺湪鏈鎴栧欢鏈熼」鐩殏涓嶈兘鐢熸垚鎶ュ憡!!!"); + } +// String configByKey = configService.selectConfigByKey("sfkqdyhis"); + String configByKey = "Y"; + LambdaQueryWrapper<TjOrder> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TjOrder::getTjNumber, tjNumber); + TjOrder tjOrder = tjOrderService.getOne(queryWrapper); + if (null != tjOrder) { + + //鍒ゆ柇琛ㄤ腑鏈夋病鏈夎浣撴鎶ュ憡 涓嶈兘閲嶅鐢熸垚 + LambdaQueryWrapper<TjReport> wqa = new LambdaQueryWrapper<>(); + wqa.eq(TjReport::getTjNumber, tjNumber); + wqa.eq(TjReport::getType, "浣撴鎶ュ憡"); + Integer count = tjReportService.getSelectCount(wqa); + + if (tjOrder.getReportTime() !=null || count != 0 ) { + return AjaxResult.error("璇ュ鎴锋姤鍛婂凡鐢熸垚锛佷笉鑳介噸澶嶇敓鎴愶紒鍙洿鎺ラ瑙堟垨鎵撳嵃锛�"); + } + + LambdaQueryWrapper<TjReportTemplate> tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>(); + tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1); + tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0); + TjReportTemplate reportTemplate = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper); +// if (tjOrder.getTjCategory() != null) { +// //鏌ヨ瀛楀吀 +// LambdaQueryWrapper<SysDictData> wqq = new LambdaQueryWrapper<>(); +// wqq.eq(SysDictData::getDictType, "dict_tjtype"); +// wqq.eq(SysDictData::getDictValue, tjOrder.getTjCategory()); +// SysDictData one = dictDataService.getOne(wqq); +// if (one != null) { +// //鏌ヨ瀛楀吀 +// LambdaQueryWrapper<SysDictData> wqq1 = new LambdaQueryWrapper<>(); +// wqq1.eq(SysDictData::getDictType, "report_template_type"); +// wqq1.eq(SysDictData::getDictLabel, one.getDictLabel()); +// SysDictData one1 = dictDataService.getOne(wqq1); +// if (one1 != null) { +// tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, one1.getDictValue()); +// } else { +// tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1); +// } +// } else { +// tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1); +// } +// tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0); +// reportTemplate = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper); +// } else { +// tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0); +// reportTemplate = reportTemplateService.list(tjReportTemplateLambdaQueryWrapper).get(2); +// } + Integer checkStatus = tjOrder.getCheckStatus(); + if (checkStatus == 1) { + if ("鎶ヨ〃".equals(reportTemplate.getPrint())) { + TjReport tjReport = new TjReport(); + tjReport.setTjNumber(String.valueOf(tjNumber)); + tjReport.setPath(reportTemplate.getUrl() + "?tjNum=" + tjNumber); + tjReport.setType("浣撴鎶ュ憡"); + tjReport.setPrint("鎶ヨ〃"); + tjReportService.save(tjReport); + //淇敼order琛ㄤ腑鐨勬墦鍗版姤鍛婃椂闂翠负褰撳墠鏃堕棿 + LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(TjOrder::getTjNumber, tjNumber); + updateWrapper.set(TjOrder::getReportTime, new Date()); + updateWrapper.set(TjOrder::getPrintLastTime, new Date()); + updateWrapper.set(TjOrder::getDownloadLastTime, new Date()); + updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END); + tjOrderService.update(updateWrapper); + return AjaxResult.success("宸茬敓鎴愭姤鍛婏紒鍙洿鎺ョ偣鍑婚瑙堬紒"); + } + String hisRegistrationId = tjOrder.getCardId(); + Date createTime = tjOrder.getCreateTime(); + Date finishTime = tjOrder.getFinishTime(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String ksrq = dateFormat.format(createTime); + String jsrq = dateFormat.format(new Date()); + HashMap<String, Object> params = new HashMap<>(); + params.put("his_registration_id", hisRegistrationId); + params.put("ksbm", ""); + params.put("pationid", ""); + params.put("ksrq", ksrq); + params.put("jsrq", jsrq); + params.put("pagecount", 100); + params.put("page", 1); + LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>(); + wq1.eq(TjCustomer::getCusId, tjOrder.getUserId()); + TjCustomer tjCustomer = tjCustomerService.getOne(wq1); + try { + return shengchengbgmoban(tjNumber, tjOrder, tjCustomer, reportTemplate); + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + e.printStackTrace(); + // 璋冪敤鎾ら攢 +// tjReportController.backOnlyCheckType(tjNumber); + logger.error("鐢熸垚鎶ュ憡寮傚父"); + return AjaxResult.error("鐢熸垚鎶ュ憡澶辫触"); + } + } else { + return AjaxResult.error("璇峰厛鎬绘"); + } + } + return AjaxResult.error(); + } + + public AjaxResult shengchengbgmoban(String tjNumber, TjOrder tjOrder, TjCustomer tjCustomer, TjReportTemplate reportTemplate) throws Exception { + AjaxResult ajaxResult = hisPDFUtil.hisPDF(tjOrder, tjCustomer, reportTemplate); + if (!ajaxResult.get("code").toString().equals("200")) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } else { + Long userId = tjCustomer.getCusId(); + String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "_鎶ュ憡.pdf"; + TjReport tjReport = new TjReport(); + tjReport.setTjNumber(String.valueOf(tjNumber)); + tjReport.setPath(urlValue + outputFileName1); + String outputPath1 = value + File.separator; + String pdfBinary = getPDFBinary(outputPath1 + outputFileName1); + tjReport.setReport(pdfBinary); + tjReport.setType("浣撴鎶ュ憡"); + tjReport.setPrint("pdf"); + tjReportService.save(tjReport); + Date date = new Date(); + // LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>(); +// updateWrapper.eq(TjOrder::getTjNumber, tjNumber); +// updateWrapper.set(TjOrder::getReportTime, date); +// updateWrapper.set(TjOrder::getPrintLastTime, date); +// updateWrapper.set(TjOrder::getDownloadLastTime,date); +// updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END); + tjOrder.setStatus(TjConstants.TJ_END); + tjOrder.setReportTime(date); + tjOrder.setPrintLastTime(date); + tjOrder.setDownloadLastTime(date); + tjOrderService.updateById(tjOrder); + } + return ajaxResult; + } + + + /** + * 鎾ら攢 + * @param tjNumber + */ + @Transactional(propagation = Propagation.REQUIRES_NEW) + public void backOnlyCheckType(String tjNumber) { + QueryWrapper<TjOrder> wq2 = new QueryWrapper<>(); + wq2.eq("tj_number", tjNumber); + TjOrder one = tjOrderService.getOne(wq2); + one.setCheckStatus(0); + String config = configService.selectConfigByKey("tj_confirm"); + if ("Y".equals(config)) { + one.setStatus(TjConstants.TJ_CHECK); + } else { + one.setStatus(TjConstants.TJ_CONFIRM); + } + //灏嗙姸鎬佹敼涓烘湭瀹℃牳 + tjOrderService.updateById(one); + } + + private AjaxResult newFun(String tjNumber) { + long startTime = System.currentTimeMillis(); + int num = tjOrderRemarkService.getTjYqOrderRemarkByTjNum(tjNumber); + if (num > 0) { + return AjaxResult.error("鏈夊欢鏈熼」鐩殏涓嶈兘鐢熸垚鎶ュ憡!!!"); + } + LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>(); + wq.eq(TjOrder::getTjNumber, tjNumber); + TjOrder tjOrder = tjOrderService.getOne(wq); + if (null != tjOrder) { + LambdaQueryWrapper<TjReportTemplate> tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>(); + TjReportTemplate reportTemplate = null; + if (tjOrder.getTjCategory() != null) { + //鏌ヨ瀛楀吀 + LambdaQueryWrapper<SysDictData> wqq = new LambdaQueryWrapper<>(); + wqq.eq(SysDictData::getDictType, "dict_tjtype"); + wqq.eq(SysDictData::getDictValue, tjOrder.getTjCategory()); + SysDictData one = dictDataService.getOne(wqq); + if (one != null) { + //鏌ヨ瀛楀吀 + LambdaQueryWrapper<SysDictData> wqq1 = new LambdaQueryWrapper<>(); + wqq1.eq(SysDictData::getDictType, "report_template_type"); + wqq1.eq(SysDictData::getDictLabel, one.getDictLabel()); + SysDictData one1 = dictDataService.getOne(wqq1); + if (one1 != null) { + tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, one1.getDictValue()); + } else { + tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1); + } + } else { + tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1); + } + tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0); + reportTemplate = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper); + } else { + tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0); + reportTemplate = reportTemplateService.list(tjReportTemplateLambdaQueryWrapper).get(2); + } + //鍒ゆ柇琛ㄤ腑鏈夋病鏈夎浣撴鎶ュ憡 涓嶈兘閲嶅鐢熸垚 + LambdaQueryWrapper<TjReport> wqa = new LambdaQueryWrapper<>(); + wqa.eq(TjReport::getTjNumber, tjNumber); + wqa.eq(TjReport::getType, "浣撴鎶ュ憡"); + Integer count = tjReportService.getSelectCount(wqa); + if (count != 0) { + return AjaxResult.error("璇ュ鎴锋姤鍛婂凡鐢熸垚锛佷笉鑳介噸澶嶇敓鎴愶紒鍙洿鎺ラ瑙堟垨鎵撳嵃锛�"); + } + Integer checkStatus = tjOrder.getCheckStatus(); + if (checkStatus == 1) { + //鍒ゆ柇鎶ュ憡鐢熸垚 淇濆瓨绫诲瀷 2024/2/29 + if ("鎶ヨ〃".equals(reportTemplate.getPrint())) { + TjReport tjReport = new TjReport(); + tjReport.setTjNumber(String.valueOf(tjNumber)); + tjReport.setPath(reportTemplate.getUrl() + "?tjNum=" + tjNumber); + tjReport.setType("浣撴鎶ュ憡"); + tjReport.setPrint("鎶ヨ〃"); + tjReportService.save(tjReport); + //淇敼order琛ㄤ腑鐨勬墦鍗版姤鍛婃椂闂翠负褰撳墠鏃堕棿 + LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(TjOrder::getTjNumber, tjNumber); + updateWrapper.set(TjOrder::getReportTime, new Date()); + updateWrapper.set(TjOrder::getPrintLastTime, new Date()); + updateWrapper.set(TjOrder::getDownloadLastTime, new Date()); + updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END); + tjOrderService.update(updateWrapper); + return AjaxResult.success("宸茬敓鎴愭姤鍛婏紒鍙洿鎺ョ偣鍑婚瑙堬紒"); + } + String template = reportTemplate.getTemplate(); + String userId = SecurityUtils.getLoginUser().getUsername(); + if (template == null) { + return AjaxResult.error("娌℃湁璇ユā鏉�"); + } + // --------浠ヤ笂------- 鏍规嵁鏁版嵁搴撲腑鐨勬ā鏉夸簩杩涘埗鏂囦欢 杞琾df 鍒涘缓鏂囦欢澶� 灏唒df鏀捐繘鏈湴鏂囦欢澶� + LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>(); + wq1.eq(TjCustomer::getCusId, tjOrder.getUserId()); + TjCustomer tjCustomer = tjCustomerService.getOne(wq1); + LambdaQueryWrapper<DictComp> wq111 = new LambdaQueryWrapper<>(); + wq111.eq(DictComp::getDrugManufacturerId, tjOrder.getFirmId()); + DictComp dictComp = dictCompService.getOne(wq111); + LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>(); + wq2.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId()); + //20230306鍒ゆ柇璇ラ」鐩槸鍚﹂��璐�/缂磋垂 + wq2.isNotNull(TjOrderDetail::getFlowingWaterId); + //20230323鍒ゆ柇璇ラ」鐩槸鍚﹀純妫�/鏈 +// wq2.eq(TjOrderDetail::getTjStatus,1); + List<TjOrderDetail> list = tjOrderDetailService.list(wq2); + for (TjOrderDetail tjOrderDetail : list) { + TjProject tjProject = projectService.selectTjProjectByProId(tjOrderDetail.getProId()); + tjOrderDetail.setProject(tjProject); + } + // 鍏辫鑰楁椂5695姣 浠ヤ笅浠g爜鑰楁椂3528 + // TODO PDF鍒涘缓浼樺寲 + long pdfMkStart = System.currentTimeMillis(); + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + PdfStamper ps = null; + PdfReader reader = null; + try { + // 璇诲叆pdf琛ㄥ崟 + reader = new PdfReader(new ByteArrayInputStream(Base64.getDecoder().decode(template))); + // 鏍规嵁琛ㄥ崟鐢熸垚涓�涓柊鐨刾df + ps = new PdfStamper(reader, byteArrayOutputStream); + // 鑾峰彇pdf琛ㄥ崟 + AcroFields form = ps.getAcroFields(); + //璇ュ瓧浣撻�犳垚绫诲瀷涓嶅潎鍖�锛屼絾鏄痯df杞浘鐗囦笉涔辩爜 + //BaseFont bf = BaseFont.createFont("C:Windows\\Fonts\\simfang.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); + BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); + form.addSubstitutionFont(bf); + // 濉厖鏁版嵁缁欒〃鏍� + Map<String, Object> data = new HashMap<>(); + // 璁剧疆鐢ㄦ埛淇℃伅 + setUserInfo(tjNumber, tjOrder, tjCustomer, dictComp, list, data); + //灏侀潰椤典笅闈㈢殑鎬绘寤鸿鏄剧ず + if (tjOrder.getCheckAdvice() == null) { + data.put("remark", "鏃�"); + } else { + data.put("remark", tjOrder.getCheckAdvice()); + } + //灏侀潰椤典笅闈㈢殑鎬绘寤鸿鏄剧ず + if (tjOrder.getCheckDoctor() == null) { + data.put("docname", "鏃�"); + } else { + data.put("docname", tjOrder.getCheckDoctor()); + } + //寮傚父椤圭洰 +// data.put("yichang", "銆�1銆戝眻鍏変笉姝n" + +// "銆�2銆戞墎妗冧綋鑲モ激\n" + +// "銆�3銆戜綋閲嶆寚鏁板饩糪n" + +// "銆�4銆戔編鑴傚紓甯革紙鎬昏儐鍥洪唶澧炩炯锛涒舰娌逛笁閰饩硷級\n" + +// "銆�5銆懳�-饩曟皑閰拌浆绉婚叾澧炩炯锛涘ぉ饣斿啲姘ㄩ吀姘ㄥ熀杞Щ閰跺饩硷紱涓欐皑閰告皑鍩鸿浆绉婚叾澧炩炯\n" + +// "銆�6銆戣交饩勪腑搴﹁剛鑲倽"); + + //鎷兼帴閲嶅ぇ闃虫�х粨鏋� + StringBuffer str = new StringBuffer(); + str.append("銆愰噸澶ч槼鎬ч」鐩�慭n"); + LambdaQueryWrapper<TjBigPositive> bigPositiveLambdaQueryWrapper = new LambdaQueryWrapper<>(); + bigPositiveLambdaQueryWrapper.eq(TjBigPositive::getTjNumber, tjNumber); + final List<TjBigPositive> list1 = tjBigPositiveService.list(bigPositiveLambdaQueryWrapper); + if (list1 != null && list1.size() > 0) { + for (int i = 0; i < list1.size(); i++) { + str.append(i + 1).append("銆�").append(list1.get(i).getProName()).append(";\n"); + } + } else { + str.append(" 鏃狅紱\n"); + } + //鎷兼帴寮傚父椤圭洰 + str.append("銆愬紓甯告儏鍐甸」鐩�慭n"); + if (list.size() > 0) { +// for (int i = 0; i < list.size(); i++) { +// if (list.get(i).getExceptionDesc() == 1) { +// str.append(i + 1).append("銆�").append(projectService.getById(list.get(i).getProId()).getProName()).append(";\n"); +// } +// } + int[] index = {0}; + List<TjOrderDetail> collect = list.stream() + .filter(item -> item.getExceptionDesc() == 1).collect(Collectors.toList()); + if (collect.isEmpty()) { + str.append(" 鏃狅紱\n"); + } else { + collect.forEach(item -> str.append(index[0]++ + 1).append("銆�").append(projectService.getById(item.getProId()).getProName()).append(";\n")); + } + } else { + str.append(" 鏃狅紱\n"); + } + //寮傚父椤圭洰 + data.put("yichang", str.toString()); + // 閬嶅巻data 缁檖df琛ㄥ崟琛ㄦ牸璧嬪�� + for (String key : data.keySet()) { + form.setField(key, data.get(key).toString()); + } + System.out.println("pdf濉厖琛ㄥ崟鏁版嵁鑰楁椂锛�" + (System.currentTimeMillis() - pdfMkStart)); + //璁剧疆涓烘棤娉曠紪杈� + ps.setFormFlattening(true); + ps.close(); + reader.close(); + // 灏嗕慨鏀瑰悗鐨凱DF鍐呭鍐欏叆 + byte[] bytes = byteArrayOutputStream.toByteArray(); + // 鍒涘缓鏂扮殑PDF鏂囨。 + Document document = new Document(PageSize.A4); + ByteArrayOutputStream finalOutPut = new ByteArrayOutputStream(); + PdfCopy copy = new PdfCopy(document, finalOutPut); + document.open(); + reader = new PdfReader(bytes); + int numberOfPages = reader.getNumberOfPages(); + for (int i = 1; i <= numberOfPages; i++) { + PdfImportedPage page = copy.getImportedPage(reader, i); + copy.addPage(page); + } + // 娣诲姞璇︽儏椤� + document.newPage(); + reader.close(); + ByteArrayOutputStream infoByteArrayOutputStream = setInfoPage(userId, tjNumber); + reader = new PdfReader(infoByteArrayOutputStream.toByteArray()); + int numberOfPages1 = reader.getNumberOfPages(); + for (int i = 1; i <= numberOfPages1; i++) { + PdfImportedPage page = copy.getImportedPage(reader, i); + copy.addPage(page); + } + infoByteArrayOutputStream.close(); + // 蹇冪數鍥句互鍙婇檮浠� + // 鍥犳暟鎹簱琛ㄥ瓨鏀綽ase64瀵艰嚧鏌ヨ缂撴參 杩欓噷鎵ц缂撴參 + // 鍦ㄨ繖閲屽鍔犱竴鏉℃煡璇ount 瀵逛簬娌℃湁杩藉姞闄勪欢鐨� 鎻愬崌閫熷害 + long fujianStart = System.currentTimeMillis(); + LambdaQueryWrapper<TjReport> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TjReport::getTjNumber, tjNumber) + .and(item -> item.eq(TjReport::getType, "闄勪欢").or().eq(TjReport::getType, "蹇冪數鍥�")); + Integer selectCount = tjReportService.getSelectCount(queryWrapper); + if (selectCount > 0) { + String base64XinDianTu = null; + String base64FuJian = null; + List<TjReport> reportList = tjReportService.list(queryWrapper); + TjReport xinDianTu = null; + TjReport fuJian = null; + if (!reportList.isEmpty()) { + for (TjReport tjReport : reportList) { + if ("闄勪欢".equals(tjReport.getType())) { + fuJian = tjReport; + base64FuJian = fuJian.getReport(); + } else { + xinDianTu = tjReport; + base64XinDianTu = xinDianTu.getReport(); + } + } + } + if (xinDianTu != null) { + if (fuJian != null) { + addPageByPDFBase64(copy, base64FuJian); + document.newPage(); + addPageByPDFBase64(copy, base64XinDianTu); + } else { + addPageByPDFBase64(copy, base64XinDianTu); + } + } else { + if (fuJian != null) { + addPageByPDFBase64(copy, base64FuJian); + } + } + } + long fujianEnd = System.currentTimeMillis(); + System.out.println("闄勪欢鏌ヨ鑰楁椂锛�" + (fujianEnd - fujianStart)); + System.out.println("鏂囦欢淇濆瓨鍓嶈�楁椂锛�" + (fujianEnd - pdfMkStart)); + // 淇濆瓨pdf鏂囦欢 + copy.close(); + String outputPath1 = value + File.separator; + String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "new_浣撴鎶ュ憡.pdf"; + File file = new File(outputPath1 + outputFileName1); + BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file)); + outputStream.write(finalOutPut.toByteArray()); + outputStream.flush(); + outputStream.close(); + document.close(); + finalOutPut.close(); + reader.close(); + // 淇濆瓨鏁版嵁 + TjReport tjReport = new TjReport(); + tjReport.setTjNumber(String.valueOf(tjNumber)); + tjReport.setPath(urlValue + outputFileName1); + String pdfBinary = getPDFBinary(outputPath1 + outputFileName1); + tjReport.setReport(pdfBinary); + tjReport.setType("浣撴鎶ュ憡"); + tjReport.setPrint("pdf"); + tjReportService.save(tjReport); + //淇敼order琛ㄤ腑鐨勬墦鍗版姤鍛婃椂闂翠负褰撳墠鏃堕棿 + LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(TjOrder::getTjNumber, tjNumber); + updateWrapper.set(TjOrder::getReportTime, new Date()); + updateWrapper.set(TjOrder::getPrintLastTime, new Date()); + updateWrapper.set(TjOrder::getDownloadLastTime, new Date()); + updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END); + tjOrderService.update(updateWrapper); + long entTime = System.currentTimeMillis(); + System.out.println("PDF寮�濮嬪垱寤哄埌缁撴潫鑰楁椂锛�" + (entTime - pdfMkStart)); + System.out.println("鎬昏�楁椂锛�" + (entTime - startTime) + "ms"); + return AjaxResult.success("宸茬敓鎴愭姤鍛婏紒鍙洿鎺ョ偣鍑婚瑙堬紒"); + } catch (Exception e) { + e.printStackTrace(); + return AjaxResult.success("PDF瀵煎嚭澶辫触"); + } + + } + } + return AjaxResult.success(); + } + + private void setUserInfo(String tjNumber, TjOrder tjOrder, TjCustomer tjCustomer, DictComp dictComp, List<TjOrderDetail> list, Map<String, Object> data) { + //濉厖鎬у埆锛氬垽鏂敺濂� + Long cusSex = tjCustomer.getCusSex(); + String sex; + String name1; + String tjtype; + if (cusSex == 0) { + sex = "鐢�"; + name1 = tjCustomer.getCusName() + "鍏堢敓"; + } else { + sex = "濂�"; + name1 = tjCustomer.getCusName() + "濂冲+"; + } + data.put("name", tjCustomer.getCusName()); + data.put("cusId", tjCustomer.getCusId()); + data.put("name1", name1); + if ("1".equals(tjOrder.getTjType())) { + tjtype = "鍥㈤槦"; + data.put("tjtype", tjtype); + } else { + tjtype = "涓汉"; + data.put("tjtype", tjtype); + } + data.put("dstype", "缁熶竴"); + data.put("sex", sex); + data.put("age", DateUtil.ageOfNow(tjCustomer.getCusBrithday())); + data.put("tjnumber", tjNumber); + data.put("tjdate", DateUtils.parseDateToStr("yyyy/MM/dd", tjOrder.getCreateTime())); + data.put("phone", tjCustomer.getCusPhone()); + data.put("idcard", MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard())); + data.put("num1", list.size()); + data.put("num2", 0); + data.put("num3", 4); + if (dictComp == null) { + data.put("work", "鏃�"); + } else { + data.put("work", dictComp.getCnName()); + } + } + + /** + * 鏍规嵁base64鐨凱DF鏂囦欢娣诲姞涓�椤� + * + * @param copy pdf澶嶅埗瀵硅薄 + * @param base64XinDianTu base64 pdf鏂囦欢 + * @throws IOException + * @throws BadPdfFormatException + */ + private void addPageByPDFBase64(PdfCopy copy, String base64XinDianTu) throws IOException, BadPdfFormatException { + byte[] pdfBytes = Base64.getDecoder().decode(base64XinDianTu); + PdfReader pdfReader = new PdfReader(pdfBytes); + int number = pdfReader.getNumberOfPages(); + for (int i = 1; i <= number; i++) { + PdfImportedPage importedPage = copy.getImportedPage(pdfReader, i); + copy.addPage(importedPage); + } + } + + + private ByteArrayOutputStream setInfoPage(String userId, String tjNumber) throws IOException, DocumentException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + //鏂囨。瀵硅薄 瀹炵幇A4绾搁〉闈� + Document document = new Document(PageSize.A4); + PdfWriter pdfWriter = PdfWriter.getInstance(document, byteArrayOutputStream); + //document.setMarginMirroring(true); + //璁剧疆鏂囨。鐨勯〉杈硅窛灏辨槸璺濈椤甸潰杈逛笂鐨勮窛绂伙紝鍒嗗埆涓猴細宸﹁竟璺濓紝鍙宠竟璺濓紝涓婅竟璺濓紝涓嬭竟璺� + document.setMargins(70, 70, 40, 40); + //pdfWriter.setPageEvent(new MyHeaderFooter());// 椤电湁椤佃剼 + document.open(); + document.add(new Header("鍋ュ悍浣撴缁撴灉", "鍋ュ悍浣撴缁撴灉")); + Map<TjOrderRemark, List<TjPdfVO>> tjOrderRemarkObjectMap = addTable(tjNumber); + Map<TjOrderRemark, List<TjPdfVO>> tjOrderRemarkListMap = addHuaYanTable(tjNumber); + tjOrderRemarkObjectMap.putAll(tjOrderRemarkListMap); + for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : tjOrderRemarkObjectMap.entrySet()) { + List<TjPdfVO> value = entry.getValue(); + LambdaQueryWrapper<TjProject> wqqq = new LambdaQueryWrapper<>(); + wqqq.eq(TjProject::getProId, entry.getKey().getProId()); + TjProject one11 = projectService.getOne(wqqq); + //鍒ゆ柇璇ラ」鐩槸鍚﹂渶瑕佹墦鍗版姤鍛� + if (null != one11 && "N".equals(one11.getNeedReport())) { + continue; + } + String titleName = null; + if (null != one11 && "1".equals(one11.getResultType())) { + titleName = one11.getProName(); + // 璁剧疆鏍囬瀛椾綋鏍峰紡 + Font titleFonts = PdfUtils.setFont(9); + Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName); + String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉"}; + // 鑾峰彇鍒楄〃鏁版嵁 + //璁剧疆琛ㄥご瀛椾綋鏍峰紡 + Font headFont = PdfUtils.setFont(9); + // 璁剧疆姝f枃瀛椾綋鏍峰紡锛�12鍙� + Font textFont = PdfUtils.setFont(9); + //鍒涘缓琛ㄦ牸 灏嗚〃澶村瓧浣撳拰姝f枃瀛椾綋鏀捐繘鍘� + PdfPTable table = PdfUtils.setTable1(headFont, textFont, titles, value); + document.add(paragraph); + document.add(table); + //鍒ゆ柇澶囨敞鏄惁涓虹┖ 绌轰笉鑳芥樉绀簄ull + if (entry.getKey().getRemark() == null) { + entry.getKey().setRemark(""); + } + String remark = "澶囨敞锛�" + entry.getKey().getRemark(); + if (entry.getKey().getRemark().length() > 50) { + int j = 0; + for (int i = 0; i < remark.length() / 50; i++) { + String substring = remark.substring(j, j + 50); + Font remarkFonts = PdfUtils.setFont(9); + Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring); + document.add(pp); + j = j + 50; + } + if (remark.length() % 50 != 0) { + String substring = remark.substring((remark.length() / 50) * 50, remark.length() - 1); + Font remarkFonts = PdfUtils.setFont(9); + Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring); + document.add(pp); + } + } else { + Font remarkFonts = PdfUtils.setFont(9); + Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark); + document.add(pp); + } + //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖ 绌轰笉鑳芥樉绀簄ull + if (null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) { + //涓绘鍖诲笀 + String doctorName = "涓绘鍖诲笀锛�" + userService.getById(entry.getKey().getDoctorName()).getNickName(); + Font doctorFonts = PdfUtils.setFont(9); + Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName); + df.setAlignment(Element.ALIGN_RIGHT); + document.add(df); + } else { + String doctorName = "涓绘鍖诲笀锛�" + "鏃�"; + Font doctorFonts = PdfUtils.setFont(9); + Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName); + df.setAlignment(Element.ALIGN_RIGHT); + document.add(df); + + } + //鍒嗗壊绾� + LineSeparator objectName = new LineSeparator(); + document.add(objectName); + } else { + if (null != one11) { + titleName = one11.getProName(); + } else { + titleName = entry.getKey().getProName(); + } + // 璁剧疆鏍囬瀛椾綋鏍峰紡 + Font titleFonts = PdfUtils.setFont(9); + Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName); + String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅", "鍙傝�冭寖鍥�"}; + // 鑾峰彇鍒楄〃鏁版嵁 + //璁剧疆琛ㄥご瀛椾綋鏍峰紡 + Font headFont = PdfUtils.setFont(9); + // 璁剧疆姝f枃瀛椾綋鏍峰紡锛�12鍙� + Font textFont = PdfUtils.setFont(9); + //鍒涘缓琛ㄦ牸 灏嗚〃澶村瓧浣撳拰姝f枃瀛椾綋鏀捐繘鍘� + PdfPTable table = PdfUtils.setTable(headFont, textFont, titles, value); + document.add(paragraph); + document.add(table); + //鍒ゆ柇澶囨敞鏄惁涓虹┖ 绌轰笉鑳芥樉绀簄ull + if (entry.getKey().getRemark() == null) { + entry.getKey().setRemark(""); + } + String remark = "澶囨敞锛�" + entry.getKey().getRemark(); + if (entry.getKey().getRemark().length() > 50) { + int j = 0; + for (int i = 0; i < remark.length() / 50; i++) { + String substring = remark.substring(j, j + 50); + Font remarkFonts = PdfUtils.setFont(9); + Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring); + document.add(pp); + j = j + 50; + } + if (remark.length() % 50 != 0) { + String substring = remark.substring((remark.length() / 50) * 50, remark.length() - 1); + Font remarkFonts = PdfUtils.setFont(9); + Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring); + document.add(pp); + } + } else { + Font remarkFonts = PdfUtils.setFont(9); + Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark); + document.add(pp); + } + //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖ 绌轰笉鑳芥樉绀簄ull + if (null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) { + //涓绘鍖诲笀 + String doctorName = "涓绘鍖诲笀锛�" + userService.getById(entry.getKey().getDoctorName()).getNickName(); + Font doctorFonts = PdfUtils.setFont(9); + Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName); + df.setAlignment(Element.ALIGN_RIGHT); + document.add(df); + } else { + String doctorName = "涓绘鍖诲笀锛�" + "鏃�"; + Font doctorFonts = PdfUtils.setFont(9); + Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName); + df.setAlignment(Element.ALIGN_RIGHT); + document.add(df); + } + //鍒嗗壊绾� + LineSeparator objectName = new LineSeparator(); + document.add(objectName); + } + } + document.close(); + pdfWriter.close(); + return byteArrayOutputStream; + } + + private AjaxResult oldFun(String tjNumber) { + long startTime = System.currentTimeMillis(); int num = tjOrderRemarkService.getTjYqOrderRemarkByTjNum(tjNumber); if (num > 0) return AjaxResult.error("鏈夊欢鏈熼」鐩殏涓嶈兘鐢熸垚鎶ュ憡!!!"); LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>(); @@ -267,38 +961,34 @@ if (null != tjOrder) { LambdaQueryWrapper<TjReportTemplate> tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>(); - TjReportTemplate reportTemplate =null; - if (tjOrder.getTjCategory()!=null){ + TjReportTemplate reportTemplate = null; + if (tjOrder.getTjCategory() != null) { //鏌ヨ瀛楀吀 LambdaQueryWrapper<SysDictData> wqq = new LambdaQueryWrapper<>(); wqq.eq(SysDictData::getDictType, "dict_tjtype"); wqq.eq(SysDictData::getDictValue, tjOrder.getTjCategory()); SysDictData one = dictDataService.getOne(wqq); - if (one!=null){ + if (one != null) { //鏌ヨ瀛楀吀 LambdaQueryWrapper<SysDictData> wqq1 = new LambdaQueryWrapper<>(); wqq1.eq(SysDictData::getDictType, "report_template_type"); wqq1.eq(SysDictData::getDictLabel, one.getDictLabel()); SysDictData one1 = dictDataService.getOne(wqq1); - if (one1!=null){ + if (one1 != null) { tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, one1.getDictValue()); - }else { + } else { tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1); } - }else { + } else { tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1); } tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0); reportTemplate = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper); - }else { + } else { tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0); reportTemplate = reportTemplateService.list(tjReportTemplateLambdaQueryWrapper).get(2); } - String template = reportTemplate.getTemplate(); - String userId = SecurityUtils.getLoginUser().getUsername(); - PDFBinaryUtil.base64StringToPDF(template, FileUtil.mkdir(value).getPath() + "\\" + userId + "浣撴鎶ュ憡灏侀潰妯℃澘.pdf"); - // --------浠ヤ笂------- 鏍规嵁鏁版嵁搴撲腑鐨勬ā鏉夸簩杩涘埗鏂囦欢 杞琾df 鍒涘缓鏂囦欢澶� 灏唒df鏀捐繘鏈湴鏂囦欢澶� //鍒ゆ柇琛ㄤ腑鏈夋病鏈夎浣撴鎶ュ憡 涓嶈兘閲嶅鐢熸垚 LambdaQueryWrapper<TjReport> wqa = new LambdaQueryWrapper<>(); @@ -312,6 +1002,34 @@ Integer checkStatus = tjOrder.getCheckStatus(); if (checkStatus == 1) { + //鍒ゆ柇鎶ュ憡鐢熸垚 淇濆瓨绫诲瀷 2024/2/29 + if ("鎶ヨ〃".equals(reportTemplate.getPrint())) { + TjReport tjReport = new TjReport(); + tjReport.setTjNumber(String.valueOf(tjNumber)); + tjReport.setPath(reportTemplate.getUrl() + "?tjNum=" + tjNumber); + tjReport.setType("浣撴鎶ュ憡"); + tjReport.setPrint("鎶ヨ〃"); + tjReportService.save(tjReport); + //淇敼order琛ㄤ腑鐨勬墦鍗版姤鍛婃椂闂翠负褰撳墠鏃堕棿 + LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(TjOrder::getTjNumber, tjNumber); + updateWrapper.set(TjOrder::getReportTime, new Date()); + updateWrapper.set(TjOrder::getPrintLastTime, new Date()); + updateWrapper.set(TjOrder::getDownloadLastTime, new Date()); + updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END); + tjOrderService.update(updateWrapper); + return AjaxResult.success("宸茬敓鎴愭姤鍛婏紒鍙洿鎺ョ偣鍑婚瑙堬紒"); + } + + + String template = reportTemplate.getTemplate(); + String userId = SecurityUtils.getLoginUser().getUsername(); + if (template != null) { + PDFBinaryUtil.base64StringToPDF(template, FileUtil.mkdir(value).getPath() + File.separator + userId + "浣撴鎶ュ憡灏侀潰妯℃澘.pdf"); + } + // --------浠ヤ笂------- 鏍规嵁鏁版嵁搴撲腑鐨勬ā鏉夸簩杩涘埗鏂囦欢 杞琾df 鍒涘缓鏂囦欢澶� 灏唒df鏀捐繘鏈湴鏂囦欢澶� + + LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjCustomer::getCusId, tjOrder.getUserId()); TjCustomer tjCustomer = tjCustomerService.getOne(wq1); @@ -330,8 +1048,8 @@ tjOrderDetail.setProject(tjProject); } - String inputFileName = value + "\\" + userId + "浣撴鎶ュ憡灏侀潰妯℃澘.pdf"; - String outputFileName = value + "\\" + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf"; + String inputFileName = value + File.separator + userId + "浣撴鎶ュ憡灏侀潰妯℃澘.pdf"; + String outputFileName = value + File.separator + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf"; OutputStream os = null; PdfStamper ps = null; PdfReader reader = null; @@ -409,8 +1127,33 @@ // "銆�5銆懳�-饩曟皑閰拌浆绉婚叾澧炩炯锛涘ぉ饣斿啲姘ㄩ吀姘ㄥ熀杞Щ閰跺饩硷紱涓欐皑閰告皑鍩鸿浆绉婚叾澧炩炯\n" + // "銆�6銆戣交饩勪腑搴﹁剛鑲倽"); + //鎷兼帴閲嶅ぇ闃虫�х粨鏋� + StringBuffer str = new StringBuffer(); + str.append("銆愰噸澶ч槼鎬ч」鐩�慭n"); + LambdaQueryWrapper<TjBigPositive> bigPositiveLambdaQueryWrapper = new LambdaQueryWrapper<>(); + bigPositiveLambdaQueryWrapper.eq(TjBigPositive::getTjNumber, tjNumber); + final List<TjBigPositive> list1 = tjBigPositiveService.list(bigPositiveLambdaQueryWrapper); + if (list1 != null && list1.size() > 0) { + for (int i = 0; i < list1.size(); i++) { + str.append((i + 1) + "銆�" + list1.get(i).getProName() + ";\n"); + } + } else { + str.append(" 鏃狅紱\n"); + } + //鎷兼帴寮傚父椤圭洰 + str.append("銆愬紓甯告儏鍐甸」鐩�慭n"); + if (list.size() > 0) { + for (int i = 0; i < list.size(); i++) { + if (list.get(i).getExceptionDesc() == 1) { + str.append((i + 1) + "銆�" + projectService.getById(list.get(i).getProId()).getProName() + ";\n"); + } + } + } else { + str.append(" 鏃狅紱\n"); + } + //寮傚父椤圭洰 - data.put("yichang", ""); + data.put("yichang", str.toString()); // 閬嶅巻data 缁檖df琛ㄥ崟琛ㄦ牸璧嬪�� for (String key : data.keySet()) { @@ -429,7 +1172,7 @@ //璁剧疆鏂囨。鐨勯〉杈硅窛灏辨槸璺濈椤甸潰杈逛笂鐨勮窛绂伙紝鍒嗗埆涓猴細宸﹁竟璺濓紝鍙宠竟璺濓紝涓婅竟璺濓紝涓嬭竟璺� document.setMargins(70, 70, 40, 40); //鐢熸垚pdf鐨勪綅缃互鍙婂悕绉� - String fileName = value + "\\" + userId +tjNumber+ "浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf"; + String fileName = value + File.separator + userId + tjNumber + "浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf"; OutputStream outputStream = Files.newOutputStream(Paths.get(fileName)); PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream); @@ -441,17 +1184,20 @@ Map<TjOrderRemark, List<TjPdfVO>> tjOrderRemarkObjectMap = addTable(tjNumber); + Map<TjOrderRemark, List<TjPdfVO>> tjOrderRemarkListMap = addHuaYanTable(tjNumber); + tjOrderRemarkObjectMap.putAll(tjOrderRemarkListMap); for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : tjOrderRemarkObjectMap.entrySet()) { List<TjPdfVO> value = entry.getValue(); LambdaQueryWrapper<TjProject> wqqq = new LambdaQueryWrapper<>(); wqqq.eq(TjProject::getProId, entry.getKey().getProId()); TjProject one11 = projectService.getOne(wqqq); //鍒ゆ柇璇ラ」鐩槸鍚﹂渶瑕佹墦鍗版姤鍛� - if ("N".equals(one11.getNeedReport())){ + if (null != one11 && "N".equals(one11.getNeedReport())) { continue; } - if ("1".equals(one11.getResultType())) { - String titleName = one11.getProName(); + String titleName = null; + if (null != one11 && "1".equals(one11.getResultType())) { + titleName = one11.getProName(); // 璁剧疆鏍囬瀛椾綋鏍峰紡 Font titleFonts = PdfUtils.setFont(9); Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName); @@ -515,7 +1261,12 @@ LineSeparator objectName = new LineSeparator(); document.add(objectName); } else { - String titleName = one11.getProName(); + if (null != one11) { + titleName = one11.getProName(); + } else { + titleName = entry.getKey().getProName(); + } + // 璁剧疆鏍囬瀛椾綋鏍峰紡 Font titleFonts = PdfUtils.setFont(9); Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName); @@ -588,45 +1339,45 @@ // TjReport one11111 = tjReportService.getOne(rtwq1); // if(null !=one11111){ // String report1 = one11111.getReport(); -// PDFBinaryUtil.base64StringToPDF(report1, FileUtil.mkdir(value).getPath() + "\\" + userId + "鍖诲鍚嶈瘝.pdf"); +// PDFBinaryUtil.base64StringToPDF(report1, FileUtil.mkdir(value).getPath() + File.separator + userId + "鍖诲鍚嶈瘝.pdf"); // } LambdaQueryWrapper<TjReport> rtwq = new LambdaQueryWrapper<>(); rtwq.eq(TjReport::getType, "蹇冪數鍥�"); rtwq.eq(TjReport::getTjNumber, tjNumber); TjReport one1111 = tjReportService.getOne(rtwq); - if(null !=one1111){ + if (null != one1111) { String report = one1111.getReport(); - PDFBinaryUtil.base64StringToPDF(report, FileUtil.mkdir(value).getPath() + "\\" +tjNumber+ userId + "蹇冪數鍥�.pdf"); + PDFBinaryUtil.base64StringToPDF(report, FileUtil.mkdir(value).getPath() + File.separator + tjNumber + userId + "蹇冪數鍥�.pdf"); } LambdaQueryWrapper<TjReport> rtwq12 = new LambdaQueryWrapper<>(); rtwq12.eq(TjReport::getType, "闄勪欢"); rtwq12.eq(TjReport::getTjNumber, tjNumber); TjReport one111112 = tjReportService.getOne(rtwq12); - if(null !=one111112){ + if (null != one111112) { String report12 = one111112.getReport(); - PDFBinaryUtil.base64StringToPDF(report12, FileUtil.mkdir(value).getPath() + "\\" +tjNumber+ userId + "闄勪欢.pdf"); + PDFBinaryUtil.base64StringToPDF(report12, FileUtil.mkdir(value).getPath() + File.separator + tjNumber + userId + "闄勪欢.pdf"); } //鍚堝苟 - String[] files1=null; - if (one1111!=null ){ - if (one111112!=null){ - files1 = new String[ ]{value + "\\" + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf", value + "\\" + userId + tjNumber + "浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf", value + "\\" + tjNumber + userId + "闄勪欢.pdf", value + "\\" + tjNumber + userId + "蹇冪數鍥�.pdf"}; - }else { - files1 = new String[]{value + "\\" + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf", value + "\\" + userId + tjNumber + "浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf",value + "\\" + tjNumber + userId + "蹇冪數鍥�.pdf"}; + String[] files1 = null; + if (one1111 != null) { + if (one111112 != null) { + files1 = new String[]{value + File.separator + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf", value + File.separator + userId + tjNumber + "浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf", value + File.separator + tjNumber + userId + "闄勪欢.pdf", value + File.separator + tjNumber + userId + "蹇冪數鍥�.pdf"}; + } else { + files1 = new String[]{value + File.separator + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf", value + File.separator + userId + tjNumber + "浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf", value + File.separator + tjNumber + userId + "蹇冪數鍥�.pdf"}; } - }else { - if (one111112!=null){ - files1 = new String[]{value + "\\" + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf", value + "\\" + userId + tjNumber + "浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf", value + "\\" + tjNumber + userId + "闄勪欢.pdf"}; - }else { - files1 = new String[]{value + "\\" + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf", value + "\\" + userId + tjNumber + "浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf"}; + } else { + if (one111112 != null) { + files1 = new String[]{value + File.separator + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf", value + File.separator + userId + tjNumber + "浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf", value + File.separator + tjNumber + userId + "闄勪欢.pdf"}; + } else { + files1 = new String[]{value + File.separator + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf", value + File.separator + userId + tjNumber + "浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf"}; } } //鍚堝苟 -// String[] files1 = {value + "\\" + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf", value + "\\" + userId + tjNumber+"浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf", value + "\\" +tjNumber+ userId + "闄勪欢.pdf", value + "\\" + tjNumber + userId + "蹇冪數鍥�.pdf"}; - String outputPath1 = value + "\\"; +// String[] files1 = {value + File.separator + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf", value + File.separator + userId + tjNumber+"浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf", value + File.separator +tjNumber+ userId + "闄勪欢.pdf", value + File.separator + tjNumber + userId + "蹇冪數鍥�.pdf"}; + String outputPath1 = value + File.separator; String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "_浣撴鎶ュ憡.pdf"; File file1 = new File(outputPath1 + outputFileName1); @@ -638,17 +1389,18 @@ TjReport tjReport = new TjReport(); tjReport.setTjNumber(String.valueOf(tjNumber)); - tjReport.setPath(outputPath1 + outputFileName1); + tjReport.setPath(urlValue + outputFileName1); String pdfBinary = getPDFBinary(outputPath1 + outputFileName1); tjReport.setReport(pdfBinary); tjReport.setType("浣撴鎶ュ憡"); + tjReport.setPrint("pdf"); tjReportService.save(tjReport); - //FileUtil.del(value + "\\" + tjNumber + "浣撴鎶ュ憡.pdf"); - //FileUtil.del(value + "\\" + userId + "浣撴鎶ュ憡灏侀潰妯℃澘.pdf"); - //FileUtil.del(value + "\\" + userId +tjNumber+ "浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf"); - //FileUtil.del(value + "\\" + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf"); - //FileUtil.del(value + "\\" + userId + "蹇冪數鍥�.pdf"); + //FileUtil.del(value + File.separator + tjNumber + "浣撴鎶ュ憡.pdf"); + //FileUtil.del(value + File.separator + userId + "浣撴鎶ュ憡灏侀潰妯℃澘.pdf"); + //FileUtil.del(value + File.separator + userId +tjNumber+ "浣撴鎶ュ憡椤圭洰璇︽儏椤�.pdf"); + //FileUtil.del(value + File.separator + userId + "浣撴鎶ュ憡灏侀潰椤�.pdf"); + //FileUtil.del(value + File.separator + userId + "蹇冪數鍥�.pdf"); //淇敼order琛ㄤ腑鐨勬墦鍗版姤鍛婃椂闂翠负褰撳墠鏃堕棿 @@ -659,34 +1411,40 @@ updateWrapper.set(TjOrder::getDownloadLastTime, new Date()); updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END); tjOrderService.update(updateWrapper); - + long entTime = System.currentTimeMillis(); + System.out.println(entTime - startTime + "ms"); return AjaxResult.success("宸茬敓鎴愭姤鍛婏紒鍙洿鎺ョ偣鍑婚瑙堬紒"); } catch (Exception e) { e.printStackTrace(); return AjaxResult.success("PDF瀵煎嚭澶辫触"); - }finally { - transitionService.deletedTbTransitionListByCusIdAndTjNum(tjCustomer.getCusIdcard(),tjOrder.getCardId()); + } finally { +// transitionService.deletedTbTransitionListByCusIdAndTjNum(tjCustomer.getCusIdcard(), tjOrder.getCardId()); } } } - return AjaxResult.success("璇ョ敤鎴蜂綋妫�鏈畬鎴愶紝涓嶈兘鎵撳嵃鎶ュ憡锛侊紒锛�"); + return null; } + + //闈炲寲楠岄」鐩姤鍛� public Map<TjOrderRemark, List<TjPdfVO>> addTable(String tjNumber) { //鍒涘缓map 閿负鐖堕」鐩� 鍊间负瀛愰」鐩泦鍚� + // 涓嶄娇鐢╨inked Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>(); - //鏌ュ埌璇ュ鎴风殑浣撴璁板綍 LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjOrder::getTjNumber, tjNumber); TjOrder one = tjOrderService.getOne(wq1); - +/* //鎷垮埌浣撴璁板綍鐨刼rderid锛屾煡鍑洪」鐩缁嗕俊鎭� LambdaQueryWrapper<TjOrderDetail> wq = new LambdaQueryWrapper<>(); wq.eq(TjOrderDetail::getOrderId, one.getOrderId()); //20230323鍒ゆ柇椤圭洰宸叉 wq.ne(TjOrderDetail::getTjStatus, 0); + wq.ne(TjOrderDetail::getProId,projectService.getHuaYanProId()); + wq.eq(TjOrderDetail::getProId,projectService.getNotCcCtXdtProId()); +// wq.notIn(TjOrderDetail::getProId,projectService.getNneedReprotProId()); List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.list(wq); //閬嶅巻浣撴璁板綍 灏嗛」鐩殑鍏蜂綋淇℃伅 @@ -697,27 +1455,84 @@ tjOrderDetail.setProject(tjProject); } } +*/ LambdaQueryWrapper<TjCustomer> wq22 = new LambdaQueryWrapper<>(); wq22.eq(TjCustomer::getCusId, one.getUserId()); TjCustomer customer = tjCustomerService.getOne(wq22); LambdaQueryWrapper<TjOrderRemark> wqq = new LambdaQueryWrapper<>(); wqq.eq(TjOrderRemark::getTjNumber, tjNumber); + wqq.ne(TjOrderRemark::getDeptId, "241"); + wqq.in(TjOrderRemark::getDeptId, "269", "270", "253", "254", "255", "257", "251", "271"); + wqq.notIn(TjOrderRemark::getProId, projectService.getNneedReprotProId()); List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.list(wqq); for (TjOrderRemark tjOrderRemark : tjOrderRemarks) { printReport.put(tjOrderRemark, null); } +// extracted(printReport, one, customer); + extractedNew(printReport, one, customer); + return printReport; + } + + //鍖栭獙椤圭洰鎶ュ憡 + public Map<TjOrderRemark, List<TjPdfVO>> addHuaYanTable(String tjNumber) { + //鍒涘缓map 閿负鐖堕」鐩� 鍊间负瀛愰」鐩泦鍚� + Map<TjOrderRemark, List<TjPdfVO>> printReport = new LinkedHashMap<>(); + //鏌ュ埌璇ュ鎴风殑浣撴璁板綍 + + //鎷垮埌浣撴璁板綍鐨刼rderid锛屾煡鍑洪」鐩缁嗕俊鎭� + + List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.addHuaYanAndCgTable(tjNumber); + + List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.addHuaYanAndCgTable(tjNumber); + for (TjOrderRemark tjOrderRemark : tjOrderRemarks) { + printReport.put(tjOrderRemark, null); + } + List<Object> toRemoveKeys = new ArrayList<>(); for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) { List<TjPdfVO> tjPdfVOS = new ArrayList<>(); for (TjOrderDetail tjOrderDetail : tjOrderDetails) { + if (entry.getKey().getProsId().equals(tjOrderDetail.getProsId())) { + TjPdfVO tjPdfVO = new TjPdfVO(); + tjPdfVO.setProName(tjOrderDetail.getProName()); + if (null != tjOrderDetail.getYcbz() && !tjOrderDetail.getYcbz().equals("")) { + tjPdfVO.setProResult(tjOrderDetail.getProResult() + " [" + tjOrderDetail.getYcbz() + "]"); + } else { + tjPdfVO.setProResult(tjOrderDetail.getProResult()); + } + tjPdfVO.setExc(tjOrderDetail.getExceptionDesc()); + tjPdfVO.setStandardValue(tjOrderDetail.getStanId()); + tjPdfVO.setCompany(tjOrderDetail.getProAdvice()); + tjPdfVOS.add(tjPdfVO); + } + } + printReport.put(entry.getKey(), tjPdfVOS); + if (tjPdfVOS.isEmpty()) { + toRemoveKeys.add(entry.getKey()); + } + } + toRemoveKeys.forEach(printReport::remove); + return printReport; + } + + private void extracted(Map<TjOrderRemark, List<TjPdfVO>> printReport, TjOrder one, TjCustomer customer) { + for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) { + List<TjPdfVO> tjPdfVOS = new ArrayList<>(); +// TjOrder one = tjOrderService.getOrderByTjNum(entry.getKey().getTjNumber()); + System.out.println(one.getOrderId() + " " + entry.getKey().getProId()); + List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.getDetailByOrderIdAndParId(one.getOrderId(), entry.getKey().getProId()); + System.out.println("tjOrderDetails = " + tjOrderDetails); + for (TjOrderDetail tjOrderDetail : tjOrderDetails) { + TjProject tjProject = projectService.getById(tjOrderDetail.getProId()); + if (null != tjProject) { + tjOrderDetail.setProject(tjProject); + } if (null == tjOrderDetail.getProject()) { System.out.println("'''''''''''''''''''''''''''''''''''" + tjOrderDetail.getOrderDetailId()); } - if (tjOrderDetail.getProject().getProParentId().equals(entry.getKey().getProId())) { - LambdaQueryWrapper<TjStandard> wq6 = new LambdaQueryWrapper<>(); wq6.eq(TjStandard::getProId, tjOrderDetail.getProId()); List<TjStandard> list2 = tjStandardService.list(wq6); @@ -772,7 +1587,111 @@ } printReport.put(entry.getKey(), tjPdfVOS); } - return printReport; + } + + private void extractedNew(Map<TjOrderRemark, List<TjPdfVO>> printReport, TjOrder one, TjCustomer customer) { + List<Long> collect = printReport.entrySet().stream().map(item -> item.getKey().getProId()).collect(Collectors.toList()); + List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.getDetailByOrderIdAndParIds(one.getOrderId(), collect); + Set<String> strings = tjOrderDetails.stream().map(item -> item.getUpdateBy().split(",")[1]).collect(Collectors.toSet()); + HashMap<Long, List<TjPdfVO>> hashMap = new HashMap<>(); + strings.forEach(item -> { + hashMap.put(Long.parseLong(item), new ArrayList<TjPdfVO>()); + }); + List<Long> proIds = tjOrderDetails.stream().map(TjOrderDetail::getProId).collect(Collectors.toList()); + LambdaQueryWrapper<TjProject> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(TjProject::getProId, proIds); + List<TjProject> projectList = projectService.list(queryWrapper); + for (TjOrderDetail tjOrderDetail : tjOrderDetails) { + TjProject tjProject = projectList.stream().filter(item -> item.getProId().equals(tjOrderDetail.getProId())).collect(Collectors.toList()).get(0); + if (null != tjProject) { + tjOrderDetail.setProject(tjProject); + } + if (null == tjOrderDetail.getProject()) { + System.out.println("'''''''''''''''''''''''''''''''''''" + tjOrderDetail.getOrderDetailId()); + } + // 鍒ゆ柇鍦╟ollect涓槸鍚﹀瓨鍦� + if (collect.contains(tjOrderDetail.getProject().getProParentId())) { + LambdaQueryWrapper<TjStandard> wq6 = new LambdaQueryWrapper<>(); + wq6.eq(TjStandard::getProId, tjOrderDetail.getProId()); + List<TjStandard> list2 = tjStandardService.list(wq6); + if (list2.isEmpty()) { + TjStandard s = new TjStandard(); + s.setCompany(" "); + s.setTjStandardLtValue(" "); + s.setTjStandardGtValue(" "); + tjOrderDetail.setStandard(s); + } else if (list2.size() == 1) { + tjOrderDetail.setStandard(list2.get(0)); + } else { + Long cusSex = customer.getCusSex(); + Date cusBrithday = customer.getCusBrithday(); + int age = DateUtil.ageOfNow(cusBrithday); + for (TjStandard tjStandard : list2) { + LambdaQueryWrapper<TjStandard> wq8 = new LambdaQueryWrapper<>(); + if (tjStandard.getTjSex() != null) { + wq8.eq(TjStandard::getTjSex, cusSex); + } + if (tjStandard.getTjType() != null) { + wq8.eq(TjStandard::getTjType, StringUtils.getAgeType(age)); + } + TjStandard standard = tjStandardService.getOne(wq8); + tjOrderDetail.setStandard(standard); + } + } + TjPdfVO tjPdfVO = new TjPdfVO(); + tjPdfVO.setProName(tjOrderDetail.getProject().getProName()); + tjPdfVO.setProResult(tjOrderDetail.getProResult()); + tjPdfVO.setExc(tjOrderDetail.getExceptionDesc()); + if (tjOrderDetail.getStandard() != null) { + //鍗曚綅 + if (tjOrderDetail.getStandard().getCompany() == null) { + tjPdfVO.setCompany(" "); + } else { + tjPdfVO.setCompany(tjOrderDetail.getStandard().getCompany()); + } + //鏈�澶у�煎拰鏈�灏忓�� + String tjStandardGtValue = tjOrderDetail.getStandard().getTjStandardGtValue(); + String tjStandardLtValue = tjOrderDetail.getStandard().getTjStandardLtValue(); + if (tjStandardGtValue == null) { + tjStandardGtValue = " "; + } + if (tjStandardLtValue == null) { + tjStandardLtValue = " "; + } + tjPdfVO.setStandardValue(tjStandardLtValue + "-" + tjStandardGtValue); + } + List<TjPdfVO> tjPdfVOS = hashMap.get(Long.parseLong(tjOrderDetail.getUpdateBy().split(",")[1])); + tjPdfVOS.add(tjPdfVO); + } + } + printReport.entrySet().stream().forEach(item -> { + List<TjPdfVO> pdfVOS = hashMap.get(item.getKey().getProId()); + printReport.put(item.getKey(), pdfVOS); + }); + } + + @GetMapping("/isPdfOrJimu") + @ApiOperation(value = "鍒ゆ柇鎶ュ憡鎵撳紑绫诲瀷") + public AjaxResult isPdfOrJimu(String tjNumber) { + Map<String, String> res = new HashMap<>(); + LambdaQueryWrapper<TjReport> we = new LambdaQueryWrapper<>(); + we.eq(TjReport::getTjNumber, tjNumber); + we.eq(TjReport::getType, "浣撴鎶ュ憡"); + TjReport one = tjReportService.getOne(we); + if (one == null) { + return AjaxResult.error("鏆傛棤浣撴鎶ュ憡"); + } + if ("pdf".equals(one.getPrint())) { + res.put("flag", "0"); + return AjaxResult.success(res); + } else if ("鎶ヨ〃".equals(one.getPrint())) { + res.put("flag", "1"); + res.put("url", one.getPath()); + return AjaxResult.success(res); + } else { + return AjaxResult.error("鏆傛棤浣撴鎶ュ憡"); + } + } @@ -805,10 +1724,11 @@ if (one == null) { return; } + String userId = SecurityUtils.getLoginUser().getUsername(); - PDFBinaryUtil.base64StringToPDF(one.getReport(), FileUtil.mkdir(value).getPath() + "\\" + userId + tjNumber + tjCustomer.getCusName() + "_浣撴鎶ュ憡.pdf"); + PDFBinaryUtil.base64StringToPDF(one.getReport(), FileUtil.mkdir(value).getPath() + File.separator + userId + tjNumber + tjCustomer.getCusName() + "_浣撴鎶ュ憡.pdf"); //String filePath = one.getPath(); - String filePath = value + "\\" + userId + tjNumber + tjCustomer.getCusName() + "_浣撴鎶ュ憡.pdf"; + String filePath = value + File.separator + userId + tjNumber + tjCustomer.getCusName() + "_浣撴鎶ュ憡.pdf"; File f = new File(filePath); if (filePath.isEmpty()) { System.out.println("鏂囦欢涓嶅瓨鍦紒"); @@ -863,16 +1783,262 @@ } } + @PostMapping("/preview/batch") + @ApiOperation(value = "鎵归噺浣撴鎶ュ憡") + @Transactional + public AjaxResult preview(@RequestBody String data) { + String is_batch_report_use_sql = configService.selectConfigByKey("is_batch_report_use_sql"); + List<String> tjNumbers = Arrays.stream(data.split(",")).collect(Collectors.toList()); + if ("true".equals(is_batch_report_use_sql)) { + return tjReportService.makeBatchReport(tjNumbers); + } else { + return makeReport(tjNumbers); + } + } + + /** + * 閫氳繃sql 閲嶆暣鏁版嵁妯℃澘 鍏ㄩ儴閲嶆柊鐢熸垚 + * + * @param tjNumbers + * @return + */ + private AjaxResult makeReport(List<String> tjNumbers) { + ArrayList<String> base64Pdfs = new ArrayList<>(); + for (String tjNumber : tjNumbers) { + LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>(); + wq.eq(TjOrder::getTjNumber, tjNumber); + TjOrder tjOrder = tjOrderService.getOne(wq); + if (null != tjOrder) { + LambdaQueryWrapper<TjReportTemplate> tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>(); + TjReportTemplate reportTemplate = null; + if (tjOrder.getTjCategory() != null) { + //鏌ヨ瀛楀吀 + LambdaQueryWrapper<SysDictData> wqq = new LambdaQueryWrapper<>(); + wqq.eq(SysDictData::getDictType, "dict_tjtype"); + wqq.eq(SysDictData::getDictValue, tjOrder.getTjCategory()); + SysDictData one = dictDataService.getOne(wqq); + if (one != null) { + //鏌ヨ瀛楀吀 + LambdaQueryWrapper<SysDictData> wqq1 = new LambdaQueryWrapper<>(); + wqq1.eq(SysDictData::getDictType, "report_template_type"); + wqq1.eq(SysDictData::getDictLabel, one.getDictLabel()); + SysDictData one1 = dictDataService.getOne(wqq1); + if (one1 != null) { + tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, one1.getDictValue()); + } else { + tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1); + } + } else { + tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1); + } + tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0); + reportTemplate = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper); + } else { + tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0); + reportTemplate = reportTemplateService.list(tjReportTemplateLambdaQueryWrapper).get(2); + } + + String template = reportTemplate.getTemplate(); + String userId = null; + if (template == null) { + // 娌℃湁璇ユā鏉� + continue; + } + // --------浠ヤ笂------- 鏍规嵁鏁版嵁搴撲腑鐨勬ā鏉夸簩杩涘埗鏂囦欢 杞琾df 鍒涘缓鏂囦欢澶� 灏唒df鏀捐繘鏈湴鏂囦欢澶� + LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>(); + wq1.eq(TjCustomer::getCusId, tjOrder.getUserId()); + TjCustomer tjCustomer = tjCustomerService.getOne(wq1); + LambdaQueryWrapper<DictComp> wq111 = new LambdaQueryWrapper<>(); + wq111.eq(DictComp::getDrugManufacturerId, tjOrder.getFirmId()); + DictComp dictComp = dictCompService.getOne(wq111); + LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>(); + wq2.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId()); + wq2.isNotNull(TjOrderDetail::getFlowingWaterId); + List<TjOrderDetail> list = tjOrderDetailService.list(wq2); + for (TjOrderDetail tjOrderDetail : list) { + TjProject tjProject = projectService.selectTjProjectByProId(tjOrderDetail.getProId()); + tjOrderDetail.setProject(tjProject); + } + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + PdfStamper ps = null; + PdfReader reader = null; + try { + // 璇诲叆pdf琛ㄥ崟 + reader = new PdfReader(new ByteArrayInputStream(Base64.getDecoder().decode(template))); + // 鏍规嵁琛ㄥ崟鐢熸垚涓�涓柊鐨刾df + ps = new PdfStamper(reader, byteArrayOutputStream); + // 鑾峰彇pdf琛ㄥ崟 + AcroFields form = ps.getAcroFields(); + //璇ュ瓧浣撻�犳垚绫诲瀷涓嶅潎鍖�锛屼絾鏄痯df杞浘鐗囦笉涔辩爜 + BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); + form.addSubstitutionFont(bf); + // 濉厖鏁版嵁缁欒〃鏍� + Map<String, Object> data = new HashMap<>(); + // 璁剧疆鐢ㄦ埛淇℃伅 + setUserInfo(tjNumber, tjOrder, tjCustomer, dictComp, list, data); + //灏侀潰椤典笅闈㈢殑鎬绘寤鸿鏄剧ず + if (tjOrder.getCheckAdvice() == null) { + data.put("remark", "鏃�"); + } else { + data.put("remark", tjOrder.getCheckAdvice()); + } + //灏侀潰椤典笅闈㈢殑鎬绘寤鸿鏄剧ず + if (tjOrder.getCheckDoctor() == null) { + data.put("docname", "鏃�"); + } else { + data.put("docname", tjOrder.getCheckDoctor()); + } + //寮傚父椤圭洰 + //鎷兼帴閲嶅ぇ闃虫�х粨鏋� + StringBuffer str = new StringBuffer(); + str.append("銆愰噸澶ч槼鎬ч」鐩�慭n"); + LambdaQueryWrapper<TjBigPositive> bigPositiveLambdaQueryWrapper = new LambdaQueryWrapper<>(); + bigPositiveLambdaQueryWrapper.eq(TjBigPositive::getTjNumber, tjNumber); + final List<TjBigPositive> list1 = tjBigPositiveService.list(bigPositiveLambdaQueryWrapper); + if (list1 != null && list1.size() > 0) { + for (int i = 0; i < list1.size(); i++) { + str.append(i + 1).append("銆�").append(list1.get(i).getProName()).append(";\n"); + } + } else { + str.append(" 鏃狅紱\n"); + } + //鎷兼帴寮傚父椤圭洰 + str.append("銆愬紓甯告儏鍐甸」鐩�慭n"); + if (list.size() > 0) { + int[] index = {0}; + List<TjOrderDetail> collect = list.stream() + .filter(item -> item.getExceptionDesc() == 1).collect(Collectors.toList()); + if (collect.isEmpty()) { + str.append(" 鏃狅紱\n"); + } else { + collect.forEach(item -> str.append(index[0]++ + 1).append("銆�").append(projectService.getById(item.getProId()).getProName()).append(";\n")); + } + } else { + str.append(" 鏃狅紱\n"); + } + //寮傚父椤圭洰 + data.put("yichang", str.toString()); + // 閬嶅巻data 缁檖df琛ㄥ崟琛ㄦ牸璧嬪�� + for (String key : data.keySet()) { + form.setField(key, data.get(key).toString()); + } + //璁剧疆涓烘棤娉曠紪杈� + ps.setFormFlattening(true); + ps.close(); + reader.close(); + // 灏嗕慨鏀瑰悗鐨凱DF鍐呭鍐欏叆 + byte[] bytes = byteArrayOutputStream.toByteArray(); + // 鍒涘缓鏂扮殑PDF鏂囨。 + Document document = new Document(PageSize.A4); + ByteArrayOutputStream finalOutPut = new ByteArrayOutputStream(); + PdfCopy copy = new PdfCopy(document, finalOutPut); + document.open(); + reader = new PdfReader(bytes); + int numberOfPages = reader.getNumberOfPages(); + for (int i = 1; i <= numberOfPages; i++) { + PdfImportedPage page = copy.getImportedPage(reader, i); + copy.addPage(page); + } + // 娣诲姞璇︽儏椤� + document.newPage(); + reader.close(); + ByteArrayOutputStream infoByteArrayOutputStream = setInfoPage(userId, tjNumber); + reader = new PdfReader(infoByteArrayOutputStream.toByteArray()); + int numberOfPages1 = reader.getNumberOfPages(); + for (int i = 1; i <= numberOfPages1; i++) { + PdfImportedPage page = copy.getImportedPage(reader, i); + copy.addPage(page); + } + infoByteArrayOutputStream.close(); + // 蹇冪數鍥句互鍙婇檮浠� + // 鍥犳暟鎹簱琛ㄥ瓨鏀綽ase64瀵艰嚧鏌ヨ缂撴參 杩欓噷鎵ц缂撴參 + // 鍦ㄨ繖閲屽鍔犱竴鏉℃煡璇ount 瀵逛簬娌℃湁杩藉姞闄勪欢鐨� 鎻愬崌閫熷害 + LambdaQueryWrapper<TjReport> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TjReport::getTjNumber, tjNumber) + .and(item -> item.eq(TjReport::getType, "闄勪欢").or().eq(TjReport::getType, "蹇冪數鍥�")); + Integer selectCount = tjReportService.getSelectCount(queryWrapper); + if (selectCount > 0) { + String base64XinDianTu = null; + String base64FuJian = null; + List<TjReport> reportList = tjReportService.list(queryWrapper); + TjReport xinDianTu = null; + TjReport fuJian = null; + if (!reportList.isEmpty()) { + for (TjReport tjReport : reportList) { + if ("闄勪欢".equals(tjReport.getType())) { + fuJian = tjReport; + base64FuJian = fuJian.getReport(); + } else { + xinDianTu = tjReport; + base64XinDianTu = xinDianTu.getReport(); + } + } + } + if (xinDianTu != null) { + if (fuJian != null) { + addPageByPDFBase64(copy, base64FuJian); + document.newPage(); + addPageByPDFBase64(copy, base64XinDianTu); + } else { + addPageByPDFBase64(copy, base64XinDianTu); + } + } else { + if (fuJian != null) { + addPageByPDFBase64(copy, base64FuJian); + } + } + } + copy.close(); + base64Pdfs.add(Base64.getEncoder().encodeToString(finalOutPut.toByteArray())); + document.close(); + finalOutPut.close(); + reader.close(); + //淇敼order琛ㄤ腑鐨勬墦鍗版姤鍛婃椂闂翠负褰撳墠鏃堕棿 + LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(TjOrder::getTjNumber, tjNumber); + updateWrapper.set(TjOrder::getReportTime, new Date()); + updateWrapper.set(TjOrder::getPrintLastTime, new Date()); + updateWrapper.set(TjOrder::getDownloadLastTime, new Date()); + updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END); + tjOrderService.update(updateWrapper); + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + e.printStackTrace(); + } + } + } + try { + byte[] mergePDFs = PDFDocumentUtil.mergePDFs(base64Pdfs); + // 鏈湴鐢熸垚娴嬭瘯 +// String PDF_FILE = "d:\\Users\\w\\Desktop\\test.pdf"; +// BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(PDF_FILE)); +// outputStream.write(mergePDFs); +// outputStream.flush(); +// outputStream.close(); + String s = Base64.getEncoder().encodeToString(mergePDFs); + return AjaxResult.success().put("file", s); + } catch (DocumentException | IOException e) { + e.printStackTrace(); + return AjaxResult.error("鎵归噺鐢熸垚澶辫触"); + } + } @GetMapping("/revocationReport/{TjNumber}") @ApiOperation(value = "鎾ら攢鐢熸垚浣撴鎶ュ憡") public AjaxResult revocationReport(@PathVariable("TjNumber") String tjNumber) { //閫昏緫鍒犻櫎鏁版嵁搴撻噷鐨勬姤鍛� QueryWrapper<TjReport> wq1 = new QueryWrapper<>(); + wq1.select("re_id"); wq1.eq("tj_number", tjNumber); wq1.eq("type", "浣撴鎶ュ憡"); - if (null != tjReportService.getOne(wq1)) { - if (!tjReportService.remove(wq1)) { + TjReport tjReport = tjReportService.getOne(wq1); + if (null != tjReport) { +// if (!tjReportService.remove(wq1)) { +// return AjaxResult.error("鎾ゅ洖澶辫触锛�"); +// } + // 涓嶅湪浣跨敤閫昏緫鍒犻櫎 閫昏緫鍒犻櫎瀵艰嚧鎵撳嵃鎶ュ憡鐢熸垚 鏌ヨsql缂撴參 + int i = tjReportService.deleteTjReportByReId(tjReport.getReId()); + if (i == 0) { return AjaxResult.error("鎾ゅ洖澶辫触锛�"); } } @@ -886,6 +2052,7 @@ } else { one.setStatus(TjConstants.TJ_CONFIRM); } + one.setReportTime(null); //灏嗙姸鎬佹敼涓烘湭瀹℃牳 // UpdateWrapper updateWrapper=new UpdateWrapper(); // updateWrapper.eq("tj_number",tjNumber); @@ -1400,18 +2567,18 @@ @GetMapping("/reportHistory") @ApiOperation(value = "鍘嗗彶鎶ュ憡") public AjaxResult reportHistory(Long cusId) { - List<TjReport> res=new ArrayList<>(); + List<TjReport> res = new ArrayList<>(); LambdaQueryWrapper<TjOrder> wqq = new LambdaQueryWrapper<>(); wqq.like(TjOrder::getUserId, cusId); List<TjOrder> orderList = tjOrderService.list(wqq); - if (orderList!=null && orderList.size()>0){ + if (orderList != null && orderList.size() > 0) { for (TjOrder tjOrder : orderList) { - if (tjOrder!=null){ + if (tjOrder != null) { LambdaQueryWrapper<TjReport> wq = new LambdaQueryWrapper<>(); wq.eq(TjReport::getTjNumber, tjOrder.getTjNumber()); - wq.eq(TjReport::getType,"浣撴鎶ュ憡"); + wq.eq(TjReport::getType, "浣撴鎶ュ憡"); TjReport one = tjReportService.getOne(wq); - if(null !=one){ + if (null != one) { res.add(one); } } -- Gitblit v1.8.0