Parcourir la source

提交模拟销售端推送数据接口

wangshuangpan il y a 2 mois
Parent
commit
14dacd3ebf

+ 4 - 4
health-admin/src/main/java/com/bzd/web/controller/dtp/PharmaceuticalServiceController.java

@@ -291,10 +291,10 @@ public class PharmaceuticalServiceController extends BaseController {
     public AjaxResult addSave() throws Exception {
         PageData pd = this.getPageData();
         pd.put("storeId", getSysUser().getDeptId());
-        String documentNumber= (String) pd.get("documentNumber");
-        if (!IDCardValidator.validateIDCard(documentNumber)) {
-            return error("身份证号码不正确"+documentNumber+"请重新输入");
-        }
+//        String documentNumber= (String) pd.get("documentNumber");
+//        if (!IDCardValidator.validateIDCard(documentNumber)) {
+//            return error("身份证号码不正确"+documentNumber+"请重新输入");
+//        }
         String dateBirth= (String) pd.get("dateBirth");
        if(StringUtils.isNotEmpty(dateBirth)){
           Integer age = ServletUtils.calculateAge(dateBirth);//根据出生日期字符串计算年龄

+ 19 - 0
health-admin/src/main/java/com/bzd/web/controller/dtp/RecipeRegisterController.java

@@ -605,6 +605,25 @@ public class RecipeRegisterController extends BaseController {
     }
 
 
+    /**
+     * 先登记后现售的情况,销售系统收到处方后销售录入完成通知患者管理系统
+     * 患者系统根据销售单子和推送给销售系统的处方单号
+     * 修改当前系统的处方状态并存入销售数据,
+     * 处方状态(status)改为:订单已完成=1
+     */
+    @Log(title = "接收销售系统信息", businessType = BusinessType.INSERT)
+    @PostMapping("/saveSalesPull")
+    @ResponseBody
+    public AjaxResult saveSalesPull() throws Exception {
+        PageData pd = this.getPageData();
+        // salesOrderNumber 销售单号,prescriptionNumber 处方单号
+        PageData p = dtpService.saveSalesPull(pd);
+        if(StringUtils.isNotNull(p)   && p.get("code").toString().equals("200")){
+            return AjaxResult.success(p);
+        }else{
+            return AjaxResult.error(p.get("msg").toString(),"");
+        }
 
+    }
 
 }

+ 1 - 1
health-admin/src/main/resources/templates/dtp/archives/archivesAdd.html

@@ -87,7 +87,7 @@
                 <input name="contactPhone" placeholder="请输入联系人手机号" class="styled-input isPhone" type="text" maxlength="11"  required>
             </div>
             <div class="customize-form-group">
-            <label class="col-sm-1 control-label">证件类型:</label>
+            <label class="col-sm-1 control-label">证件类型1:</label>
             <select name="documentType" id="documentType"  class="styled-input" th:with="type=${@dict.getType('sys_select_dtp_ysfw_zjlx')}" required>
                 <option>请选择</option>
                 <option th:each="dict : ${type}" th:selected="${dict.dictLabel=='居民身份证'}" th:text="${dict.dictLabel}" th:value="${dict.dictLabel}"></option>

+ 4 - 4
health-admin/src/main/resources/templates/dtp/archives/archivesAddCallback.html

@@ -279,10 +279,10 @@
                     $.modal.alert("请输入身份证号码")
                     return false
                 }
-                if (validateIDCard(IDCard)==false) {
-                    $.modal.alert("身份证号码格式不正确,请重新输入!")
-                    return false
-                }
+                // if (validateIDCard(IDCard)==false) {
+                //     $.modal.alert("身份证号码格式不正确,请重新输入!")
+                //     return false
+                // }
             }
             var gender= $("#gender").val()
             if (gender==null || gender=="" || gender==undefined) {

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

@@ -2100,10 +2100,10 @@
                 $.modal.alertError("请输入身份证号码")
                 return;
             }
-            if (validateIDCard(IDCard)==false) {
-                $.modal.alertError("身份证号码格式不正确,请重新输入!")
-                return;
-            }
+            // if (validateIDCard(IDCard)==false) {
+            //     $.modal.alertError("身份证号码格式不正确,请重新输入!")
+            //     return;
+            // }
         }
         var gender= $("#gender").val()
         if (gender==null || gender=="" || gender==undefined) {

+ 6 - 1
health-admin/src/main/resources/templates/dtp/recipe/recipe.html

@@ -224,7 +224,12 @@
 				formatter: function(value, row, index) {
 					if (row.id) {
 						var actions = [];
-						actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
+						// 定义可以编辑的状态
+						var editableStatuses = [2, 3, 4, 5, 6]; // 待上传处方、待确认信息、待处方登记、待订单销售、待绑定患者
+						// 判断当前行的状态是否允许编辑
+						if (editableStatuses.includes(row.status)) { // 假设状态字段名为status
+							actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
+						}
 						actions.push('<a class="btn btn-warning btn-xs ' + queryFlag + '" href="javascript:void(0)" onclick="$.operate.view(\'' + row.id + '\')"><i class="fa fa-eye"></i>详情</a> ');
 						actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a> ');
 						return actions.join('');

+ 127 - 10
health-system/src/main/java/com/bzd/system/service/DTPService.java

@@ -118,6 +118,123 @@ public class DTPService {
         return daoSupport.update("DTPMapper.BangdingRecipe", pd);
     }
     /**
+     * 销售系统回调此 接口订单数据存档和处方信息更新
+     *
+     * @param pd
+     * @return
+     * @throws Exception
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public PageData saveSalesPull(final PageData pd) throws Exception {
+        PageData returnPageData = new PageData();
+        Object drugList = pd.get("drugData");//获取药品信息列表
+        String salesOrderNumber = (String) pd.get("salesOrderNumber");//销售单号
+        String prescriptionNumber = (String) pd.get("prescriptionNumber");//处方单号
+        //Integer salesOrderNumber = IdUtils.get10randomNumber();//订单号 模拟生成销售单号 实际会从销售系统带过来
+        // Integer prescriptionNumber = IdUtils.get10randomNumber();//订单号 模拟生成销售单号 实际会从销售系统带过来
+        Integer drugsLinkId = IdUtils.get10randomNumber();//处方关联药品唯一标识
+
+        List<PageData> addList = new ArrayList<>();
+        int resultDrug=0;
+        int drugQuantity=0;
+
+        try {
+            if(StringUtils.isNotEmpty(prescriptionNumber) && StringUtils.isNotEmpty(salesOrderNumber)){
+              int s=  daoSupport.save("SDdglOrderStoreMapper.insertOrderStore", pd);
+                pd.put("status","1");//订单已完成
+                pd.put("saleDate",DateUtils.getTime());//saleDate
+                ObjectMapper objectMapper = new ObjectMapper();
+                List<Map<String, Object>> rowsdrugList = objectMapper.readValue(drugList.toString(), List.class);
+                pd.put("drugQuantity",rowsdrugList.size());// drugQuantity
+              int c=  daoSupport.update("DTPCFDJMapper.updateCFBySP", pd);
+              if(s>0 && c >0){
+                  returnPageData.put("code", 200);
+                  returnPageData.put("msg", "成功");
+                  returnPageData.put("salesOrderNumber", salesOrderNumber);
+                  return returnPageData;
+              }else{
+                  returnPageData.put("msg", "失败");
+                  returnPageData.put("code", 300);
+                  returnPageData.put("salesOrderNumber", salesOrderNumber);
+                  return returnPageData;
+                }
+            }else{
+                if (StringUtils.isNotNull(drugList)) {
+                    // 将 JSON 字符串转换为 List<Map<String, Object>>
+                    ObjectMapper objectMapper = new ObjectMapper();
+                    List<Map<String, Object>> rowsdrugList = objectMapper.readValue(drugList.toString(), List.class);
+                    drugQuantity = rowsdrugList.size();//处方取药数量
+                    // 遍历列表并调用插入数据接口
+                    if (rowsdrugList.size() > 0) {
+                        for (Map<String, Object> lxr : rowsdrugList) {
+                            PageData pageData = new PageData();
+                            // 设置固定或默认值
+                            pageData.put("createdTime", DateUtils.getTime());
+                            // 从 lxr 获取数据并映射到数据库字段
+                            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("manufacturerShortName", lxr.get("manufacturerShortName"));
+                            pageData.put("administrationMethod", lxr.get("administrationMethod"));
+                            pageData.put("drug_batch_number", lxr.get("drug_batch_number"));//药品批号
+                            pageData.put("pharmacyName", lxr.get("pharmacyName"));
+                            // 添加其他可能需要的字段(如果有的话)
+                            pageData.put("medicationRoute", lxr.get("medicationRoute"));
+                            pageData.put("sales", lxr.get("sales"));
+                            // pageData.put("prescriptionNumber", prescriptionNumber);
+                            pageData.put("drugsLinkId", drugsLinkId);
+                            pageData.put("salesOrderNumber", salesOrderNumber);
+                            pageData.put("prescriptionDate", DateUtils.getTime());
+                            pageData.put("hospital", lxr.get("hospital"));
+                            pageData.put("prescribingDoctor", lxr.get("prescribingDoctor"));
+                            pageData.put("department", lxr.get("department"));
+                            pageData.put("attendingPhysician", lxr.get("attendingPhysician"));
+                            pageData.put("clinicalDiagnosis", lxr.get("clinicalDiagnosis"));
+                            addList.add(pageData);
+                            resultDrug = dao.executeBatch("DTPCFDJMapper.batchAddDrugPurchaseRecordNew", pageData);
+                        }
+                    }
+                }
+
+
+                // 从表单数据填充
+                // pd.put("prescriptionNumber", prescriptionNumber); // 处方单表id主键,Id 应该是某个方式生成的唯一标识符
+                pd.put("salesOrderNumber", salesOrderNumber); // 处方单表id主键,Id 应该是某个方式生成的唯一标识符
+                pd.put("drugsLinkId", drugsLinkId);
+                pd.put("status", 4);//先销售 处方状态就是 待处方登记4
+                pd.put("createdBy", getSysUser().getUserId());
+                pd.put("storeId", getSysUser().getDeptId());
+                pd.put("createTime", DateUtils.getTime());
+                pd.put("drugQuantity", drugQuantity);
+                String gender = (String) pd.get("gender");//获取性别
+                if (StringUtils.isEmpty(gender)) {
+                    pd.put("gender", 2);//2等于未知性别
+                }
+                //String age = (String) pd.get("age");//
+                int result = daoSupport.save("DTPCFDJMapper.insertPrescriptionRegistration", pd);
+                if(resultDrug>0 && result>0){
+                    returnPageData.put("code", 200);
+                    // returnPageData.put("prescriptionNumber", prescriptionNumber);
+                    returnPageData.put("drugsLinkId", drugsLinkId);
+                    returnPageData.put("status", 4);//先销售 处方状态就是 待处方登记4
+                    returnPageData.put("salesOrderNumber", salesOrderNumber);
+                    return returnPageData;
+                }else {
+                    returnPageData.put("msg", "添加失败");
+                    returnPageData.put("code", 300);
+                    return returnPageData;
+                }
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
      * 先销售后登记的订单数据录入
      *
      * @param pd
@@ -882,7 +999,7 @@ public class DTPService {
                             }
 
                           }
-                               SDtpYypzFollowUpSopService.createTrigger(PlanList,TaskList);//生成定时任务
+                               SDtpYypzFollowUpSopService.createTrigger(PlanList,TaskList);//生成定时任务 处方状态=订单已完成 才执行任务   任务状态(0正常 1暂停)
                          }
 
                       }
@@ -1005,18 +1122,13 @@ public class DTPService {
         if (status.equals("4")) {//4待处方登记 先销售后登记的情况
              onlyId = IdUtils.get10randomNumber();//如果是先销售后登记来做的修改处方信息 生成处方单号
             flag=true;//为先销售后登记
-            if (StringUtils.isEmpty(prescriptionImageUrl)) {//3待确认信息
-                status="2";//待上传处方
-            }else {
-                status="3";//待确认信息
-            }
-        }else{
-            if (StringUtils.isEmpty(prescriptionImageUrl)) {//3待确认信息
+
+        }
+        if (StringUtils.isEmpty(prescriptionImageUrl)) {
                 status="2";//待上传处方
             }else {
                 status="3";//待确认信息
             }
-        }
         Object drugList = pd.get("drugData");//获取药品信息列表
         List<PageData> addList = new ArrayList<>();
         int resultDrug=0;
@@ -1076,6 +1188,7 @@ public class DTPService {
                                 pageData.put("pharmacyName", pd1.get("ales_storeName"));//销售门店名称
                                 pageData.put("drug_batch_number", pd1.get("drug_batch_number"));//药品批号
                             }
+                            status="1";
                         }else {
                             //pageData.put("salesOrderNumber", pd.get("salesOrderNumber"));
                             pageData.put("prescriptionNumber", pd.get("prescriptionNumber"));
@@ -1296,7 +1409,11 @@ public class DTPService {
                                     //任务开始生成的前提条件是:处方状态: 订单已完成,处方已完成
                                     //当先有销售单子推送到系统时,系统判断单子的药品是否是登记品,是就可以在销售单子列表中获取是登记品药,点击去登记,如果这个单子的其中的药属于随访品,就在去登记处方页面提交后生成对应的计划任务.
                                     //实际业务场景应该是 要判断是否同时存在  [处方编号, 订单编号] 处方状态 必须是 订单已经销售完成,处方已完成  才能去触发生成任务
-                                    SDtpYypzFollowUpSopService.createTrigger(PlanList,TaskList);//生成定时任务
+                                    //加判断 必须是 订单已经销售  处方已经登记 处方已经上传 才能去生成任务 状态:status=1
+                                    if(flag && status.equals("1")){
+                                        SDtpYypzFollowUpSopService.createTrigger(PlanList,TaskList);//生成定时任务
+                                    }
+
                                 }
 
                         }

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

@@ -690,7 +690,7 @@ public class SDtpYypzFollowUpSopService {
         job.setCronExpression(cronExpression); // 设置 Cron 表达式
         job.setMisfirePolicy(ScheduleConstants.MISFIRE_FIRE_AND_PROCEED); // Cron 计划策略
         job.setConcurrent("1"); // 是否并发执行(0允许 1禁止)
-        job.setStatus("0");
+        job.setStatus("0"); // 任务状态(0正常 1暂停)
         job.setPlanId(planId.toString());
         job.setStoreId(storeId);
         job.setPatientId(patientId);

+ 3 - 4
health-system/src/main/resources/mapper/gxhpz/dvalueMapper.xml

@@ -494,10 +494,9 @@
                 WHERE
                     1=1
                   <if test="mdmCode != null and mdmCode != ''">
-                  AND mdmCode = #{mdmCode}
+                  AND pd.mdmCode = #{mdmCode}
                   </if>
-                GROUP BY mdmCode
-            ) latest ON pd.mdmCode = latest.mdmCode AND pd.createdTime = latest.latest_createdTime
+                GROUP BY pd.d.mdmCode = latest.mdmCode AND pd.createdTime = latest.latest_createdTime
         WHERE
             1=1
                 <if test="drugsLinkId != null and drugsLinkId != ''">
@@ -510,7 +509,7 @@
                  AND pd.storeId = #{storeId}
             </if>
             <if test="mdmCode != null and mdmCode != ''">
-                AND mdmCode = #{mdmCode}
+                AND pd.mdmCode = #{mdmCode}
             </if>
 </select>
 

+ 23 - 1
health-system/src/main/resources/mapper/mdyy/DTPCFDJMapper.xml

@@ -219,8 +219,30 @@
                 age = #{age},
             </if>
         </trim>
-            where id = #{id}
+        where id = #{id}
+    </update>
+
+    <!-- 销售单推送 更新处方信息记录 -->
+    <update id="updateCFBySP" parameterType="pd">
+        update s_dtp_prescription_registration
+        <trim prefix="SET " suffix="" prefixOverrides="," suffixOverrides=",">
+            <if test="status != null and status != ''">
+                status = #{status},
+            </if>
+            <if test="saleDate != null and saleDate != ''">
+                saleDate = #{saleDate},
+            </if>
+            <if test="drugQuantity != null">
+                drugQuantity = #{drugQuantity},
+            </if>
+            <if test="salesOrderNumber != null and salesOrderNumber != ''">
+                salesOrderNumber = #{salesOrderNumber},
+            </if>
+        </trim>
+        where prescriptionNumber=#{prescriptionNumber}
     </update>
+
+
     <!-- 根据patientId查询单条记录 -->
     <select id="selectOneByPatientId" parameterType="pd" resultType="pd">
         SELECT *