From ff7f564dc6c43384857a80246f72575a40e86cde Mon Sep 17 00:00:00 2001
From: zhaowenxuan <chacca165@163.com>
Date: 星期五, 26 七月 2024 16:55:52 +0800
Subject: [PATCH] 参考范围为空时设置异常标志为空

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java |  236 ++++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 136 insertions(+), 100 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 e911655..5a847c7 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
@@ -2,7 +2,6 @@
 
 import java.io.*;
 import java.net.URL;
-import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.text.NumberFormat;
@@ -21,7 +20,6 @@
 import com.itextpdf.text.*;
 import com.itextpdf.text.pdf.*;
 import com.itextpdf.text.pdf.draw.LineSeparator;
-import com.ltkj.common.annotation.Log;
 import com.ltkj.common.core.domain.entity.SysDictData;
 import com.ltkj.common.utils.DateUtils;
 import com.ltkj.common.utils.PDFDocumentUtil;
@@ -30,13 +28,11 @@
 import com.ltkj.framework.config.MatchUtils;
 import com.ltkj.hosp.domain.*;
 import com.ltkj.hosp.service.*;
-import com.ltkj.hosp.vodomain.UpdateOrderRemarkVo;
 import com.ltkj.mall.mallOrderUtils.TjConstants;
 import com.ltkj.system.service.ISysConfigService;
 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;
@@ -45,6 +41,7 @@
 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.*;
@@ -99,7 +96,6 @@
     private ISysDictDataService dictDataService;
     @Resource
     private ITbTransitionService transitionService;
-
     @Autowired
     private ITjBigPositiveService tjBigPositiveService;
     @Autowired
@@ -313,74 +309,136 @@
         if (count != 0) {
             return AjaxResult.error("璇ュ鎴锋姤鍛婂凡鐢熸垚锛佷笉鑳介噸澶嶇敓鎴愶紒鍙洿鎺ラ瑙堟垨鎵撳嵃锛�");
         }
-        String configByKey = configService.selectConfigByKey("sfkqdyhis");
-        if (configByKey.equals("Y")) {
-            LambdaQueryWrapper<TjOrder> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(TjOrder::getTjNumber, tjNumber);
-            TjOrder tjOrder = tjOrderService.getOne(queryWrapper);
-            if (null != tjOrder) {
-                LambdaQueryWrapper<TjReportTemplate> tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>();
-                TjReportTemplate reportTemplate = null;
-                if (tjOrder.getTjCategory() != null) {
+//        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<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> 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);
-                        }
+                    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);
                     }
-                    tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0);
-                    reportTemplate = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper);
                 } else {
-                    tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0);
-                    reportTemplate = reportTemplateService.list(tjReportTemplateLambdaQueryWrapper).get(2);
+                    tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1);
                 }
-                Integer checkStatus = tjOrder.getCheckStatus();
-                if (checkStatus == 1) {
-                    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(finishTime);
-                    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);
-                    HashMap<String, Object> map = new HashMap<>();
-                    LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>();
-                    wq1.eq(TjCustomer::getCusId, tjOrder.getUserId());
-                    TjCustomer tjCustomer = tjCustomerService.getOne(wq1);
-//                    return hisPDFUtil.execHisRequest(map, params, tjOrder, reportTemplate);
-                    try {
-                        return hisPDFUtil.hisPDF(tjOrder,tjCustomer,reportTemplate);
-                    } catch (DocumentException e) {
-                        logger.error("鐢熸垚鎶ュ憡寮傚父");
-                        e.printStackTrace();
-                        return AjaxResult.error("鐢熸垚鎶ュ憡寮傚父");
+                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 {
+                    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 + "\\";
+                        String pdfBinary = getPDFBinary(outputPath1 + outputFileName1);
+                        tjReport.setReport(pdfBinary);
+                        tjReport.setType("浣撴鎶ュ憡");
+                        tjReport.setPrint("pdf");
+                        tjReportService.save(tjReport);
+                        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);
                     }
-                } else {
-                    return AjaxResult.error("璇峰厛鎬绘");
+                    return ajaxResult;
+                } catch (Exception e) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    e.printStackTrace();
+                    // 璋冪敤鎾ら攢
+//                    tjReportController.backOnlyCheckType(tjNumber);
+                    logger.error("鐢熸垚鎶ュ憡寮傚父");
+                    return AjaxResult.error("鐢熸垚鎶ュ憡澶辫触");
                 }
+            } else {
+                return AjaxResult.error("璇峰厛鎬绘");
             }
         }
         return AjaxResult.error();
+    }
+
+
+
+    /**
+     * 鎾ら攢
+     * @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) {
@@ -551,7 +609,7 @@
                     for (String key : data.keySet()) {
                         form.setField(key, data.get(key).toString());
                     }
-                    System.out.println("pdf濉厖琛ㄥ崟鏁版嵁鑰楁椂锛�"+(System.currentTimeMillis() - pdfMkStart));
+                    System.out.println("pdf濉厖琛ㄥ崟鏁版嵁鑰楁椂锛�" + (System.currentTimeMillis() - pdfMkStart));
                     //璁剧疆涓烘棤娉曠紪杈�
                     ps.setFormFlattening(true);
                     ps.close();
@@ -620,8 +678,8 @@
                         }
                     }
                     long fujianEnd = System.currentTimeMillis();
-                    System.out.println("闄勪欢鏌ヨ鑰楁椂锛�"+(fujianEnd - fujianStart));
-                    System.out.println("鏂囦欢淇濆瓨鍓嶈�楁椂锛�"+(fujianEnd - pdfMkStart));
+                    System.out.println("闄勪欢鏌ヨ鑰楁椂锛�" + (fujianEnd - fujianStart));
+                    System.out.println("鏂囦欢淇濆瓨鍓嶈�楁椂锛�" + (fujianEnd - pdfMkStart));
                     // 淇濆瓨pdf鏂囦欢
                     copy.close();
                     String outputPath1 = value + "\\";
@@ -1406,35 +1464,12 @@
         //鍒涘缓map 閿负鐖堕」鐩�  鍊间负瀛愰」鐩泦鍚�
         Map<TjOrderRemark, List<TjPdfVO>> printReport = new LinkedHashMap<>();
         //鏌ュ埌璇ュ鎴风殑浣撴璁板綍
-//        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.eq(TjOrderDetail::getProId,projectService.getHuaYanProId());
-//        List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.list(wq);
-        List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.addHuaYanTable(tjNumber);
-        //閬嶅巻浣撴璁板綍 灏嗛」鐩殑鍏蜂綋淇℃伅
-        //閬嶅巻瀹㈡埛鎵�閫夌殑椤圭洰(鍖呭惈瀛愰」鐖堕」)
-//        for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
-//            TjProject tjProject = projectService.getById(tjOrderDetail.getProId());
-//            if (null != tjProject) {
-//                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.eq(TjOrderRemark::getDeptId,"241");
-//        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.list(wqq);
-        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.addHuaYanTable(tjNumber);
+        List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.addHuaYanAndCgTable(tjNumber);
+
+        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.addHuaYanAndCgTable(tjNumber);
         for (TjOrderRemark tjOrderRemark : tjOrderRemarks) {
             printReport.put(tjOrderRemark, null);
         }
@@ -1442,7 +1477,7 @@
         for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
             List<TjPdfVO> tjPdfVOS = new ArrayList<>();
             for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
-                if (entry.getKey().getProId().equals(tjOrderDetail.getProId())) {
+                if (entry.getKey().getProsId().equals(tjOrderDetail.getProsId())) {
                     TjPdfVO tjPdfVO = new TjPdfVO();
                     tjPdfVO.setProName(tjOrderDetail.getProName());
                     if (null != tjOrderDetail.getYcbz() && !tjOrderDetail.getYcbz().equals("")) {
@@ -1547,7 +1582,7 @@
         });
         List<Long> proIds = tjOrderDetails.stream().map(TjOrderDetail::getProId).collect(Collectors.toList());
         LambdaQueryWrapper<TjProject> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.in(TjProject::getProId,proIds);
+        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);
@@ -1558,7 +1593,7 @@
                 System.out.println("'''''''''''''''''''''''''''''''''''" + tjOrderDetail.getOrderDetailId());
             }
             // 鍒ゆ柇鍦╟ollect涓槸鍚﹀瓨鍦�
-            if (collect.contains(tjOrderDetail.getProject().getProParentId())){
+            if (collect.contains(tjOrderDetail.getProject().getProParentId())) {
                 LambdaQueryWrapper<TjStandard> wq6 = new LambdaQueryWrapper<>();
                 wq6.eq(TjStandard::getProId, tjOrderDetail.getProId());
                 List<TjStandard> list2 = tjStandardService.list(wq6);
@@ -1612,9 +1647,9 @@
                 tjPdfVOS.add(tjPdfVO);
             }
         }
-        printReport.entrySet().stream().forEach(item->{
+        printReport.entrySet().stream().forEach(item -> {
             List<TjPdfVO> pdfVOS = hashMap.get(item.getKey().getProId());
-            printReport.put(item.getKey(),pdfVOS);
+            printReport.put(item.getKey(), pdfVOS);
         });
     }
 
@@ -1734,22 +1769,23 @@
     @PostMapping("/preview/batch")
     @ApiOperation(value = "鎵归噺浣撴鎶ュ憡")
     @Transactional
-    public AjaxResult preview(@RequestBody String data){
+    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 {
+        } else {
             return makeReport(tjNumbers);
         }
     }
 
     /**
      * 閫氳繃sql 閲嶆暣鏁版嵁妯℃澘 鍏ㄩ儴閲嶆柊鐢熸垚
+     *
      * @param tjNumbers
      * @return
      */
-    private AjaxResult makeReport(List<String > tjNumbers) {
+    private AjaxResult makeReport(List<String> tjNumbers) {
         ArrayList<String> base64Pdfs = new ArrayList<>();
         for (String tjNumber : tjNumbers) {
             LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>();
@@ -1963,7 +1999,7 @@
 //            outputStream.flush();
 //            outputStream.close();
             String s = Base64.getEncoder().encodeToString(mergePDFs);
-            return AjaxResult.success().put("file",s);
+            return AjaxResult.success().put("file", s);
         } catch (DocumentException | IOException e) {
             e.printStackTrace();
             return AjaxResult.error("鎵归噺鐢熸垚澶辫触");

--
Gitblit v1.8.0