From 732024c03df1d810b8f5a8a526066967f1bfbb5d Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 26 六月 2026 17:53:27 +0800
Subject: [PATCH] 南华部分功能提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java     |   44 ++-
 ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java                               |    5 
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java                           |    9 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java |    4 
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java                             |   88 ++++---
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SmsTempletMapper.java                       |    4 
 smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java                          |    2 
 ruoyi-system/src/main/resources/mapper/system/SmsTempletMapper.xml                             |  115 +++++++--
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml                             |   14 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SmsTempletController.java           |   14 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java       |   53 ++-
 smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java                      |    6 
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java                  |   91 +++++++-
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsTempletServiceImpl.java            |   24 -
 ruoyi-system/src/main/java/com/ruoyi/system/domain/SmsTemplet.java                             |  150 +++++--------
 15 files changed, 385 insertions(+), 238 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java
index a2b1269..661753f 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java
@@ -83,7 +83,7 @@
     //@PreAuthorize("@ss.hasPermi('system:answer:add')")
     @Log(title = "浠诲姟闂嵎闂閫夐」", businessType = BusinessType.INSERT)
     @ApiOperation("鏂板浠诲姟闂嵎闂閫夐」")
-@PostMapping("/add")
+    @PostMapping("/add")
     public AjaxResult add(@RequestBody ServiceSubtaskAnswer serviceSubtaskAnswer) {
         SysUser user = getLoginUser().getUser();
         serviceSubtaskAnswer.setOrgid(user.getOrgid());
@@ -96,7 +96,7 @@
     //@PreAuthorize("@ss.hasPermi('system:answer:edit')")
     @Log(title = "浠诲姟闂嵎闂閫夐」", businessType = BusinessType.UPDATE)
     @ApiOperation("淇敼浠诲姟闂嵎闂閫夐」")
-@PostMapping("/edit")
+    @PostMapping("/edit")
     public AjaxResult edit(@RequestBody ServiceSubtaskAnswer serviceSubtaskAnswer) {
         log.info("銆恠aveQuestionCache-----edit銆戠殑鍏ュ弬涓猴細{}", serviceSubtaskAnswer);
         return toAjax(serviceSubtaskAnswerService.updateServiceSubtaskAnswer(serviceSubtaskAnswer));
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 a1f195b..f73cbce 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
@@ -1,6 +1,8 @@
 package com.ruoyi.web.controller.smartor;
 
 import com.alibaba.fastjson.JSON;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.github.pagehelper.ISelect;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
@@ -14,20 +16,21 @@
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.dx.MessageSend;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.enums.MsgLSEnum;
 import com.ruoyi.common.enums.PreachFormEnum;
 import com.ruoyi.common.enums.SendStateEnum;
 import com.ruoyi.common.exception.base.BaseException;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.DtoConversionUtils;
-import com.ruoyi.common.utils.PageUtils;
-import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.*;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.utils.reflect.ReflectUtils;
 import com.ruoyi.quartz.service.ICollectHISService;
 import com.ruoyi.quartz.task.RyTask;
+import com.ruoyi.system.domain.SysConfig;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserDeptService;
+import com.smartor.common.LSHospTokenUtil;
 import com.smartor.common.QwenLLMUtil;
 import com.smartor.domain.*;
 import com.smartor.domain.VO.HeLibraryCountVO;
@@ -50,6 +53,8 @@
 
 import javax.servlet.http.HttpServletResponse;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -238,7 +243,7 @@
             for (ServiceSubtaskExport serviceSubtaskExport : serviceSubtaskExports) {
                 String pf = PreachFormEnum.getDescByCode(serviceSubtaskExport.getPreachform());
                 serviceSubtaskExport.setPreachform(pf);
-                if(serviceSubtaskExport.getSendstate() != null) {
+                if (serviceSubtaskExport.getSendstate() != null) {
                     String stName = SendStateEnum.getDescByCode("" + serviceSubtaskExport.getSendstate());
                     serviceSubtaskExport.setStName(stName);
                 }
@@ -555,25 +560,21 @@
 
         Integer statisticaltype = serviceSubtaskCountReq.getStatisticaltype();
 
-        if(ObjectUtils.isNotEmpty(statisticaltype)){
+        if (ObjectUtils.isNotEmpty(statisticaltype)) {
             SysUser user = getLoginUser().getUser();
-            if(!isAdmin.contains(user.getUserId())){
-                if(statisticaltype==1){
-                    if(CollectionUtils.isEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())){
+            if (!isAdmin.contains(user.getUserId())) {
+                if (statisticaltype == 1) {
+                    if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) {
                         //鍏ㄩ儴鐥呭尯
                         String deptInfo = user.getDeptInfo();
-                        List<String> leavehospitaldistrictcodes = JSON.parseArray(deptInfo)
-                                .stream()
-                                .map(item -> (String) ((List<?>) item).get(0)).collect(Collectors.toList());
+                        List<String> leavehospitaldistrictcodes = JSON.parseArray(deptInfo).stream().map(item -> (String) ((List<?>) item).get(0)).collect(Collectors.toList());
                         serviceSubtaskCountReq.setLeavehospitaldistrictcodes(leavehospitaldistrictcodes);
                     }
-                }else if(statisticaltype==2){
-                    if(CollectionUtils.isEmpty(serviceSubtaskCountReq.getDeptcodes())){
+                } else if (statisticaltype == 2) {
+                    if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getDeptcodes())) {
                         //鍏ㄩ儴绉戝
                         String hospInfo = user.getHospInfo();
-                        List<String> deptCodes = JSON.parseArray(hospInfo)
-                                .stream()
-                                .map(item -> (String) ((List<?>) item).get(0)).collect(Collectors.toList());
+                        List<String> deptCodes = JSON.parseArray(hospInfo).stream().map(item -> (String) ((List<?>) item).get(0)).collect(Collectors.toList());
                         serviceSubtaskCountReq.setDeptcodes(deptCodes);
                     }
                 }
@@ -878,6 +879,17 @@
         return serviceSubtaskService.getHeLibraryCount(heLibraryCountVO);
     }
 
+    /**
+     * 鎵嬪姩鍙戦�侀棶鍗锋ā鏉跨殑鐭俊鍔熻兘
+     *
+     * @param subid
+     * @return
+     */
+    @GetMapping(value = "/smsSubTask/{subid}")
+    public Map<String, Object> smsSubTask(@PathVariable("subid") Long subid) {
+        return serviceSubtaskService.smsSubTask(subid);
+    }
+
 
     @PostMapping("/test")
     public void test() {
@@ -885,12 +897,12 @@
     }
 
     @PostMapping("/compensateTasktest")
-    public void compensateTasktest(@RequestParam("subId")Long subId) {
+    public void compensateTasktest(@RequestParam("subId") Long subId) {
         ryTask.compensateTaskTest(subId);
     }
 
     @PostMapping("/longTaskSendtest")
-    public void longTaskSendtest(@RequestParam("subId")Long subId) {
+    public void longTaskSendtest(@RequestParam("subId") Long subId) {
         ryTask.longTaskSendTest(subId);
     }
 
@@ -905,8 +917,7 @@
     }
 
     @PostMapping("/qwenLLMTest")
-    public int qwenLLMTest(@RequestParam("voiceText") String questionText, @RequestParam("voiceText") String voiceText,
-                                      @RequestParam("value") String value,@RequestParam("regexText") String regexText) {
+    public int qwenLLMTest(@RequestParam("voiceText") String questionText, @RequestParam("voiceText") String voiceText, @RequestParam("value") String value, @RequestParam("regexText") String regexText) {
         int result = ryTask.qwenLLMTest(questionText, voiceText, value, regexText);
         return result;
     }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SmsTempletController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SmsTempletController.java
index 38fb37c..8607f25 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SmsTempletController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SmsTempletController.java
@@ -1,8 +1,10 @@
-package com.smartor.controller;
+package com.ruoyi.web.controller.smartor;
 
 import java.util.List;
+import java.util.Map;
 import javax.servlet.http.HttpServletResponse;
 
+import cn.hutool.core.util.ObjectUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -35,11 +37,13 @@
      * 鏌ヨ鐭俊妯℃澘鍒楄〃
      */
     //@PreAuthorize("@ss.hasPermi('smartor:smstemplet:list')")
-    @PostMapping("list")
-    public TableDataInfo list(@RequestBody SmsTemplet smsTemplet) {
-        startPage();
+    @PostMapping("/list")
+    public Map<String, Object> list(@RequestBody SmsTemplet smsTemplet) {
+        //杩欎釜涓嶉渶瑕佸垎椤碉紝涓�涓瀹や篃涓嶄細鏈夊灏戞潯鐭俊妯℃澘
+        smsTemplet.setPageNum(null);
+        smsTemplet.setPageSize(null);
         List<SmsTemplet> list = smsTempletService.selectSmsTempletList(smsTemplet);
-        return getDataTable(list);
+        return getDataTable3(ObjectUtil.isNotEmpty(list)?list.size():0, list);
     }
 
     /**
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
index 53136cd..f955e1e 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
@@ -4,6 +4,7 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.*;
+import java.time.temporal.ChronoUnit;
 import java.util.Date;
 
 import org.apache.commons.lang3.time.DateFormatUtils;
@@ -114,7 +115,9 @@
      * 璁$畻鐩稿樊澶╂暟
      */
     public static int differentDaysByMillisecond(Date date1, Date date2) {
-        return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)));
+        LocalDate d1 = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        LocalDate d2 = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        return (int) ChronoUnit.DAYS.between(d1, d2);
     }
 
     /**
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SmsTemplet.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SmsTemplet.java
index ff6ca24..ff83b57 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SmsTemplet.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SmsTemplet.java
@@ -1,7 +1,9 @@
 package com.ruoyi.system.domain;
 
 import java.util.Date;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
@@ -13,114 +15,84 @@
  * @author smartor
  * @date 2023-03-06
  */
-public class SmsTemplet extends BaseEntity
-{
+@Data
+public class SmsTemplet extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /** $column.columnComment */
+    /**
+     * 涓婚敭
+     */
     private Long templetid;
 
-    /** $column.columnComment */
+    /**
+     * 鐭俊妯℃澘缂栧彿
+     */
     @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private String templetno;
 
-    /** $column.columnComment */
+    /**
+     * 鐭俊妯℃澘鍚嶇О
+     */
     @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private String templetname;
 
-    /** $column.columnComment */
+    /**
+     * 妯℃澘鍐呭
+     */
     @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private String templetcontent;
 
-    /** $column.columnComment */
+    /**
+     * 閮ㄩ棬缂栫爜
+     */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String deptCode;
+
+    /**
+     * 閮ㄩ棬鍚嶇О
+     */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String deptName;
+
+    /**
+     * 鐥呭尯缂栫爜
+     */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String wardCode;
+
+    /**
+     * 鐥呭尯鍚嶇О
+     */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String wardName;
+
+    /**
+     * 鐢ㄦ埛宸ュ彿
+     */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String userName;
+
+    /**
+     * 鐢ㄦ埛閾濈當
+     */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String nickName;
+
+    /**
+     * $column.columnComment
+     */
     private String delFlag;
 
-    /** $column.columnComment */
+    /**
+     * $column.columnComment
+     */
     @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private Long isupload;
 
-    /** $column.columnComment */
+    /**
+     * $column.columnComment
+     */
     @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private Date uploadTime;
 
-    public void setTempletid(Long templetid)
-    {
-        this.templetid = templetid;
-    }
-
-    public Long getTempletid()
-    {
-        return templetid;
-    }
-    public void setTempletno(String templetno)
-    {
-        this.templetno = templetno;
-    }
-
-    public String getTempletno()
-    {
-        return templetno;
-    }
-    public void setTempletname(String templetname)
-    {
-        this.templetname = templetname;
-    }
-
-    public String getTempletname()
-    {
-        return templetname;
-    }
-    public void setTempletcontent(String templetcontent)
-    {
-        this.templetcontent = templetcontent;
-    }
-
-    public String getTempletcontent()
-    {
-        return templetcontent;
-    }
-    public void setDelFlag(String delFlag)
-    {
-        this.delFlag = delFlag;
-    }
-
-    public String getDelFlag()
-    {
-        return delFlag;
-    }
-    public void setIsupload(Long isupload)
-    {
-        this.isupload = isupload;
-    }
-
-    public Long getIsupload()
-    {
-        return isupload;
-    }
-    public void setUploadTime(Date uploadTime)
-    {
-        this.uploadTime = uploadTime;
-    }
-
-    public Date getUploadTime()
-    {
-        return uploadTime;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("templetid", getTempletid())
-            .append("templetno", getTempletno())
-            .append("templetname", getTempletname())
-            .append("templetcontent", getTempletcontent())
-            .append("delFlag", getDelFlag())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("isupload", getIsupload())
-            .append("uploadTime", getUploadTime())
-            .toString();
-    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SmsTempletMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SmsTempletMapper.java
index 99eb155..f82c7d7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SmsTempletMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SmsTempletMapper.java
@@ -4,6 +4,8 @@
 
 import java.util.List;
 
+import org.apache.ibatis.annotations.Param;
+
 /**
  * 鐭俊妯℃澘Mapper鎺ュ彛
  *
@@ -58,5 +60,5 @@
      * @param templetids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
      * @return 缁撴灉
      */
-    public int deleteSmsTempletByTempletids(Long[] templetids);
+    public int deleteSmsTempletByTempletids(@Param("templetids") Long[] templetids);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsTempletServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsTempletServiceImpl.java
index d070d37..d428d93 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsTempletServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsTempletServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.service.impl;
 
 import java.util.List;
+
 import com.ruoyi.common.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -15,8 +16,7 @@
  * @date 2023-03-06
  */
 @Service
-public class SmsTempletServiceImpl implements ISmsTempletService
-{
+public class SmsTempletServiceImpl implements ISmsTempletService {
     @Autowired
     private SmsTempletMapper smsTempletMapper;
 
@@ -27,8 +27,7 @@
      * @return 鐭俊妯℃澘
      */
     @Override
-    public SmsTemplet selectSmsTempletByTempletid(Long templetid)
-    {
+    public SmsTemplet selectSmsTempletByTempletid(Long templetid) {
         return smsTempletMapper.selectSmsTempletByTempletid(templetid);
     }
 
@@ -39,8 +38,7 @@
      * @return 鐭俊妯℃澘
      */
     @Override
-    public List<SmsTemplet> selectSmsTempletList(SmsTemplet smsTemplet)
-    {
+    public List<SmsTemplet> selectSmsTempletList(SmsTemplet smsTemplet) {
         return smsTempletMapper.selectSmsTempletList(smsTemplet);
     }
 
@@ -51,8 +49,7 @@
      * @return 缁撴灉
      */
     @Override
-    public int insertSmsTemplet(SmsTemplet smsTemplet)
-    {
+    public int insertSmsTemplet(SmsTemplet smsTemplet) {
         smsTemplet.setCreateTime(DateUtils.getNowDate());
         return smsTempletMapper.insertSmsTemplet(smsTemplet);
     }
@@ -64,8 +61,7 @@
      * @return 缁撴灉
      */
     @Override
-    public int updateSmsTemplet(SmsTemplet smsTemplet)
-    {
+    public int updateSmsTemplet(SmsTemplet smsTemplet) {
         smsTemplet.setUpdateTime(DateUtils.getNowDate());
         return smsTempletMapper.updateSmsTemplet(smsTemplet);
     }
@@ -77,9 +73,8 @@
      * @return 缁撴灉
      */
     @Override
-    public int deleteSmsTempletByTempletids(Long[] templetids)
-    {
-        return smsTempletMapper.deleteSmsTempletByTempletids(templetids);
+    public int deleteSmsTempletByTempletids(Long[] templetids) {
+        return  smsTempletMapper.deleteSmsTempletByTempletids(templetids);
     }
 
     /**
@@ -89,8 +84,7 @@
      * @return 缁撴灉
      */
     @Override
-    public int deleteSmsTempletByTempletid(Long templetid)
-    {
+    public int deleteSmsTempletByTempletid(Long templetid) {
         return smsTempletMapper.deleteSmsTempletByTempletid(templetid);
     }
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/SmsTempletMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SmsTempletMapper.xml
index 85e32c9..3305c94 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SmsTempletMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SmsTempletMapper.xml
@@ -1,40 +1,72 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.system.mapper.SmsTempletMapper">
 
     <resultMap type="SmsTemplet" id="SmsTempletResult">
-        <result property="templetid"    column="templetid"    />
-        <result property="templetno"    column="templetno"    />
-        <result property="templetname"    column="templetname"    />
-        <result property="templetcontent"    column="templetcontent"    />
-        <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="orgid"    column="orgid"    />
+        <result property="templetid" column="templetid"/>
+        <result property="templetno" column="templetno"/>
+        <result property="templetname" column="templetname"/>
+        <result property="templetcontent" column="templetcontent"/>
+        <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="orgid" column="orgid"/>
+        <result property="deptCode" column="dept_code"/>
+        <result property="deptName" column="dept_name"/>
+        <result property="wardName" column="ward_name"/>
+        <result property="wardCode" column="ward_code"/>
+        <result property="userName" column="user_name"/>
+        <result property="nickName" column="nick_name"/>
+
     </resultMap>
 
     <sql id="selectSmsTempletVo">
-        select templetid, templetno, orgid, templetname, templetcontent, del_flag, update_by, guid, update_time, create_by, create_time, isupload, upload_time from sms_templet
+        select templetid,
+               templetno,
+               orgid,
+               templetname,
+               templetcontent,
+               del_flag,
+               update_by,
+               guid,
+               update_time,
+               create_by,
+               create_time,
+               isupload,
+               upload_time,
+               dept_code,
+               dept_name,
+               ward_name,
+               ward_code,
+               user_name,
+               nick_name
+        from sms_templet
     </sql>
 
     <select id="selectSmsTempletList" parameterType="SmsTemplet" resultMap="SmsTempletResult">
         <include refid="selectSmsTempletVo"/>
         where 1=1
-            <if test="orgid != null and orgid != ''">
-                AND orgid = #{orgid}
-            </if>
-            <if test="templetno != null  and templetno != ''"> and templetno = #{templetno}</if>
-            <if test="templetname != null  and templetname != ''"> and templetname like concat('%', #{templetname}, '%')</if>
-            <if test="templetcontent != null  and templetcontent != ''"> and templetcontent = #{templetcontent}</if>
-            <if test="isupload != null "> and isupload = #{isupload}</if>
-            <if test="uploadTime != null "> and upload_time = #{uploadTime}</if>
+        <if test="orgid != null and orgid != ''">
+            AND orgid = #{orgid}
+        </if>
+        <if test="templetno != null  and templetno != ''">and templetno = #{templetno}</if>
+        <if test="templetname != null  and templetname != ''">and templetname like concat('%', #{templetname}, '%')</if>
+        <if test="templetcontent != null  and templetcontent != ''">and templetcontent = #{templetcontent}</if>
+        <if test="isupload != null ">and isupload = #{isupload}</if>
+        <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
+        <if test="deptCode != null  and deptCode != ''">and dept_code = #{deptCode}</if>
+        <if test="deptName != null  and deptName != ''">and dept_name = #{deptName}</if>
+        <if test="wardName != null  and wardName != ''">and ward_name = #{wardName}</if>
+        <if test="wardCode != null  and wardCode != ''">and ward_code = #{wardCode}</if>
+        <if test="userName != null  and userName != ''">and user_name = #{userName}</if>
+        <if test="nickName != null  and nickName != ''">and nick_name = #{nickName}</if>
     </select>
 
     <select id="selectSmsTempletByTempletid" parameterType="Long" resultMap="SmsTempletResult">
@@ -42,10 +74,10 @@
         where templetid = #{templetid}
     </select>
 
-    <insert id="insertSmsTemplet" parameterType="SmsTemplet">
+    <insert id="insertSmsTemplet" parameterType="SmsTemplet" useGeneratedKeys="true"
+            keyProperty="templetid">
         insert into sms_templet
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="templetid != null">templetid,</if>
             <if test="templetno != null">templetno,</if>
             <if test="templetname != null">templetname,</if>
             <if test="templetcontent != null">templetcontent,</if>
@@ -58,9 +90,14 @@
             <if test="uploadTime != null">upload_time,</if>
             <if test="guid != null">guid,</if>
             <if test="orgid != null">orgid,</if>
-         </trim>
+            <if test="deptCode != null">dept_code,</if>
+            <if test="deptName != null">dept_name,</if>
+            <if test="wardCode != null">ward_code,</if>
+            <if test="wardName != null">ward_name,</if>
+            <if test="userName != null">user_name,</if>
+            <if test="nickName != null">nick_name,</if>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="templetid != null">#{templetid},</if>
             <if test="templetno != null">#{templetno},</if>
             <if test="templetname != null">#{templetname},</if>
             <if test="templetcontent != null">#{templetcontent},</if>
@@ -73,7 +110,13 @@
             <if test="uploadTime != null">#{uploadTime},</if>
             <if test="guid != null">#{guid},</if>
             <if test="orgid != null">#{orgid},</if>
-         </trim>
+            <if test="deptCode != null">#{deptCode},</if>
+            <if test="deptName != null">#{deptName},</if>
+            <if test="wardCode != null">#{wardCode},</if>
+            <if test="wardName != null">#{wardName},</if>
+            <if test="userName != null">#{userName},</if>
+            <if test="nickName != null">#{nickName},</if>
+        </trim>
     </insert>
 
     <update id="updateSmsTemplet" parameterType="SmsTemplet">
@@ -91,17 +134,25 @@
             <if test="uploadTime != null">upload_time = #{uploadTime},</if>
             <if test="guid != null">guid = #{guid},</if>
             <if test="orgid != null">orgid = #{orgid},</if>
+            <if test="deptCode != null">dept_code = #{deptCode},</if>
+            <if test="deptName != null">dept_name = #{deptName},</if>
+            <if test="wardCode != null">ward_code = #{wardCode},</if>
+            <if test="wardName != null">ward_name = #{wardName},</if>
+            <if test="userName != null">user_name = #{userName},</if>
+            <if test="nickName != null">nick_name = #{nickName},</if>
         </trim>
         where templetid = #{templetid}
     </update>
 
     <delete id="deleteSmsTempletByTempletid" parameterType="Long">
-        delete from sms_templet where templetid = #{templetid}
+        update sms_templet
+        set del_flag = '1'
+        where templetid = #{templetid}
     </delete>
 
     <delete id="deleteSmsTempletByTempletids" parameterType="String">
-        delete from sms_templet where templetid in
-        <foreach item="templetid" collection="array" open="(" separator="," close=")">
+        update sms_templet set del_flag = '1' where templetid in
+        <foreach item="templetid" collection="templetids" open="(" separator="," close=")">
             #{templetid}
         </foreach>
     </delete>
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
index b2c3a5d..c27d624 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
@@ -2,7 +2,6 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.common.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -45,6 +44,14 @@
     @ApiModelProperty(value = "缁撴潫鏃堕棿")
     private Date endTime;
 
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鍑洪櫌寮�濮嬫椂闂�")
+    private Date hospitalStartTime;
+
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鍑洪櫌缁撴潫鏃堕棿")
+    private Date hospitalEndTime;
+
     @ApiModelProperty(value = "鏈嶅姟绫诲瀷")
     private List<Long> serviceType;
 
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java
index da568fa..851d764 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java
@@ -21,11 +21,11 @@
     private static final long serialVersionUID = 1L;
 
     /**
-     * 浠诲姟鍚嶇О
+     * 绉戝鍚嶇О
      */
-    @Excel(name = "浠诲姟鍚嶇О")
-    @ApiModelProperty(value = "浠诲姟鍚嶇О")
-    private String taskName;
+    @Excel(name = "绉戝鍚嶇О")
+    @ApiModelProperty(value = "绉戝鍚嶇О")
+    private String deptname;
 
     /**
      * 鍙戦�佷汉
@@ -33,28 +33,6 @@
     @Excel(name = " 濮撳悕 ")
     @ApiModelProperty(value = "鍙戦�佷汉")
     private String sendname;
-
-    /**
-     * 鍙戦�佺姸鎬�
-     */
-//    @Excel(name = " 浠诲姟鐘舵�� ")
-    @ApiModelProperty(value = "鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴� 7 瓒呮椂(浜哄伐)")
-    private Long sendstate;
-
-    /**
-     * 鍙戦�佺姸鎬�
-     */
-    @Excel(name = " 浠诲姟鐘舵�� ")
-    @ApiModelProperty(value = "鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴� 7 瓒呮椂(浜哄伐)")
-    private String stName;
-
-    /**
-     * 瀹屾垚鏃堕棿
-     */
-    @Excel(name = " 瀹屾垚鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @ApiModelProperty(value = "瀹屾垚鏃堕棿")
-    private Date finishtime;
 
     /**
      * 鍑洪櫌鏃堕棿
@@ -71,6 +49,19 @@
     @ApiModelProperty(value = "搴旈殢璁挎棩鏈�")
     private Date visitTime;
 
+    /**
+     * 瀹屾垚鏃堕棿
+     */
+    @Excel(name = " 瀹屾垚鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "瀹屾垚鏃堕棿")
+    private Date finishtime;
+
+    /**
+     * 闅忚浜哄憳
+     */
+    @Excel(name = "闅忚浜哄憳")
+    private String updateBy;
 
     /**
      * 鍖荤敓濮撳悕
@@ -79,15 +70,32 @@
     @ApiModelProperty(value = "鍖荤敓濮撳悕")
     private String drname;
 
-    /**
-     * 闅忚浜哄憳
-     */
-    @Excel(name = "闅忚浜哄憳")
-    private String updateBy;
-
     @Excel(name = "鍑洪櫌澶╂暟", suffix = "澶�")
     @ApiModelProperty(value = "鍑洪櫌澶╂暟")
     private Integer endDay;
+
+    /**
+     * 鍑洪櫌璇婃柇
+     */
+    @Excel(name = " 鍑洪櫌璇婃柇 ")
+    @ApiModelProperty(value = "鍑洪櫌璇婃柇")
+    private String leavediagname;
+
+
+    /**
+     * 鍙戦�佺姸鎬�
+     */
+//    @Excel(name = " 浠诲姟鐘舵�� ")
+    @ApiModelProperty(value = "鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴� 7 瓒呮椂(浜哄伐)")
+    private Long sendstate;
+
+    /**
+     * 鍙戦�佺姸鎬�
+     */
+    @Excel(name = " 浠诲姟鐘舵�� ")
+    @ApiModelProperty(value = "鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴� 7 瓒呮椂(浜哄伐)")
+    private String stName;
+
 
     /**
      * 韬唤璇佸彿
@@ -113,14 +121,6 @@
 
 
     /**
-     * 绉戝鍚嶇О
-     */
-    @Excel(name = "绉戝鍚嶇О")
-    @ApiModelProperty(value = "绉戝鍚嶇О")
-    private String deptname;
-
-
-    /**
      * 鍑洪櫌鐥呭尯鍚嶇О
      */
     @ApiModelProperty(value = "鍑洪櫌鐥呭尯鍚嶇О")
@@ -143,10 +143,18 @@
     @Excel(name = "浠诲姟鎵ц鏂瑰紡")
     private String preachform;
 
+    /**
+     * 浠诲姟鍚嶇О
+     */
+    @Excel(name = "浠诲姟鍚嶇О")
+    @ApiModelProperty(value = "浠诲姟鍚嶇О")
+    private String taskName;
+
 
     /**
      * 澶囨敞
      */
+    @Excel(name = "澶囨敞")
     @ApiModelProperty(value = "澶囨敞")
     private String remark;
 
diff --git a/smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java b/smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java
index eb0432c..ea76a86 100644
--- a/smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java
+++ b/smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java
@@ -31,6 +31,12 @@
     @ApiModelProperty(value = "涓婚敭id")
     private Long subId;
 
+    /**
+     * 涓婚敭id闆嗗悎
+     */
+    @ApiModelProperty(value = "涓婚敭id闆嗗悎")
+    private List<Long> subIdList;
+
 
     /**
      * 绗笁鏂逛换鍔D
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
index ab2dd12..32eadda 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -186,4 +186,6 @@
     public void setFailSubTaskDefalutVal(Long failDay);
 
     public Map<String, Object> getHeLibraryCount(@RequestBody HeLibraryCountVO heLibraryCountVO);
+
+    Map<String, Object> smsSubTask(Long subid);
 }
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 9c7d054..fa8c0f0 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -74,6 +74,10 @@
     @Value("${lwl_app_key}")
     private String APP_KEY;
 
+
+    @Value("${spring.profiles.active}")
+    private String active;
+
     @Override
     public List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO) {
         try {
@@ -783,6 +787,16 @@
         patMedInhosp.setCampusid(dto.getCampusId());
         if (StringUtils.isNotEmpty(dto.getHealthcareRecordStatus()) && dto.getHealthcareRecordStatus().equals("FH0109.25"))
             patMedInhosp.setRemark("棰勫嚭闄�");
+        if (active.equals("nhfy") && dto.getAreaId() != null && dto.getAreaId().toString().equals("40003483") && StringUtils.isNotEmpty(patMedInhosp.getPatname())) {
+            //鍗楀崕闄勪竴鐨勪骇绉戯紝瑕佹眰涓嶇敓鎴愨�滀箣瀛愩�佷箣濂炽�佷箣濠粹�濈殑闅忚浠诲姟
+            if (patMedInhosp.getPatname().contains("涔嬪瓙") || patMedInhosp.getPatname().contains("涔嬪コ") || patMedInhosp.getPatname().contains("涔嬪┐")) {
+                patMedInhosp.setDeptcheckFlag("3");
+                patMedInhosp.setWardcheckFlag("3");
+                patMedInhosp.setDiagcheckFlag("3");
+                patMedInhosp.setRemark(patMedInhosp.getRemark() + ";涓嶇敓鎴愪箣瀛愩�佷箣濂炽�佷箣濠撮棶鍗�");
+            }
+        }
+
         return patMedInhosp;
     }
 
@@ -815,12 +829,11 @@
      */
     private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto) {
         // 鏋勫缓閿佺殑 key锛氬熀浜� patientno 鎴� idcardno
-        String lockKey = "pat_archive_lock:" + 
-            (StringUtils.isNotEmpty(dto.getMedicalRecordNo()) ? dto.getMedicalRecordNo() : dto.getIdCardNo());
-        
+        String lockKey = "pat_archive_lock:" + (StringUtils.isNotEmpty(dto.getMedicalRecordNo()) ? dto.getMedicalRecordNo() : dto.getIdCardNo());
+
         // 灏濊瘯鑾峰彇鍒嗗竷寮忛攣锛屾渶澶氱瓑寰� 3 绉掞紝閿佸畾 10 绉掕嚜鍔ㄩ噴鏀�
         Boolean lockAcquired = redisTemplate.opsForValue().setIfAbsent(lockKey, "1", 10, TimeUnit.SECONDS);
-        
+
         if (lockAcquired == null || !lockAcquired) {
             log.warn("銆恜rocessPatientArchive銆戣幏鍙栧垎甯冨紡閿佸け璐ワ紝璺宠繃鏈澶勭悊锛堝叾浠栫嚎绋嬫鍦ㄥ鐞嗭級锛宲atientno={}", dto.getMedicalRecordNo());
             // 绛夊緟涓�娈垫椂闂村悗閲嶈瘯鏌ヨ
@@ -830,7 +843,7 @@
                 Thread.currentThread().interrupt();
             }
         }
-        
+
         try {
             return doProcessPatientArchive(dto);
         } finally {
@@ -865,9 +878,8 @@
         }
 
         PatArchive patArchive = buildPatientArchive(dto);
-        log.info("銆恜rocessPatientArchive銆戞偅鑰呮。妗堟煡閲嶅畬鎴愶紝patientno={}, 鏄惁宸插瓨鍦�={}", 
-            patArchive.getPatientno(), CollectionUtils.isEmpty(existingArchives) ? "鍚�" : "鏄�(id=" + existingArchives.get(0).getId() + ")");
-        
+        log.info("銆恜rocessPatientArchive銆戞偅鑰呮。妗堟煡閲嶅畬鎴愶紝patientno={}, 鏄惁宸插瓨鍦�={}", patArchive.getPatientno(), CollectionUtils.isEmpty(existingArchives) ? "鍚�" : "鏄�(id=" + existingArchives.get(0).getId() + ")");
+
         if (CollectionUtils.isEmpty(existingArchives)) {
             try {
                 // 鏈�缁堢‘璁ゆ煡璇紙闃插尽鎬х紪绋嬶細闃叉Redis閿佸け鏁堢瓑鏋佺鎯呭喌锛�
@@ -878,15 +890,13 @@
                 if (StringUtils.isNotEmpty(dto.getMedicalRecordNo())) {
                     finalQuery.setPatientno(dto.getMedicalRecordNo());
                 }
-                
+
                 List<PatArchive> finalCheck = patArchiveService.selectPatArchiveList(finalQuery);
-                log.info("銆恜rocessPatientArchive銆戞渶缁堢‘璁ゆ煡璇紝patientno={}, idcardno={}, 缁撴灉鏁伴噺={}", 
-                    dto.getMedicalRecordNo(), dto.getIdCardNo(), finalCheck.size());
-                
+                log.info("銆恜rocessPatientArchive銆戞渶缁堢‘璁ゆ煡璇紝patientno={}, idcardno={}, 缁撴灉鏁伴噺={}", dto.getMedicalRecordNo(), dto.getIdCardNo(), finalCheck.size());
+
                 if (CollectionUtils.isEmpty(finalCheck)) {
                     patArchiveService.insertPatArchive(patArchive);
-                    log.info("銆恜rocessPatientArchive銆戔湏 鏂板鎮h�呮。妗堟垚鍔燂紝patientno={}, id={}", 
-                        patArchive.getPatientno(), patArchive.getId());
+                    log.info("銆恜rocessPatientArchive銆戔湏 鏂板鎮h�呮。妗堟垚鍔燂紝patientno={}, id={}", patArchive.getPatientno(), patArchive.getId());
                 } else {
                     // 鍏朵粬绾跨▼宸茬粡鎻掑叆锛岀洿鎺ヤ娇鐢ㄥ凡鏈夎褰�
                     existingArchives = finalCheck;
@@ -896,8 +906,7 @@
                     log.info("銆恜rocessPatientArchive銆戞。妗堝凡琚叾浠栫嚎绋嬪垱寤猴紝浣跨敤宸叉湁璁板綍锛宨d={}", patArchive.getId());
                 }
             } catch (org.springframework.dao.DuplicateKeyException e) {
-                log.warn("銆恜rocessPatientArchive銆戞偅鑰呮。妗堝凡瀛樺湪(骞跺彂鎻掑叆寮傚父)锛岃烦杩囷細patientno={}, idcardno={}", 
-                    patArchive.getPatientno(), patArchive.getIdcardno());
+                log.warn("銆恜rocessPatientArchive銆戞偅鑰呮。妗堝凡瀛樺湪(骞跺彂鎻掑叆寮傚父)锛岃烦杩囷細patientno={}, idcardno={}", patArchive.getPatientno(), patArchive.getIdcardno());
                 // 骞跺彂鎻掑叆鍦烘櫙锛岄噸鏂版煡璇㈣幏鍙栧凡瀛樺湪鐨勮褰�
                 PatArchive queryRetry = new PatArchive();
                 queryRetry.setPatientno(patArchive.getPatientno());
@@ -917,8 +926,7 @@
             patArchive.setNotrequiredFlag(existingArchives.get(0).getNotrequiredFlag());
             patArchive.setNotrequiredreason(existingArchives.get(0).getNotrequiredreason());
             patArchiveService.updateArchive(patArchive);
-            log.info("銆恜rocessPatientArchive銆戔湏 鏇存柊鎮h�呮。妗堬紝patientno={}, id={}", 
-                patArchive.getPatientno(), patArchive.getId());
+            log.info("銆恜rocessPatientArchive銆戔湏 鏇存柊鎮h�呮。妗堬紝patientno={}, id={}", patArchive.getPatientno(), patArchive.getId());
         }
 
         return patArchive;
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 0f5451a..9c5449b 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -12,7 +12,10 @@
 import com.ruoyi.common.utils.*;
 import com.ruoyi.common.core.service.IConfigService;
 import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.system.domain.SysConfig;
+import com.ruoyi.system.mapper.SysConfigMapper;
 import com.smartor.common.FtpService;
+import com.smartor.common.MtSubmitSmUtil;
 import com.smartor.config.PhoneUtils;
 import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
 import com.smartor.domain.*;
@@ -135,6 +138,12 @@
 
     @Value("${ASRCallBackPath}")
     private String ASRCallBackPath;
+
+    @Autowired
+    private MtSubmitSmUtil mtSubmitSmUtil;
+
+    @Autowired
+    private SysConfigMapper sysConfigMapper;
 
     @Autowired
     private RedisTemplate redisTemplate;
@@ -343,18 +352,17 @@
 //            serviceTaskVO.setPreachform(result);
         }
 
-        if(StringUtils.isNotEmpty(serviceTaskVO.getPreachformDesc())){
+        if (StringUtils.isNotEmpty(serviceTaskVO.getPreachformDesc())) {
             //鐩存帴閫氳繃PreachformDesc鐢熸垚List杩斿洖
             try {
                 List<Map<String, Object>> mapList = objectMapper.readValue(serviceTaskVO.getPreachformDesc(), List.class);
                 serviceTaskVO.setPreachformList(mapList);
-            }catch (Exception e) {
+            } catch (Exception e) {
             }
-        }else {
-            if(CollectionUtils.isNotEmpty(list)){
+        } else {
+            if (CollectionUtils.isNotEmpty(list)) {
                 //鑾峰彇璇ユ偅鑰呮墍鏈夌殑鎵ц鐘舵��
-                List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformLists.stream()
-                        .filter((item -> item.getSubid().equals(list.get(0).getId()) && item.getTaskid().equals(serviceTask.getTaskid()))).collect(Collectors.toList());
+                List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformLists.stream().filter((item -> item.getSubid().equals(list.get(0).getId()) && item.getTaskid().equals(serviceTask.getTaskid()))).collect(Collectors.toList());
                 List<Map<String, Object>> resultList = serviceSubtaskPreachformList.stream().map(item -> {
                     Map<String, Object> map = new HashMap<>();
                     map.put("sort", item.getSort());
@@ -390,7 +398,8 @@
                 serviceSubtaskRes.setContinueContent(serviceSubtask.getContinueContent());
             }
 //            1锛氬緟闅忚锛�2 寰呭彂閫侊級锛�2锛氶殢璁夸腑锛�3 宸插彂閫併��1 琚鍙栵級銆�3锛氭湭瀹屾垚锛�5 鍙戦�佸け璐ャ��7銆佽秴鏃讹級銆�4锛氬凡瀹屾垚锛� 6 宸插畬鎴愶級銆�5锛氭棤闇�闅忚锛�4 涓嶆墽琛岋級
-            if (serviceSubtaskRes.getSendstate() == 1 || serviceSubtaskRes.getSendstate() == 2L || serviceSubtaskRes.getSendstate() == 3L || serviceSubtaskRes.getSendstate() == 5 || serviceSubtaskRes.getSendstate() == 7L) serviceSubtaskRes.setSendstateView(1L);
+            if (serviceSubtaskRes.getSendstate() == 1 || serviceSubtaskRes.getSendstate() == 2L || serviceSubtaskRes.getSendstate() == 3L || serviceSubtaskRes.getSendstate() == 5 || serviceSubtaskRes.getSendstate() == 7L)
+                serviceSubtaskRes.setSendstateView(1L);
             if (serviceSubtaskRes.getSendstate() == 6) serviceSubtaskRes.setSendstateView(2L);
             if (serviceSubtaskRes.getSendstate() == 4) serviceSubtaskRes.setSendstateView(3L);
             serviceSubtaskResList.add(serviceSubtaskRes);
@@ -694,8 +703,8 @@
                     //鍗楀崕闄勪竴鐨刬cd10code鏄湁閲嶅鐨勶紝鎵�浠ヤ笉鑳界敤鍗楀崕闄勪竴鐨刬cd10code鍘绘煡璇�
                     log.info("----serviceTaskdiag鐨勫�间负锛歿}", serviceTaskdiag);
                     if (!StringUtils.isEmpty(serviceTaskVO.getIcd10name())) {
-                        String[] Icd10Names = serviceTaskVO.getIcd10name().split(",");
-                        String[] Icd10codes = serviceTaskVO.getIcd10code().split(",");
+                        String[] Icd10Names = serviceTaskVO.getIcd10name().split("$");
+                        String[] Icd10codes = serviceTaskVO.getIcd10code().split("$");
                         for (int i = 0; i < Icd10Names.length; i++) {
                             serviceTaskdiag.setIcd10code(Icd10codes[i]);
                             serviceTaskdiag.setIcd10name(Icd10Names[i]);
@@ -773,8 +782,8 @@
                     serviceSubtask.setInhospid(patTaskRelevance.getHospid());
                     //鏂板缓瀹屾垚灏辨槸寰呭彂閫佺姸鎬�
                     serviceSubtask.setSendstate(2L);
-                    serviceSubtask.setDeptcode(StringUtils.isNotEmpty(patTaskRelevance.getDeptcode())?patTaskRelevance.getDeptcode():serviceTaskVO.getDeptcode());
-                    serviceSubtask.setDeptname(StringUtils.isNotEmpty(patTaskRelevance.getDeptName())?patTaskRelevance.getDeptName():serviceTaskVO.getDeptname());
+                    serviceSubtask.setDeptcode(StringUtils.isNotEmpty(patTaskRelevance.getDeptcode()) ? patTaskRelevance.getDeptcode() : serviceTaskVO.getDeptcode());
+                    serviceSubtask.setDeptname(StringUtils.isNotEmpty(patTaskRelevance.getDeptName()) ? patTaskRelevance.getDeptName() : serviceTaskVO.getDeptname());
                     serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
                     serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
                     serviceSubtask.setType(serviceTaskVO.getType());
@@ -797,7 +806,8 @@
                     serviceSubtask.setUpdateBy(serviceTask.getCreateBy());
                     serviceSubtask.setVisitTime(DateUtils.parseDate(serviceTaskVO.getShowTimeMorn()));
                     //濡傛灉绔嬪嵆鎵ц锛屾椂闂村氨鏄綋鍓嶆椂闂�
-                    if(serviceTaskVO.getSendType()!=null&&serviceTaskVO.getSendType()==2) serviceSubtask.setVisitTime(new Date());
+                    if (serviceTaskVO.getSendType() != null && serviceTaskVO.getSendType() == 2)
+                        serviceSubtask.setVisitTime(new Date());
                     if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) {
                         serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
                         serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
@@ -952,7 +962,7 @@
                     if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {
                         String[] icd10codes = serviceTaskVO.getIcd10code().split(",");
                         String[] icd10names = serviceTaskVO.getIcd10name().split(",");
-                        if(!active.equals("nhfy")&&!active.equals("druid")){
+                        if (!active.equals("nhfy") && !active.equals("druid")) {
                             if (icd10codes.length != icd10names.length) {
                                 throw new BaseException("鐤剧梾缂栫爜鍜岀柧鐥呭悕绉版暟閲忎笉涓�鑷�");
                             }
@@ -3039,6 +3049,7 @@
         }
         return serviceSubtaskStatistic;
     }
+
     /**
      * 棣栨闅忚缁熻
      *
@@ -4481,6 +4492,60 @@
         return resultMap;
     }
 
+    @Override
+    public Map<String, Object> smsSubTask(Long subid) {
+        log.info("smsSubTask鐨勫叆鍙備负锛歿}", subid);
+        Map<String, Object> resultMap = new HashMap<>();
+        resultMap.put("code", "500");
+        resultMap.put("msg", "鍙戦�佸け璐�");
+
+        //鑾峰彇鎮h�呯殑鍩烘湰淇℃伅
+        ServiceSubtask serviceSubtask = selectServiceSubtaskById(subid);
+        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+        String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
+        String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
+        String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key);
+
+        //鍙戦�佹暟鎹殑灏佽
+        ServiceOutPath serviceOutPath = new ServiceOutPath();
+        serviceOutPath.setParam1(taskId);
+        serviceOutPath.setParam2(patid);
+        serviceOutPath.setParam3(serviceSubtask.getTaskName());
+        serviceOutPath.setParam6(subId);
+        serviceOutPath.setCreateTime(new Date());
+        serviceOutPath.setOrgid(serviceSubtask.getOrgid());
+        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+        String format = String.format("%03X", serviceOutPath.getId());
+        serviceOutPath.setRadix(format);
+        serviceOutPath.setUpdateTime(new Date());
+        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+
+        SendMagParam sendMagParam = new SendMagParam();
+        sendMagParam.setType("4");
+        sendMagParam.setPhone(serviceSubtask.getPhone());
+        sendMagParam.setUrl(StringUtils.isNotEmpty(req_path) ? localIP + ":" + req_path + "/wt?p=" + format : localIP + "/wt?p=" + format);
+
+        SysConfig sysConfig = new SysConfig();
+
+        sysConfig = sysConfigMapper.checkConfigKeyUnique("wj.sms.template");
+
+        if (!Objects.isNull(sysConfig)) {
+            String smsContemt = sysConfig.getConfigValue();
+            sendMagParam.setContent(smsContemt.replace("${wjurl}", sendMagParam.getUrl()));
+        }
+
+        if (active.equals("nhfy")) {
+            Map<String, Object> smsResult = mtSubmitSmUtil.submitSm(sendMagParam.getPhone(), sendMagParam.getContent());
+            if (smsResult != null && smsResult.get("result") != null && smsResult.get("result").toString().equals("0")) {
+                resultMap.put("code", "200");
+                resultMap.put("msg", "鍙戦�佹垚鍔�");
+                serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ";鐭俊鍙戦�佹垚鍔�" : "鐭俊鍙戦�佹垚鍔�");
+                log.info("鏄惁鍙戦�佹垚鍔燂細{}", serviceSubtask.getRemark());
+                updateServiceSubtask(serviceSubtask);
+            }
+        }
+        return resultMap;
+    }
 
     private Boolean saveServiceSubtaskDetail(ServiceSubtask serviceSubtask) {
         Boolean result = true;
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index e217248..746a630 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -355,6 +355,12 @@
                 #{state}
             </foreach>
         </if>
+        <if test="subIdList != null  and sendstates.size() > 0">
+            AND id IN
+            <foreach collection="subIdList" item="subId" open="(" separator="," close=")">
+                #{subId}
+            </foreach>
+        </if>
         <!-- taskIds绛涢�� -->
         <if test="taskIds != null and taskIds.size() > 0">
             AND taskid IN
@@ -1530,6 +1536,10 @@
             AND visit_time >= DATE(#{startTime})
             AND visit_time &lt; DATE_ADD(DATE(#{endTime}), INTERVAL 1 DAY)
         </if>
+        <if test="hospitalStartTime != null and hospitalEndTime!=null">
+            AND endtime >= DATE(#{hospitalStartTime})
+            AND endtime &lt; DATE_ADD(DATE(#{hospitalEndTime}), INTERVAL 1 DAY)
+        </if>
         <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if>
         <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>
         <if test="isabnormal != null">and isabnormal = #{isabnormal}</if>
@@ -1709,6 +1719,10 @@
             AND visit_time >= DATE(#{startTime})
             AND visit_time &lt; DATE_ADD(DATE(#{endTime}), INTERVAL 1 DAY)
         </if>
+        <if test="hospitalStartTime != null and hospitalEndTime!=null">
+            AND endtime >= DATE(#{hospitalStartTime})
+            AND endtime &lt; DATE_ADD(DATE(#{hospitalEndTime}), INTERVAL 1 DAY)
+        </if>
         <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if>
         <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>
         <if test="isabnormal != null">and isabnormal = #{isabnormal}</if>

--
Gitblit v1.9.3