From ec6b75cfebe87ad118aba001708e686bf28e2fde Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 03 八月 2026 20:57:04 +0800
Subject: [PATCH] 1.新增同德药品采集、宣教功能 2.处理新华采集BUG 3.新增service_subtask的院区ID 4.采集同德的入院申请单信息 5.给出院表新增药品字段、入院申请单字段

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java   |  206 ++++++
 smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java                                  |   23 
 smartor/src/main/resources/mapper/smartor/ServiceTaskmedicalMapper.xml                       |  326 +++++++++++
 smartor/src/main/java/com/smartor/mapper/ServiceTaskmedicalMapper.java                       |   64 ++
 smartor/src/main/java/com/smartor/domain/HeTaskSingle.java                                   |    2 
 smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java                 |   14 
 smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java                  |   73 +
 smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml                             |    6 
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java                |  102 +++
 smartor/src/main/java/com/smartor/domain/ServiceTaskmedical.java                             |  164 +++++
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java          |  351 ++++++++---
 smartor/src/main/java/com/smartor/domain/DTO/PatMedInhospDTO.java                            |   22 
 smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java           |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskmedicalController.java |  103 +++
 smartor/src/main/java/com/smartor/domain/SvyTaskSingle.java                                  |    2 
 smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java                        |    4 
 smartor/src/main/java/com/smartor/domain/SvyTaskSingleVO.java                                |    2 
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml                           |    5 
 smartor/src/main/java/com/smartor/service/impl/XHGatherPatArchiveServiceImpl.java            |    8 
 smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java                                 |   22 
 smartor/src/main/resources/mapper/smartor/SvyTaskSingleMapper.xml                            |   12 
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java                                 |   28 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java     |   11 
 smartor/src/main/java/com/smartor/domain/PatMedInhosp.java                                   |   22 
 smartor/src/main/java/com/smartor/service/IServiceTaskmedicalService.java                    |   62 ++
 smartor/src/main/java/com/smartor/service/impl/ServiceTaskmedicalServiceImpl.java            |   97 +++
 26 files changed, 1,550 insertions(+), 185 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
index 4e18fcc..5608d92 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -457,7 +457,8 @@
         SysUser user = getLoginUser().getUser();
         if (ObjectUtils.isNotEmpty(user)) serviceSubtask.setOrgid(user.getOrgid());
         if (ObjectUtils.isNotEmpty(user)) serviceSubtask.setCampusid(user.getCampusid());
-        return toAjax(serviceSubtaskService.insertServiceSubtask(serviceSubtask));
+        serviceSubtask.setCampusid(user.getCampusid());
+        return success(serviceSubtaskService.insertServiceSubtask(serviceSubtask));
     }
 
     @ApiOperation("鎮h�呭啀娆¢殢璁�")
@@ -584,7 +585,7 @@
                         sysUserWard.setOrgid(user.getOrgid());
                         sysUserWard.setDeptType("2");
                         List<SysUserDept> wardList = sysUserDeptService.selectSysUserDeptList(sysUserWard);
-                        if(CollectionUtils.isNotEmpty(wardList)) {
+                        if (CollectionUtils.isNotEmpty(wardList)) {
                             leavehospitaldistrictcodes = wardList.stream().map(SysUserDept::getDeptCode).collect(Collectors.toList());
                         }
                         serviceSubtaskCountReq.setLeavehospitaldistrictcodes(leavehospitaldistrictcodes);
@@ -598,7 +599,7 @@
                         sysUserDept.setOrgid(user.getOrgid());
                         sysUserDept.setDeptType("1");
                         List<SysUserDept> deptList = sysUserDeptService.selectSysUserDeptList(sysUserDept);
-                        if(CollectionUtils.isNotEmpty(deptList)){
+                        if (CollectionUtils.isNotEmpty(deptList)) {
                             deptCodes = deptList.stream().map(SysUserDept::getDeptCode).collect(Collectors.toList());
                         }
                         serviceSubtaskCountReq.setDeptcodes(deptCodes);
@@ -932,10 +933,10 @@
     @PostMapping(value = "/goSfRelay")
     public AjaxResult goSfRelay(@RequestParam("taskId") Long taskId, @RequestParam("deptcode") String deptcode, @RequestParam("leavehospitaldistrictcode") String leavehospitaldistrictcode) {
         String url = localIP + ":" + req_path + "/SfRelay?taskid=" + taskId;
-        if(StringUtils.isNotEmpty(deptcode)){
+        if (StringUtils.isNotEmpty(deptcode)) {
             url = url + "&deptcode=" + deptcode;
         }
-        if(StringUtils.isNotEmpty(leavehospitaldistrictcode)){
+        if (StringUtils.isNotEmpty(leavehospitaldistrictcode)) {
             url = url + "&leavehospitaldistrictcode=" + leavehospitaldistrictcode;
         }
         return AjaxResult.success(url);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskmedicalController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskmedicalController.java
new file mode 100644
index 0000000..c0411b5
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskmedicalController.java
@@ -0,0 +1,103 @@
+package com.ruoyi.web.controller.smartor;
+
+import com.ruoyi.common.annotation.AddOrgId;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.smartor.domain.ServiceTaskmedical;
+import com.smartor.service.IServiceTaskmedicalService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 浠诲姟鑽搧鍏宠仈Controller
+ *
+ * @author lihu
+ * @date 2026-07-29
+ */
+@Api("浠诲姟鑽搧鍏宠仈")
+@RestController
+@RequestMapping("/smartor/taskmedical")
+public class ServiceTaskmedicalController extends BaseController {
+    @Autowired
+    private IServiceTaskmedicalService serviceTaskmedicalService;
+
+    /**
+     * 鏌ヨ浠诲姟鑽搧鍏宠仈鍒楄〃
+     */
+    @ApiOperation("鏌ヨ浠诲姟鑽搧鍏宠仈鍒楄〃")
+    //@PreAuthorize("@ss.hasPermi('smartor:taskmedical:list')")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody ServiceTaskmedical serviceTaskmedical) {
+        startPage();
+        List<ServiceTaskmedical> list = serviceTaskmedicalService.selectServiceTaskmedicalList(serviceTaskmedical);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭浠诲姟鑽搧鍏宠仈鍒楄〃
+     */
+    @ApiOperation("瀵煎嚭浠诲姟鑽搧鍏宠仈鍒楄〃")
+    //@PreAuthorize("@ss.hasPermi('smartor:taskmedical:export')")
+    @Log(title = "浠诲姟鑽搧鍏宠仈", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ServiceTaskmedical serviceTaskmedical) {
+        List<ServiceTaskmedical> list = serviceTaskmedicalService.selectServiceTaskmedicalList(serviceTaskmedical);
+        ExcelUtil<ServiceTaskmedical> util = new ExcelUtil<ServiceTaskmedical>(ServiceTaskmedical.class);
+        util.exportExcel(response, list, "浠诲姟鑽搧鍏宠仈鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇浠诲姟鑽搧鍏宠仈璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇浠诲姟鑽搧鍏宠仈璇︾粏淇℃伅")
+    //@PreAuthorize("@ss.hasPermi('smartor:taskmedical:query')")
+    @GetMapping(value = "/getInfo/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(serviceTaskmedicalService.selectServiceTaskmedicalById(id));
+    }
+
+    /**
+     * 鏂板浠诲姟鑽搧鍏宠仈
+     */
+    @ApiOperation("鏂板浠诲姟鑽搧鍏宠仈")
+    //@PreAuthorize("@ss.hasPermi('smartor:taskmedical:add')")
+    @Log(title = "浠诲姟鑽搧鍏宠仈", businessType = BusinessType.INSERT)
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody ServiceTaskmedical serviceTaskmedical) {
+        return toAjax(serviceTaskmedicalService.insertServiceTaskmedical(serviceTaskmedical));
+    }
+
+    /**
+     * 淇敼浠诲姟鑽搧鍏宠仈
+     */
+    @ApiOperation("淇敼浠诲姟鑽搧鍏宠仈")
+    //@PreAuthorize("@ss.hasPermi('smartor:taskmedical:edit')")
+    @Log(title = "浠诲姟鑽搧鍏宠仈", businessType = BusinessType.UPDATE)
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody ServiceTaskmedical serviceTaskmedical) {
+        return toAjax(serviceTaskmedicalService.updateServiceTaskmedical(serviceTaskmedical));
+    }
+
+    /**
+     * 鍒犻櫎浠诲姟鑽搧鍏宠仈
+     */
+    @ApiOperation("鍒犻櫎浠诲姟鑽搧鍏宠仈")
+    //@PreAuthorize("@ss.hasPermi('smartor:taskmedical:remove')")
+    @Log(title = "浠诲姟鑽搧鍏宠仈", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(serviceTaskmedicalService.deleteServiceTaskmedicalByIds(ids));
+    }
+}
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
index befb224..8456a81 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -635,13 +635,31 @@
         ServiceSLTDInhospReqVO serviceSLTDInhospReqVO = new ServiceSLTDInhospReqVO();
         serviceSLTDInhospReqVO.setOrgId("20001001");
         Long outpPage = 1L;
+        int totalCount = 0;  // 缁熻鎬诲叡閲囬泦鐨勮嵂鍝佹暟閲�
+
         while (true) {
             serviceSLTDInhospReqVO.setCurrent(outpPage);
             serviceSLTDInhospReqVO.setSize(OUTP_PAGE_SIZE);
-            log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滆嵂鍝佹暟鎹�濋噰闆嗙{}椤垫暟鎹�", outpPage);
-            Boolean b = serviceSLTDHealthcareRecordService.queryMedicationItemList(serviceSLTDInhospReqVO);
-            log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滆嵂鍝佹暟鎹�濋噰闆嗙粨鏋滐細{}", b);
-            outpPage++;
+            log.info("銆恉ealHisData銆戠渷绔嬪悓寰穃"鑽搧鏁版嵁\"閲囬泦绗瑊}椤垫暟鎹�", outpPage);
+
+            try {
+                Integer fetchedCount = serviceSLTDHealthcareRecordService.queryMedicationItemList(serviceSLTDInhospReqVO);
+                log.info("銆恉ealHisData銆戠渷绔嬪悓寰穃"鑽搧鏁版嵁\"绗瑊}椤甸噰闆嗗埌{}鏉¤褰�", outpPage, fetchedCount);
+
+                totalCount += fetchedCount != null ? fetchedCount : 0;
+
+                // 濡傛灉杩斿洖鐨勬暟鎹噺灏忎簬 pageSize锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤典簡锛岄��鍑哄惊鐜�
+                if (fetchedCount == null || fetchedCount < OUTP_PAGE_SIZE) {
+                    log.info("銆恉ealHisData銆戠渷绔嬪悓寰穃"鑽搧鏁版嵁\"閲囬泦瀹屾垚锛屾�婚〉鏁�:{}, 鎬昏{}鏉¤褰�", outpPage, totalCount);
+                    break;
+                }
+
+                outpPage++;
+            } catch (Exception e) {
+                log.error("銆恉ealHisData銆戠渷绔嬪悓寰穃"鑽搧鏁版嵁\"绗瑊}椤甸噰闆嗗け璐�", outpPage, e);
+                // 鍑洪敊鏃朵篃鍙互閫夋嫨閫�鍑烘垨缁х画锛岃繖閲岄�夋嫨閫�鍑洪伩鍏嶆棤闄愰噸璇�
+                break;
+            }
         }
     }
 
@@ -686,7 +704,7 @@
     public void dealHisData2() {
         //灏嗘偅鑰呬俊鎭�佸嚭鍏ラ櫌鏁版嵁鍏ㄩ儴閲囬泦
         // 鎸囧畾鐨勫紑濮嬫棩鏈�
-        LocalDate endDate = LocalDate.of(2025, 3, 3);
+        LocalDate endDate = LocalDate.of(2026, 7, 6);
         // 褰撳墠鏃ユ湡
         LocalDate currentDate = LocalDate.now();
         // 瀹氫箟鏃ユ湡鏍煎紡
diff --git a/smartor/src/main/java/com/smartor/domain/DTO/PatMedInhospDTO.java b/smartor/src/main/java/com/smartor/domain/DTO/PatMedInhospDTO.java
index 3277e05..294df40 100644
--- a/smartor/src/main/java/com/smartor/domain/DTO/PatMedInhospDTO.java
+++ b/smartor/src/main/java/com/smartor/domain/DTO/PatMedInhospDTO.java
@@ -540,4 +540,26 @@
     @ApiModelProperty("'婊℃剰搴︽爣璇嗭細0鏈仛婊″害   1浣忛櫌婊″害搴�  2鍑洪櫌婊℃剰搴�  锛堝鏋滄棦瑕佸仛浣忛櫌锛屽張瑕佸仛鍑洪櫌锛屽垯鐢ㄢ��,鈥濆垎鍓诧紝渚嬪1,2锛�")
     @Excel(name = " '婊℃剰搴︽爣璇嗭細0鏈仛婊″害   1浣忛櫌婊″害搴�  2鍑洪櫌婊℃剰搴�  锛堝鏋滄棦瑕佸仛浣忛櫌锛屽張瑕佸仛鍑洪櫌锛屽垯鐢ㄢ��,鈥濆垎鍓诧紝渚嬪1,2锛� ")
     private String inhospMydFlag;
+
+    /**
+     * 鑽搧缂栫爜,澶氫釜鐢�,鍒嗗壊
+     */
+    @ApiModelProperty("鑽搧缂栫爜,澶氫釜鐢�,鍒嗗壊")
+    @Excel(name = "鑽搧缂栫爜,澶氫釜鐢�,鍒嗗壊")
+    private String medicalCode;
+
+    /**
+     * 鑽搧鍚嶇О,澶氫釜鐢�,鍒嗗壊
+     */
+    @ApiModelProperty("鑽搧鍚嶇О,澶氫釜鐢�,鍒嗗壊")
+    @Excel(name = "鑽搧鍚嶇О,澶氫釜鐢�,鍒嗗壊")
+    private String medicalName;
+
+    /**
+     * 鑽搧鍏徃,澶氫釜鐢�,鍒嗗壊
+     */
+    @ApiModelProperty("鑽搧鍏徃,澶氫釜鐢�,鍒嗗壊")
+    @Excel(name = "鑽搧鍏徃,澶氫釜鐢�,鍒嗗壊")
+    private String medicalCompany;
+
 }
diff --git a/smartor/src/main/java/com/smartor/domain/HeTaskSingle.java b/smartor/src/main/java/com/smartor/domain/HeTaskSingle.java
index 7f9f1ce..4091509 100644
--- a/smartor/src/main/java/com/smartor/domain/HeTaskSingle.java
+++ b/smartor/src/main/java/com/smartor/domain/HeTaskSingle.java
@@ -266,7 +266,7 @@
      */
     @Excel(name = "  鍙戦�佷汉璇︽儏")
     @ApiModelProperty(value = "鍙戦�佷汉璇︽儏")
-    private String senderdetail;
+    private String hospitaldistrictname;
 
     /**
      * 寰俊
diff --git a/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java b/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java
index 1e62b81..1b59924 100644
--- a/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java
+++ b/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java
@@ -550,4 +550,26 @@
     @ApiModelProperty("'婊℃剰搴︽爣璇嗭細0鏈仛婊″害   1浣忛櫌婊″害搴�  2鍑洪櫌婊℃剰搴�  锛堝鏋滄棦瑕佸仛浣忛櫌锛屽張瑕佸仛鍑洪櫌锛屽垯鐢ㄢ��,鈥濆垎鍓诧紝渚嬪1,2锛�")
     @Excel(name = " '婊℃剰搴︽爣璇嗭細0鏈仛婊″害   1浣忛櫌婊″害搴�  2鍑洪櫌婊℃剰搴�  锛堝鏋滄棦瑕佸仛浣忛櫌锛屽張瑕佸仛鍑洪櫌锛屽垯鐢ㄢ��,鈥濆垎鍓诧紝渚嬪1,2锛� ")
     private String inhospMydFlag;
+
+    /**
+     * 鑽搧缂栫爜,澶氫釜鐢�,鍒嗗壊
+     */
+    @ApiModelProperty("鑽搧缂栫爜,澶氫釜鐢�,鍒嗗壊")
+    @Excel(name = "鑽搧缂栫爜,澶氫釜鐢�,鍒嗗壊")
+    private String medicalCode;
+
+    /**
+     * 鑽搧鍚嶇О,澶氫釜鐢�,鍒嗗壊
+     */
+    @ApiModelProperty("鑽搧鍚嶇О,澶氫釜鐢�,鍒嗗壊")
+    @Excel(name = "鑽搧鍚嶇О,澶氫釜鐢�,鍒嗗壊")
+    private String medicalName;
+
+    /**
+     * 鑽搧鍏徃,澶氫釜鐢�,鍒嗗壊
+     */
+    @ApiModelProperty("鑽搧鍏徃,澶氫釜鐢�,鍒嗗壊")
+    @Excel(name = "鑽搧鍏徃,澶氫釜鐢�,鍒嗗壊")
+    private String medicalCompany;
+
 }
diff --git a/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java b/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java
index 0d2fa40..251a862 100644
--- a/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java
+++ b/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java
@@ -435,5 +435,27 @@
     @ApiModelProperty("'婊℃剰搴︽爣璇嗭細0鏈仛婊″害   1浣忛櫌婊″害搴�  2鍑洪櫌婊℃剰搴�  锛堝鏋滄棦瑕佸仛浣忛櫌锛屽張瑕佸仛鍑洪櫌锛屽垯鐢ㄢ��,鈥濆垎鍓诧紝渚嬪1,2锛�")
     @Excel(name = " '婊℃剰搴︽爣璇嗭細0鏈仛婊″害   1浣忛櫌婊″害搴�  2鍑洪櫌婊℃剰搴�  锛堝鏋滄棦瑕佸仛浣忛櫌锛屽張瑕佸仛鍑洪櫌锛屽垯鐢ㄢ��,鈥濆垎鍓诧紝渚嬪1,2锛� ")
     private String inhospMydFlag;
+
+    /**
+     * 鑽搧缂栫爜,澶氫釜鐢�,鍒嗗壊
+     */
+    @ApiModelProperty("鑽搧缂栫爜,澶氫釜鐢�,鍒嗗壊")
+    @Excel(name = "鑽搧缂栫爜,澶氫釜鐢�,鍒嗗壊")
+    private String medicalCode;
+
+    /**
+     * 鑽搧鍚嶇О,澶氫釜鐢�,鍒嗗壊
+     */
+    @ApiModelProperty("鑽搧鍚嶇О,澶氫釜鐢�,鍒嗗壊")
+    @Excel(name = "鑽搧鍚嶇О,澶氫釜鐢�,鍒嗗壊")
+    private String medicalName;
+
+    /**
+     * 鑽搧鍏徃,澶氫釜鐢�,鍒嗗壊
+     */
+    @ApiModelProperty("鑽搧鍏徃,澶氫釜鐢�,鍒嗗壊")
+    @Excel(name = "鑽搧鍏徃,澶氫釜鐢�,鍒嗗壊")
+    private String medicalCompany;
+
 }
 
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java b/smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java
index ec6e65c..ed1cb5f 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java
@@ -414,6 +414,27 @@
     private String icd10name;
 
     /**
+     * 鑽搧缂栫爜
+     */
+    @ApiModelProperty("鑽搧缂栫爜")
+    @Excel(name = "鑽搧缂栫爜")
+    private String medicalCode;
+
+    /**
+     * 鑽搧鍘傚
+     */
+    @ApiModelProperty("鑽搧鍘傚")
+    @Excel(name = "鑽搧鍘傚")
+    private String medicalCompany;
+
+    /**
+     * 鐤剧梾鍚嶇О
+     */
+    @ApiModelProperty("鑽搧鍚嶇О")
+    @Excel(name = "鑽搧鍚嶇О")
+    private String medicalName;
+
+    /**
      * 鎵嬫湳缂栫爜
      */
     @ApiModelProperty("鎵嬫湳缂栫爜")
@@ -436,7 +457,7 @@
     /**
      * 閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷銆�5銆佹寜浠诲姟缁�
      */
-    @ApiModelProperty("閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷銆�5銆佹寜浠诲姟缁�")
+    @ApiModelProperty("閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷銆�5銆佹寜浠诲姟缁�  6.鎸夎嵂鍝佺紪鐮�")
     @Excel(name = "閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷銆�5銆佹寜浠诲姟缁�")
     private String appltype;
 
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceTaskmedical.java b/smartor/src/main/java/com/smartor/domain/ServiceTaskmedical.java
new file mode 100644
index 0000000..c664243
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/ServiceTaskmedical.java
@@ -0,0 +1,164 @@
+package com.smartor.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 浠诲姟鑽搧鍏宠仈瀵硅薄 service_taskmedical
+ *
+ * @author lihu
+ * @date 2026-07-29
+ */
+@Data
+@ApiModel("浠诲姟鑽搧鍏宠仈")
+public class ServiceTaskmedical extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鑷ID
+     */
+    @ApiModelProperty("鑷ID")
+    //鏁版嵁搴撹嚜澧炴敼鎴怈TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鍖婚櫌鏈烘瀯ID
+     */
+    @ApiModelProperty("鍖婚櫌鏈烘瀯ID")
+    @Excel(name = "鍖婚櫌鏈烘瀯ID")
+    private String orgid;
+
+    /**
+     * 浠诲姟id
+     */
+    @ApiModelProperty("浠诲姟id")
+    @Excel(name = "浠诲姟id")
+    private Long taskId;
+
+    /**
+     * 浠诲姟鍚嶇О
+     */
+    @ApiModelProperty("浠诲姟鍚嶇О")
+    @Excel(name = "浠诲姟鍚嶇О")
+    private String taskName;
+
+    /**
+     * 鏄惁鏄暱鏈熸ā鏉匡細  0锛氫笉鏄�    1锛氭槸
+     */
+    @ApiModelProperty("鏄惁鏄暱鏈熸ā鏉匡細  0锛氫笉鏄�    1锛氭槸")
+    @Excel(name = "鏄惁鏄暱鏈熸ā鏉匡細  0锛氫笉鏄�    1锛氭槸")
+    private Long longtask;
+
+    /**
+     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)
+     */
+    @ApiModelProperty("鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)")
+    @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)")
+    private String serviceType;
+
+    /**
+     * 鐤剧梾id
+     */
+    @ApiModelProperty("鐤剧梾id")
+    @Excel(name = "鐤剧梾id")
+    private Long icd10id;
+
+    /**
+     * 鑽搧缂栫爜
+     */
+    @ApiModelProperty("鑽搧缂栫爜")
+    @Excel(name = "鑽搧缂栫爜")
+    private String medicalCode;
+
+    /**
+     * 鑽搧鍚嶇О
+     */
+    @ApiModelProperty("鑽搧鍚嶇О")
+    @Excel(name = "鑽搧鍚嶇О")
+    private String medicalName;
+
+    /**
+     * 鑽搧鍘傚
+     */
+    @ApiModelProperty("鑽搧鍘傚")
+    @Excel(name = "鑽搧鍘傚")
+    private String medicalCompany;
+
+    /**
+     * 鍒犻櫎鏍囧織锛�0锛氭湭鍒犻櫎 1锛氬凡鍒犻櫎锛�
+     */
+    @ApiModelProperty("鍒犻櫎鏍囧織锛�0锛氭湭鍒犻櫎 1锛氬凡鍒犻櫎锛�")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囧織锛�0锛氭湭涓婁紶 1锛氬凡涓婁紶锛�
+     */
+    @ApiModelProperty("涓婁紶鏍囧織锛�0锛氭湭涓婁紶 1锛氬凡涓婁紶锛�")
+    @Excel(name = "涓婁紶鏍囧織", readConverterExp = "0=锛氭湭涓婁紶,1=锛氬凡涓婁紶")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @ApiModelProperty("涓婁紶鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "涓婁紶鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date uploadTime;
+
+    /**
+     * GUID
+     */
+    @ApiModelProperty("GUID")
+    @Excel(name = "GUID")
+    private String guid;
+
+    /**
+     * 鐖禛UID
+     */
+    @ApiModelProperty("鐖禛UID")
+    @Excel(name = "鐖禛UID")
+    private String pguid;
+
+    /**
+     * 鐖禝D
+     */
+    @ApiModelProperty("鐖禝D")
+    @Excel(name = "鐖禝D")
+    private Long pid;
+
+    /**
+     * 鐥呭尯缂栧彿
+     */
+    @ApiModelProperty("鐥呭尯缂栧彿")
+    @Excel(name = "鐥呭尯缂栧彿")
+    private String wardCode;
+
+    /**
+     * 鐥呭尯鍚嶇О
+     */
+    @ApiModelProperty("鐥呭尯鍚嶇О")
+    @Excel(name = "鐥呭尯鍚嶇О")
+    private String wardName;
+
+    /**
+     * 绉戝缂栧彿
+     */
+    @ApiModelProperty("绉戝缂栧彿")
+    @Excel(name = "绉戝缂栧彿")
+    private String deptCode;
+
+    /**
+     * 绉戝鍚嶇О
+     */
+    @ApiModelProperty("绉戝鍚嶇О")
+    @Excel(name = "绉戝鍚嶇О")
+    private String deptName;
+
+}
+
diff --git a/smartor/src/main/java/com/smartor/domain/SvyTaskSingle.java b/smartor/src/main/java/com/smartor/domain/SvyTaskSingle.java
index 8060c2a..16ebc71 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyTaskSingle.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyTaskSingle.java
@@ -80,7 +80,7 @@
      */
     @Excel(name = "  鍙戦�佷汉璇︽儏")
     @ApiModelProperty(value = "鍙戦�佷汉璇︽儏")
-    private String senderdetail;
+    private String hospitaldistrictname;
 
     /**
      * 浠诲姟绫诲瀷(0閫氱煡銆�1瀹f暀銆�2闂ㄨ瘖銆�3鍑洪櫌銆�4澶嶈瘖銆�5浣撴銆�6闂嵎銆�7鍖绘妧鈥︹��)
diff --git a/smartor/src/main/java/com/smartor/domain/SvyTaskSingleVO.java b/smartor/src/main/java/com/smartor/domain/SvyTaskSingleVO.java
index d7ed398..a0092f6 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyTaskSingleVO.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyTaskSingleVO.java
@@ -80,7 +80,7 @@
      */
     @Excel(name = "  鍙戦�佷汉璇︽儏")
     @ApiModelProperty(value = "鍙戦�佷汉璇︽儏")
-    private String senderdetail;
+    private String hospitaldistrictname;
 
     /**
      * 浠诲姟绫诲瀷(0閫氱煡銆�1瀹f暀銆�2闂ㄨ瘖銆�3鍑洪櫌銆�4澶嶈瘖銆�5浣撴銆�6闂嵎銆�7鍖绘妧鈥︹��)
diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceTaskmedicalMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceTaskmedicalMapper.java
new file mode 100644
index 0000000..bfe24d8
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/ServiceTaskmedicalMapper.java
@@ -0,0 +1,64 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.ServiceTaskmedical;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 浠诲姟鑽搧鍏宠仈Mapper鎺ュ彛
+ *
+ * @author lihu
+ * @date 2026-07-29
+ */
+@Mapper
+public interface ServiceTaskmedicalMapper
+{
+    /**
+     * 鏌ヨ浠诲姟鑽搧鍏宠仈
+     *
+     * @param id 浠诲姟鑽搧鍏宠仈涓婚敭
+     * @return 浠诲姟鑽搧鍏宠仈
+     */
+    public ServiceTaskmedical selectServiceTaskmedicalById(Long id);
+
+    /**
+     * 鏌ヨ浠诲姟鑽搧鍏宠仈鍒楄〃
+     *
+     * @param serviceTaskmedical 浠诲姟鑽搧鍏宠仈
+     * @return 浠诲姟鑽搧鍏宠仈闆嗗悎
+     */
+    public List<ServiceTaskmedical> selectServiceTaskmedicalList(ServiceTaskmedical serviceTaskmedical);
+
+    /**
+     * 鏂板浠诲姟鑽搧鍏宠仈
+     *
+     * @param serviceTaskmedical 浠诲姟鑽搧鍏宠仈
+     * @return 缁撴灉
+     */
+    public int insertServiceTaskmedical(ServiceTaskmedical serviceTaskmedical);
+
+    /**
+     * 淇敼浠诲姟鑽搧鍏宠仈
+     *
+     * @param serviceTaskmedical 浠诲姟鑽搧鍏宠仈
+     * @return 缁撴灉
+     */
+    public int updateServiceTaskmedical(ServiceTaskmedical serviceTaskmedical);
+
+    /**
+     * 鍒犻櫎浠诲姟鑽搧鍏宠仈
+     *
+     * @param id 浠诲姟鑽搧鍏宠仈涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteServiceTaskmedicalById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎浠诲姟鑽搧鍏宠仈
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteServiceTaskmedicalByIds(Long[] ids);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java b/smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java
index 666e059..797f264 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java
@@ -44,9 +44,9 @@
      * 閲囬泦鍦ㄩ櫌鎮h�呯敤鑽俊鎭�
      *
      * @param reqVO 鏌ヨ璇锋眰鍙傛暟
-     * @return 鑽搧鍒楄〃
+     * @return 瀹為檯鑾峰彇鍒扮殑鑽搧鏁版嵁鏉℃暟
      */
-    Boolean queryMedicationItemList(ServiceSLTDInhospReqVO reqVO);
+    Integer queryMedicationItemList(ServiceSLTDInhospReqVO reqVO);
 
     /**
      * 閲囬泦鍖婚櫌鐢ㄦ埛淇℃伅
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
index 2134e3d..e7f59c0 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -62,7 +62,7 @@
      * @param ServiceSubtask 鍗曚竴浠诲姟锛堥殢璁匡級
      * @return 缁撴灉
      */
-    public int insertServiceSubtask(ServiceSubtask ServiceSubtask);
+    public Map<String, Object> insertServiceSubtask(ServiceSubtask ServiceSubtask);
 
     /**
      * 鍐嶆鏂板鍗曚竴浠诲姟锛堥殢璁匡級
@@ -82,6 +82,7 @@
 
     /**
      * 瀛愪换鍔℃ā鏉夸慨鏀�
+     *
      * @param serviceSubtaskTemplateVO
      * @return
      */
@@ -194,6 +195,7 @@
 
     /**
      * 缁熻闂鐨勯�夐」鐨勭櫨鍒嗘瘮
+     *
      * @param taskIds
      * @return
      */
diff --git a/smartor/src/main/java/com/smartor/service/IServiceTaskmedicalService.java b/smartor/src/main/java/com/smartor/service/IServiceTaskmedicalService.java
new file mode 100644
index 0000000..e4b8852
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IServiceTaskmedicalService.java
@@ -0,0 +1,62 @@
+package com.smartor.service;
+
+import com.smartor.domain.ServiceTaskmedical;
+
+import java.util.List;
+
+/**
+ * 浠诲姟鑽搧鍏宠仈Service鎺ュ彛
+ *
+ * @author lihu
+ * @date 2026-07-29
+ */
+public interface IServiceTaskmedicalService
+{
+    /**
+     * 鏌ヨ浠诲姟鑽搧鍏宠仈
+     *
+     * @param id 浠诲姟鑽搧鍏宠仈涓婚敭
+     * @return 浠诲姟鑽搧鍏宠仈
+     */
+    public ServiceTaskmedical selectServiceTaskmedicalById(Long id);
+
+    /**
+     * 鏌ヨ浠诲姟鑽搧鍏宠仈鍒楄〃
+     *
+     * @param serviceTaskmedical 浠诲姟鑽搧鍏宠仈
+     * @return 浠诲姟鑽搧鍏宠仈闆嗗悎
+     */
+    public List<ServiceTaskmedical> selectServiceTaskmedicalList(ServiceTaskmedical serviceTaskmedical);
+
+    /**
+     * 鏂板浠诲姟鑽搧鍏宠仈
+     *
+     * @param serviceTaskmedical 浠诲姟鑽搧鍏宠仈
+     * @return 缁撴灉
+     */
+    public int insertServiceTaskmedical(ServiceTaskmedical serviceTaskmedical);
+
+    /**
+     * 淇敼浠诲姟鑽搧鍏宠仈
+     *
+     * @param serviceTaskmedical 浠诲姟鑽搧鍏宠仈
+     * @return 缁撴灉
+     */
+    public int updateServiceTaskmedical(ServiceTaskmedical serviceTaskmedical);
+
+    /**
+     * 鎵归噺鍒犻櫎浠诲姟鑽搧鍏宠仈
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑浠诲姟鑽搧鍏宠仈涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteServiceTaskmedicalByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎浠诲姟鑽搧鍏宠仈淇℃伅
+     *
+     * @param id 浠诲姟鑽搧鍏宠仈涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteServiceTaskmedicalById(Long id);
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
index 46a1457..4e6ad83 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -56,7 +56,7 @@
     @Autowired
     private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
     @Autowired
-    private PatMedOperationMapper patMedOperationMapper;
+    private ServiceTaskmedicalMapper serviceTaskmedicalMapper;
     @Autowired
     private PatMedOperationItemMapper patMedOperationItemMapper;
     @Autowired
@@ -256,17 +256,18 @@
 
     @Override
     public int dealOutHospInfo(String config) {
+        PatMedInhosp pmks = new PatMedInhosp();
+        pmks.setDeptcheckFlag("0");
+        pmks.setInhospstate("1");
+        pmks.setFuflag("1");
+        List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(pmks);
+
         //1.鍏ラ櫌瀹f暀
         String helibrarySwitch = iSysConfigService.selectConfigByKey("in.helibrary.switch");
         if (StringUtils.isNotEmpty(helibrarySwitch) && "2".equals(helibrarySwitch)) {
-            PatMedInhosp inhosp = new PatMedInhosp();
-            inhosp.setInDeptcheckFlag("0");
-            inhosp.setInhospstate("0");
-            inhosp.setFuflag("1");
-            List<PatMedInhosp> inPatMedInhosps = patMedInhospMapper.selectPatMedInhospList(inhosp);
 
             //1.1 绉戝
-            for (PatMedInhosp patMedInhosp1 : inPatMedInhosps) {
+            for (PatMedInhosp patMedInhosp1 : patMedInhosps) {
                 //鑾峰彇鎮h�呬俊鎭�
                 PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());
                 if (Objects.isNull(patArchive)) {
@@ -306,9 +307,10 @@
 
 
             //1.2 鐥呭尯
-            inhosp.setInDeptcheckFlag(null);
-            inhosp.setInWardcheckFlag("0");
-            List<PatMedInhosp> inPatMedInhospsWard = patMedInhospMapper.selectPatMedInhospList(inhosp);
+            pmks.setInDeptcheckFlag(null);
+            pmks.setInWardcheckFlag("0");
+            pmks.setDeptcheckFlag(null);
+            List<PatMedInhosp> inPatMedInhospsWard = patMedInhospMapper.selectPatMedInhospList(pmks);
             for (PatMedInhosp patMedInhosp1 : inPatMedInhospsWard) {
                 //鑾峰彇鎮h�呬俊鎭�
                 PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());
@@ -340,9 +342,42 @@
             }
         }
 
-        //2.鍑洪櫌闅忚 - 鍩轰簬瑙勫垯鐨勪换鍔$敓鎴�
-        addSubTaskByRule(config);
-        //鏍规嵁鎮h�呮墍鍦ㄧ梾鍖猴紝鑾峰彇璇ョ梾鍖虹殑闀挎湡浠诲姟,鏂板崕鍖婚櫌鍙互鍏堜笉鐢ㄦ牴鎹梾鍖哄拰鐤剧梾鏉ュ仛
+        //2.鑽搧瀹f暀
+        for (PatMedInhosp patMedInhosp : patMedInhosps) {
+            String medicalCode = patMedInhosp.getMedicalCode();
+            if (StringUtils.isNotEmpty(medicalCode)) {
+                String[] split = medicalCode.split(",");
+                // 闃插尽鎬х紪绋嬶細纭繚 medicalCompany 鍜� medicalName 涓嶄负 null
+                String medicalCompanyStr = patMedInhosp.getMedicalCompany() != null ? patMedInhosp.getMedicalCompany() : "";
+                String medicalNameStr = patMedInhosp.getMedicalName() != null ? patMedInhosp.getMedicalName() : "";
+                String[] medicalCompanyArray = medicalCompanyStr.split(",");
+                String[] medicalNameArray = medicalNameStr.split(",");
+
+                for (int i = 0; i < split.length; i++) {
+                    ServiceTaskmedical serviceTaskmedical = new ServiceTaskmedical();
+                    //鎷胯嵂鍝佺紪鐮佸拰鍏徃鍘绘煡
+                    serviceTaskmedical.setMedicalCode(split[i]);
+                    // 闃叉涓嬫爣瓒婄晫锛氬鏋滄暟缁勯暱搴︿笉涓�鑷达紝鍙栨渶灏忛暱搴�
+                    if (i < medicalCompanyArray.length) {
+                        serviceTaskmedical.setMedicalName(medicalCompanyArray[i]);
+                    } else {
+                        log.warn("銆愯嵂鍝佸鏁欍�戣嵂鍝佺紪鐮亄}瀵瑰簲鐨勫叕鍙镐俊鎭笅鏍囪秺鐣岋紝medicalCompany 鏁扮粍闀垮害={}, 褰撳墠绱㈠紩={}", split[i], medicalCompanyArray.length, i);
+                        serviceTaskmedical.setMedicalName(""); // 瓒婄晫鏃惰缃负绌�
+                    }
+                    List<ServiceTaskmedical> serviceTaskmedicals = serviceTaskmedicalMapper.selectServiceTaskmedicalList(serviceTaskmedical);
+                    if (CollectionUtils.isNotEmpty(serviceTaskmedicals)) {
+                        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp.getPatid());
+                        writeInSubTask(serviceTaskmedicals.get(0).getTaskId(), false, patMedInhosp, patArchive, 0, config);
+                    }
+                    //鏌ヤ笉鍒扮殑鑽搧灏辨槸涓嶉渶瑕佸鏁欑殑锛屽氨涓嶇浜�
+                }
+            }
+        }
+
+        //3.鍑洪櫌闅忚 - 鍩轰簬瑙勫垯鐨勪换鍔$敓鎴�
+        // 鑾峰彇鎵�鏈夐渶瑕佸鐞嗙殑鍑洪櫌鎮h�咃紙绉戝缁村害鏈鐞嗭級
+
+        addSubTaskByRule(config, patMedInhosps);
         if (!active.equals("xh")) {
             addOperationSubTask(config);
         }
@@ -570,7 +605,7 @@
      * @param check         鏄惁闇�瑕佹牎楠�
      * @param patMedInhosp1 鐥呬汉鍑哄叆闄俊鎭�
      * @param patArchive    鐥呬汉淇℃伅
-     * @param type          闅忚绫诲瀷(1-绉戝锛�2-鐥呭尯锛�3-鐤剧梾 4-鍏ラ櫌绉戝 5-鍏ラ櫌鐥呭尯)
+     * @param type          闅忚绫诲瀷(0-瀹f暀锛�1-绉戝锛�2-鐥呭尯锛�3-鐤剧梾 4-鍏ラ櫌绉戝 5-鍏ラ櫌鐥呭尯)
      * @param config        閰嶇疆淇℃伅 visit.early.day
      */
     //灏嗘偅鑰呮斁鍒皊ubtask涓�
@@ -1530,15 +1565,7 @@
      * 鏍规嵁鎮h�呯闄㈢瀹ゆ垨鐥呭尯鏌ヨservice_task_rule锛岃幏鍙杁eptRule銆亀radRule銆乨iagRule
      * 鏍规嵁瑙勫垯鍊煎喅瀹氳皟鐢ㄥ摢涓柟娉曠敓鎴愰殢璁夸换鍔�
      */
-    private void addSubTaskByRule(String config) {
-        // 鑾峰彇鎵�鏈夐渶瑕佸鐞嗙殑鍑洪櫌鎮h�咃紙绉戝缁村害鏈鐞嗭級
-        PatMedInhosp pmks = new PatMedInhosp();
-        pmks.setDeptcheckFlag("0");
-        pmks.setInhospstate("1");
-        pmks.setFuflag("1");
-        List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(pmks);
-        log.info("銆愬熀浜庤鍒欍�戦渶瑕佸鐞嗙殑鍑洪櫌鎮h�呬俊鎭細{}", CollectionUtils.isNotEmpty(patMedInhosps) ? patMedInhosps.size() : null);
-
+    private void addSubTaskByRule(String config, List<PatMedInhosp> patMedInhosps) {
         for (PatMedInhosp patMedInhosp1 : patMedInhosps) {
             // 鑾峰彇鎮h�呭熀鏈俊鎭�
             PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
index 74c33b8..cc10fa2 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -51,6 +51,8 @@
 
     @Autowired
     private PatArchiveMapper patArchiveMapper;
+    @Autowired
+    private ServiceTaskmedicalMapper serviceTaskmedicalMapper;
 
 
     /**
@@ -76,8 +78,8 @@
         PatMedOuthospQueryReq patMedOuthospQueryReq = DtoConversionUtils.sourceToTarget(patMedOuthosp, PatMedOuthospQueryReq.class);
         patMedOuthospQueryReq.setBeginAdmitdate(patMedOuthosp.getBeginTime());
         patMedOuthospQueryReq.setEndAdmitdate(patMedOuthosp.getEndTime());
-        if(!CollectionUtils.isEmpty(patMedOuthosp.getDeptcodes())) {
-            String result = String.join(",",   patMedOuthosp.getDeptcodes());
+        if (!CollectionUtils.isEmpty(patMedOuthosp.getDeptcodes())) {
+            String result = String.join(",", patMedOuthosp.getDeptcodes());
             patMedOuthospQueryReq.setDeptcode(result);
         }
 
@@ -309,7 +311,7 @@
         PatMedOuthospQueryReq req = new PatMedOuthospQueryReq();
         String deptcodes = CollectionUtils.isEmpty(patMedReq.getDeptcodeList()) ? null : String.join(",", patMedReq.getDeptcodeList());
         req.setBeginAdmitdate(patMedReq.getStartDate());
-        req.setEndAdmitdate(DateUtils.addDays(patMedReq.getEndDate(),1));
+        req.setEndAdmitdate(DateUtils.addDays(patMedReq.getEndDate(), 1));
         req.setDeptcode(deptcodes);
         req.setOrgid(patMedReq.getOrgid());
 //        req.setCampusid(patMedReq.getCampusid());
@@ -537,7 +539,7 @@
      * @return
      */
     @Override
-    public Integer followUpAgainByPatMedOuthosp(PatMedOuthosp patMedOuthosp,Date adminDate, Integer visitTimeNum){
+    public Integer followUpAgainByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Date adminDate, Integer visitTimeNum) {
         int hoursToAdd = visitTimeNum * 24;
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(adminDate);
@@ -555,7 +557,7 @@
         serviceSubtaskEntity0.setDeptcode(deptcode);
         serviceSubtaskEntity0.setSort(0);
         List<ServiceSubtask> serviceSubtaskList0 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity0);
-        if(!CollectionUtils.isEmpty(serviceSubtaskList0)){
+        if (!CollectionUtils.isEmpty(serviceSubtaskList0)) {
             ServiceSubtask serviceSubtask0 = serviceSubtaskList0.get(0);
             serviceSubtask0.setSendstate(6L);
             serviceSubtask0.setUpdateTime(new Date());
@@ -570,7 +572,7 @@
             serviceSubtask1.setVisitTime(newDate);
             serviceSubtask1.setLongSendTime(newDate);
             i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask1);
-        }else {
+        } else {
             //鏌ョ湅宸插畬鎴愮殑浠诲姟
 //            ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity();
 //            serviceSubtaskEntity0.setOrgid(patMedOuthosp.getOrgid());
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
index 82c4094..1ad6fc5 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -111,28 +111,57 @@
     }
 
     @Override
-    public Boolean queryMedicationItemList(ServiceSLTDInhospReqVO reqVO) {
+    /**
+     * 鏌ヨ鑽搧淇℃伅鍒楄〃
+     * @return 杩斿洖瀹為檯鑾峰彇鍒扮殑鑽搧鏁版嵁鏉℃暟锛屽鏋滃嚭閿欏垯杩斿洖 null
+     */ public Integer queryMedicationItemList(ServiceSLTDInhospReqVO reqVO) {
         try {
             Map<String, Object> requestParams = buildRequestParams(reqVO);
             Map<String, String> headers = buildRequestHeaders();
             log.info("璇锋眰鍙傝嵂鍝佷俊鎭湴鍧�锛歿},appKey:{}", sltdPubPath + "/hbos-thirdparty-integration/standard/base/mc/service/medication/queryMedicationInfoPage", APP_KEY);
             String result = HttpUtils.sendPostByHeader(sltdPubPath + "/hbos-thirdparty-integration/standard/base/mc/service/medication/queryMedicationInfoPage", new Gson().toJson(requestParams), headers);
             List<Map<String, Object>> dataList = getDataList(result, 2);
+            log.info("銆恞ueryMedicationItemList銆戝叡鑾峰彇鍒皗}鏉¤嵂鍝佹暟鎹�", dataList.size());
+            int successCount = 0;
+            int failCount = 0;
             for (Map<String, Object> dataItem : dataList) {
-                MedicationItem medicationItem = convertToMedication(dataItem);
-                log.info("medicationItem鐨勫�间负锛歿}", medicationItem);
-                medicationItemMapper.insertMedicationItem(medicationItem);
-                List<MedicationDoseInfo> doseInfoList = medicationItem.getDoseInfoList();
-                for (MedicationDoseInfo doseInfo : doseInfoList) {
-                    doseInfo.setMedicationItemId(medicationItem.getId());
-                    medicationDoseInfoMapper.insertMedicationDoseInfo(doseInfo);
+                try {
+                    MedicationItem medicationItem = convertToMedication(dataItem);
+                    log.info("鍑嗗鎻掑叆鑽搧鏁版嵁锛歩temName={}, itemCode={}", medicationItem.getItemName(), medicationItem.getItemCode());
+                    medicationItem.setCreateTime(new Date());
+                    medicationItemMapper.insertMedicationItem(medicationItem);
+
+                    // 濡傛灉鎻掑叆鎴愬姛涓旇繑鍥炰簡鑷 ID锛屽垯鎻掑叆瀛愯〃
+                    if (medicationItem.getId() != null) {
+                        List<MedicationDoseInfo> doseInfoList = medicationItem.getDoseInfoList();
+                        if (CollectionUtils.isNotEmpty(doseInfoList)) {
+                            for (MedicationDoseInfo doseInfo : doseInfoList) {
+                                try {
+                                    doseInfo.setMedicationItemId(medicationItem.getId());
+                                    medicationDoseInfoMapper.insertMedicationDoseInfo(doseInfo);
+                                    log.debug("鎻掑叆鍓傞噺淇℃伅鎴愬姛锛歩temId={}, doseUnit={}", medicationItem.getId(), doseInfo.getDoseUnit());
+                                } catch (Exception e) {
+                                    log.warn("鎻掑叆鍓傞噺淇℃伅澶辫触锛歩temId={}, doseUnit={}, 閿欒:{}", medicationItem.getId(), doseInfo.getDoseUnit(), e.getMessage(), e);
+                                    failCount++;
+                                }
+                            }
+                        }
+                    }
+                    successCount++;
+                    log.info("鉁� 鑽搧鏁版嵁鎻掑叆鎴愬姛锛歿}", medicationItem.getItemName());
+                } catch (Exception e) {
+                    log.warn("銆恞ueryMedicationItemList銆戝崟鏉¤嵂鍝佹暟鎹彃鍏ュけ璐ワ細itemName={}, itemCode={}, 閿欒:{}", dataItem.get("itemName"), dataItem.get("itemCode"), e.getMessage(), e);
+                    failCount++;
+                    // 缁х画澶勭悊涓嬩竴鏉℃暟鎹紝涓嶄腑鏂暣涓惊鐜�
                 }
             }
+            log.info("銆恞ueryMedicationItemList銆戞壒閲忔彃鍏ュ畬鎴愶紝鎬绘暟:{}, 鎴愬姛:{}, 澶辫触:{}", dataList.size(), successCount, failCount);
+            // 杩斿洖瀹為檯鑾峰彇鍒扮殑鑽搧鏁版嵁鏉℃暟锛岀敤浜庡垎椤靛垽鏂槸鍚﹁繕鏈夋洿澶氭暟鎹�
+            return dataList.size();
         } catch (Exception e) {
             log.error("銆恞ueryMedicationItemList銆戣皟鐢ㄧ渷绔嬪悓寰疯嵂鍝佷俊鎭煡璇㈡帴鍙e紓甯革紝璇锋眰鍙傛暟锛歿}", reqVO, e);
             throw new RuntimeException(e);
         }
-        return true;
     }
 
 
@@ -868,7 +897,160 @@
             }
         }
 
+        if (active.equals("nhfy") || active.equals("sltd")) {
+            Map<String, String> drugInfoMap = queryMedicalOrders(dto);
+            if (drugInfoMap != null && !drugInfoMap.isEmpty()) {
+                patMedInhosp.setMedicalName(drugInfoMap.get("drugItemNames"));
+                patMedInhosp.setMedicalCode(drugInfoMap.get("drugItemIds"));
+                patMedInhosp.setMedicalCompany(drugInfoMap.get("drugManufacturerNames"));
+
+                log.info("鑾峰彇鑽搧淇℃伅鎴愬姛锛氬悕绉�={}, 缂栫爜={}, 鍘傚={}", drugInfoMap.get("drugItemNames"), drugInfoMap.get("drugItemIds"), drugInfoMap.get("drugManufacturerNames"));
+            }
+        }
         return patMedInhosp;
+    }
+
+    /**
+     * 鏌ヨ鍖诲槺淇℃伅骞舵嫾鎺ヨ嵂鍝佷俊鎭�
+     *
+     * @param dto 鍋ュ悍璁板綍璇锋眰瀵硅薄
+     * @return 杩斿洖鍖呭惈涓変釜瀛楁 Map锛�
+     * - drugItemNames: 鑽搧鍚嶇О鍒楄〃锛堥�楀彿鍒嗛殧锛�
+     * - drugItemIds: 鑽搧缂栫爜鍒楄〃锛堥�楀彿鍒嗛殧锛�
+     * - drugManufacturerNames: 鑽搧鍘傚鍒楄〃锛堥�楀彿鍒嗛殧锛�
+     * <p>
+     * 瑙勫垯锛�
+     * 1. 涓変釜瀛楁椤哄簭浣嶇疆淇濇寔涓�鑷�
+     * 2. 濡傛灉涓変釜瀛楁閮戒负绌猴紝鍒欒烦杩囪璁板綍
+     * 3. 濡傛灉鑷冲皯鏈変竴涓瓧娈垫湁鍊硷紝鍒欏叾浠栦袱涓负绌虹敤绌哄瓧绗︿覆浠f浛
+     */
+    private Map<String, String> queryMedicalOrders(ServiceSLTDInhospResDTO dto) {
+        Map<String, String> result = new HashMap<>();
+        List<String> itemNames = new ArrayList<>();
+        List<String> itemIds = new ArrayList<>();
+        List<String> manufacturerNames = new ArrayList<>();
+
+        try {
+            // 鑾峰彇鎮h�呯殑鍖诲槺淇℃伅
+            Map<String, Object> medicineInfoReq = new HashMap<>();
+            medicineInfoReq.put("orgId", dto.getOrgId());
+            medicineInfoReq.put("patientId", dto.getPatientId());
+            medicineInfoReq.put("campusId", dto.getCampusId());
+            medicineInfoReq.put("medicalRecordNo", dto.getMedicalRecordNo());
+            log.info("銆恞ueryMedicalOrders銆戣姹傚弬鏁帮細{}", medicineInfoReq);
+            Map<String, String> headers = buildRequestHeaders();
+            String resultStr = HttpUtils.sendPostByHeader(sltdPubPath + "/osj/hbos-thirdparty-integration/standard/common/doctorOrder/queryDoctorOrderList", new Gson().toJson(medicineInfoReq), headers);
+
+            if (StringUtils.isEmpty(resultStr)) {
+                log.warn("銆恞ueryMedicalOrders銆戞帴鍙h繑鍥炰负绌猴紝patientId={}", dto.getPatientId());
+                return result;
+            }
+
+            // 瑙f瀽杩斿洖鏁版嵁
+            Gson gson = new Gson();
+            Type mapType = new TypeToken<Map<String, Object>>() {
+            }.getType();
+            Map<String, Object> responseMap = gson.fromJson(resultStr, mapType);
+
+            // 妫�鏌ヨ繑鍥炵爜
+            Object codeObj = responseMap.get("code");
+            if (codeObj != null) {
+                String code = BigDecimal.valueOf(((Number) codeObj).longValue()).toPlainString();
+                if (!"200".equals(code)) {
+                    log.error("銆恞ueryMedicalOrders銆戞帴鍙h繑鍥炲け璐ワ紝code={}, message={}", code, responseMap.get("message"));
+                    return result;
+                }
+            }
+
+            // 鑾峰彇 data 鏁扮粍
+            Object dataObj = responseMap.get("data");
+            if (dataObj instanceof List) {
+                List<?> dataList = (List<?>) dataObj;
+
+                // 閬嶅巻鍖诲槺鍒楄〃锛屾彁鍙栬嵂鍝佷俊鎭�
+                Set<String> processedItemIds = new HashSet<>(); // 鐢ㄤ簬鍘婚噸锛堝彧鏍规嵁 itemId 鍘婚噸锛�
+                
+                for (Object item : dataList) {
+                    if (item instanceof Map) {
+                        Map<String, Object> itemMap = (Map<String, Object>) item;
+
+                        // 鍙鐞嗚嵂鍝佺浉鍏崇殑鍖诲槺锛坕temDomain 涓� FH0134.01 琛ㄧず鑽搧锛�
+                        Object itemDomainObj = itemMap.get("itemDomain");
+                        if (itemDomainObj == null || !"FH0134.01".equals(itemDomainObj.toString())) {
+                            continue;
+                        }
+
+                        // 鑾峰彇涓変釜瀛楁
+                        Object itemNameObj = itemMap.get("itemName");
+                        Object itemIdObj = itemMap.get("itemId");
+                        Object manufacturerNameObj = itemMap.get("manufacturerName");
+
+                        // 鍒ゆ柇鏄惁閮戒负绌�
+                        boolean allEmpty = (itemNameObj == null || StringUtils.isEmpty(itemNameObj.toString())) && (itemIdObj == null || StringUtils.isEmpty(itemIdObj.toString())) && (manufacturerNameObj == null || StringUtils.isEmpty(manufacturerNameObj.toString()));
+
+                        // 濡傛灉涓変釜閮戒负绌猴紝鍒欒烦杩�
+                        if (allEmpty) {
+                            continue;
+                        }
+
+                        // 鑷冲皯鏈変竴涓湁鍊硷紝澶勭悊姣忎釜瀛楁
+                        String itemName = (itemNameObj != null && StringUtils.isNotEmpty(itemNameObj.toString())) ? itemNameObj.toString() : "";
+                        
+                        // itemId 鐗规畩澶勭悊锛氶伩鍏嶇瀛﹁鏁版硶锛圙son 鍙兘灏嗘暟瀛楄В鏋愪负 Double锛�
+                        String itemId = "";
+                        if (itemIdObj != null && StringUtils.isNotEmpty(itemIdObj.toString())) {
+                            if (itemIdObj instanceof Number) {
+                                // 濡傛灉鏄暟鍊肩被鍨嬶紝杞崲涓烘暣鏁板瓧绗︿覆锛岄伩鍏嶇瀛﹁鏁版硶
+                                itemId = String.valueOf(((Number) itemIdObj).longValue());
+                            } else {
+                                itemId = itemIdObj.toString();
+                            }
+                        }
+                        
+                        String manufacturerName = (manufacturerNameObj != null && StringUtils.isNotEmpty(manufacturerNameObj.toString())) ? manufacturerNameObj.toString() : "";
+
+                        // 鍙牴鎹� itemId 鍘婚噸锛堝悓涓�缂栫爜鐨勮嵂鍝佸彧淇濈暀涓�涓級
+                        if (StringUtils.isNotEmpty(itemId)) {
+                            if (processedItemIds.contains(itemId)) {
+                                log.info("銆恞ueryMedicalOrders銆戣烦杩囬噸澶嶈嵂鍝侊紙鐩稿悓缂栫爜锛夛細鍚嶇О={}, 缂栫爜={}", itemName, itemId);
+                                continue;
+                            }
+                            processedItemIds.add(itemId);
+                        } else {
+                            // itemId 涓虹┖鏃讹紝浣跨敤 itemName 浣滀负鍘婚噸渚濇嵁
+                            if (processedItemIds.contains(itemName)) {
+                                log.info("銆恞ueryMedicalOrders銆戣烦杩囬噸澶嶈嵂鍝侊紙鐩稿悓鍚嶇О锛夛細鍚嶇О={}", itemName);
+                                continue;
+                            }
+                            processedItemIds.add(itemName);
+                        }
+
+                        // 娣诲姞鍒板垪琛�
+                        itemNames.add(itemName);
+                        itemIds.add(itemId);
+                        manufacturerNames.add(manufacturerName);
+
+                        log.info("銆恞ueryMedicalOrders銆戞彁鍙栬嵂鍝佷俊鎭細鍚嶇О={}, 缂栫爜={}, 鍘傚={}", itemName, itemId, manufacturerName);
+                    }
+                }
+            } else {
+                log.info("銆恞ueryMedicalOrders銆慸ata 涓嶆槸鏁扮粍绫诲瀷锛宲atientId={}", dto.getPatientId());
+            }
+
+            // 灏嗗垪琛ㄦ嫾鎺ユ垚閫楀彿鍒嗛殧鐨勫瓧绗︿覆
+            if (!itemNames.isEmpty()) {
+                result.put("drugItemNames", String.join(",", itemNames));
+                result.put("drugItemIds", String.join(",", itemIds));
+                result.put("drugManufacturerNames", String.join(",", manufacturerNames));
+            }
+
+            log.info("銆恞ueryMedicalOrders銆戞垚鍔熸彁鍙杮}鏉¤嵂鍝佷俊鎭紝patientId={}", itemNames.size(), dto.getPatientId());
+
+        } catch (Exception e) {
+            log.error("銆恞ueryMedicalOrders銆戞煡璇㈠尰鍢变俊鎭け璐ワ紝patientId={}", dto.getPatientId(), e);
+        }
+
+        return result;
     }
 
     private void setDischargeInfo(PatMedInhosp patMedInhosp, ServiceSLTDInhospResDTO dto) {
@@ -928,11 +1110,7 @@
                 if (importanceFlagCodeListObj instanceof List) {
                     List<?> importanceFlagCodeList = (List<?>) importanceFlagCodeListObj;
                     // 杩囨护鎺� null 鍊�
-                    List<String> nonNullList = importanceFlagCodeList.stream()
-                            .filter(Objects::nonNull)
-                            .map(Object::toString)
-                            .filter(StringUtils::isNotEmpty)
-                            .collect(Collectors.toList());
+                    List<String> nonNullList = importanceFlagCodeList.stream().filter(Objects::nonNull).map(Object::toString).filter(StringUtils::isNotEmpty).collect(Collectors.toList());
 
                     if (!nonNullList.isEmpty()) {
                         String importanceFlagLabel;
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
index 11124d2..63a5cda 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -81,6 +81,9 @@
     private ISvyLibTemplateScriptService svyLibTemplateScriptService;
 
     @Autowired
+    private ISvyTaskTemplateTargetoptionService svyTaskTemplateTargetoptionService;
+
+    @Autowired
     private IIvrTaskTemplateService ivrTaskTemplateService;
 
     @Autowired
@@ -208,6 +211,10 @@
                 List<SvyTaskTemplateScriptVO> cacheList = redisCache.getCacheList(key);
                 cacheList.sort(Comparator.comparingLong(SvyTaskTemplateScriptVO::getSort));
                 log.info("闂嵎鍥炵瓟缁撴灉锛歿}", CollectionUtils.isEmpty(cacheList) ? null : cacheList.size());
+
+                //鏍¢獙涓�涓嬮鐨勫簭鍙锋槸鍚︽湁闂 (濡傛灉鏍规嵁閫夐」鏃犲簭璺宠浆锛屽氨浼氬鑷撮敊璇�)
+                cacheList = checkQuestionSort(cacheList);
+
                 for (int i = 0; i < cacheList.size(); i++) {
                     if (i == 0) {
                         //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
@@ -341,6 +348,8 @@
             String isabnormalFlag = "0";
             if (serviceSubTaskCacheReq.getType() == 2) {
                 List<SvyTaskTemplateScriptVO> cacheList = serviceSubTaskCacheReq.getSvyTaskTemplateScriptVOS();
+                //妫�鏌ュ苟淇闂嵎棰樼洰鎺掑簭
+                cacheList = checkQuestionSort(cacheList);
                 cacheList.sort(Comparator.comparingLong(SvyTaskTemplateScriptVO::getSort));
                 log.info("闂嵎鍥炵瓟缁撴灉锛歿}", CollectionUtils.isEmpty(cacheList) ? null : cacheList.size());
                 // 棰勬煡璇㈠惊鐜腑涓嶅彉鐨勬暟鎹紝閬垮厤姣忛閲嶅鏌ユ暟鎹簱
@@ -352,90 +361,89 @@
                 ServiceTask preServiceTask = serviceTaskService.selectServiceTaskByTaskid(tid);
                 Map<Long, Long> preDetailIdMap = getExistingDetailIdMap(subid);
                 Map<Long, Long> preTraceIdMap = getExistingTraceIdMap(subid);
+
+                // 鎻愬墠瀹氫綅绗竴棰樼殑绱㈠紩锛岄伩鍏嶅悗缁祵濂楀惊鐜�
+                Integer firstSortIndex = -1;
+                if (CollectionUtils.isNotEmpty(cacheList)) {
+                    for (int j = 0; j < cacheList.size(); j++) {
+                        if (cacheList.get(j).getSort() != null && cacheList.get(j).getSort() == 1L) {
+                            firstSortIndex = j;
+                            break;
+                        }
+                    }
+                }
+
                 for (int i = 0; i < cacheList.size(); i++) {
-                    if (i == 0) {
-                        //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
-                        for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : cacheList) {
-                            if (svyTaskTemplateScriptVO.getSort() == 1L) {
-                                //璇存槑鏄涓�棰�
-                                List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions();
-                                svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
-                                Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid, subid, preServiceSubtaskList, preServiceTask, preDetailIdMap, preTraceIdMap);
-                                if (map == null) continue;
-                                if (!Objects.isNull(map.get("nextScriptNo")))
-                                    nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                                if (score == null) {
-                                    score = Double.valueOf(map.get("score"));
-                                } else {
-                                    score = score + Double.valueOf(map.get("score"));
-                                }
-                                isabnormalFlag = map.get("isabnormal");
-                            }
-                        }
+                    SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = cacheList.get(i);
+                    log.info("svyTaskTemplateScriptVO 鐨勪俊鎭负锛歿}锛宨 鐨勫�间负锛歿}", svyTaskTemplateScriptVO.getScriptno(), i);
+                    List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions();
+                    svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
 
-                    } else {
-                        SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = cacheList.get(i);
-                        log.info("svyTaskTemplateScriptVO鐨勪俊鎭负锛歿}锛宨鐨勫�间负锛歿}", svyTaskTemplateScriptVO.getScriptno(), i);
-                        List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = cacheList.get(i).getSvyTaskTemplateTargetoptions();
-                        svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
+                    // 濡傛灉鏄涓�棰樻垨鑰呭尮閰� nextScriptno 鐨勯鐩�
+                    boolean shouldProcess = false;
+                    if (i == firstSortIndex) {
+                        shouldProcess = true;
+                    } else if (nextScriptno != null && svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {
+                        shouldProcess = true;
+                    }
 
-                        if (svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {
-                            Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid, subid, preServiceSubtaskList, preServiceTask, preDetailIdMap, preTraceIdMap);
-                            log.error("nextScriptNo鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
-                            if (!Objects.isNull(map.get("nextScriptNo")))
-                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                            if (score == null) {
-                                score = Double.valueOf(map.get("score"));
-                            } else {
-                                score = score + Double.valueOf(map.get("score"));
-                            }
-                            isabnormalFlag = map.get("isabnormal");
+                    if (shouldProcess) {
+                        Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid, subid, preServiceSubtaskList, preServiceTask, preDetailIdMap, preTraceIdMap);
+                        log.error("nextScriptNo 鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
+                        if (map == null) continue;
+
+                        if (!Objects.isNull(map.get("nextScriptNo")))
+                            nextScriptno = Long.valueOf(map.get("nextScriptNo"));
+
+                        if (score == null) {
+                            score = Double.valueOf(map.get("score"));
+                        } else {
+                            score = score + Double.valueOf(map.get("score"));
                         }
+                        isabnormalFlag = map.get("isabnormal");
                     }
                 }
             } else if (serviceSubTaskCacheReq.getType() == 1) {
                 List<IvrTaskTemplateScriptVO> cacheList = serviceSubTaskCacheReq.getIvrTaskTemplateScriptVOList();
                 cacheList.sort(Comparator.comparingLong(vo -> Optional.ofNullable(vo.getSort()).orElse(0)));
                 log.error("鐢佃瘽闅忚闂嵎鍥炵瓟缁撴灉锛歿}", CollectionUtils.isEmpty(cacheList) ? null : cacheList.size());
+
+                // 鎻愬墠瀹氫綅绗竴棰樼殑绱㈠紩
+                Integer firstIvrSortIndex = -1;
+                if (CollectionUtils.isNotEmpty(cacheList)) {
+                    for (int j = 0; j < cacheList.size(); j++) {
+                        if (cacheList.get(j).getSort() != null && cacheList.get(j).getSort() == 1L) {
+                            firstIvrSortIndex = j;
+                            break;
+                        }
+                    }
+                }
+
                 for (int i = 0; i < cacheList.size(); i++) {
-                    if (i == 0) {
-                        //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
-                        for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : cacheList) {
-                            if (ivrTaskTemplateScriptVO.getSort() != null && ivrTaskTemplateScriptVO.getSort() == 1L) {
-                                //璇存槑鏄涓�棰�
-                                List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList();
-                                ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
-                                //瀹冧咯閮芥槸ivr_task_templatescript_id,鎵�浠ヨ繖閲岄渶瑕佽缃竴涓�
-                                ivrTaskTemplateScriptVO.setId(ivrTaskTemplateScriptVO.getScriptID());
-                                Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, tid, pid, subid);
-                                if (!Objects.isNull(map.get("nextScriptNo")))
-                                    nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                                if (score == null) {
-                                    score = Double.valueOf(map.get("score"));
-                                } else {
-                                    score = score + Double.valueOf(map.get("score"));
-                                }
-                                isabnormalFlag = map.get("isabnormal");
-                            }
-                        }
+                    IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(i), IvrTaskTemplateScriptVO.class);
+                    List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(cacheList.get(i).getIvrTaskScriptTargetoptionList(), IvrTaskTemplateTargetoption.class);
+                    ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
+                    //瀹冧咯閮芥槸 ivr_task_templatescript_id,鎵�浠ヨ繖閲岄渶瑕佽缃竴涓�
+                    ivrTaskTemplateScriptVO.setId(ivrTaskTemplateScriptVO.getScriptID());
 
-                    } else {
-                        IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(i), IvrTaskTemplateScriptVO.class);
-                        List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(cacheList.get(i).getIvrTaskScriptTargetoptionList(), IvrTaskTemplateTargetoption.class);
-                        ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
+                    boolean shouldProcess = false;
+                    if (i == firstIvrSortIndex) {
+                        shouldProcess = true;
+                    } else if (nextScriptno != null && ivrTaskTemplateScriptVO.getSort() != null && Long.valueOf(ivrTaskTemplateScriptVO.getSort()).equals(nextScriptno)) {
+                        shouldProcess = true;
+                    }
 
-                        if (ivrTaskTemplateScriptVO.getSort() != null && Long.valueOf(ivrTaskTemplateScriptVO.getSort()).equals(nextScriptno)) {
-                            Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, tid, pid, subid);
-                            log.error("----nextScriptNo2鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
-                            if (!Objects.isNull(map.get("nextScriptNo")))
-                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                            if (score == null) {
-                                score = Double.valueOf(map.get("score"));
-                            } else {
-                                score = score + Double.valueOf(map.get("score"));
-                            }
-                            isabnormalFlag = map.get("isabnormal");
+                    if (shouldProcess) {
+                        Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, tid, pid, subid);
+                        log.error("----nextScriptNo2 鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
+                        if (!Objects.isNull(map.get("nextScriptNo")))
+                            nextScriptno = Long.valueOf(map.get("nextScriptNo"));
+                        if (score == null) {
+                            score = Double.valueOf(map.get("score"));
+                        } else {
+                            score = score + Double.valueOf(map.get("score"));
                         }
+                        isabnormalFlag = map.get("isabnormal");
                     }
                 }
             }
@@ -515,52 +523,46 @@
             Double score = null;
             List<SvyTaskTemplateScriptVO> svyTaskTemplateScriptVOS = serviceSubTaskMYDAnswerReq.getSvyTaskTemplateScriptVOS();
             Long nextScriptno = null;
+
+            // 鎻愬墠瀹氫綅绗竴棰樼殑绱㈠紩
+            Integer firstMydSortIndex = -1;
+            if (CollectionUtils.isNotEmpty(svyTaskTemplateScriptVOS)) {
+                for (int j = 0; j < svyTaskTemplateScriptVOS.size(); j++) {
+                    if (svyTaskTemplateScriptVOS.get(j).getSort() != null && svyTaskTemplateScriptVOS.get(j).getSort() == 1L) {
+                        firstMydSortIndex = j;
+                        break;
+                    }
+                }
+            }
+
             for (int i = 0; i < svyTaskTemplateScriptVOS.size(); i++) {
-                if (i == 0) {
-                    //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
-                    for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : svyTaskTemplateScriptVOS) {
-                        if (svyTaskTemplateScriptVO.getSort() == 1L) {
-                            //璇存槑鏄涓�棰�
-//                            SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(0), SvyTaskTemplateScriptVO.class);
-                            List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptVOS.get(0).getSvyTaskTemplateTargetoptions();
-//                            List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(svyTaskTemplateTargetoptions, SvyTaskTemplateTargetoption.class);
-                            svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
-                            Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(serviceSubTaskMYDAnswerReq.getTaskId()), patid, serviceSubTaskMYDAnswerReq.getSubId());
-                            if (map == null) continue;
-                            if (!Objects.isNull(map.get("nextScriptNo")))
-                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                            if (score == null) {
-                                score = Double.valueOf(map.get("score"));
-                            } else {
-                                score = score + Double.valueOf(map.get("score"));
-                            }
-                            if (!Objects.isNull(map.get("id"))) {
-                                idList.add(Long.valueOf(map.get("id")));
-                            }
-                        }
+                SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = svyTaskTemplateScriptVOS.get(i);
+                List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptVOS.get(i).getSvyTaskTemplateTargetoptions();
+                svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
+
+                boolean shouldProcess = false;
+                if (i == firstMydSortIndex) {
+                    shouldProcess = true;
+                } else if (nextScriptno != null && svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {
+                    shouldProcess = true;
+                }
+
+                if (shouldProcess) {
+                    Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(serviceSubTaskMYDAnswerReq.getTaskId()), patid, serviceSubTaskMYDAnswerReq.getSubId());
+                    if (map == null) continue;
+
+                    log.error("nextScriptNo 鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
+                    if (!Objects.isNull(map.get("nextScriptNo")))
+                        nextScriptno = Long.valueOf(map.get("nextScriptNo"));
+
+                    if (score == null) {
+                        score = Double.valueOf(map.get("score"));
+                    } else {
+                        score = score + Double.valueOf(map.get("score"));
                     }
 
-                } else {
-                    SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = svyTaskTemplateScriptVOS.get(i);
-//                    SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(i), SvyTaskTemplateScriptVO.class);
-                    List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptVOS.get(i).getSvyTaskTemplateTargetoptions();
-//                    List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(i).getSvyLibTemplateTargetoptions(), SvyTaskTemplateTargetoption.class);
-                    svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
-
-                    if (svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {
-                        log.error("svyTaskTemplateScriptVO鐨勫�间负锛歿}", svyTaskTemplateScriptVO);
-                        Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(serviceSubTaskMYDAnswerReq.getTaskId()), patid, serviceSubTaskMYDAnswerReq.getSubId());
-                        log.error("map鐨勪俊鎭负锛歿}", map);
-                        if (!Objects.isNull(map.get("nextScriptNo")))
-                            nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                        if (score == null) {
-                            score = Double.valueOf(map.get("score"));
-                        } else {
-                            score = score + Double.valueOf(map.get("score"));
-                        }
-                        if (!Objects.isNull(map.get("id"))) {
-                            idList.add(Long.valueOf(map.get("id")));
-                        }
+                    if (!Objects.isNull(map.get("id"))) {
+                        idList.add(Long.valueOf(map.get("id")));
                     }
                 }
             }
@@ -1342,4 +1344,127 @@
         map.put("isabnormal", isabnormalFlag);
         return map;
     }
+
+    /**
+     * 妫�鏌ュ苟淇闂嵎棰樼洰鎺掑簭(濡傛灉鏍规嵁閫夐」鏃犲簭璺宠浆锛屽氨浼氬鑷撮敊璇�)
+     *
+     * @param svyTaskTemplateScriptVOList 闂嵎棰樼洰 VO 鍒楄〃
+     * @return 淇鍚庣殑闂嵎棰樼洰鍒楄〃
+     */
+    public List<SvyTaskTemplateScriptVO> checkQuestionSort(List<SvyTaskTemplateScriptVO> svyTaskTemplateScriptVOList) {
+        if (CollectionUtils.isEmpty(svyTaskTemplateScriptVOList)) {
+            return svyTaskTemplateScriptVOList;
+        }
+
+        // 鎸夊綋鍓� sort 鎺掑簭
+        svyTaskTemplateScriptVOList.sort(Comparator.comparingLong(SvyTaskTemplateScriptVO::getSort));
+
+        // 鍏堟鏌ヤ竴涓嬫槸鍚﹀凡缁忔槸姝g‘鐨勯『搴忥細杩炵画鐨勫簭鍙� 1,2,3... 涓旀渶鍚庝竴涓棶棰樼殑 nextScriptno 涓� "0"
+        boolean isCorrect = true;
+        int expectedValue = 1;
+
+        for (int i = 0; i < svyTaskTemplateScriptVOList.size(); i++) {
+            SvyTaskTemplateScriptVO vo = svyTaskTemplateScriptVOList.get(i);
+
+            // 妫�鏌� sort 鏄惁杩炵画
+            if (!Objects.equals(expectedValue, vo.getSort())) {
+                isCorrect = false;
+                break;
+            }
+
+            // 濡傛灉涓嶆槸鏈�鍚庝竴涓棶棰橈紝妫�鏌� nextScriptno 鏄惁鏄笅涓�棰樼殑搴忓彿
+            if (i < svyTaskTemplateScriptVOList.size() - 1) {
+                String expectedNextScriptNo = String.valueOf(expectedValue + 1);
+                if (!expectedNextScriptNo.equals(vo.getNextScriptno())) {
+                    isCorrect = false;
+                    break;
+                }
+            } else {
+                // 鏈�鍚庝竴涓棶棰樼殑 nextScriptno 蹇呴』鏄� "0"
+                if (!"0".equals(vo.getNextScriptno())) {
+                    isCorrect = false;
+                    break;
+                }
+
+                // 妫�鏌ユ渶鍚庝竴涓棶棰樼殑鎵�鏈夐�夐」鐨� nextQuestion 鏄惁涓� 0
+                if (CollectionUtils.isNotEmpty(vo.getSvyTaskTemplateTargetoptions())) {
+                    for (SvyTaskTemplateTargetoption option : vo.getSvyTaskTemplateTargetoptions()) {
+                        if (option.getNextQuestion() == null || !option.getNextQuestion().equals(0)) {
+                            isCorrect = false;
+                            break;
+                        }
+                    }
+                }
+            }
+
+            expectedValue++;
+        }
+
+        // 濡傛灉宸茬粡鏄纭殑锛岀洿鎺ヨ繑鍥烇紝涓嶅啀杩涜鏁版嵁搴撴洿鏂�
+        if (isCorrect) {
+            log.debug("闂嵎棰樼洰鎺掑簭姝g‘锛屾棤闇�淇锛屽叡 {} 涓鐩�", svyTaskTemplateScriptVOList.size());
+            return svyTaskTemplateScriptVOList;
+        }
+
+        log.info("妫�娴嬪埌闂嵎棰樼洰闇�瑕佷慨姝o紝寮�濮嬪鐞�...");
+
+        // 閲嶆柊鍒嗛厤杩炵画鐨� sort 鍊硷細1, 2, 3...
+        int newSortValue = 1;
+        List<SvyTaskTemplateScriptVO> updatedList = new ArrayList<>();
+
+        for (int i = 0; i < svyTaskTemplateScriptVOList.size(); i++) {
+            SvyTaskTemplateScriptVO vo = svyTaskTemplateScriptVOList.get(i);
+            Long oldSort = vo.getSort();
+
+            // 濡傛灉 sort 涓嶆槸棰勬湡鐨勮繛缁�硷紝鍒欓渶瑕佹洿鏂�
+            if (!Objects.equals(newSortValue, oldSort)) {
+                log.warn("妫�娴嬪埌棰樼洰搴忓彿涓嶈繛缁紝棰樼洰 ID: {}锛屽師 sort: {}, 鏂� sort: {}", vo.getId(), oldSort, newSortValue);
+                vo.setSort((long) newSortValue);
+            }
+
+            // 澶勭悊涓嬩竴涓棶棰樼殑 nextScriptno锛氶櫎鏈�鍚庝竴涓锛宯extScriptno = 褰撳墠 sort + 1
+            if (i < svyTaskTemplateScriptVOList.size() - 1) {
+                String expectedNextScriptNo = String.valueOf(newSortValue + 1);
+                String currentNextScriptNo = vo.getNextScriptno();
+                if (!Objects.equals(expectedNextScriptNo, currentNextScriptNo)) {
+                    log.warn("妫�娴嬪埌 nextScriptno 涓嶆纭紝棰樼洰 ID: {}锛屽師 nextScriptno: {}, 鏂� nextScriptno: {}", vo.getId(), currentNextScriptNo, expectedNextScriptNo);
+                    vo.setNextScriptno(expectedNextScriptNo);
+                }
+            } else {
+                // 鏈�鍚庝竴涓棶棰樼殑 nextScriptno 蹇呴』鏄� "0"
+                String currentNextScriptNo = vo.getNextScriptno();
+                if (!"0".equals(currentNextScriptNo)) {
+                    log.warn("妫�娴嬪埌鏈�鍚庝竴涓鐩殑 nextScriptno 搴斾负 0锛岄鐩� ID: {}锛屽師 nextScriptno: {}", vo.getId(), currentNextScriptNo);
+                    vo.setNextScriptno("0");
+                }
+            }
+
+            // 澶勭悊姣忎釜閫夐」鐨� nextQuestion
+            if (CollectionUtils.isNotEmpty(vo.getSvyTaskTemplateTargetoptions())) {
+                // 鍒ゆ柇鏄惁鏄渶鍚庝竴涓棶棰�
+                boolean isLastQuestion = (i == svyTaskTemplateScriptVOList.size() - 1);
+                int expectedNextQuestion = isLastQuestion ? 0 : newSortValue;
+
+                for (SvyTaskTemplateTargetoption option : vo.getSvyTaskTemplateTargetoptions()) {
+                    Integer optionNextQuestion = option.getNextQuestion();
+                    int finalNextQuestion = expectedNextQuestion;
+
+                    if (!isLastQuestion && (optionNextQuestion == null || !optionNextQuestion.equals(newSortValue))) {
+                        log.info("妫�娴嬪埌閫夐」鐨� nextQuestion 涓嶆纭紝閫夐」 ID: {}锛岄鐩� ID: {}锛屽師 nextQuestion: {}, 鏂� nextQuestion: {}", option.getId(), vo.getId(), optionNextQuestion, newSortValue);
+                        finalNextQuestion = newSortValue;
+                    } else if (isLastQuestion && (optionNextQuestion == null || !optionNextQuestion.equals(0))) {
+                        log.info("妫�娴嬪埌鏈�鍚庝竴涓棶棰樼殑閫夐」 nextQuestion 搴斾负 0锛岄�夐」 ID: {}锛岄鐩� ID: {}锛屽師 nextQuestion: {}, 鏂� nextQuestion: {}", option.getId(), vo.getId(), optionNextQuestion, 0);
+                    }
+
+                    option.setNextQuestion(finalNextQuestion);
+                }
+            }
+
+            updatedList.add(vo);
+            newSortValue++;
+        }
+
+        return updatedList;
+    }
+
 }
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index 87fe1b8..bbc597b 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -86,6 +86,8 @@
 
     @Autowired
     private IServiceTaskdeptService serviceTaskdeptService;
+    @Autowired
+    private IServiceTaskmedicalService serviceTaskmedicalService;
 
     @Autowired
     private IServiceTaskdiagService serviceTaskdiagService;
@@ -600,9 +602,30 @@
      * @return 缁撴灉
      */
     @Override
-    public int insertServiceSubtask(ServiceSubtask serviceSubtask) {
+    public Map<String, Object> insertServiceSubtask(ServiceSubtask serviceSubtask) {
         serviceSubtask.setCreateTime(DateUtils.getNowDate());
-        return serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+        serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+        String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key);
+        String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
+        String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
+        ServiceOutPath serviceOutPath = new ServiceOutPath();
+        serviceOutPath.setParam1(taskId);
+        serviceOutPath.setParam2(patid);
+        serviceOutPath.setCreateTime(new Date());
+        serviceOutPath.setParam6(subId);
+        serviceOutPath.setOrgid(serviceSubtask.getOrgid());
+        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+        //杞垚16杩涘埗
+        String format = String.format("%03X", serviceOutPath.getId());
+        serviceOutPath.setRadix(format);
+        serviceOutPath.setUpdateTime(new Date());
+        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+
+        Map<String, Object> result = new HashMap<>();
+        result.put("url", localIP + ":" + req_path + "/wt?p=" + format);
+        result.put("subId",serviceSubtask.getId());
+        return result;
     }
 
     /**
@@ -873,6 +896,36 @@
 
                     log.info("----serviceTaskSchedule鐨勫�间负锛歿}", scheduleVO);
                     serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO);
+                } else if (serviceTaskVO.getAppltype().equals("6")) {
+                    ServiceTaskmedical serviceTaskmedical = new ServiceTaskmedical();
+                    serviceTaskmedical.setTaskId(serviceTask.getTaskid());
+                    serviceTaskmedical.setTaskName(serviceTask.getTaskName());
+                    serviceTaskmedical.setServiceType(serviceTaskVO.getServiceType());
+                    serviceTaskmedical.setLongtask(Long.valueOf(serviceTask.getLongTask()));
+                    if (serviceTaskVO.getLongTask() == 1) serviceTaskmedical.setLongtask(1L);
+                    serviceTaskmedical.setMedicalCode(serviceTaskVO.getIcd10code());
+                    serviceTaskmedical.setMedicalName(serviceTaskVO.getIcd10name());
+                    serviceTaskmedical.setGuid(serviceTask.getGuid());
+                    serviceTaskmedical.setOrgid(serviceTask.getOrgid());
+                    serviceTaskmedical.setCreateTime(new Date());
+                    serviceTaskmedical.setDeptCode(serviceTaskVO.getDeptcode());
+                    serviceTaskmedical.setDeptName(serviceTaskVO.getDeptname());
+                    serviceTaskmedical.setWardCode(serviceTaskVO.getLeavehospitaldistrictcode());
+                    serviceTaskmedical.setWardName(serviceTaskVO.getLeavehospitaldistrictname());
+                    //鍗楀崕闄勪竴鐨刬cd10code鏄湁閲嶅鐨勶紝鎵�浠ヤ笉鑳界敤鍗楀崕闄勪竴鐨刬cd10code鍘绘煡璇�
+                    log.info("----serviceTaskmedical鐨勫�间负锛歿}", serviceTaskmedical);
+                    if (!StringUtils.isEmpty(serviceTaskVO.getMedicalName())) {
+                        String[] medicalNames = serviceTaskVO.getMedicalName().split(",");
+                        String[] medicalcodes = serviceTaskVO.getMedicalCode().split(",");
+                        String[] medicalCompanys = serviceTaskVO.getMedicalCompany().split(",");
+                        for (int i = 0; i < medicalNames.length; i++) {
+                            serviceTaskmedical.setMedicalCode(medicalNames[i]);
+                            serviceTaskmedical.setMedicalName(medicalcodes[i]);
+                            if (ObjectUtils.isNotEmpty(medicalCompanys))
+                                serviceTaskmedical.setMedicalCompany(medicalcodes[i]);
+                            serviceTaskmedicalService.insertServiceTaskmedical(serviceTaskmedical);
+                        }
+                    }
                 } else {
                     ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
                     serviceTaskdept.setTaskId(serviceTask.getTaskid());
@@ -1146,6 +1199,51 @@
                         }
                     }
 
+                } else if (serviceTaskVO.getAppltype().equals("6")) {
+                    ServiceTaskmedical serviceTaskmedical = new ServiceTaskmedical();
+                    serviceTaskmedical.setTaskId(serviceTask.getTaskid());
+                    serviceTaskmedical.setTaskName(serviceTask.getTaskName());
+                    if (StringUtils.isEmpty(serviceTaskVO.getIcd10code())) {
+                        throw new BaseException("鑽搧缂栫爜涓虹┖");
+                    }
+                    serviceTaskmedical.setLongtask(Long.valueOf(serviceTask.getLongTask()));
+                    serviceTaskmedical.setMedicalName(serviceTaskVO.getMedicalName());
+                    serviceTaskmedical.setGuid(serviceTask1.getGuid());
+                    serviceTaskmedical.setServiceType(serviceTask1.getServiceType());
+                    serviceTaskmedical.setOrgid(serviceTask1.getOrgid());
+                    serviceTaskmedical.setDeptCode(serviceTask1.getDeptcode());
+                    serviceTaskmedical.setDeptName(serviceTask1.getDeptname());
+                    serviceTaskmedical.setWardCode(serviceTask1.getLeavehospitaldistrictcode());
+                    serviceTaskmedical.setWardName(serviceTask1.getLeavehospitaldistrictname());
+                    serviceTaskmedical.setUpdateTime(new Date());
+                    if (StringUtils.isNotEmpty(serviceTaskVO.getMedicalCode())) {
+                        String[] medicalCodes = serviceTaskVO.getMedicalCode().split(",");
+                        String[] medicalNames = serviceTaskVO.getMedicalName().split(",");
+                        String[] medicalCompany = serviceTaskVO.getMedicalCompany().split(",");
+                        if (!active.equals("nhfy") && !active.equals("druid")) {
+                            if (medicalCodes.length != medicalNames.length) {
+                                throw new BaseException("鑽搧缂栫爜鍜岃嵂鍝佸悕绉版暟閲忎笉涓�鑷�");
+                            }
+                        }
+                        for (int i = 0; i < medicalCodes.length; i++) {
+                            //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦�
+                            ServiceTaskmedical serviceTaskmedical1 = new ServiceTaskmedical();
+                            serviceTaskmedical1.setTaskId(serviceTaskVO.getTaskid());
+                            serviceTaskmedical1.setMedicalCode(medicalCodes[i]);
+                            serviceTaskmedical1.setMedicalName(medicalNames[i]);
+                            List<ServiceTaskmedical> serviceTaskmedicals = serviceTaskmedicalService.selectServiceTaskmedicalList(serviceTaskmedical1);
+                            serviceTaskmedical.setMedicalCode(medicalCodes[i]);
+                            serviceTaskmedical.setMedicalName(medicalNames[i]);
+                            log.info("----serviceTaskmedical鏇存柊鐨勫�间负锛歿}", serviceTaskmedical);
+                            if (CollectionUtils.isNotEmpty(serviceTaskmedicals)) {
+                                serviceTaskmedical.setId(serviceTaskmedicals.get(0).getId());
+                                serviceTaskmedicalService.updateServiceTaskmedical(serviceTaskmedical);
+                            } else {
+                                serviceTaskmedicalService.insertServiceTaskmedical(serviceTaskmedical);
+                            }
+                        }
+                    }
+
                 } else if (serviceTaskVO.getAppltype().equals("4")) {
                     ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
 //                    if (StringUtils.isEmpty(serviceTaskVO.getOpcode())) {
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceTaskmedicalServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceTaskmedicalServiceImpl.java
new file mode 100644
index 0000000..42098e9
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceTaskmedicalServiceImpl.java
@@ -0,0 +1,97 @@
+package com.smartor.service.impl;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.smartor.domain.ServiceTaskmedical;
+import com.smartor.mapper.ServiceTaskmedicalMapper;
+import com.smartor.service.IServiceTaskmedicalService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 浠诲姟鑽搧鍏宠仈Service涓氬姟灞傚鐞�
+ *
+ * @author lihu
+ * @date 2026-07-29
+ */
+@Service
+public class ServiceTaskmedicalServiceImpl implements IServiceTaskmedicalService
+{
+    @Autowired
+    private ServiceTaskmedicalMapper serviceTaskmedicalMapper;
+
+    /**
+     * 鏌ヨ浠诲姟鑽搧鍏宠仈
+     *
+     * @param id 浠诲姟鑽搧鍏宠仈涓婚敭
+     * @return 浠诲姟鑽搧鍏宠仈
+     */
+    @Override
+    public ServiceTaskmedical selectServiceTaskmedicalById(Long id)
+    {
+        return serviceTaskmedicalMapper.selectServiceTaskmedicalById(id);
+    }
+
+    /**
+     * 鏌ヨ浠诲姟鑽搧鍏宠仈鍒楄〃
+     *
+     * @param serviceTaskmedical 浠诲姟鑽搧鍏宠仈
+     * @return 浠诲姟鑽搧鍏宠仈
+     */
+    @Override
+    public List<ServiceTaskmedical> selectServiceTaskmedicalList(ServiceTaskmedical serviceTaskmedical)
+    {
+        return serviceTaskmedicalMapper.selectServiceTaskmedicalList(serviceTaskmedical);
+    }
+
+    /**
+     * 鏂板浠诲姟鑽搧鍏宠仈
+     *
+     * @param serviceTaskmedical 浠诲姟鑽搧鍏宠仈
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertServiceTaskmedical(ServiceTaskmedical serviceTaskmedical)
+    {
+        serviceTaskmedical.setCreateTime(DateUtils.getNowDate());
+        return serviceTaskmedicalMapper.insertServiceTaskmedical(serviceTaskmedical);
+    }
+
+    /**
+     * 淇敼浠诲姟鑽搧鍏宠仈
+     *
+     * @param serviceTaskmedical 浠诲姟鑽搧鍏宠仈
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateServiceTaskmedical(ServiceTaskmedical serviceTaskmedical)
+    {
+        serviceTaskmedical.setUpdateTime(DateUtils.getNowDate());
+        return serviceTaskmedicalMapper.updateServiceTaskmedical(serviceTaskmedical);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎浠诲姟鑽搧鍏宠仈
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑浠诲姟鑽搧鍏宠仈涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteServiceTaskmedicalByIds(Long[] ids)
+    {
+        return serviceTaskmedicalMapper.deleteServiceTaskmedicalByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎浠诲姟鑽搧鍏宠仈淇℃伅
+     *
+     * @param id 浠诲姟鑽搧鍏宠仈涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteServiceTaskmedicalById(Long id)
+    {
+        return serviceTaskmedicalMapper.deleteServiceTaskmedicalById(id);
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/XHGatherPatArchiveServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/XHGatherPatArchiveServiceImpl.java
index 150769f..f13c364 100644
--- a/smartor/src/main/java/com/smartor/service/impl/XHGatherPatArchiveServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/XHGatherPatArchiveServiceImpl.java
@@ -284,8 +284,8 @@
     private Map<String, String> buildRequestHeaders(LocalDateTime startTime) {
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");
         Map<String, String> header = new HashMap<>();
-        header.put("x-hcsb-serviceno", "IS044056");
-//        header.put("x-hcsb-serviceno", "IS002347");
+//        header.put("x-hcsb-serviceno", "IS044056");
+        header.put("x-hcsb-serviceno", "IS002347");
         header.put("x-hcsb-version", "2.0");
         header.put("x-hcsb-sourcesyscode", "14");
         header.put("x-hcsb-token", "ArGE2JnHtxG/Zx5nrnGY4eOfMUJGGJokAJHigG1BrCY=");
@@ -333,14 +333,14 @@
             // 鏍¢獙data瀛楁鏄惁涓篔sonObject
             JsonElement dataElement = jsonObject.get("data");
             if (dataElement == null || !dataElement.isJsonObject()) {
-                log.warn("銆恜arseResponseData銆戝搷搴旀暟鎹腑data瀛楁涓虹┖鎴栭潪瀵硅薄绫诲瀷锛屽師濮嬫暟鎹細{}", result);
+                log.info("銆恜arseResponseData銆戝搷搴旀暟鎹腑data瀛楁涓虹┖鎴栭潪瀵硅薄绫诲瀷锛屽師濮嬫暟鎹細{}", result);
                 return new ArrayList<>();
             }
 
             JsonObject dataObject = dataElement.getAsJsonObject();
             JsonElement resultElement = dataObject.get("result");
             if (resultElement == null || !resultElement.isJsonArray()) {
-                log.warn("銆恜arseResponseData銆戝搷搴旀暟鎹腑result瀛楁涓虹┖鎴栭潪鏁扮粍绫诲瀷锛屽師濮嬫暟鎹細{}", result);
+                log.info("銆恜arseResponseData銆戝搷搴旀暟鎹腑result瀛楁涓虹┖鎴栭潪鏁扮粍绫诲瀷锛屽師濮嬫暟鎹細{}", result);
                 return new ArrayList<>();
             }
 
diff --git a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
index 95f1bcc..b003d6b 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -339,6 +339,9 @@
                 #{icd10code}
             </foreach>
         </if>
+        <if test="medicalCode != null and medicalCode != ''">and b.medical_code = #{medicalCode}</if>
+        <if test="medicalName != null and medicalName != ''">and b.medical_name = #{medicalName}</if>
+        <if test="medicalCompany != null and medicalCompany != ''">and b.medical_company = #{medicalCompany}</if>
         GROUP BY
         b.inhospid,
         a.age,
@@ -365,6 +368,9 @@
         select
         b.inhospid,
         b.nurse_id,
+        b.medical_code,
+        b.medical_name,
+        b.medical_company,
         b.encounter_source_id,
         b.importance_flag_code,
         b.emergency_level_code,
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 49d4fda..073c0ef 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -98,6 +98,7 @@
         <result property="scheduleDetailId" column="schedule_detail_id"/>
         <result property="scheduleSeq" column="schedule_seq"/>
         <result property="loopCount" column="loop_count"/>
+        <result property="campusid" column="campusid"/>
     </resultMap>
 
     <resultMap type="com.smartor.domain.ServiceSubtaskCount" id="ServiceSubtaskResult2">
@@ -151,6 +152,7 @@
     <sql id="selectServiceSubtaskVo">
         select id,
                hosp_type,
+               campusid,
                task_guid,
                diagname,
                patfrom,
@@ -969,6 +971,7 @@
             <if test="continueTimeNext != null ">continue_time_next,</if>
             <if test="continueContent != null ">continue_content,</if>
             <if test="operationItemId != null ">operation_item_id,</if>
+            <if test="campusid != null">campusid,</if>
             <if test="scheduleId != null ">schedule_id,</if>
             <if test="scheduleDetailId != null ">schedule_detail_id,</if>
             <if test="scheduleSeq != null ">schedule_seq,</if>
@@ -1065,6 +1068,7 @@
             <if test="continueTimeNext != null ">#{continueTimeNext,jdbcType=TIMESTAMP},</if>
             <if test="continueContent != null ">#{continueContent},</if>
             <if test="operationItemId != null ">#{operationItemId},</if>
+            <if test="campusid != null">#{campusid},</if>
             <if test="scheduleId != null ">#{scheduleId},</if>
             <if test="scheduleDetailId != null ">#{scheduleDetailId},</if>
             <if test="scheduleSeq != null ">#{scheduleSeq},</if>
@@ -1166,6 +1170,7 @@
             <if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext,jdbcType=TIMESTAMP},</if>
             <if test="continueContent != null ">continue_content = #{continueContent},</if>
             <if test="operationItemId != null ">operation_item_id = #{operationItemId},</if>
+            <if test="campusid != null">campusid=#{campusid},</if>
             <if test="scheduleId != null ">schedule_id = #{scheduleId},</if>
             <if test="scheduleDetailId != null ">schedule_detail_id = #{scheduleDetailId},</if>
             <if test="scheduleSeq != null ">schedule_seq = #{scheduleSeq},</if>
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceTaskmedicalMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceTaskmedicalMapper.xml
new file mode 100644
index 0000000..15ac16e
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/ServiceTaskmedicalMapper.xml
@@ -0,0 +1,326 @@
+<?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.smartor.mapper.ServiceTaskmedicalMapper">
+
+    <resultMap type="com.smartor.domain.ServiceTaskmedical" id="ServiceTaskmedicalResult">
+        <result property="id" column="id"/>
+        <result property="orgid" column="orgid"/>
+        <result property="taskId" column="task_id"/>
+        <result property="taskName" column="task_name"/>
+        <result property="longtask" column="longtask"/>
+        <result property="serviceType" column="service_type"/>
+        <result property="icd10id" column="icd10id"/>
+        <result property="medicalCode" column="medical_code"/>
+        <result property="medicalName" column="medical_name"/>
+        <result property="medicalCompany" column="medical_company"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="isupload" column="isupload"/>
+        <result property="uploadTime" column="upload_time"/>
+        <result property="guid" column="guid"/>
+        <result property="pguid" column="pguid"/>
+        <result property="pid" column="pid"/>
+        <result property="wardCode" column="ward_code"/>
+        <result property="wardName" column="ward_name"/>
+        <result property="deptCode" column="dept_code"/>
+        <result property="deptName" column="dept_name"/>
+    </resultMap>
+
+    <sql id="selectServiceTaskmedicalVo">
+        select id,
+               orgid,
+               task_id,
+               task_name,
+               longtask,
+               service_type,
+               icd10id,
+               medical_code,
+               medical_name,
+               medical_company,
+               del_flag,
+               update_by,
+               update_time,
+               create_by,
+               create_time,
+               isupload,
+               upload_time,
+               guid,
+               pguid,
+               pid,
+               ward_code,
+               ward_name,
+               dept_code,
+               dept_name
+        from service_taskmedical
+    </sql>
+
+    <select id="selectServiceTaskmedicalList" parameterType="com.smartor.domain.ServiceTaskmedical"
+            resultMap="ServiceTaskmedicalResult">
+        <include refid="selectServiceTaskmedicalVo"/>
+        where 1=1
+        and del_flag=0
+        <if test="orgid != null  and orgid != ''">
+            and orgid = #{orgid}
+        </if>
+        <if test="taskId != null ">
+            and task_id = #{taskId}
+        </if>
+        <if test="taskName != null  and taskName != ''">
+            and task_name like concat('%', #{taskName}, '%')
+        </if>
+        <if test="longtask != null ">
+            and longtask = #{longtask}
+        </if>
+        <if test="serviceType != null  and serviceType != ''">
+            and service_type = #{serviceType}
+        </if>
+        <if test="icd10id != null ">
+            and icd10id = #{icd10id}
+        </if>
+        <if test="medicalCode != null  and medicalCode != ''">
+            and medical_code = #{medicalCode}
+        </if>
+        <if test="medicalName != null  and medicalName != ''">
+            and medical_name like concat('%', #{medicalName}, '%')
+        </if>
+        <if test="medicalCompany != null  and medicalCompany != ''">
+            and medical_company = #{medicalCompany}
+        </if>
+        <if test="isupload != null ">
+            and isupload = #{isupload}
+        </if>
+        <if test="uploadTime != null ">
+            and upload_time = #{uploadTime}
+        </if>
+        <if test="guid != null  and guid != ''">
+            and guid = #{guid}
+        </if>
+        <if test="pguid != null  and pguid != ''">
+            and pguid = #{pguid}
+        </if>
+        <if test="pid != null ">
+            and pid = #{pid}
+        </if>
+        <if test="wardCode != null  and wardCode != ''">
+            and ward_code = #{wardCode}
+        </if>
+        <if test="wardName != null  and wardName != ''">
+            and ward_name like concat('%', #{wardName}, '%')
+        </if>
+        <if test="deptCode != null  and deptCode != ''">
+            and dept_code = #{deptCode}
+        </if>
+        <if test="deptName != null  and deptName != ''">
+            and dept_name like concat('%', #{deptName}, '%')
+        </if>
+    </select>
+
+    <select id="selectServiceTaskmedicalById" parameterType="Long"
+            resultMap="ServiceTaskmedicalResult">
+        <include refid="selectServiceTaskmedicalVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertServiceTaskmedical" parameterType="com.smartor.domain.ServiceTaskmedical" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into service_taskmedical
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="orgid != null">orgid,
+            </if>
+            <if test="taskId != null">task_id,
+            </if>
+            <if test="taskName != null">task_name,
+            </if>
+            <if test="longtask != null">longtask,
+            </if>
+            <if test="serviceType != null">service_type,
+            </if>
+            <if test="icd10id != null">icd10id,
+            </if>
+            <if test="medicalCode != null">medical_code,
+            </if>
+            <if test="medicalName != null">medical_name,
+            </if>
+            <if test="medicalCompany != null">medical_company,
+            </if>
+            <if test="delFlag != null">del_flag,
+            </if>
+            <if test="updateBy != null">update_by,
+            </if>
+            <if test="updateTime != null">update_time,
+            </if>
+            <if test="createBy != null">create_by,
+            </if>
+            <if test="createTime != null">create_time,
+            </if>
+            <if test="isupload != null">isupload,
+            </if>
+            <if test="uploadTime != null">upload_time,
+            </if>
+            <if test="guid != null">guid,
+            </if>
+            <if test="pguid != null">pguid,
+            </if>
+            <if test="pid != null">pid,
+            </if>
+            <if test="wardCode != null">ward_code,
+            </if>
+            <if test="wardName != null">ward_name,
+            </if>
+            <if test="deptCode != null">dept_code,
+            </if>
+            <if test="deptName != null">dept_name,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="orgid != null">#{orgid},
+            </if>
+            <if test="taskId != null">#{taskId},
+            </if>
+            <if test="taskName != null">#{taskName},
+            </if>
+            <if test="longtask != null">#{longtask},
+            </if>
+            <if test="serviceType != null">#{serviceType},
+            </if>
+            <if test="icd10id != null">#{icd10id},
+            </if>
+            <if test="medicalCode != null">#{medicalCode},
+            </if>
+            <if test="medicalName != null">#{medicalName},
+            </if>
+            <if test="medicalCompany != null">#{medicalCompany},
+            </if>
+            <if test="delFlag != null">#{delFlag},
+            </if>
+            <if test="updateBy != null">#{updateBy},
+            </if>
+            <if test="updateTime != null">#{updateTime},
+            </if>
+            <if test="createBy != null">#{createBy},
+            </if>
+            <if test="createTime != null">#{createTime},
+            </if>
+            <if test="isupload != null">#{isupload},
+            </if>
+            <if test="uploadTime != null">#{uploadTime},
+            </if>
+            <if test="guid != null">#{guid},
+            </if>
+            <if test="pguid != null">#{pguid},
+            </if>
+            <if test="pid != null">#{pid},
+            </if>
+            <if test="wardCode != null">#{wardCode},
+            </if>
+            <if test="wardName != null">#{wardName},
+            </if>
+            <if test="deptCode != null">#{deptCode},
+            </if>
+            <if test="deptName != null">#{deptName},
+            </if>
+        </trim>
+    </insert>
+
+    <update id="updateServiceTaskmedical" parameterType="com.smartor.domain.ServiceTaskmedical">
+        update service_taskmedical
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="orgid != null">orgid =
+                #{orgid},
+            </if>
+            <if test="taskId != null">task_id =
+                #{taskId},
+            </if>
+            <if test="taskName != null">task_name =
+                #{taskName},
+            </if>
+            <if test="longtask != null">longtask =
+                #{longtask},
+            </if>
+            <if test="serviceType != null">service_type =
+                #{serviceType},
+            </if>
+            <if test="icd10id != null">icd10id =
+                #{icd10id},
+            </if>
+            <if test="medicalCode != null">medical_code =
+                #{medicalCode},
+            </if>
+            <if test="medicalName != null">medical_name =
+                #{medicalName},
+            </if>
+            <if test="medicalCompany != null">medical_company =
+                #{medicalCompany},
+            </if>
+            <if test="delFlag != null">del_flag =
+                #{delFlag},
+            </if>
+            <if test="updateBy != null">update_by =
+                #{updateBy},
+            </if>
+            <if test="updateTime != null">update_time =
+                #{updateTime},
+            </if>
+            <if test="createBy != null">create_by =
+                #{createBy},
+            </if>
+            <if test="createTime != null">create_time =
+                #{createTime},
+            </if>
+            <if test="isupload != null">isupload =
+                #{isupload},
+            </if>
+            <if test="uploadTime != null">upload_time =
+                #{uploadTime},
+            </if>
+            <if test="guid != null">guid =
+                #{guid},
+            </if>
+            <if test="pguid != null">pguid =
+                #{pguid},
+            </if>
+            <if test="pid != null">pid =
+                #{pid},
+            </if>
+            <if test="wardCode != null">ward_code =
+                #{wardCode},
+            </if>
+            <if test="wardName != null">ward_name =
+                #{wardName},
+            </if>
+            <if test="deptCode != null">dept_code =
+                #{deptCode},
+            </if>
+            <if test="deptName != null">dept_name =
+                #{deptName},
+            </if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteServiceTaskmedicalById" parameterType="Long">
+        update service_taskmedical
+        <trim prefix="SET" suffixOverrides=",">
+            del_flag =1
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteServiceTaskmedicalByIds" parameterType="String">
+        update service_taskmedical
+        <trim prefix="SET" suffixOverrides=",">
+            del_flag =1
+        </trim>
+        where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+
+</mapper>
diff --git a/smartor/src/main/resources/mapper/smartor/SvyTaskSingleMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyTaskSingleMapper.xml
index 5e5873c..293cabc 100644
--- a/smartor/src/main/resources/mapper/smartor/SvyTaskSingleMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SvyTaskSingleMapper.xml
@@ -12,7 +12,7 @@
         <result property="age" column="age"/>
         <result property="sfzh" column="sfzh"/>
         <result property="addr" column="addr"/>
-        <result property="senderdetail" column="senderdetail"/>
+        <result property="hospitaldistrictname" column="hospitaldistrictname"/>
         <result property="type" column="type"/>
         <result property="taskid" column="taskid"/>
         <result property="templateid" column="templateid"/>
@@ -81,7 +81,7 @@
                age,
                sfzh,
                addr,
-               senderdetail,
+               hospitaldistrictname,
                type,
                taskid,
                templateid,
@@ -151,7 +151,7 @@
             <if test="age != null ">and age = #{age}</if>
             <if test="sfzh != null  and sfzh != ''">and sfzh = #{sfzh}</if>
             <if test="addr != null  and addr != ''">and addr = #{addr}</if>
-            <if test="senderdetail != null  and senderdetail != ''">and senderdetail = #{senderdetail}</if>
+            <if test="hospitaldistrictname != null  and hospitaldistrictname != ''">and hospitaldistrictname = #{hospitaldistrictname}</if>
             <if test="type != null  and type != ''">and type = #{type}</if>
             <if test="taskid != null ">and taskid = #{taskid}</if>
             <if test="templateid != null  and templateid != ''">and templateid = #{templateid}</if>
@@ -224,7 +224,7 @@
             <if test="age != null">age,</if>
             <if test="sfzh != null">sfzh,</if>
             <if test="addr != null">addr,</if>
-            <if test="senderdetail != null">senderdetail,</if>
+            <if test="hospitaldistrictname != null">hospitaldistrictname,</if>
             <if test="type != null">type,</if>
             <if test="taskid != null">taskid,</if>
             <if test="templateid != null">templateid,</if>
@@ -290,7 +290,7 @@
             <if test="age != null">#{age},</if>
             <if test="sfzh != null">#{sfzh},</if>
             <if test="addr != null">#{addr},</if>
-            <if test="senderdetail != null">#{senderdetail},</if>
+            <if test="hospitaldistrictname != null">#{hospitaldistrictname},</if>
             <if test="type != null">#{type},</if>
             <if test="taskid != null">#{taskid},</if>
             <if test="templateid != null">#{templateid},</if>
@@ -360,7 +360,7 @@
             <if test="age != null">age = #{age},</if>
             <if test="sfzh != null">sfzh = #{sfzh},</if>
             <if test="addr != null">addr = #{addr},</if>
-            <if test="senderdetail != null">senderdetail = #{senderdetail},</if>
+            <if test="hospitaldistrictname != null">hospitaldistrictname = #{hospitaldistrictname},</if>
             <if test="type != null">type = #{type},</if>
             <if test="taskid != null">taskid = #{taskid},</if>
             <if test="templateid != null">templateid = #{templateid},</if>

--
Gitblit v1.9.3