From 79f9fbd9f999e26af3f0bca534d825eb687e092c Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期三, 25 十二月 2024 08:47:24 +0800
Subject: [PATCH] 20241225

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java   |    4 
 ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java       |  153 ++++++--
 ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWater.java                      |   11 
 ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjFlowingWaterHisServiceImpl.java  |   22 +
 ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjCustomer.java                          |    3 
 ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjSamplingMapper.java                    |    4 
 ltkj-framework/src/main/java/com/ltkj/framework/config/SecurityConfig.java            |    2 
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java |   86 ++++
 ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjFlowingWaterHisService.java           |   13 
 ltkj-hosp/src/main/resources/mapper/TjCustomerMapper.xml                              |    6 
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysDeptController.java        |   11 
 ltkj-hosp/src/main/java/com/ltkj/hosp/service/HisSyncDictService.java                 |   13 
 ltkj-hosp/src/main/java/com/ltkj/hosp/domain/HisSyncDict.java                         |   55 +++
 ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/HisSyncDictServiceImpl.java        |   22 +
 ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWaterHis.java                   |   40 ++
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java        |  272 ++++++++++++++
 ltkj-hosp/src/main/resources/mapper/TjFlowingWaterHisMapper.xml                       |   17 
 ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjFlowingWaterHisMapper.java             |   18 +
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCustomerController.java     |   37 +
 ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/HisSyncDictMapper.java                   |   18 +
 ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java                 |    3 
 ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsServiceController.java      |   19 
 ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java                  |   72 ++-
 ltkj-admin/src/main/java/com/ltkj/web/controller/callback/CallBackController.java     |  111 ++++++
 ltkj-hosp/src/main/resources/mapper/HisSyncDictMapper.xml                             |   22 +
 ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjAsyncService.java                     |    2 
 ltkj-hosp/src/main/resources/mapper/hosp/TjFlowingWaterMapper.xml                     |   10 
 27 files changed, 946 insertions(+), 100 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/callback/CallBackController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/callback/CallBackController.java
new file mode 100644
index 0000000..28422ce
--- /dev/null
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/callback/CallBackController.java
@@ -0,0 +1,111 @@
+package com.ltkj.web.controller.callback;
+
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ltkj.common.core.domain.AjaxResult;
+import com.ltkj.hosp.domain.*;
+import com.ltkj.hosp.mapper.TjSamplingMapper;
+import com.ltkj.hosp.service.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 瀵规帴鍏朵粬骞冲彴鎻愪緵鐨勫洖璋冩湇鍔�
+ */
+@Slf4j
+@RestController
+@RequestMapping("callBack")
+public class CallBackController {
+    @Autowired
+    private HisSyncDictService hisSyncDictService;
+    @Autowired
+    private ITjFlowingWaterService tjFlowingWaterService;
+    @Autowired
+    private ITjOrderRemarkService remarkService;
+    @Autowired
+    private ITjOrderDetailService tjOrderDetailService;
+    @Autowired
+    private ITbTransitionService transitionService;
+    @Autowired
+    private TjSamplingMapper tjSamplingMapper;
+    @Autowired
+    private TjProBlService blService;
+    @Autowired
+    private ITjOrderService tjOrderService;
+    @Autowired
+    private ITjCustomerService tjCustomerService;
+    @Autowired
+    private ITjOrderService orderService;
+
+    /**
+     * 鏀堕��璐瑰洖璋冩帴鍙�
+     * @param params
+     * @return
+     */
+    @PostMapping("pushZhiFuMsg")
+    public AjaxResult pushZhiFuMsg(@RequestBody Map<String ,Object> params){
+        log.info("鍥炶皟 ->{}", JSONUtil.toJsonStr(params));
+        String type = params.get("type").toString();
+        // type 1涓虹叅鏈哄尰闄紶鍙�
+        // feiYongId 璐圭敤Id
+        // yeWuLx 涓氬姟绫诲瀷锛�1-鏀惰垂锛�2-閫�璐�/浣滃簾
+        if (type.equals("1")){
+            String feiYongId = params.get("feiYongId").toString();
+            String yeWuLx = params.get("yeWuLx").toString();
+            // 鏀惰垂
+            if (yeWuLx.equals("1")){
+                LambdaQueryWrapper<TjFlowingWater> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(TjFlowingWater::getHisWaterId, feiYongId);
+                TjFlowingWater water = tjFlowingWaterService.getOne(wrapper);
+                water.setPayStasus(1L);
+                tjFlowingWaterService.updateById(water);
+            }else {
+                LambdaQueryWrapper<TjFlowingWater> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(TjFlowingWater::getHisTfWaterId, feiYongId).or().eq(TjFlowingWater::getHisWaterId, feiYongId);
+                TjFlowingWater water = tjFlowingWaterService.getOne(wrapper);
+                TjOrder order = orderService.getById(water.getOrderId());
+                if (order != null){
+                    // 閫�璐�
+                    String bldh = water.getJxbz();
+                    if (bldh != null){
+                        remarkService.deleteTjOrderDetailByjxbz(bldh);
+                        tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh);
+                        tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh);
+                        transitionService.deleteTjOrderDetailByjxbz(bldh);
+                        blService.remove(new LambdaQueryWrapper<TjProBl>().eq(TjProBl::getTjh, order.getTjNumber()).eq(TjProBl::getBldh, bldh));
+                        tjSamplingMapper.deleteByTjNumAndCusIdAndJxbzo(order.getTjNumber(), order.getUserId(),bldh);
+                    }else {
+                        tjOrderService.deleteTjOrderByOrderId(order.getOrderId());
+                        tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId()));
+                        remarkService.deletedOrderRemarkByTjNum(order.getTjNumber());
+                        tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId()));
+                        transitionService.deletedTbTransitionByTjNum(order.getTjNumber());
+
+                        TjCustomer customer = tjCustomerService.getById(order.getUserId());
+                        customer.setCardId("0");
+                        tjCustomerService.updateById(customer);
+                        tjSamplingMapper.deleteByTjNumAndCusId(order.getTjNumber(), order.getUserId());
+                    }
+                }
+            }
+        }
+        return AjaxResult.success();
+    }
+
+    @PostMapping("getZdList")
+    public AjaxResult getZdList(@RequestBody Map<String ,Object> params){
+        String hosp = params.get("hosp").toString();
+        LambdaQueryWrapper<HisSyncDict> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(HisSyncDict::getHospId,hosp);
+        List<HisSyncDict> list = hisSyncDictService.list(wrapper);
+        return AjaxResult.success(list);
+    }
+
+}
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
index 4897b53..5cf465f 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -30,6 +30,7 @@
 import com.ltkj.system.service.ISysDictDataService;
 import com.ltkj.system.service.ISysUserService;
 import com.ltkj.web.config.pdfutils.PdfUtils;
+import com.ltkj.web.controller.system.SysDeptController;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -109,6 +110,8 @@
     private TjOrderRemarkMapper tjOrderRemarkMapper;
     @Autowired
     private TjOrderDetailMapper tjOrderDetailMapper;
+    @Autowired
+    private SysDeptController sysDeptController;
 
     private Integer pdfPage = 0;
 
@@ -116,6 +119,7 @@
     private static int DEFAULT_LITTLE_TITLE_FONT_SIZE = 11;
     private static int DEFAULT_TITLE_FONT_SIZE = 12;
     private static int DEFAULT_ZONGJIAN_FONT_SIZE = 15;
+    private static String HOSP_NAME;
 
     private List<Map<String, Object>> makePDFInfo(HashMap<String, Object> map, AjaxResult ajaxResult, String key) {
         List<Map<String, Object>> data = null;
@@ -156,7 +160,8 @@
         int pageSize = 0;
         try {
             pdfWriter = PdfWriter.getInstance(document1, byteArrayOutputStream1);
-            if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+//            if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+            if (true){
                 String sex = "";
                 if (customer.getCusSex() != null) {
                     for (SysDictData userSex : sysUserSex) {
@@ -166,7 +171,8 @@
                     }
                 }
                 if (StrUtil.isBlank(sex)) sex = "鏈煡";
-                pdfWriter.setPageEvent(new FooterHeaderPageEvent("婢勫悎鐭垮姟灞�涓績鍖婚櫌",customer.getCusName(),tjOrder.getTjNumber(),sex,String.valueOf(DateUtil.ageOfNow(customer.getCusBrithday())),null));
+//                pdfWriter.setPageEvent(new FooterHeaderPageEvent("婢勫悎鐭垮姟灞�涓績鍖婚櫌",customer.getCusName(),tjOrder.getTjNumber(),sex,String.valueOf(DateUtil.ageOfNow(customer.getCusBrithday())),null));
+                pdfWriter.setPageEvent(new FooterHeaderPageEvent(dictHosp.getHospName(),customer.getCusName(),tjOrder.getTjNumber(),sex,String.valueOf(DateUtil.ageOfNow(customer.getCusBrithday())),null));
                 pageSize = pdfWriter.getPageNumber();
             }
         } catch (DocumentException e) {
@@ -176,7 +182,8 @@
         document1.setMargins(70, 70, 40, 40);
         document1.open();
 
-        if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+//        if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+        if (true){
             // 缁勮浣撴妫�鏌ラ」鐩姤鍛�
             Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
             notHuaYanData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
@@ -224,7 +231,8 @@
             copy.addPage(page);
         }
 
-        if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+//        if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+        if (!true){
             List<ByteArrayOutputStream> jianchas =  makeHisJianChaTable(tjOrder);
 //        List<ByteArrayOutputStream> jianchas = makeCcgcHisJianChaTable(tjOrder);
             try {
@@ -254,7 +262,8 @@
             int pages = pdfReader.getNumberOfPages();
             ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
             PdfStamper pdfStamper = new PdfStamper(pdfReader, outputStream);
-            if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+//            if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+            if (!true){
                 PdfContentByte contentByte;
                 BaseFont baseFont = PdfUtils.createBaseFont(null);
                 for (int i = 2; i <= pages; i++) {
@@ -866,6 +875,7 @@
         String s2 = sysConfigService.selectConfigByKey("tjreport_font_size_second_page_title");
         String s3 = sysConfigService.selectConfigByKey("tjreport_font_size_result_title");
         String s4 = sysConfigService.selectConfigByKey("tjreport_font_size_zongjian");
+//        String hospName = sysDeptController.getdangqiandengluyuanqu().get("msg").toString();
         if (StrUtil.isNotBlank(s1) && Integer.parseInt(s1) > 10) DEFAULT_FONT_SIZE = Integer.parseInt(s1);
         else DEFAULT_FONT_SIZE = 10;
         if (StrUtil.isNotBlank(s2) && Integer.parseInt(s2) > 10) DEFAULT_LITTLE_TITLE_FONT_SIZE = Integer.parseInt(s2);
@@ -876,6 +886,7 @@
         else DEFAULT_ZONGJIAN_FONT_SIZE = 10;
         pdfPage = 0;
         DictHosp dictHosp = dictHospService.list().get(0);
+        HOSP_NAME = dictHosp.getHospName();
         String color = sysConfigService.selectConfigByKey("report_title_color");
         List<SysDictData> sysUserSex = sysDictDataService.list(new LambdaQueryWrapper<SysDictData>().eq(SysDictData::getDictType, "sys_user_sex"));
         // 妫�楠屾暟鎹�
@@ -1831,7 +1842,8 @@
                     }
                 }
                 //鍒嗗壊绾�
-                if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+//                if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+                if (!true) {
                     LineSeparator objectName = new LineSeparator();
                     objectName.setOffset(-5);
                     document1.add(objectName);
@@ -1867,7 +1879,8 @@
                     Font titleFonts = PdfUtils.setFont(9);
                     Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
 
-                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+//                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+                    if (true) {
                         Font titleFont = PdfUtils.setFont(DEFAULT_TITLE_FONT_SIZE);
                         titleFont.setStyle(Font.BOLD);
                         PdfPCell cellTitle = new PdfPCell(PdfUtils.setParagraph(titleFont, titleName));
@@ -1891,7 +1904,8 @@
 //                    PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value,dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌"));
 //                    document1.add(table);
 
-                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") && !value.isEmpty()){
+//                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") && !value.isEmpty()){
+                    if (true && !value.isEmpty()){
                         if (value.size()>1){
                             if (value.get(0).getPid().equals("1862852701533012001")){
                                 Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
@@ -2011,7 +2025,8 @@
                     if (entry.getKey().getRemark() == null) {
                         entry.getKey().setRemark("");
                     }
-                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+//                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+                    if (!true){
                         String remark = "澶囨敞锛�" + entry.getKey().getRemark();
                         if (entry.getKey().getRemark().length() > 50) {
                             int j = 0;
@@ -2037,7 +2052,8 @@
                     //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
                     zhuJianYiShi(document1, entry,orderRemark.getCreateTime(),dictHosp);
                     //鍒嗗壊绾�
-                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+//                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+                    if (!true) {
                         LineSeparator objectName = new LineSeparator();
                         document1.add(objectName);
                     }
@@ -2053,7 +2069,8 @@
                     Font titleFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                     Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
 
-                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+//                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+                    if (true) {
                         if (StrUtil.isBlank(value.get(0).getProResult()) && (StrUtil.isBlank(value.get(0).getTs()) && StrUtil.isBlank(value.get(0).getSj()))){
                             continue;
                         }
@@ -2079,7 +2096,8 @@
 //                    PdfPTable table = PdfUtils.setTable(headFont, textFont, titles, value,dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌"));
 //                    document1.add(table);
 
-                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") && !value.isEmpty()){
+//                    if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") && !value.isEmpty()){
+                    if (true && !value.isEmpty()){
                         if (value.size()>1){
                             if (value.get(0).getPid().equals("1862852701533012001")){
                                 Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
@@ -2203,7 +2221,8 @@
                     if (entry.getKey().getRemark() == null) {
                         entry.getKey().setRemark("");
                     }
-                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+//                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+                    if (!true){
                         String remark = "澶囨敞锛�" + entry.getKey().getRemark();
                         if (entry.getKey().getRemark().length() > 50) {
                             int j = 0;
@@ -2228,7 +2247,8 @@
                     }
                     //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
                     zhuJianYiShi(document1, entry,orderRemark.getCreateTime(),dictHosp);
-                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+//                    if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+                    if (!true) {
                         //鍒嗗壊绾�
                         LineSeparator objectName = new LineSeparator();
                         document1.add(objectName);
@@ -2245,13 +2265,15 @@
      * @throws DocumentException
      */
     private void zhuJianYiShi(Document document1, Map.Entry<TjOrderRemark, List<TjPdfVO>> entry,Date createTime,DictHosp dictHosp) throws DocumentException {
-        if ((null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) || dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") ) {
+//        if ((null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) || dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌") ) {
+        if ((null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) || true ) {
             //涓绘鍖诲笀
             String key = sysConfigService.selectConfigByKey("is_report_pdf_use_ysqm");
             SysUser sysUser = userService.getById(entry.getKey().getDoctorName());
             String doctorNameDefault = "鏃�";
             if (sysUser != null)doctorNameDefault = sysUser.getNickName();
-            if (!entry.getValue().isEmpty() && StrUtil.isNotBlank(entry.getValue().get(0).getShys()) && dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+//            if (!entry.getValue().isEmpty() && StrUtil.isNotBlank(entry.getValue().get(0).getShys()) && dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+            if (!entry.getValue().isEmpty() && StrUtil.isNotBlank(entry.getValue().get(0).getShys()) && true){
                 doctorNameDefault = entry.getValue().get(0).getShys();
             }
             Font doctorFonts = PdfUtils.setFont(9);
@@ -2450,7 +2472,8 @@
             }
             //鎷兼帴閲嶅ぇ闃虫�х粨鏋�
             StringBuffer str = new StringBuffer();
-            if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+//            if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+            if (!true) {
                 str.append("銆愰噸澶ч槼鎬ч」鐩�慭n");
                 LambdaQueryWrapper<TjBigPositive> bigPositiveLambdaQueryWrapper = new LambdaQueryWrapper<>();
                 bigPositiveLambdaQueryWrapper.eq(TjBigPositive::getTjNumber, tjNumber);
@@ -2465,7 +2488,8 @@
             }
             //鎷兼帴寮傚父椤圭洰
             str.append("銆愬紓甯告儏鍐甸」鐩�慭n");
-            if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+//            if (!dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+            if (!true) {
                 if (list.size() > 0) {
                     for (int i = 0; i < list.size(); i++) {
                         if (list.get(i).getExceptionDesc() == 1) {
@@ -2799,7 +2823,8 @@
     private static void addJianYanTable(Document document, String titleName, String[] titles, float[] titlesWidth, ArrayList<List<String>> lists,DictHosp dictHosp,String colorStr) throws DocumentException {
         // 澶ч」鏍囬
         Font titleFont = PdfUtils.setFont(DEFAULT_TITLE_FONT_SIZE);
-        if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+//        if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+        if (true) {
             titleFont.setSize(DEFAULT_TITLE_FONT_SIZE);
             titleFont.setStyle(Font.BOLD);
         }
@@ -2811,7 +2836,8 @@
         paragraph.setSpacingBefore(10f);
         // 璁剧疆娈佃惤涓嬬┖鐧�
         paragraph.setSpacingAfter(10f);
-        if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+//        if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")) {
+        if (true) {
             // 琛岄棿璺�
             paragraph.setLeading(7f);
             // 璁剧疆娈佃惤涓婄┖鐧�
@@ -2857,7 +2883,8 @@
         for (List<String> list : lists) {
             boolean isYc = false;
             textFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
-            if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+//            if (dictHosp.getHospName().equals("婢勫悎鐭垮姟灞�涓績鍖婚櫌")){
+            if (true){
                 if (list.contains("鈫�") || list.contains("鈫�")){
                     isYc = true;
                 }
@@ -2927,7 +2954,8 @@
             table1.setSpacingAfter(10f);
 
             Font titleFont = PdfUtils.setFont(12);
-            PdfPCell mergedCell = new PdfPCell(new Phrase("闄曞仴鍖绘緞鍚堢熆鍔″眬涓績鍖婚櫌", titleFont));
+//            PdfPCell mergedCell = new PdfPCell(new Phrase("闄曞仴鍖绘緞鍚堢熆鍔″眬涓績鍖婚櫌", titleFont));
+            PdfPCell mergedCell = new PdfPCell(new Phrase(HOSP_NAME, titleFont));
             mergedCell.setBorder(Rectangle.NO_BORDER);
             mergedCell.setColspan(10);
             mergedCell.setHorizontalAlignment(Element.ALIGN_CENTER);
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java
index f4da486..fc7d4a7 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java
@@ -27,10 +27,13 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
+import javax.xml.soap.*;
 
 /**
  * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃
@@ -239,6 +242,8 @@
      * xml浼犻��
      */
     public boolean OrderAdd(TjCustomer customer,TjOrder tjOrder){
+        String hospbm = configService.selectConfigByKey("common_api_service_hospbm");
+
         List<TbTransition> detailList = transitionService.getTbTransitionListByCusId(customer.getCusIdcard(), tjOrder.getCardId());
         LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
         wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
@@ -247,51 +252,113 @@
         HashMap<String, Object> root = new HashMap<>();
         HashMap<String, Object> hashMap = new HashMap<>();
 
-        HashMap<String, Object> patientInfo = new HashMap<>();
-        patientInfo.put("PatientId",customer.getCusId());
-        patientInfo.put("VisitNo",tjOrder.getTjNumber());
-        patientInfo.put("PatType","P");
-        patientInfo.put("PatientName",customer.getCusName());
-        if (customer.getCusSex() == 0) patientInfo.put("PatientSex","M");
-        else if (customer.getCusSex() == 1) patientInfo.put("PatientSex","F");
-        else patientInfo.put("PatientSex","O");
-        patientInfo.put("PatBirthday",new SimpleDateFormat("yyyy-MM-dd").format(customer.getCusBrithday()));
-        patientInfo.put("IdCard",customer.getCusIdcard());
-        patientInfo.put("hospitalid","chkwyy");
+        String xmlRequest = "";
 
-//        String examItems = "";
-        HashMap<String, Object> examItem = new HashMap<>();
-        List<Map<String,Object>> list = new ArrayList<>();
-        String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
-        for (TjProject project : projects) {
-            HashMap<String, Object> examItems = new HashMap<>();
-            // 鐢宠鍗曞彿瑙勫垯锛氫綋妫�鍙穇project.getProId()鍚庡洓浣�
-            examItems.put("HisID", tjOrder.getTjNumber() + String.valueOf(project.getProId()).substring(String.valueOf(project.getProId()).length() - 4));
-            examItems.put("EmergencyFlag", "0");
-            examItems.put("ExamItemID", project.getHisXmbm());
-            examItems.put("ExamItemName", project.getHisXmmc());
-            examItems.put("OrderDT", date);
-            SysDept dept = deptService.getById(project.getDeptId());
-            examItems.put("Modality", dept.getModality());
-            // TODO 鏀惰垂鏍囪瘑 1鏄敹璐� 鍜� 0鏈敹璐�
-            examItems.put("ChargeFlag","");
-//            examItems += "<ExamItem>"+
-//                    XmlUtil.mapToXmlStr(examItem)
-//                            .replace("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>","")
-////                            .replaceAll("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>","")
-//                            .replace("<xml>","")
-//                            .replace("</xml>","")
-//                    +"</ExamItem>";
-            list.add(examItems);
+        MessageFactory messageFactory = null;
+        try {
+            // 鍒涘缓SOAP娑堟伅
+            messageFactory = MessageFactory.newInstance();
+            SOAPMessage soapMessage = messageFactory.createMessage();
+            // 鍒涘缓SOAP Envelope
+            SOAPPart soapPart = soapMessage.getSOAPPart();
+            SOAPEnvelope envelope = soapPart.getEnvelope();
+            envelope.addNamespaceDeclaration("xmlns", "http://tempuri.org/");
+
+            // 鍒涘缓SOAP Body
+            SOAPBody soapBody = envelope.getBody();
+            SOAPElement rootElement = soapBody.addChildElement("OrderAdd", "xmlns");
+            rootElement.addChildElement("dataSourceName").addTextNode("hisDataSource");
+
+            // PatientInfor 閮ㄥ垎
+            SOAPElement patientInfor = rootElement.addChildElement("PatientInfor");
+            if (customer.getCusSex() == 0) patientInfor.addChildElement("PatientSex").addTextNode("M");
+            else if (customer.getCusSex() == 1) patientInfor.addChildElement("PatientSex").addTextNode("F");
+            else patientInfor.addChildElement("PatientSex").addTextNode("O");
+            patientInfor.addChildElement("PatBirthday").addTextNode(new SimpleDateFormat("yyyy-MM-dd").format(customer.getCusBrithday()));
+            patientInfor.addChildElement("VisitNo").addTextNode(tjOrder.getTjNumber());
+            patientInfor.addChildElement("PatientId").addTextNode(String.valueOf(customer.getCusId()));
+            patientInfor.addChildElement("HospitalID").addTextNode("shanxiqinxamjyy");
+            patientInfor.addChildElement("IdCard").addTextNode(customer.getCusIdcard());
+            patientInfor.addChildElement("PatientName").addTextNode(customer.getCusName());
+            patientInfor.addChildElement("PatType").addTextNode("P");
+
+            // ExamItemList 閮ㄥ垎
+            SOAPElement examItemList = rootElement.addChildElement("ExamItemList");
+
+            String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
+            for (TjProject project : projects) {
+                SOAPElement examItem = examItemList.addChildElement("ExamItem");
+                examItem.addChildElement("HisID").addTextNode(tjOrder.getTjNumber() + String.valueOf(project.getProId()).substring(String.valueOf(project.getProId()).length() - 4));
+                examItem.addChildElement("EmergencyFlag").addTextNode("0");
+                examItem.addChildElement("ExamItemID").addTextNode(project.getHisXmbm());
+                examItem.addChildElement("ExamItemName").addTextNode(project.getHisXmmc());
+                examItem.addChildElement("OrderDT").addTextNode(date);
+                SysDept dept = deptService.getById(project.getDeptId());
+                examItem.addChildElement("Modality").addTextNode(dept.getModality());
+                examItem.addChildElement("ChargeFlag").addTextNode("1");
+            }
+
+            // 淇濆瓨SOAP娑堟伅
+            soapMessage.saveChanges();
+
+            // 鎵撳嵃鐢熸垚鐨凷OAP璇锋眰
+            System.out.println("鐢熸垚鐨凷OAP璇锋眰鍐呭锛�");
+            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+            soapMessage.writeTo(byteArrayOutputStream);
+            xmlRequest = byteArrayOutputStream.toString("UTF-8");
+        } catch (SOAPException | IOException e) {
+            log.error("SOAP寮傚父 ->{}",String.valueOf(e));
         }
-        examItem.put("ExamItem",list);
-        hashMap.put("PatientInfor",patientInfo);
-        hashMap.put("ExamItemList",examItem);
-        root.put("Root",hashMap);
-        String result = HttpRequest.post("http://10.100.100.222:8000/WebInterfaceService.asmx")
-        .body(XmlUtil.mapToXmlStr(root)).contentType("application/xml;charset:utf-8;").execute().body();
-        String s = XmlUtil.mapToXmlStr(root);
-        log.info("璋冪敤pacs浼犻�掑弬鏁扮殑鍊间负: "+s);
+
+
+//        HashMap<String, Object> patientInfo = new HashMap<>();
+//        patientInfo.put("PatientId",customer.getCusId());
+//        patientInfo.put("VisitNo",tjOrder.getTjNumber());
+//        patientInfo.put("PatType","P");
+//        patientInfo.put("PatientName",customer.getCusName());
+//        if (customer.getCusSex() == 0) patientInfo.put("PatientSex","M");
+//        else if (customer.getCusSex() == 1) patientInfo.put("PatientSex","F");
+//        else patientInfo.put("PatientSex","O");
+//        patientInfo.put("PatBirthday",new SimpleDateFormat("yyyy-MM-dd").format(customer.getCusBrithday()));
+//        patientInfo.put("IdCard",customer.getCusIdcard());
+//        patientInfo.put("hospitalid","chkwyy");
+//        patientInfo.put("HospitalID",hospbm);
+//
+//        HashMap<String, Object> examItemList = new HashMap<>();
+//        List<Map<String, Object>> examItemsList = new ArrayList<>();
+        String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
+//
+//        for (TjProject project : projects) {
+//            HashMap<String, Object> examItem = new HashMap<>();
+//            // 鐢宠鍗曞彿瑙勫垯锛氫綋妫�鍙穇project.getProId()鍚庡洓浣�
+//            examItem.put("HisID", tjOrder.getTjNumber() + String.valueOf(project.getProId()).substring(String.valueOf(project.getProId()).length() - 4));
+//            examItem.put("EmergencyFlag", "0");
+//            examItem.put("ExamItemID", project.getHisXmbm());
+//            examItem.put("ExamItemName", project.getHisXmmc());
+//            examItem.put("OrderDT", date);
+//
+//            SysDept dept = deptService.getById(project.getDeptId());
+//            examItem.put("Modality", dept.getModality());
+//            // 鏀惰垂鏍囪瘑锛�1 鏄敹璐癸紝0 鏈敹璐�
+//            examItem.put("ChargeFlag", "1");
+//
+//            examItemsList.add(examItem); // 灏嗘瘡涓狤xamItem娣诲姞鍒伴泦鍚�
+//        }
+//
+//        // 鏋勯�犳渶缁堢殑ExamItemList
+//        examItemList.put("ExamItem", examItemsList);
+//        hashMap.put("ExamItemList", examItemList);
+//
+//        hashMap.put("PatientInfor", patientInfo);
+//
+//        // 灏嗘暟鎹皝瑁呭埌鏍硅妭鐐�
+//        root.put("Root", hashMap);
+//
+//        // 浣跨敤Hutool灏哅ap杞崲涓篨ML瀛楃涓�
+//        String xmlRequest = XmlUtil.mapToXmlStr(root);
+
+        String result = "1";
+        log.info("璋冪敤pacs浼犻�掑弬鏁扮殑鍊间负: "+xmlRequest);
         Map<String, Object> map = XmlUtil.xmlToMap(result);
         if (map.get("Code").toString().equals("1")){
             for (TjProject project : projects) {
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsServiceController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsServiceController.java
index b765b84..f004e04 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsServiceController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsServiceController.java
@@ -17,10 +17,7 @@
 import com.sun.org.apache.xpath.internal.operations.Bool;
 import jodd.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.security.PrivateKey;
 import java.text.SimpleDateFormat;
@@ -58,6 +55,8 @@
     private LtkjExamJcsqdService ltkjExamJcsqdService;
     @Autowired
     private LtkjExamJcbgdService ltkjExamJcbgdService;
+    @Autowired
+    private PacsApiMethodService pacsApiMethodService;
 
     //    浣撴寮�妫�鏌ョ敵璇峰崟璋冪敤姝ゆ帴鍙f帹閫佺粰pacs鏈嶅姟
     public boolean OrderAdd(String tjNumber)
@@ -232,7 +231,7 @@
         return XmlUtil.mapToXmlStr(hashMap);
     }
 
-    //@PostMapping("QueryOrder")
+//    @PostMapping("QueryOrder")
     private String queryOrder(@RequestBody String json){
         Map<String, Object> map = XmlUtil.xmlToMap(json);
         JSONObject parseObj = JSONUtil.parseObj(map);
@@ -380,4 +379,14 @@
         return XmlUtil.mapToXmlStr(hashMap)
                 .replaceAll("&lt;","<").replaceAll("&gt;",">");
     }
+
+    @GetMapping("test")
+    public String test(){
+        TjCustomer tjCustomer = customerService.getById(1870373229901938690L);
+        LambdaQueryWrapper<TjOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TjOrder::getUserId,tjCustomer.getCusId());
+        TjOrder order = tjOrderService.getOne(wrapper);
+        pacsApiMethodService.OrderAdd(tjCustomer,order);
+        return "1111";
+    }
 }
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
index a981fd1..a2de790 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
@@ -581,11 +581,9 @@
     @Override
 //    @Async("async")
 //    @Transactional
-    public Boolean iundividualCharges(TjFlowingWater tjFlowingWater, TjOrder order, TjCustomer customer, SysUser sysUser) {
+    public Boolean iundividualCharges(TjFlowingWater tjFlowingWater, TjOrder order, TjCustomer customer, SysUser sysUser,String jxbz) {
         Date dates = new Date();
         final String date = DateUtil.format(dates, "yyyy-MM-dd HH:mm:ss");
-
-        String jxbz = DateUtil.format(dates, "yyyyMMddHHmmss")+order.getOrderId();
 
         tjFlowingWater.setJxbz(jxbz);
         tjFlowingWaterService.updateById(tjFlowingWater);
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysDeptController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysDeptController.java
index d9ca10e..a0e86ec 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysDeptController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysDeptController.java
@@ -31,6 +31,7 @@
 import com.ltkj.system.domain.SysUserPost;
 import com.ltkj.system.service.*;
 import com.ltkj.web.controller.his.HisApiGetMethodService;
+import com.ltkj.web.wxUtils.HttpClientUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -1469,6 +1470,16 @@
                         return AjaxResult.error("鏈煡璇㈠埌缂磋垂璁板綍");
                     }
                 }
+                String s = configService.selectConfigByKey("is_request_common_his_api");
+                if (null != s && s.equals("Y")) {
+                    LambdaQueryWrapper<TjFlowingWater> wrapper1 = new LambdaQueryWrapper<>();
+                    wrapper1.eq(TjFlowingWater::getOrderId,tjOrder.getOrderId());
+                    wrapper1.eq(TjFlowingWater::getPayStasus,0L);
+                    List<TjFlowingWater> list = tjFlowingWaterService.list(wrapper1);
+                    if (!list.isEmpty()){
+                        return AjaxResult.error("瀛樺湪鏈即璐归」鐩�");
+                    }
+                }
             }
         }else {
             log.error("璺嘲绉戞妧--- "+DateUtil.date()+" 鏈鎺is鎺ュ彛 "+" 浣撴鍙� "+tjOrder.getTjNumber());
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCustomerController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCustomerController.java
index 181d9c0..47c114f 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCustomerController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCustomerController.java
@@ -31,6 +31,7 @@
 import com.ltkj.web.controller.his.HisApiGetMethodService;
 import com.ltkj.web.controller.his.HisApiMethod;
 import com.ltkj.web.controller.his.HisApiMethodService;
+import com.ltkj.web.wxUtils.HttpClientUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -44,10 +45,7 @@
 import com.ltkj.common.utils.poi.ExcelUtil;
 import com.ltkj.common.core.page.TableDataInfo;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -491,8 +489,35 @@
             AjaxResult tjCustomer1 = suijieHisXinXi(tjCustomer, date);
             if (tjCustomer1 != null) return tjCustomer1;
         } else {
-            if (tjCustomerService.save(tjCustomer)) {
-                return AjaxResult.success(tjCustomer);
+            String s = sysConfigService.selectConfigByKey("is_request_common_his_api");
+            if (null != s && s.equals("Y")){
+                String apiUrl = sysConfigService.selectConfigByKey("common_api_url");
+                String hospbm = sysConfigService.selectConfigByKey("common_api_service_hospbm");
+                HashMap<String, Object> map = new HashMap<>();
+                map.put("cardId","");
+                map.put("cusName",tjCustomer.getCusName());
+                map.put("cusSex",tjCustomer.getCusSex());
+                map.put("cusIdCard",tjCustomer.getCusIdcard());
+                map.put("compId",tjCustomer.getCompId());
+                map.put("cusBrithday",tjCustomer.getCusBrithday() != null ? DateUtil.format(tjCustomer.getCusBrithday(), "yyyy-MM-dd") : "");
+                map.put("cusAddr",tjCustomer.getCusAddr());
+                map.put("cusPhone",tjCustomer.getCusPhone());
+                map.put("compName",tjCustomer.getCompName());
+                String post = HttpClientUtils.sendPost(apiUrl+"/api/his/"+hospbm+"/creat", map);
+                JSONObject jsonObject = JSONUtil.parseObj(post);
+                if (jsonObject.getStr("code").equals("200")){
+                    JSONObject data = jsonObject.getJSONObject("data");
+                    tjCustomer.setPationId(data.getStr("pationId"));
+                    tjCustomer.setCardId(data.getStr("cardId"));
+                    tjCustomer.setHisJzkh(data.getStr("cardId"));
+                    if (tjCustomerService.save(tjCustomer)) {
+                        return AjaxResult.success(tjCustomer);
+                    }
+                }else return AjaxResult.error();
+            }else {
+                if (tjCustomerService.save(tjCustomer)) {
+                    return AjaxResult.success(tjCustomer);
+                }
             }
         }
         return AjaxResult.error();
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java
index 23495c5..3065dac 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java
@@ -8,8 +8,12 @@
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.extra.pinyin.PinyinUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ltkj.common.annotation.RepeatSubmit;
+import com.ltkj.common.core.domain.entity.SysDept;
 import com.ltkj.common.core.domain.entity.SysUser;
 import com.ltkj.common.utils.SecurityUtils;
 import com.ltkj.framework.config.MatchUtils;
@@ -18,10 +22,14 @@
 import com.ltkj.hosp.vodomain.TjCollectFeesVo;
 import com.ltkj.hosp.vodomain.TjRefundProInfoVo;
 import com.ltkj.hosp.vodomain.TjRefundVo;
+import com.ltkj.system.service.ISysConfigService;
+import com.ltkj.system.service.ISysDeptService;
 import com.ltkj.system.service.ISysUserService;
+import com.ltkj.web.wxUtils.HttpClientUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -73,6 +81,12 @@
     private IJimuOnlineReportService reportService;
     @Resource
     private ITjPackageProjectService tjPackageProjectService;
+    @Autowired
+    private ISysConfigService configService;
+    @Autowired
+    private ISysDeptService sysDeptService;
+    @Autowired
+    private TjFlowingWaterHisService tjFlowingWaterHisService;
 
     /**
      * 鏌ヨ璇ヤ綋妫�鍙峰搴旂殑璁㈠崟娴佹按鍒楄〃
@@ -218,12 +232,82 @@
             tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(customer.getCusName(), "").toUpperCase() +SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
             tjFlowingWater.setIsAddition("Y");
             if (tjFlowingWaterService.save(tjFlowingWater)) {
+
+                Date dates = new Date();
+                String jxbz = DateUtil.format(dates, "yyyyMMddHHmmss")+order.getOrderId();
                 //寮傛鍗曢」鏀惰垂鏄庣粏
-                Boolean b = asyncService.iundividualCharges(tjFlowingWater, order, customer, sysUser);
+                Boolean b = asyncService.iundividualCharges(tjFlowingWater, order, customer, sysUser,jxbz);
                 if (!b){
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     return AjaxResult.error();
                 }
+
+                String s = configService.selectConfigByKey("is_request_common_his_api");
+                if (null != s && s.equals("Y") && order.getTjType().equals("2")) {
+                    String apiUrl = configService.selectConfigByKey("common_api_url");
+                    String hospbm = configService.selectConfigByKey("common_api_service_hospbm");
+                    HashMap<String, Object> map = new HashMap<>();
+                    map.put("pationId",customer.getPationId());
+                    map.put("cardId",customer.getHisJzkh());
+                    map.put("tjNum",tjFlowingWater.getTjSerialNumber());
+                    map.put("kaiDanKs","7805");
+                    // 鏀惰垂鏍囧織 1寰呭敭璐� 2寰呴��璐�
+                    map.put("shouTuiStatus","1");
+
+                    JSONArray array = JSONUtil.createArray();
+                    LambdaQueryWrapper<TbTransition> wrapper = new LambdaQueryWrapper<>();
+                    wrapper.eq(TbTransition::getTjNum,order.getTjNumber());
+                    wrapper.eq(TbTransition::getCusId,customer.getCusIdcard());
+                    wrapper.eq(TbTransition::getCardId,customer.getCardId());
+                    wrapper.eq(TbTransition::getJxbz,jxbz);
+                    wrapper.isNotNull(TbTransition::getOrdPrice);
+                    wrapper.gt(TbTransition::getOrdPrice,0);
+
+                    List<TbTransition> list = transitionService.list(wrapper);
+                    for (TbTransition transition : list) {
+                        LambdaQueryWrapper<TjProject> wrapper1 = new LambdaQueryWrapper<>();
+                        wrapper1.eq(TjProject::getProId,transition.getProId());
+                        TjProject project = projectService.getOne(wrapper1);
+
+                        LambdaQueryWrapper<SysDept> wrapper2 = new LambdaQueryWrapper<>();
+                        wrapper2.eq(SysDept::getDeptId,project.getDeptId());
+                        SysDept dept = sysDeptService.getOne(wrapper2);
+
+                        JSONObject obj = JSONUtil.createObj();
+                        BigDecimal danjia = transition.getOrdPrice();
+                        Integer sl = project.getSl();
+                        BigDecimal allPrice = danjia.multiply(new BigDecimal(sl));
+                        obj.putOpt("danJia",danjia);
+                        obj.putOpt("jieSuanJe",allPrice);
+                        obj.putOpt("shuliang",sl);
+                        obj.putOpt("zhiXingKs",dept.getDeptId());
+                        obj.putOpt("zhiXingKsMc",dept.getDeptName());
+                        obj.putOpt("shouFeiXmId",project.getHisXmbm());
+                        obj.putOpt("shouFeiXmMc",project.getHisXmmc());
+
+//                        obj.putOpt("zhiXingKs","7805");
+//                        obj.putOpt("zhiXingKsMc","浣撴绉�");
+//                        obj.putOpt("shouFeiXmId","4735346");
+//                        obj.putOpt("shouFeiXmMc","浣撴璐�");
+                        array.add(obj);
+                    }
+                    map.put("feiYongInfoList",array);
+
+                    String post = HttpClientUtils.sendPost(apiUrl + "/api/his/"+hospbm+"/creatCostInfo", map);
+                    JSONObject object = JSONUtil.parseObj(post);
+                    if (object.getInt("code") == 200) {
+                        JSONObject data = object.getJSONObject("data");
+                        tjFlowingWater.setHisWaterId(data.getStr("feiYongId"));
+                        JSONArray mxList = data.getJSONArray("mxList");
+                        if (mxList != null && mxList.size() > 0) {
+                            List<TjFlowingWaterHis> his = mxList.toList(TjFlowingWaterHis.class);
+                            tjFlowingWaterHisService.saveBatch(his);
+                        }
+                        tjFlowingWaterService.updateById(tjFlowingWater);
+                    }else {
+                        return AjaxResult.error();
+                    }
+                }
 //                if(!b){
 //                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 //                }
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
index f875f80..e237f9c 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -78,6 +78,7 @@
 import com.ltkj.web.controller.lis.LisApiMethod;
 import com.ltkj.web.controller.pacs.PacsApiMethodService;
 import com.ltkj.web.controller.service.TjSysAsyncServiceImpl;
+import com.ltkj.web.wxUtils.HttpClientUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -228,6 +229,8 @@
     private LisJyflhbService lisJyflhbService;
     @Autowired
     private ISysDictDataService sysDictDataService;
+    @Autowired
+    private TjFlowingWaterHisService tjFlowingWaterHisService;
 
     //灏嗘柟娉曡繑鍥炲�艰В鏋愭垚json鏍煎紡
     public JSONObject getJSONObject(String builder) {
@@ -1229,6 +1232,74 @@
                 newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                 List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
                 addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
+
+
+                String s = configService.selectConfigByKey("is_request_common_his_api");
+                if (null != s && s.equals("Y")) {
+                    String apiUrl = configService.selectConfigByKey("common_api_url");
+                    String hospbm = configService.selectConfigByKey("common_api_service_hospbm");
+                    HashMap<String, Object> map = new HashMap<>();
+                    map.put("pationId",tjCustomer.getPationId());
+                    map.put("cardId",tjCustomer.getHisJzkh());
+                    map.put("tjNum",tjFlowingWater.getTjSerialNumber());
+                    map.put("kaiDanKs","7805");
+                    // 鏀惰垂鏍囧織 1寰呭敭璐� 2寰呴��璐�
+                    map.put("shouTuiStatus","1");
+
+                    JSONArray array = JSONUtil.createArray();
+                    LambdaQueryWrapper<TbTransition> wrapper = new LambdaQueryWrapper<>();
+                    wrapper.eq(TbTransition::getTjNum,tjOrder.getTjNumber());
+                    wrapper.eq(TbTransition::getCusId,tjCustomer.getCusIdcard());
+                    wrapper.eq(TbTransition::getCardId,tjCustomer.getCardId());
+                    wrapper.isNotNull(TbTransition::getOrdPrice);
+                    wrapper.gt(TbTransition::getOrdPrice,0);
+
+                    List<TbTransition> list = tbTransitionService.list(wrapper);
+                    for (TbTransition transition : list) {
+                        LambdaQueryWrapper<TjProject> wrapper1 = new LambdaQueryWrapper<>();
+                        wrapper1.eq(TjProject::getProId,transition.getProId());
+                        TjProject project = projectService.getOne(wrapper1);
+
+                        LambdaQueryWrapper<SysDept> wrapper2 = new LambdaQueryWrapper<>();
+                        wrapper2.eq(SysDept::getDeptId,project.getDeptId());
+                        SysDept dept = sysDeptService.getOne(wrapper2);
+
+                        JSONObject obj = JSONUtil.createObj();
+                        Integer sl = project.getSl();
+                        BigDecimal danjia = transition.getOrdPrice();
+                        BigDecimal allPrice = danjia.multiply(new BigDecimal(sl));
+                        obj.putOpt("danJia",danjia);
+                        obj.putOpt("jieSuanJe",allPrice);
+                        obj.putOpt("shuliang",sl);
+                        obj.putOpt("zhiXingKs",dept.getDeptId());
+                        obj.putOpt("zhiXingKsMc",dept.getDeptName());
+                        obj.putOpt("shouFeiXmId",project.getHisXmbm());
+                        obj.putOpt("shouFeiXmMc",project.getHisXmmc());
+
+//                        obj.putOpt("zhiXingKs","7805");
+//                        obj.putOpt("zhiXingKsMc","浣撴绉�");
+//                        obj.putOpt("shouFeiXmId","4735346");
+//                        obj.putOpt("shouFeiXmMc","浣撴璐�");
+                        array.add(obj);
+                    }
+                    map.put("feiYongInfoList",array);
+
+                    String post = HttpClientUtils.sendPost(apiUrl + "/api/his/"+hospbm+"/creatCostInfo", map);
+                    JSONObject object = JSONUtil.parseObj(post);
+                    if (object.getInt("code") == 200) {
+                        JSONObject data = object.getJSONObject("data");
+                        tjFlowingWater.setHisWaterId(data.getStr("feiYongId"));
+                        JSONArray mxList = data.getJSONArray("mxList");
+                        if (mxList != null && mxList.size() > 0) {
+                            List<TjFlowingWaterHis> his = mxList.toList(TjFlowingWaterHis.class);
+                            tjFlowingWaterHisService.saveBatch(his);
+                        }
+                        tjFlowingWaterService.updateById(tjFlowingWater);
+                    }else {
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                        return AjaxResult.error();
+                    }
+                }
             }
             // 鏌ヨ 瀵规帴Lis銆丳acs鐢宠濡傛灉绫诲瀷鍖呭惈鍦ㄩ厤缃唴鍒欎娇鐢ㄥ鎺is銆乸acs
             if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
@@ -2845,17 +2916,49 @@
 //                return AjaxResult.error("璇ョ敤鎴峰凡鏀惰垂涓嶅彲鎾ら攢绛惧埌!");
 //            }
             if (null != order.getFinishTime()) return AjaxResult.error("璇ヤ汉鍛樺凡绛剧,涓嶅彲鎾ら攢!!!");
-            tjOrderService.deleteTjOrderByOrderId(order.getOrderId());
-            tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId()));
-            remarkService.deletedOrderRemarkByTjNum(tjNum);
-            tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId()));
-            transitionService.deletedTbTransitionByTjNum(tjNum);
 
-            TjCustomer customer = tjCustomerService.getById(order.getUserId());
-            customer.setCardId("0");
-            tjCustomerService.updateById(customer);
+            String s = configService.selectConfigByKey("is_request_common_his_api");
+            if (null != s && s.equals("Y") && "2".equals(order.getTjType())){
+                String apiUrl = configService.selectConfigByKey("common_api_url");
+                String hospbm = configService.selectConfigByKey("common_api_service_hospbm");
+
+                ArrayList<TjFlowingWater> weizhifu = new ArrayList<>();
+                ArrayList<TjFlowingWater> yizhifu = new ArrayList<>();
+                LambdaQueryWrapper<TjFlowingWater> wrapper1 = new LambdaQueryWrapper<>();
+                wrapper1.eq(TjFlowingWater::getOrderId, order.getOrderId());
+                List<TjFlowingWater> list = tjFlowingWaterService.list(wrapper1);
+                LambdaQueryWrapper<TjCustomer> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(TjCustomer::getCusId,order.getUserId());
+                TjCustomer tjCustomer = tjCustomerService.getOne(wrapper);
+
+                for (TjFlowingWater water : list) {
+                    if (water.getPayStasus() == 0L){
+                        weizhifu.add(water);
+                    }else {
+                        yizhifu.add(water);
+                    }
+                }
+
+                AjaxResult error = zuofeiWeiZhifu(weizhifu, tjCustomer, apiUrl, hospbm, order,true,tjNum);
+                if (error != null && !error.get("code").toString().equals("200")) return error;
+
+                AjaxResult error1 = zuofeiYiZhifu(yizhifu, tjCustomer, order, apiUrl, hospbm,false,tjNum);
+                if (error1 != null && !error.get("code").toString().equals("200")) return error1;
+            }else {
+                tjOrderService.deleteTjOrderByOrderId(order.getOrderId());
+                tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId()));
+                remarkService.deletedOrderRemarkByTjNum(tjNum);
+                tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId()));
+                transitionService.deletedTbTransitionByTjNum(tjNum);
+
+                TjCustomer customer = tjCustomerService.getById(order.getUserId());
+                customer.setCardId("0");
+                tjCustomerService.updateById(customer);
+
+                tjSamplingMapper.deleteByTjNumAndCusId(tjNum, order.getUserId());
+            }
+
             String configByKey = configService.selectConfigByKey("sfkqdyhis");
-            tjSamplingMapper.deleteByTjNumAndCusId(tjNum, order.getUserId());
             if (configByKey.equals("Y")) {
 
                 HashMap<String, Object> hisRequestParams = new HashMap<>();
@@ -3160,17 +3263,156 @@
                     return AjaxResult.error("鎾ら攢澶辫触,璋冪敤浣滃簾鍑虹幇澶辫触");
                 }
             }
-            try {
-                extracted(dto, order);
-            } catch (Exception e) {
-                log.info("鎾ら攢澶辫触,鍒犻櫎琛ㄥけ璐�");
-                return AjaxResult.error("鎾ら攢澶辫触,鍒犻櫎琛ㄥけ璐�!");
+            String s = configService.selectConfigByKey("is_request_common_his_api");
+            if (null != s && s.equals("Y") && "2".equals(order.getTjType())) {
+                ArrayList<TjFlowingWater> weizhifu = new ArrayList<>();
+                ArrayList<TjFlowingWater> yizhifu = new ArrayList<>();
+                for (String bldh : dto.getBldhs()) {
+                    LambdaQueryWrapper<TjFlowingWater> wrapper = new LambdaQueryWrapper<>();
+                    wrapper.eq(TjFlowingWater::getJxbz,bldh);
+                    TjFlowingWater water = tjFlowingWaterService.getOne(wrapper);
+                    if (water.getPayStasus() == 0L){
+                        weizhifu.add(water);
+                    }else {
+                        yizhifu.add(water);
+                    }
+                }
+                String apiUrl = configService.selectConfigByKey("common_api_url");
+                String hospbm = configService.selectConfigByKey("common_api_service_hospbm");
+                LambdaQueryWrapper<TjCustomer> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(TjCustomer::getCusId,order.getUserId());
+                TjCustomer tjCustomer = tjCustomerService.getOne(wrapper);
+                AjaxResult error = zuofeiWeiZhifu(weizhifu, tjCustomer, apiUrl, hospbm, order,true,dto.getTjh());
+                if (error != null && !error.get("code").toString().equals("200")) return error;
+
+                AjaxResult error1 = zuofeiYiZhifu(yizhifu, tjCustomer, order, apiUrl, hospbm,false,dto.getTjh());
+                if (error1 != null && !error.get("code").toString().equals("200")) return error1;
+                return AjaxResult.success();
+            }else {
+                try {
+                    extracted(dto, order);
+                } catch (Exception e) {
+                    log.info("鎾ら攢澶辫触,鍒犻櫎琛ㄥけ璐�");
+                    return AjaxResult.error("鎾ら攢澶辫触,鍒犻櫎琛ㄥけ璐�!");
+                }
+                return AjaxResult.success();
             }
-            return AjaxResult.success();
         }
         return AjaxResult.error();
     }
 
+    private AjaxResult zuofeiYiZhifu(ArrayList<TjFlowingWater> yizhifu, TjCustomer tjCustomer, TjOrder order, String apiUrl, String hospbm,Boolean isDelete,String tjNum) {
+        if (!yizhifu.isEmpty()){
+            for (TjFlowingWater water : yizhifu) {
+                HashMap<String, Object> map = new HashMap<>();
+                map.put("pationId", tjCustomer.getPationId());
+                map.put("cardId", tjCustomer.getHisJzkh());
+                map.put("tjNum", water.getTjSerialNumber());
+                map.put("kaiDanKs","7805");
+                // 鏀惰垂鏍囧織 1寰呭敭璐� 2寰呴��璐�
+                map.put("shouTuiStatus","2");
+                JSONArray array = JSONUtil.createArray();
+                String bldh = water.getJxbz();
+                List<TbTransition> list;
+                if (bldh != null){
+                    LambdaQueryWrapper<TbTransition> wrapper1 = new LambdaQueryWrapper<>();
+                    wrapper1.eq(TbTransition::getJxbz,bldh);
+                    wrapper1.gt(TbTransition::getOrdPrice,0);
+                    list = tbTransitionService.list(wrapper1);
+                }else {
+                    LambdaQueryWrapper<TbTransition> wrapper1 = new LambdaQueryWrapper<>();
+                    wrapper1.isNull(TbTransition::getJxbz);
+                    wrapper1.eq(TbTransition::getTjNum,tjNum);
+                    wrapper1.gt(TbTransition::getOrdPrice,0);
+                    list = tbTransitionService.list(wrapper1);
+                }
+                for (TbTransition transition : list) {
+                    LambdaQueryWrapper<TjProject> queryWrapper = new LambdaQueryWrapper<>();
+                    queryWrapper.eq(TjProject::getProId,transition.getProId());
+                    TjProject project = projectService.getOne(queryWrapper);
+                    LambdaQueryWrapper<TjFlowingWaterHis> wrapper2 = new LambdaQueryWrapper<>();
+                    wrapper2.eq(TjFlowingWaterHis::getParentId,water.getHisWaterId());
+                    wrapper2.eq(TjFlowingWaterHis::getXmId,project.getHisXmbm());
+                    List<TjFlowingWaterHis> list1 = tjFlowingWaterHisService.list(wrapper2);
+                    for (TjFlowingWaterHis waterHis : list1) {
+                        LambdaQueryWrapper<SysDept> wrapper = new LambdaQueryWrapper<>();
+                        wrapper.eq(SysDept::getDeptId,project.getDeptId());
+                        SysDept dept = sysDeptService.getOne(wrapper);
+                        JSONObject obj = JSONUtil.createObj();
+                        BigDecimal danjia = transition.getOrdPrice();
+                        Integer sl = project.getSl();
+                        BigDecimal allPrice = danjia.multiply(new BigDecimal(sl));
+                        obj.putOpt("danJia",danjia);
+                        obj.putOpt("jieSuanJe",allPrice.negate());
+                        obj.putOpt("shuliang",Math.negateExact(sl));
+                        obj.putOpt("feiYongMxId",waterHis.getCurrentId());
+                        obj.putOpt("feiYongId",water.getHisWaterId());
+                        obj.putOpt("zhiXingKs",dept.getDeptId());
+                        obj.putOpt("zhiXingKsMc",dept.getDeptName());
+                        obj.putOpt("shouFeiXmId",project.getHisXmbm());
+                        obj.putOpt("shouFeiXmMc",project.getHisXmmc());
+
+//                    obj.putOpt("zhiXingKs","7805");
+//                    obj.putOpt("zhiXingKsMc","浣撴绉�");
+//                    obj.putOpt("shouFeiXmId","4735346");
+//                    obj.putOpt("shouFeiXmMc","浣撴璐�");
+                        array.add(obj);
+                    }
+
+                }
+                map.put("feiYongInfoList",array);
+                log.info("閫�璐圭敵璇� 鍏ュ弬 -> {}",JSONUtil.toJsonStr(map));
+                String post = HttpClientUtils.sendPost(apiUrl + "/api/his/"+ hospbm +"/creatCostInfo", map);
+                log.info("閫�璐圭敵璇� 杩斿洖 -> {}",JSONUtil.toJsonStr(post));
+                JSONObject jsonObject = JSONUtil.parseObj(post);
+                if (jsonObject.getStr("code").equals("200")) {
+                    // hisTfWaterId
+                    String tfid = jsonObject.getJSONObject("data").getStr("feiYongId");
+                    water.setHisTfWaterId(tfid);
+                    tjFlowingWaterService.updateById(water);
+                    if (isDelete) {
+                        for (TjFlowingWater water1 : yizhifu) {
+                            String bldh1 = water1.getJxbz();
+                            remarkService.deleteTjOrderDetailByjxbz(bldh1);
+                            tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh1);
+                            tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh1);
+                            transitionService.deleteTjOrderDetailByjxbz(bldh1);
+                            blService.remove(new LambdaQueryWrapper<TjProBl>().eq(TjProBl::getTjh, tjNum).eq(TjProBl::getBldh, bldh1));
+                            tjSamplingMapper.deleteByTjNumAndCusIdAndJxbzo(tjNum, order.getUserId(), bldh1);
+                        }
+                    }
+                }else return AjaxResult.error();
+            }
+        }
+        return null;
+    }
+
+    private AjaxResult zuofeiWeiZhifu(ArrayList<TjFlowingWater> weizhifu, TjCustomer tjCustomer, String apiUrl, String hospbm, TjOrder order,Boolean isDelete,String tjNum) {
+        if (!weizhifu.isEmpty()){
+            HashMap<String, Object> chexiaoMap = new HashMap<>();
+            chexiaoMap.put("pationId", tjCustomer.getPationId());
+            chexiaoMap.put("cardId", tjCustomer.getHisJzkh());
+            String feiyongList = weizhifu.stream().map(TjFlowingWater::getHisWaterId).collect(Collectors.joining(","));
+            chexiaoMap.put("feiYongIdList",feiyongList.trim().replaceAll(" ",""));
+
+            String post = HttpClientUtils.sendPost(apiUrl + "/api/his/"+ hospbm +"/revokeCost", chexiaoMap);
+            if (JSONUtil.parseObj(post).getStr("code").equals("200")) {
+                if (isDelete) {
+                    for (TjFlowingWater water : weizhifu) {
+                        String bldh = water.getJxbz();
+                        remarkService.deleteTjOrderDetailByjxbz(bldh);
+                        tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh);
+                        tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh);
+                        transitionService.deleteTjOrderDetailByjxbz(bldh);
+                        blService.remove(new LambdaQueryWrapper<TjProBl>().eq(TjProBl::getTjh, tjNum).eq(TjProBl::getBldh, bldh));
+                        tjSamplingMapper.deleteByTjNumAndCusIdAndJxbzo(tjNum, order.getUserId(), bldh);
+                    }
+                }
+            } else return AjaxResult.error();
+        }
+        return null;
+    }
+
     //    @Transactional(propagation =Propagation.REQUIRES_NEW)
     public void extracted(TjProBlDto dto, TjOrder order) {
         for (String bldh : dto.getBldhs()) {
diff --git a/ltkj-framework/src/main/java/com/ltkj/framework/config/SecurityConfig.java b/ltkj-framework/src/main/java/com/ltkj/framework/config/SecurityConfig.java
index f54dab5..97deb77 100644
--- a/ltkj-framework/src/main/java/com/ltkj/framework/config/SecurityConfig.java
+++ b/ltkj-framework/src/main/java/com/ltkj/framework/config/SecurityConfig.java
@@ -116,7 +116,7 @@
                 // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂�
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
-                .antMatchers("/jmreport/**","/lis/**","/pacs/**").anonymous()
+                .antMatchers("/jmreport/**","/lis/**","/pacs/**","/callBack/**").anonymous()
                 // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇�
                 .anyRequest().authenticated()
                 .and()
diff --git a/ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java b/ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java
index 9a08c56..1d9e1fd 100644
--- a/ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java
+++ b/ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java
@@ -21,7 +21,8 @@
                         "/cus/package/getPackageList",
                         "/cus/package/projectListByPacId/**",
                         "/cus/hospital/getHospList",
-                        "/lis/**","/api/His/**","/pacs/**"
+                        "/lis/**","/api/His/**","/pacs/**",
+                        "/callBack/**"
                 });
     }
 }
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/HisSyncDict.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/HisSyncDict.java
new file mode 100644
index 0000000..562c130
--- /dev/null
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/HisSyncDict.java
@@ -0,0 +1,55 @@
+package com.ltkj.hosp.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Data;
+
+/**
+ * his瀛楀吀鍚屾琛�
+ * @TableName his_sync_dict
+ */
+@TableName(value ="his_sync_dict")
+@Data
+public class HisSyncDict implements Serializable {
+    /**
+     * 缂栧彿
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 瀛楀吀鍙傛暟
+     */
+    private String dictName;
+
+    /**
+     * 鏄惁鍒嗛〉 0鍚�1鏄�
+     */
+    private Integer isLimit;
+
+    /**
+     * 璇锋眰鍦板潃
+     */
+    private String url;
+
+    /**
+     * 璇锋眰鍙傛暟
+     */
+    private String params;
+
+    /**
+     * 闄㈠尯id
+     */
+    private String hospId;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjCustomer.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjCustomer.java
index fb59dee..7e0992c 100644
--- a/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjCustomer.java
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjCustomer.java
@@ -333,6 +333,8 @@
 
     private String compName;
 
+    private String hisJzkh;
+
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
@@ -360,6 +362,7 @@
                 .append("dwPhone", getDwPhone())
                 .append("compId", getDictCompId())
                 .append("compName", getCompName())
+                .append("hisJzkh", getHisJzkh())
                 .toString();
     }
 }
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWater.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWater.java
index 1e9a5c2..dc93f04 100644
--- a/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWater.java
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWater.java
@@ -180,6 +180,16 @@
     @ApiModelProperty(value = "鍔犻」鏍囧織")
     private String jxbz;
 
+    /**
+     * 鏀惰垂id
+     */
+    private String hisWaterId;
+
+    /**
+     * 閫�璐筰d
+     */
+    private String hisTfWaterId;
+
 
     @Override
     public String toString() {
@@ -192,6 +202,7 @@
                 .append("updateBy", getUpdateBy())
                 .append("updateTime", getUpdateTime())
                 .append("deleted", getDeleted())
+                .append("hisWaterId", getHisWaterId())
                 .toString();
     }
 }
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWaterHis.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWaterHis.java
new file mode 100644
index 0000000..cf40db6
--- /dev/null
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWaterHis.java
@@ -0,0 +1,40 @@
+package com.ltkj.hosp.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Data;
+
+/**
+ * his璁㈠崟娴佹按鍏宠仈
+ * @TableName tj_flowing_water_his
+ */
+@TableName(value ="tj_flowing_water_his")
+@Data
+public class TjFlowingWaterHis implements Serializable {
+    /**
+     * 缂栧彿
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 鎬诲紑鍗昳d
+     */
+    private String parentId;
+
+    /**
+     * 褰撳墠椤圭洰璁㈠崟id
+     */
+    private String currentId;
+
+    /**
+     * his椤圭洰id
+     */
+    private String xmId;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/HisSyncDictMapper.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/HisSyncDictMapper.java
new file mode 100644
index 0000000..f5afcc7
--- /dev/null
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/HisSyncDictMapper.java
@@ -0,0 +1,18 @@
+package com.ltkj.hosp.mapper;
+
+import com.ltkj.hosp.domain.HisSyncDict;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author 10845
+* @description 閽堝琛ㄣ�恏is_sync_dict(his瀛楀吀鍚屾琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2024-12-23 10:58:51
+* @Entity com.ltkj.hosp.domain.HisSyncDict
+*/
+public interface HisSyncDictMapper extends BaseMapper<HisSyncDict> {
+
+}
+
+
+
+
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjFlowingWaterHisMapper.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjFlowingWaterHisMapper.java
new file mode 100644
index 0000000..3bc6196
--- /dev/null
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjFlowingWaterHisMapper.java
@@ -0,0 +1,18 @@
+package com.ltkj.hosp.mapper;
+
+import com.ltkj.hosp.domain.TjFlowingWaterHis;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author 10845
+* @description 閽堝琛ㄣ�恡j_flowing_water_his(his璁㈠崟娴佹按鍏宠仈)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2024-12-23 10:52:23
+* @Entity com.ltkj.hosp.domain.TjFlowingWaterHis
+*/
+public interface TjFlowingWaterHisMapper extends BaseMapper<TjFlowingWaterHis> {
+
+}
+
+
+
+
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjSamplingMapper.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjSamplingMapper.java
index 40e3b74..8204779 100644
--- a/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjSamplingMapper.java
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjSamplingMapper.java
@@ -143,6 +143,10 @@
     int deleteByTjNumAndCusIdAndJxbz(@Param("tjNum") String tjNum,@Param("userId") Long userId,@Param("ids")List<String> ids);
 
 
+    @Delete("DELETE FROM tj_sampling WHERE tj_num = #{tjNum} AND cus_id = #{userId} and jxbz = #{jxbz} ")
+    int deleteByTjNumAndCusIdAndJxbzo(@Param("tjNum") String tjNum,@Param("userId") Long userId,@Param("jxbz")String jxbz);
+
+
     @Select({"<script>","SELECT\n" +
             "  IFNULL(GROUP_CONCAT( aa.pro_name SEPARATOR ' ; ' ),NULL)\n" +
             "FROM\n" +
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/HisSyncDictService.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/HisSyncDictService.java
new file mode 100644
index 0000000..85019c8
--- /dev/null
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/HisSyncDictService.java
@@ -0,0 +1,13 @@
+package com.ltkj.hosp.service;
+
+import com.ltkj.hosp.domain.HisSyncDict;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author 10845
+* @description 閽堝琛ㄣ�恏is_sync_dict(his瀛楀吀鍚屾琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2024-12-23 10:58:51
+*/
+public interface HisSyncDictService extends IService<HisSyncDict> {
+
+}
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjAsyncService.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjAsyncService.java
index beb51f9..cdcc1f2 100644
--- a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjAsyncService.java
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjAsyncService.java
@@ -35,7 +35,7 @@
      void  updateOrdeltile2(TjOrderDetail tjOrderDetail, SysUser sysUser);
 
      //鍗曢」鏀惰垂
-     Boolean iundividualCharges(TjFlowingWater tjFlowingWater, TjOrder order, TjCustomer customer, SysUser sysUser);
+     Boolean iundividualCharges(TjFlowingWater tjFlowingWater, TjOrder order, TjCustomer customer, SysUser sysUser,String jxbz);
 
 
      //鍖荤敓妫�鏌ュ悜缂撳瓨涓坊鍔犳暟鎹�(鏁翠綋瀛樺叆)
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjFlowingWaterHisService.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjFlowingWaterHisService.java
new file mode 100644
index 0000000..5b6b5b1
--- /dev/null
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjFlowingWaterHisService.java
@@ -0,0 +1,13 @@
+package com.ltkj.hosp.service;
+
+import com.ltkj.hosp.domain.TjFlowingWaterHis;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author 10845
+* @description 閽堝琛ㄣ�恡j_flowing_water_his(his璁㈠崟娴佹按鍏宠仈)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2024-12-23 10:52:23
+*/
+public interface TjFlowingWaterHisService extends IService<TjFlowingWaterHis> {
+
+}
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/HisSyncDictServiceImpl.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/HisSyncDictServiceImpl.java
new file mode 100644
index 0000000..7c697b9
--- /dev/null
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/HisSyncDictServiceImpl.java
@@ -0,0 +1,22 @@
+package com.ltkj.hosp.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ltkj.hosp.domain.HisSyncDict;
+import com.ltkj.hosp.service.HisSyncDictService;
+import com.ltkj.hosp.mapper.HisSyncDictMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author 10845
+* @description 閽堝琛ㄣ�恏is_sync_dict(his瀛楀吀鍚屾琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2024-12-23 10:58:51
+*/
+@Service
+public class HisSyncDictServiceImpl extends ServiceImpl<HisSyncDictMapper, HisSyncDict>
+    implements HisSyncDictService{
+
+}
+
+
+
+
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjFlowingWaterHisServiceImpl.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjFlowingWaterHisServiceImpl.java
new file mode 100644
index 0000000..3a76843
--- /dev/null
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjFlowingWaterHisServiceImpl.java
@@ -0,0 +1,22 @@
+package com.ltkj.hosp.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ltkj.hosp.domain.TjFlowingWaterHis;
+import com.ltkj.hosp.service.TjFlowingWaterHisService;
+import com.ltkj.hosp.mapper.TjFlowingWaterHisMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author 10845
+* @description 閽堝琛ㄣ�恡j_flowing_water_his(his璁㈠崟娴佹按鍏宠仈)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2024-12-23 10:52:23
+*/
+@Service
+public class TjFlowingWaterHisServiceImpl extends ServiceImpl<TjFlowingWaterHisMapper, TjFlowingWaterHis>
+    implements TjFlowingWaterHisService{
+
+}
+
+
+
+
diff --git a/ltkj-hosp/src/main/resources/mapper/HisSyncDictMapper.xml b/ltkj-hosp/src/main/resources/mapper/HisSyncDictMapper.xml
new file mode 100644
index 0000000..eea368a
--- /dev/null
+++ b/ltkj-hosp/src/main/resources/mapper/HisSyncDictMapper.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ltkj.hosp.mapper.HisSyncDictMapper">
+
+    <resultMap id="BaseResultMap" type="com.ltkj.hosp.domain.HisSyncDict">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="dictName" column="dict_name" jdbcType="VARCHAR"/>
+            <result property="isLimit" column="is_limit" jdbcType="TINYINT"/>
+            <result property="url" column="url" jdbcType="VARCHAR"/>
+            <result property="params" column="params" jdbcType="VARCHAR"/>
+            <result property="hospId" column="hosp_id" jdbcType="VARCHAR"/>
+            <result property="remark" column="remark" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,dict_name,is_limit,
+        url,params,hosp_id,
+        remark
+    </sql>
+</mapper>
diff --git a/ltkj-hosp/src/main/resources/mapper/TjCustomerMapper.xml b/ltkj-hosp/src/main/resources/mapper/TjCustomerMapper.xml
index 8500345..59c1c3f 100644
--- a/ltkj-hosp/src/main/resources/mapper/TjCustomerMapper.xml
+++ b/ltkj-hosp/src/main/resources/mapper/TjCustomerMapper.xml
@@ -35,6 +35,7 @@
         <result property="pym" column="pym"/>
         <result property="dictCompId" column="dict_comp_id"/>
         <result property="compName" column="comp_name"/>
+        <result property="hisJzkh" column="his_jzkh"/>
     </resultMap>
 
     <sql id="selectTjCustomerVo">
@@ -65,7 +66,7 @@
                age_unit,
                career,
                dw_phone,
-               pym,dict_comp_id,comp_name
+               pym,dict_comp_id,comp_name,his_jzkh
         from tj_customer
     </sql>
 
@@ -130,6 +131,7 @@
             <if test="pym != null">pym,</if>
             <if test="dictCompId != null">dict_comp_id,</if>
             <if test="compName != null">comp_name,</if>
+            <if test="hisJzkh != null">his_jzkh,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="cusName != null and cusName != ''">#{cusName},</if>
@@ -161,6 +163,7 @@
             <if test="pym != null">#{pym},</if>
             <if test="dictCompId != null">#{dictCompId},</if>
             <if test="compName != null">#{compName},</if>
+            <if test="hisJzkh != null">#{hisJzkh},</if>
         </trim>
     </insert>
 
@@ -196,6 +199,7 @@
             <if test="pym != null">pym = #{pym},</if>
             <if test="dictCompId != null">dict_comp_id = #{dictCompId},</if>
             <if test="compName != null">comp_name = #{compName},</if>
+            <if test="hisJzkh != null">his_jzkh = #{hisJzkh},</if>
         </trim>
         where cus_id = #{cusId}
     </update>
diff --git a/ltkj-hosp/src/main/resources/mapper/TjFlowingWaterHisMapper.xml b/ltkj-hosp/src/main/resources/mapper/TjFlowingWaterHisMapper.xml
new file mode 100644
index 0000000..5be2aed
--- /dev/null
+++ b/ltkj-hosp/src/main/resources/mapper/TjFlowingWaterHisMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ltkj.hosp.mapper.TjFlowingWaterHisMapper">
+
+    <resultMap id="BaseResultMap" type="com.ltkj.hosp.domain.TjFlowingWaterHis">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="parentId" column="parent_id" jdbcType="VARCHAR"/>
+            <result property="currentId" column="current_id" jdbcType="VARCHAR"/>
+            <result property="xmId" column="xm_id" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,parent_id,current_id,xm_id
+    </sql>
+</mapper>
diff --git a/ltkj-hosp/src/main/resources/mapper/hosp/TjFlowingWaterMapper.xml b/ltkj-hosp/src/main/resources/mapper/hosp/TjFlowingWaterMapper.xml
index 3f97287..c2fb406 100644
--- a/ltkj-hosp/src/main/resources/mapper/hosp/TjFlowingWaterMapper.xml
+++ b/ltkj-hosp/src/main/resources/mapper/hosp/TjFlowingWaterMapper.xml
@@ -22,6 +22,8 @@
         <result property="refundTime" column="refund_time"/>
         <result property="refundPrice" column="refund_price"/>
         <result property="deleted" column="deleted"/>
+        <result property="hisWaterId" column="his_water_id"/>
+        <result property="hisTfWaterId" column="his_tf_water_id"/>
     </resultMap>
 
     <sql id="selectTjFlowingWaterVo">
@@ -41,7 +43,7 @@
                refund_person_id,
                refund_time,
                refund_price,
-               deleted
+               deleted,his_water_id,his_tf_water_id
         from tj_flowing_water
     </sql>
 
@@ -75,6 +77,8 @@
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="deleted != null">deleted,</if>
+            <if test="hisWaterId != null">his_water_id,</if>
+            <if test="hisTfWaterId != null">his_tf_water_id,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="tjSerialNumber != null">#{tj_serial_number},</if>
@@ -90,6 +94,8 @@
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="deleted != null">#{deleted},</if>
+            <if test="hisWaterId != null">#{hisWaterId},</if>
+            <if test="hisTfWaterId != null">#{hisTfWaterId},</if>
         </trim>
     </insert>
 
@@ -108,6 +114,8 @@
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="deleted != null">deleted = #{deleted},</if>
+            <if test="hisWaterId != null">his_water_id = #{hisWaterId},</if>
+            <if test="hisTfWaterId != null">his_tf_water_id = #{hisTfWaterId},</if>
         </trim>
         where tj_serial_number = #{tj_serial_number}
     </update>

--
Gitblit v1.8.0