浏览代码

修改随访表单定时任务

bzd_wsp 2 月之前
父节点
当前提交
c022b832b2

+ 19 - 2
health-admin/src/main/resources/templates/dtp/followUp/followUpEdit.html

@@ -1274,7 +1274,7 @@
     }
 
     function editArchives(){
-        var id = $("#id").val();
+        var id = $("#patientId").val();
        // table.set();
         var prefix = ctx + "dtp/pmService/archivesEdit/{id}";
         $.modal.openTab("修改档案", prefix.replace("{id}", id));
@@ -1310,7 +1310,8 @@
                 },
                 success: function(data) {
                     $.modal.alertSuccess("关闭计划成功");
-                   // $.modal.reload();
+                    // 更新选项卡状态
+                    updateTabState('#tab-3');
                     window.location.reload();
                 }
             });
@@ -1340,4 +1341,20 @@
         });
     }
 
+    // 辅助函数:用于更新选项卡状态
+    function updateTabState(tabId) {
+        // 移除所有 li 的 active 类
+        $('#myUlTabs .nav-item').removeClass('active');
+        // 设置指定 tab 的 li 为 active
+        $(tabId).closest('.nav-tabs').find('a[href="' + tabId + '"]').parent().addClass('active');
+
+        // 更新 a 标签的 aria-expanded 属性
+        $('#myUlTabs a').attr('aria-expanded', 'false');
+        $(tabId).closest('.nav-tabs').find('a[href="' + tabId + '"]').attr('aria-expanded', 'true');
+
+        // 移除所有 tab-pane 的 active 和 in 类
+        $('.tab-pane').removeClass('active in show'); // 注意这里使用了 'show' 类,取决于你使用的 Bootstrap 版本
+        // 为指定 tab-pane 添加 active 和 in 类
+        $(tabId).addClass('active in show'); // 同上,确保与你的 Bootstrap 版本匹配
+    }
 </script>

+ 7 - 2
health-admin/src/main/resources/templates/dtp/recipe/edit.html

@@ -982,7 +982,12 @@
                 }else{
                     patientFlag = false;
                     updatePatientFlag(false);
-                    $.modal.alertError("查询无数据,该患者未建档,请先建档后在继续操作");
+                    //$.modal.alertError("查询无数据,该患者未建档,请先建档后在继续操作");
+                    $.modal.confirm("该患者未建档 ,请先建档后在继续操作!,点击确定可快速建档", function() {
+                        // 快速建档
+                        bookbuilding();
+                    });
+
                 }
 
             }
@@ -1406,7 +1411,7 @@
             success: function(data) {
                 $.modal.alertSuccess(data.msg);
                 $.modal.closeTab();
-                $.operator.saveReload();
+                window.location.reload();
             }
         });
     }

+ 3 - 1
health-admin/src/main/resources/templates/dtp/sfrw/SDtpYypzFollowUpSopPageEdit.html

@@ -1354,7 +1354,9 @@
                 taskMaterial: node.taskMaterial || "表单",
                 useForm: node.useForm || "",
                 smsId: node.smsId || "",
-                deliveryChannel: node.deliveryChannel || ""
+                deliveryChannel: node.deliveryChannel || "",
+                createTaskTriggerValue: node.createTaskTriggerValue,
+                createTaskWhen: node.createTaskWhen || "",
             };
 
             // 构建节点HTML片段

+ 27 - 0
health-quartz/src/main/java/com/bzd/quartz/task/RyTask.java

@@ -1,8 +1,20 @@
 package com.bzd.quartz.task;
 
+import com.bzd.common.config.dao.DaoSupport;
+import com.bzd.common.config.dao.PageData;
+import com.bzd.common.constant.ScheduleConstants;
+import com.bzd.common.utils.DateUtils;
+import com.bzd.quartz.domain.SysJob;
+import com.bzd.quartz.service.ISysJobService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import com.bzd.common.utils.StringUtils;
 
+import javax.annotation.Resource;
+import java.util.List;
+
+import static com.bzd.common.utils.ShiroUtils.getSysUser;
+
 /**
  * 定时任务调度测试
  *
@@ -11,6 +23,10 @@ import com.bzd.common.utils.StringUtils;
 @Component("ryTask")
 public class RyTask
 {
+    @Resource(name = "daoSupport")
+    private DaoSupport daoSupport;
+    @Autowired
+    ISysJobService jobService;
     public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
     {
         System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
@@ -25,4 +41,15 @@ public class RyTask
     {
         System.out.println("执行无参方法");
     }
+
+    //购药处方登记成功后如果是随访品 触发计划和执行任务
+    //触发计划
+    public void triggerPLan(String mdmCode, String storeId , String patientId , String templateId , String planId)throws Exception {
+        System.out.println("执行有参方法:triggerPLan");
+    }
+    //触发任务
+    public void triggerTask(String mdmCode, String storeId , String patientId , String templateId , String planId)throws Exception {
+        System.out.println("执行有参方法:triggerTask");
+    }
+
 }

+ 4 - 0
health-system/pom.xml

@@ -22,6 +22,10 @@
             <groupId>com.bzd</groupId>
             <artifactId>health-common</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.bzd</groupId>
+            <artifactId>health-quartz</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 119 - 41
health-system/src/main/java/com/bzd/system/service/DTPService.java

@@ -7,6 +7,7 @@ import com.bzd.common.core.domain.entity.DtpDeliveryPrint;
 import com.bzd.common.utils.DateUtils;
 import com.bzd.common.utils.StringUtils;
 import com.bzd.common.utils.uuid.IdUtils;
+import com.bzd.system.service.dtp.SDtpYypzFollowUpSopService;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -31,6 +32,8 @@ public class DTPService {
     @Resource(name = "daoSupport")
     private DaoSupport daoSupport;
 
+    @Autowired
+   private SDtpYypzFollowUpSopService SDtpYypzFollowUpSopService;
     /**
      * 处方列表
      *
@@ -593,10 +596,10 @@ public class DTPService {
                         }
 
                         // 从 lxr 获取数据并映射到数据库字段
-                        pageData.put("mdmCode", lxr.get("mdmCode"));
+                        pageData.put("mdmCode", lxr.get("mdmCode"));//药品编码
                         pageData.put("productName", lxr.get("productName"));
                         pageData.put("genericName", lxr.get("genericName"));
-                        pageData.put("specification", lxr.get("specification"));
+                        pageData.put("specification", lxr.get("specification"));//规格
                         pageData.put("manufacturerShortName", lxr.get("manufacturerShortName"));
                         pageData.put("administrationMethod", lxr.get("administrationMethod"));
                         pageData.put("packageQuantity", lxr.get("packageQuantity"));//处方取药数量(包装数)输入框的值
@@ -605,7 +608,7 @@ public class DTPService {
                         pageData.put("dosageFrequency", lxr.get("dosageFrequency"));//规范用药频次
                         pageData.put("dosageFrequencyDays", lxr.get("dosageFrequencyDays"));//用药频次换算使用天数 下拉带出来的 要去字典的value
                         if(lxr.get("dvalueDays")!=null){
-                            pageData.put("dvalueDays", lxr.get("dvalueDays"));
+                            pageData.put("dvalueDays", lxr.get("dvalueDays"));//D值用药天数
                         }else {
                             pageData.put("dvalueDays", 0);
                         }
@@ -630,20 +633,20 @@ public class DTPService {
 //                        pageData.put("updatedTime", lxr.get("updatedTime"));
 //                        pageData.put("remarks", lxr.get("remarks"));
 
-
+                       //如果药品是随访管理品 生成随访计划和任务
                         String followUpItem   = (String) lxr.get("followUpItem");//是否是随访品 1是,0否
                         if( StringUtils.isNotEmpty(followUpItem) && "是".equals(followUpItem) ){
-
+                            int i=0;
                             PageData   pdCPB=new PageData();
                             if (StringUtils.isNotEmpty(patientId)) {
                                 pdCPB.put("patientId", patientId);
                             }else {
-                                returnPageData.put("msg", "添加败未获取患者信息");
+                                returnPageData.put("msg", "添加败未获取患者信息");
                                 returnPageData.put("code", 300);
                                 return returnPageData;
                             }
-                            pdCPB.put("mdmCode", lxr.get("mdmCode"));
-                            pdCPB.put("productCode", lxr.get("productCode"));
+                            pdCPB.put("mdmCode", lxr.get("mdmCode"));//'药品编码'
+                            pdCPB.put("productCode", lxr.get("productCode"));//'药品编码'
 
                             List<PageData> SOPList= (List<PageData>) daoSupport.findForList("SDtpYypzFollowUpSopMapper.selectSOPTemplateByProductCode", pdCPB);
                             if(SOPList.size()>0){//说明是配置品
@@ -653,34 +656,37 @@ public class DTPService {
                             //先查询该患者购买在这个药品是否已经有计划 mdmCode patientId businessBelonging
                             //List<PageData> planList= (List<PageData>) daoSupport.findForList("followPlanMapper.selectPlanListByCPB", pdCPB);
                             PageData plan= (PageData) daoSupport.findForObject("followPlanMapper.selectPlanByCPB", pdCPB);
-                            //生成任务ID
-                            String taskId =  IdUtils.fastSimpleUUID();
+                            //生成计划
+                            pdCPB.put("productName", lxr.get("productName"));//'药品名称'
+                            pdCPB.put("businessBelonging", "常规随访");//业务归属 先写死 默认这个药品已经配置了业务归属为常规随访的药
+                            pdCPB.put("specification", lxr.get("specification"));
+                            pdCPB.put("storeId", getSysUser().getDeptId());
+                            pdCPB.put("storeName", getSysUser().getDept().getDeptName());
+                            pdCPB.put("templateId", "12345");//'模版ID' 先假设写死 实际是获取模板ID
+                            pdCPB.put("planName", lxr.get("productName")+"-随访");//'计划名称' 默认用药品作为名称
+                            // pdCPB.put("taskId", taskId);
+                            pdCPB.put("follow_up_person", "周敏");//'随访跟进人' 先写死
+                            pdCPB.put("follow_up_person_id", "7");//'随访跟进人id' 先写死
+                            pdCPB.put("createdBy", "系统创建");//'创建人'
+                            pdCPB.put("createdTime", DateUtils.getTime());//'创建时间'
+                            pdCPB.put("updatedBy", getSysUser().getLoginName());//'创建时间'
+                            pdCPB.put("updatedTime", DateUtils.getTime());//'创建时间'
+                            pdCPB.put("status", 1);//'计划状态: 0关闭 1开启/进行中,2默认:2已创建待开启'
                             if(StringUtils.isNotNull(plan)){
                                 pdCPB.put("planId", plan.get("planId"));
                                 planId= plan.get("planId").toString();
                             }else {
                                 pdCPB.put("planId", planId);
-                                pdCPB.put("productName", lxr.get("productName"));//'药品名称'
-                                pdCPB.put("businessBelonging", "常规随访");//业务归属 先写死 默认这个药品已经配置了业务归属为常规随访的药
-                                pdCPB.put("specification", lxr.get("specification"));
-                                pdCPB.put("storeId", getSysUser().getDeptId());
-                                pdCPB.put("storeName", getSysUser().getDept().getDeptName());
-                                pdCPB.put("templateId", "12345");//'模版ID' 先假设写死 实际是获取模板ID
-                                pdCPB.put("planName", lxr.get("productName")+"-随访");//'计划名称' 默认用药品作为名称
-                               // pdCPB.put("taskId", taskId);
-                                pdCPB.put("follow_up_person", "周敏");//'随访跟进人' 先写死
-                                pdCPB.put("follow_up_person_id", "7");//'随访跟进人id' 先写死
-                                pdCPB.put("createdBy", "系统创建");//'创建人'
-                                pdCPB.put("createdTime", DateUtils.getTime());//'创建时间'
-                                pdCPB.put("updatedBy", getSysUser().getLoginName());//'创建时间'
-                                pdCPB.put("updatedTime", DateUtils.getTime());//'创建时间'
-                                pdCPB.put("status", 1);//'计划状态: 0关闭 1开启/进行中,2默认:2已创建待开启'
+                                //生成计划
                                 int FollowPlan = dao.executeBatch("followPlanMapper.insertFollowPlan", pdCPB);
+                                SDtpYypzFollowUpSopService.triggerPLan(pdCPB);
                                 System.out.println("FollowPlan.size()="+FollowPlan);
                             }
+                               //生成任务数据
                                pdCPB.put("appointmentDate", DateUtils.getTime());//'预约日期'
                                pdCPB.put("businessBelonging", "常规随访");//'业务归属:常规随访,脱落召回'
-                               pdCPB.put("taskName", "第1次任务");//'任务名称'
+                                i++;
+                                pdCPB.put("taskName", lxr.get("productName")+"-第"+i+"次任务");//'任务名称'
                                pdCPB.put("taskTheme", "常规随访");//'任务主题'
                                pdCPB.put("planId", planId);//'计划ID'
                                pdCPB.put("patientId", patientId);//'患者id'
@@ -691,7 +697,6 @@ public class DTPService {
                                //pdCPB.put("followUpSummaryid", lxr.get("followUpSummaryid"));//'随访小结id'
                                pdCPB.put("disease", pd.get("prescriptionDiagnosis"));//'疾病' 先用处方诊断字段代替
                                pdCPB.put("storeName", getSysUser().getDeptId());//'门店'
-                               pdCPB.put("mdmCode", lxr.get("mdmCode"));//'药品编码'
                                pdCPB.put("genericName", lxr.get("genericName"));//'药品通用名'
                                pdCPB.put("productName", lxr.get("productName"));//'商品名'
                                pdCPB.put("taskFollower", "周敏");//'任务跟进人'
@@ -702,6 +707,7 @@ public class DTPService {
                                pdCPB.put("createdAt", DateUtils.getTime());
                                pdCPB.put("updatedAt", DateUtils.getTime());
                                pdCPB.put("storeId", getSysUser().getDeptId());
+                               //生成任务
                                int FollowTask = dao.executeBatch("followTaskMapper.insertFollowTask", pdCPB);
                                System.out.println("FollowTask.size()="+FollowTask);
                         }
@@ -727,7 +733,7 @@ public class DTPService {
             pd.put("drugQuantity", drugQuantity);
 
             if (StringUtils.isNull(reviewingName) && StringUtils.isEmpty(reviewStatus)){
-                pd.put("reviewingName", "系统默认");
+                pd.put("reviewingName", "系统审核");
                 pd.put("reviewStatus", 1);//处方审核状态:0:审核不通过;1:审核通过;2: 待审核;默认 1: "审核通过";
             }
             if(StringUtils.isEmpty(remarks)){
@@ -746,7 +752,7 @@ public class DTPService {
                 returnPageData.put("drugsLinkId", drugsLinkId);
                 return returnPageData;
             }else {
-                returnPageData.put("msg", "添加败");
+                returnPageData.put("msg", "添加败");
                 returnPageData.put("code", 300);
                 return returnPageData;
             }
@@ -778,9 +784,13 @@ public class DTPService {
         String status = (String) pd.get("status");
         boolean flag = false; // 标志变量
         Integer onlyId=null;
+            //生成计划ID
+            String planId =  IdUtils.fastSimpleUUID();
         String prescriptionImageUrl = (String) pd.get("prescriptionImageUrl");
-
-        if (status.equals("4")) {//4待处方登记
+        if (StringUtils.isNull(pd.get("registrant"))){
+            pd.put("registrant", getSysUser().getLoginName());
+        }
+        if (status.equals("4")) {//4待处方登记 先销售后登记的情况
              onlyId = IdUtils.get10randomNumber();//如果是先销售后登记来做的修改处方信息 生成处方单号
             flag=true;//为先销售后登记
             if (StringUtils.isEmpty(prescriptionImageUrl)) {//3待确认信息
@@ -788,7 +798,6 @@ public class DTPService {
             }else {
                 status="3";//待确认信息
             }
-
         }else{
             if (StringUtils.isEmpty(prescriptionImageUrl)) {//3待确认信息
                 status="2";//待上传处方
@@ -797,13 +806,10 @@ public class DTPService {
             }
         }
         Object drugList = pd.get("drugData");//获取药品信息列表
-
         List<PageData> addList = new ArrayList<>();
         int resultDrug=0;
         int drugQuantity=0;
-
         if (StringUtils.isNotNull(drugList)) {
-
                 // 将 JSON 字符串转换为 List<Map<String, Object>>
                 ObjectMapper objectMapper = new ObjectMapper();
                 List<Map<String, Object>> rowsdrugList = objectMapper.readValue(drugList.toString(), List.class);
@@ -813,7 +819,6 @@ public class DTPService {
                     dao.executeBatch("DTPCFDJMapper.batchDeleteDrugPurchaseRecord", pd);  // 直接删除 所有的药品信息然后新增
                     for (Map<String, Object> lxr : rowsdrugList) {
                         PageData pageData = new PageData();
-
                         // 设置固定或默认值
                         pageData.put("createdBy", getSysUser().getLoginName());
                         pageData.put("createdTime", DateUtils.getTime());
@@ -843,6 +848,7 @@ public class DTPService {
                         if(flag){
                             pageData.put("salesOrderNumber", pd.get("salesOrderNumber"));
                             pageData.put("prescriptionNumber", onlyId);
+
                             if(StringUtils.isNotNull(pd1)){
                                 pageData.put("sales", pd1.get("saleDate"));//销售日期
                                 pageData.put("pharmacyName", pd1.get("ales_storeName"));//销售门店名称
@@ -859,9 +865,83 @@ public class DTPService {
                         pageData.put("department", lxr.get("department"));
                         pageData.put("attendingPhysician", lxr.get("attendingPhysician"));
                         pageData.put("clinicalDiagnosis", lxr.get("clinicalDiagnosis"));
-                        pageData.put("registrant", lxr.get("registrant"));
+                        pageData.put("registrant", pd.get("registrant"));
                         pageData.put("registrationDate", DateUtils.getTime());
                         addList.add(pageData);
+
+                        //如果药品是随访管理品 生成随访计划和任务
+                       // String followUpItem   = (String) lxr.get("followUpItem");//是否是随访品 1是,0否
+                        PageData MdmCode= (PageData) daoSupport.findForObject("DTPCFDJMapper.isfollowUpItemByMdmCode", pageData);
+                        if(StringUtils.isNotNull(MdmCode)){
+                            int follow_up_item = (int) MdmCode.get("follow_up_item");//随访品 //=1说明是随访品 0不是
+                        if(follow_up_item==1){
+                            int i=0;
+                            PageData   pdCPB=new PageData();
+                            if (StringUtils.isNotEmpty(patientId)) {
+                                pdCPB.put("patientId", patientId);
+                            }else {
+                                return -1;
+                            }
+                            pdCPB.put("mdmCode", lxr.get("mdmCode"));
+                            pdCPB.put("productCode", lxr.get("mdmCode"));
+
+                            List<PageData> SOPList= (List<PageData>) daoSupport.findForList("SDtpYypzFollowUpSopMapper.selectSOPTemplateByProductCode", pdCPB);
+                            if(SOPList.size()>0){//说明是配置品
+                                String businessBelonging = (String) SOPList.get(0).get("businessBelonging");//业务归属
+                            }
+                            //先查询该患者购买在这个药品是否已经有计划 mdmCode patientId businessBelonging
+                            //List<PageData> planList= (List<PageData>) daoSupport.findForList("followPlanMapper.selectPlanListByCPB", pdCPB);
+                            PageData plan= (PageData) daoSupport.findForObject("followPlanMapper.selectPlanByCPB", pdCPB);
+                            //生成计划
+                            pdCPB.put("productName", lxr.get("productName"));//'药品名称'
+                            pdCPB.put("genericName", lxr.get("genericName"));//'药品通用名'
+                            pdCPB.put("businessBelonging", "常规随访");//业务归属 先写死 默认这个药品已经配置了业务归属为常规随访的药
+                            pdCPB.put("specification", lxr.get("specification"));
+                            pdCPB.put("storeId", getSysUser().getDeptId());//'门店id'
+                            pdCPB.put("storeName", getSysUser().getDept().getDeptName());//'门店'
+                            pdCPB.put("templateId", "12345");//'模版ID' 先假设写死 实际是获取模板ID
+                            pdCPB.put("planName", lxr.get("productName")+"-随访");//'计划名称' 默认用药品作为名称
+                            pdCPB.put("follow_up_person", "周敏");//'随访跟进人' 先写死
+                            pdCPB.put("follow_up_person_id", "7");//'随访跟进人id' 先写死
+                            pdCPB.put("createdBy", "系统创建");//'创建人'
+                            pdCPB.put("createdTime", DateUtils.getTime());//'创建时间'
+                            pdCPB.put("updatedBy", getSysUser().getLoginName());//'创建时间'
+                            pdCPB.put("updatedTime", DateUtils.getTime());//'创建时间'
+                            pdCPB.put("status", 1);//'计划状态: 0关闭 1开启/进行中,2默认:2已创建待开启'
+                            if(StringUtils.isNotNull(plan)){
+                                pdCPB.put("planId", plan.get("planId"));
+                                planId= plan.get("planId").toString();
+                            }else {
+                                pdCPB.put("planId", planId);
+                                int FollowPlan = dao.executeBatch("followPlanMapper.insertFollowPlan", pdCPB);
+                                System.out.println("先销售后登记FollowPlan.size()="+FollowPlan);
+                            }
+                            pdCPB.put("appointmentDate", DateUtils.getTime());//'预约日期'
+                            i++;
+                            pdCPB.put("taskName", lxr.get("productName")+"-第"+i+"次任务");//'任务名称'
+                            pdCPB.put("taskTheme", "常规随访");//'任务主题'
+                            pdCPB.put("planId", planId);//'计划ID'
+                            pdCPB.put("patientId", patientId);//'患者id'
+                            pdCPB.put("patientName", pd.get("patientName"));//'患者姓名'
+                            pdCPB.put("gender", pd.get("gender"));//'性别:0男,1女,2未知'
+                            pdCPB.put("age", pd.get("age"));//'年龄'
+                            //pdCPB.put("followUpSummary", "无");//'随访小结'
+                            //pdCPB.put("followUpSummaryid", lxr.get("followUpSummaryid"));//'随访小结id'
+                            pdCPB.put("disease", pd.get("prescriptionDiagnosis"));//'疾病' 先用处方诊断字段代替
+                            pdCPB.put("storeName", getSysUser().getDeptId());//'门店'
+                            //pdCPB.put("mdmCode", lxr.get("mdmCode"));//'药品编码'
+                            pdCPB.put("taskFollower", "周敏");//'任务跟进人'
+                            pdCPB.put("nutrition_evaluation_id", "11111111");//'营养测评id'
+                            pdCPB.put("medication_record_id", "22222222");//'用药记录id'
+                            pdCPB.put("taskStatus", "待执行");//任务状态:\r\n,0待执行,\r\n1已完成,\r\n2未完成,\r\n3已下发
+                            pdCPB.put("operator", pd.get("registrant"));//'操作人'
+                            pdCPB.put("createdAt", DateUtils.getTime());
+                            pdCPB.put("updatedAt", DateUtils.getTime());
+                            int FollowTask = dao.executeBatch("followTaskMapper.insertFollowTask", pdCPB);
+                            System.out.println("先销售后登记FollowTask.size()="+FollowTask);
+                            //生成任务结束
+                        }
+                        }
                         dao.executeBatch("DTPCFDJMapper.batchAddDrugPurchaseRecordNew", pageData);
                     }
                 }
@@ -884,7 +964,7 @@ public class DTPService {
                 pd.put("drugQuantity", drugQuantity);
 
             if (StringUtils.isNull(reviewingName) && StringUtils.isEmpty(reviewStatus)){
-                pd.put("reviewingName", "系统默认");
+                pd.put("reviewingName", "系统审核");
                 pd.put("reviewStatus", 1);//处方审核状态:0:审核不通过;1:审核通过;2: 待审核;默认 1: "审核通过";
             }
             if(StringUtils.isEmpty(remarks)){
@@ -912,9 +992,7 @@ public class DTPService {
                     }
 
                 }
-            if (StringUtils.isNull(pd.get("registrant"))){
-                pd.put("registrant", getSysUser().getLoginName());
-            }
+
                 return daoSupport.save("DTPCFDJMapper.updatePrescriptionRegistration", pd);
 
 

+ 93 - 0
health-system/src/main/java/com/bzd/system/service/dtp/SDtpYypzFollowUpSopService.java

@@ -1,12 +1,17 @@
 package com.bzd.system.service.dtp;
 
+import com.bzd.common.annotation.Excel;
 import com.bzd.common.config.dao.DaoBase;
 import com.bzd.common.config.dao.DaoSupport;
 import com.bzd.common.config.dao.PageData;
+import com.bzd.common.constant.ScheduleConstants;
 import com.bzd.common.utils.DateUtils;
 import com.bzd.common.utils.StringUtils;
 import com.bzd.common.utils.uuid.IdUtils;
 import com.bzd.common.utils.uuid.SnowflakeIdGenerator;
+import com.bzd.quartz.domain.SysJob;
+import com.bzd.quartz.mapper.SysJobMapper;
+import com.bzd.quartz.service.ISysJobService;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,6 +43,8 @@ public class SDtpYypzFollowUpSopService {
 
     @Autowired
     private DaoBase dao;
+    @Autowired
+    ISysJobService jobService;
 
     @Resource(name = "daoSupport")
     private DaoSupport daoSupport;
@@ -370,4 +377,90 @@ public class SDtpYypzFollowUpSopService {
            return 0;
        }
    }
+
+    @Autowired
+    private SysJobMapper jobMapper;
+   //购药处方登记成功后如果是随访品 触发计划和执行任务
+    //触发计划
+   public void triggerPLan(PageData pd)throws Exception {
+       System.out.println("生成定计划定时任务-执行有参方法:triggerPLan"+pd);
+       pd.put("updatedBy",getSysUser().getLoginName());
+       pd.put("updatedTime",DateUtils.getTime());
+       pd.put("status",1);//状态: 0已创建 1启用,2禁用 默认为已创建0
+       String mdmCode="";
+       String storeId="";
+       String patientId="";
+       String templateId="";
+       String planId="";
+
+       List<PageData> templateList= (List<PageData>) daoSupport.findForList("SDtpYypzFollowUpSopMapper.getTemplateNodeByMBS", pd);//获取获取模版和药 查询条件mdmCode businessBelonging storeId
+       System.out.println("执行mapper方法:getTemplateNodeByMBS,return:"+templateList.size());
+       if(templateList.size()>0){
+           for (PageData pageData : templateList) {
+               PageData    pd1=new PageData();
+               pd1.put("templateId",pageData.get("templateId"));
+
+               List<PageData> NodeList= (List<PageData>)  daoSupport.findForList("SDtpYypzFollowUpSopMapper.selectNodeConfigByTemplateId", pd1);//根据模版id 获取节点配置 templateId
+               System.out.println("执行mapper方法:selectNodeConfigByTemplateId,return:"+NodeList.size());
+               if(templateList.size()>0){
+                   for (PageData Node : NodeList) {
+                  String activateStructures= (String) Node.get("activateStructures");//激活节点 激活节点(按) 创建计划 其他方式
+                  int activateWhichDay= (int) Node.get("activateWhichDay");//(第几天激活)
+                  String   activateNodeRule= (String) Node.get("activateNodeRule");//单次节点:只执行一次 周期节点:按周期规则执行
+                  String createdTime= (String) pd.get("createdTime");//计划创建时间
+                  if(activateStructures.equals("创建计划") && activateNodeRule.equals("单次节点")){
+                      mdmCode=pageData.get("productCode").toString();
+                      storeId=pd.get("storeId").toString();
+                      patientId=pd.get("patientId").toString();
+                      templateId=pageData.get("templateId").toString();
+                      planId=pd.get("planId").toString();
+                     //新增定时任务
+                      SysJob job=new SysJob();
+                      job.setJobGroup(pd.get("planName").toString()+pd.get("mdmCode").toString());//任务组名
+                      job.setJobName(pd.get("planName").toString());//任务名称
+                      job.setInvokeTarget("ryTask.triggerPLan("+ mdmCode+","+ storeId+","+ patientId+","+templateId+","+planId+")");//调用目标字符串 ryTask.ryMultipleParams('ry', true, 2000L, 316.50D, 100) mdmCode storeId patientId templateId planId
+                      job.setCronExpression("0 0 "+activateWhichDay+" * * ?");//cron执行表达式
+                      job.setMisfirePolicy(ScheduleConstants.MISFIRE_DEFAULT);//cron计划策略  默认MISFIRE_DEFAULT
+                      job.setConcurrent("1");//是否并发执行(0允许 1禁止)
+                      job.setStatus("0");//任务状态(0正常 1暂停)
+
+                      jobMapper.insertJob(job);
+
+                  }
+
+                   }
+               }
+           }
+
+       }
+   }
+    //触发任务
+    public Integer triggerTask(PageData pd)throws Exception {
+// `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
+//  `appointmentDate` date DEFAULT NULL COMMENT '预约日期',
+//  `businessBelonging` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '业务归属:常规随访,脱落召回',
+//  `taskName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务名称',
+//  `taskTheme` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '任务主题',
+//  `planId` varchar(255) DEFAULT NULL COMMENT '计划ID',
+//  `patientId` varchar(300) DEFAULT NULL COMMENT '患者id',
+//  `patientName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '患者姓名',
+//        pd.put("updatedBy",getSysUser().getLoginName());
+//          `storeId` varchar(255) DEFAULT NULL COMMENT '门店id',
+//  `storeName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '门店',
+//  `mdmCode` varchar(255) DEFAULT NULL COMMENT '药品编码',
+//  `genericName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '药品通用名',
+//  `productName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '商品名'
+//        pd.put("updatedTime",DateUtils.getTime());
+        int b=0;
+        int a=  daoSupport.update("SDtpYypzFollowUpSopMapper.updateSopStatusByTemplateId", pd);
+        if(a>0){
+            b=  daoSupport.update("SDtpYypzFollowUpSopMapper.updateNodeconfigStatusByTemplateId", pd);
+        }
+        System.out.println("a:"+a+"b:"+b);
+        if(a>0 && b>0){
+            return 2;
+        }else{
+            return 0;
+        }
+    }
 }

+ 19 - 0
health-system/src/main/resources/mapper/dtp/SDtpYypzFollowUpSopMapper.xml

@@ -2,6 +2,25 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="SDtpYypzFollowUpSopMapper" >
 
+
+
+    <!-- 获取节点配置-->
+    <select id="getTemplateNodeByMBS" parameterType="pd" resultType="pd">
+        select up.*,dr.productName,dr.productCode,dr.specification from s_dtp_yypz_follow_up_sop  up  left join s_dtp_yypz_template_drug dr on up.templateId=dr.templateId where 1=1
+        <if test="mdmCode !=null and mdmCode !='' ">
+            and dr.productCode = #{mdmCode}
+        </if>
+        <if test="businessBelonging !=null and businessBelonging !='' ">
+            and up.businessBelonging = #{businessBelonging}
+        </if>
+        <if test="storeId !=null and storeId !='' ">
+            and up.storeId = #{storeId}
+        </if>
+        <if test="status !=null and status !='' ">
+        and up.status = #{status}
+       </if>
+    </select>
+
     <!-- 通过药品查询模版信息 -->
     <select id="selectSOPTemplateByProductCode" parameterType="pd" resultType="pd">
         select up.*,dr.productName,dr.productCode,dr.specification from s_dtp_yypz_follow_up_sop up  left join s_dtp_yypz_template_drug dr on up.templateId=dr.templateId where 1=1

+ 9 - 0
health-system/src/main/resources/mapper/gxhpz/followTaskMapper.xml

@@ -120,6 +120,9 @@
             <if test="storeName != null and storeName != ''">
                 storeName,
             </if>
+            <if test="storeId != null and storeId != ''">
+                storeId,
+            </if>
             <if test="genericName != null and genericName != ''">
                 genericName,
             </if>
@@ -264,6 +267,9 @@
             <if test="storeName != null and storeName != ''">
                 #{storeName},
             </if>
+            <if test="storeId != null and storeId != ''">
+                #{storeId},
+            </if>
             <if test="genericName != null and genericName != ''">
                 #{genericName},
             </if>
@@ -414,6 +420,9 @@
             <if test="storeName != null and storeName != ''">
                 storeName = #{storeName},
             </if>
+            <if test="storeId != null and storeId != ''">
+                storeId = #{storeId},
+            </if>
             <if test="genericName != null and genericName != ''">
                 genericName = #{genericName},
             </if>

+ 7 - 0
health-system/src/main/resources/mapper/mdyy/DTPCFDJMapper.xml

@@ -218,6 +218,13 @@
             WHERE patientId = #{patientId}
         )
     </select>
+
+    <select id="isfollowUpItemByMdmCode" parameterType="pd" resultType="pd">
+        SELECT
+            registered_item, follow_up_item,cold_chain_item,flow_item
+        FROM s_gxhpz_product_dtpinfo where product_code=#{mdmCode}
+
+    </select>
     <!-- 根据prescriptionNumber查询多条条记录 -->
     <select id="selectListRecordByPrescriptionNumber" parameterType="pd" resultType="pd">
         SELECT