Browse Source

更新SOP配置页面和先销售后登记页面和药品总库阻止我选中也能提交一行空的行为

bzd_wsp 3 months ago
parent
commit
c3381e628d

+ 84 - 6
health-admin/src/main/java/com/bzd/web/controller/dtp/RecipeRegisterController.java

@@ -55,7 +55,22 @@ public class RecipeRegisterController extends BaseController {
         PageData pd = this.getPageData();
 
         startPage();
-
+        pd.put("sales_is", 4);//4: "待处方登记";\r\n5: "待订单销售"
+        List<PageData> pageData = dtpService.findForList(pd);
+        return  getDataTable(pageData);
+    }
+    /**
+     *
+     * 先销售后登记的处方订单查询
+     */
+    @RequiresPermissions("dtp:recipe:list")
+    @PostMapping("/salesList")
+    @ResponseBody
+    public TableDataInfo salesList() throws Exception {
+        PageData pd = this.getPageData();
+        startPage();
+        pd.put("status", 4);
+        pd.put("sales_yes", 4);//4: "待处方登记";\r\n5: "待订单销售"
         List<PageData> pageData = dtpService.findForList(pd);
         return  getDataTable(pageData);
     }
@@ -82,6 +97,15 @@ public class RecipeRegisterController extends BaseController {
         PageData pageData =dtpService.getLastRecipeInfo(pd);
         return  AjaxResult.success(pageData);
     }
+    @RequiresPermissions("dtp:recipe:list")
+    @PostMapping("/getLastRecipeInfoSales")
+    @ResponseBody
+    public AjaxResult getLastRecipeInfoSales( ModelMap mmap) throws Exception {
+        PageData pd = this.getPageData();
+        startPage();
+        PageData pageData =dtpService.getLastRecipeInfoSales(pd);
+        return  AjaxResult.success(pageData);
+    }
 
     /**
      * 新增页面
@@ -123,6 +147,30 @@ public class RecipeRegisterController extends BaseController {
     }
 
 
+    /**
+     *
+     * 先销售后登记的处方订单添
+     */
+    @GetMapping("/saveSalesPage")
+    public String saveSalesPage(ModelMap mmap)
+    {
+        mmap.put("posts", 1);
+        return prefix + "/saveSalesPage";
+    }
+    /**
+     * 先销售后登记的处方订单添
+     */
+    @RequiresPermissions("dtp:recipe:add")
+    @Log(title = "先销售后登记的处方订单添", businessType = BusinessType.INSERT)
+    @PostMapping("/saveSales")
+    @ResponseBody
+    public AjaxResult saveSales() throws Exception {
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        PageData object = dtpService.saveSales(pd);
+        return AjaxResult.success(object.get("result").toString(),object);
+    }
+
 
     /**
      * 处方登记新增保存-----暂时废弃改代码
@@ -161,14 +209,20 @@ public class RecipeRegisterController extends BaseController {
     @ResponseBody
     public AjaxResult updateCFDJ() throws Exception {
         PageData pd = new PageData();
+
         pd = this.getPageData();
-        int i = dtpService.updateCFDJ(pd);
-        if(i>0){
-            return AjaxResult.success("修改成功");
-        }else {
-            return AjaxResult.error("修改失败");
+        try{
+            int i = dtpService.updateCFDJ(pd);
+            if(i>0){
+                return AjaxResult.success("修改成功");
+            }else {
+                return AjaxResult.error("修改失败");
+            }
+        }catch (Exception e){
+            return AjaxResult.error("修改失败"+e);
         }
 
+
     }
 
     /**
@@ -220,6 +274,7 @@ public class RecipeRegisterController extends BaseController {
     {
         PageData pd = this.getPageData();
         pd.put("id",id);
+        pd.put("sales_is", "0");
         PageData pageData = dtpService.findForList(pd).get(0);
         mmap.putAll(pageData);
         return prefix + "/edit";
@@ -252,6 +307,7 @@ public class RecipeRegisterController extends BaseController {
     {
         PageData pd = this.getPageData();
         pd.put("id",id);
+        pd.put("sales_is", "0");
         PageData pageData = dtpService.findForList(pd).get(0);
         mmap.putAll(pageData);
         return prefix + "/edit";
@@ -294,6 +350,7 @@ public class RecipeRegisterController extends BaseController {
     public AjaxResult export()throws Exception
     {
         PageData pd = this.getPageData();
+        pd.put("sales_is", "0");
         List<PageData> pageData= dtpService.findForList(pd);
         ExcelUtil<PageData> util = new ExcelUtil<>(PageData.class);
         return util.exportExcel(pageData, "处方数据");
@@ -309,12 +366,33 @@ public class RecipeRegisterController extends BaseController {
         mmap.putAll(pageData);
         return prefix + "/newRecipeView";
     }
+    @RequiresPermissions("dtp:recipe:view")
+    @GetMapping("/viewSalesInfo/{id}")
+    public String viewSalesInfo(@PathVariable("id") String id, ModelMap mmap)throws Exception
+    {
+        PageData pd = this.getPageData();
+        pd.put("id",id);
+        PageData pageData = dtpService.findForList(pd).get(0);
+        mmap.putAll(pageData);
+        return prefix + "/newRecipeView";
+    }
     @RequiresPermissions("dtp:recipe:edit")
     @GetMapping("/viewEditInfo/{id}")
     public String viewEditInfo(@PathVariable("id") String id, ModelMap mmap)throws Exception
     {
         PageData pd = this.getPageData();
         pd.put("id",id);
+
+        PageData pageData = dtpService.findForList(pd).get(0);
+        mmap.putAll(pageData);
+        return prefix + "/edit";
+    }
+    @RequiresPermissions("dtp:recipe:edit")
+    @GetMapping("/viewEditSalesInfo/{id}")
+    public String viewEditSalesInfo(@PathVariable("id") String id, ModelMap mmap)throws Exception
+    {
+        PageData pd = this.getPageData();
+        pd.put("id",id);
         PageData pageData = dtpService.findForList(pd).get(0);
         mmap.putAll(pageData);
         return prefix + "/edit";

+ 53 - 9
health-admin/src/main/resources/templates/dtp/followUp/followUpEdit.html

@@ -172,6 +172,25 @@
         color: green;
     }
 
+
+
+    .customize-form-group3 {
+        width: 700px;
+        display: flex;
+    }
+
+    .input-groups3 {
+        flex-direction: column;
+    }
+
+    .radio-item {
+        margin-bottom: 10px;
+    }
+
+    .radio-item label {
+        margin-left: 5px;
+    }
+
 </style>
 <script>
 
@@ -1337,27 +1356,52 @@
                                 <label style="padding-left: 20px;margin-top: 3px;">BMI<18.5 伴一般情况差 3分</label>
                             </div>
                         </div>
-                        <div class="customize-form-group edit">
+
+                        <div class="customize-form-group3">
                             <label class="is-required">体重变化:</label>
-                            <div class="input-groups" th:with="type=${@dict.getType('sys_select_dtp_ysfw_huifangfangshi')}">
-                                <input type="radio" class="form-check-radio"  th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictLabel}"   th:checked="${dict.dictLabel}==${currentEconomicSituation}" name="tzbh" >
+                            <div class="input-groups3" th:with="type=${@dict.getType('sys_gxhpz_sfrw_tzbh')}">
+                                <div th:each="dict : ${type}" class="radio-item">
+                                    <input type="radio" class="form-check-radio"
+                                           th:text="${dict.dictLabel}"
+                                           th:value="${dict.dictLabel}"
+                                           th:checked="${dict.dictLabel}==${currentEconomicSituation}"
+                                           name="tzbh" />
+                                    <label>  </label>
+                                </div>
                             </div>
                             <span class="status"></span>
                         </div>
-                        <div class="customize-form-group edit">
+
+                        <div class="customize-form-group3">
                             <label class="is-required">进食量:</label>
-                            <div class="input-groups" th:with="type=${@dict.getType('sys_select_dtp_ysfw_huifangfangshi')}">
-                                <input type="radio" class="form-check-radio"  th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictLabel}"   th:checked="${dict.dictLabel}==${currentEconomicSituation}" name="jsl" >
+                            <div class="input-groups3" th:with="type=${@dict.getType('sys_gxhpz_sfrw_jsl')}">
+                                <div th:each="dict : ${type}" class="radio-item">
+                                   <input type="radio" class="form-check-radio"
+                                           th:text="${dict.dictLabel}"
+                                           th:value="${dict.dictLabel}"
+                                           th:checked="${dict.dictLabel}==${currentEconomicSituation}"
+                                           name="jsl" />
+                                    <label>  </label>
+                                </div>
                             </div>
                             <span class="status"></span>
                         </div>
-                        <div class="customize-form-group edit">
+
+                        <div class="customize-form-group3">
                             <label class="is-required">疾病状态:</label>
-                            <div class="input-groups" th:with="type=${@dict.getType('sys_select_dtp_ysfw_huifangfangshi')}">
-                                <input type="radio" class="form-check-radio"  th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictLabel}"   th:checked="${dict.dictLabel}==${currentEconomicSituation}" name="jbzt" >
+                            <div class="input-groups3" th:with="type=${@dict.getType('sys_gxhpz_sfrw_jbzt')}">
+                                <div th:each="dict : ${type}" class="radio-item">
+                                    <input type="radio" class="form-check-radio"
+                                           th:text="${dict.dictLabel}"
+                                           th:value="${dict.dictLabel}"
+                                           th:checked="${dict.dictLabel}==${currentEconomicSituation}"
+                                           name="jbzt" />
+                                    <label> </label>
+                                </div>
                             </div>
                             <span class="status"></span>
                         </div>
+
                         </form>
                     <div class="modal-footer">
                         <button type="button" class="btn btn-white" data-dismiss="modal">关闭</button>

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

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
 <head>
-	<th:block th:include="include :: header('随访任务')" />
+	<th:block th:include="include :: header('随访任务列表')" />
 	<th:block th:include="include :: layout-latest-css" />
 	<th:block th:include="include :: ztree-css" />
 </head>
@@ -209,7 +209,7 @@
 		        importTemplateUrl: prefix + "/importTemplate",*/
 		        sortName: "id",
 		        sortOrder: "asc",
-		        modalName: "随访任务",
+		        modalName: "随访表单",
 				fitColumns: true,
 				striped: true,
 				autoRowHeight: true,

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

@@ -102,6 +102,8 @@
     </form>
     <input type="hidden" id="id" name="id" th:value="${id}">
     <input type="hidden" id="prescriptionNumber" name="prescriptionNumber" th:value="${prescriptionNumber}">
+    <input type="hidden" id="drugsLinkId" name="drugsLinkId" th:value="${drugsLinkId}">
+    <input type="hidden" id="status" name="status" th:value="${status}">
     <!-- 假设这是你的 HTML 结构class="table table-bordered" -->
     <div class="ibox" id="data-ibox" style="overflow: auto;">
         <div class="ibox-title" style="width: 100%;">药品登记列表</div>
@@ -447,7 +449,7 @@
         tbody.empty(); // 清空现有行
 
         datas.forEach(function(patient, index) {
-            var genderText = patient.gender === 1 ? '男' : '女';
+            var genderText = patient.gender === 0 ? '男' : '女';
             var row = `
             <tr data-index="${index}">
                 <td><input type="radio" name="selectPatient" value="${index}"></td>
@@ -734,9 +736,13 @@
         }
         var id = $('#id').val().trim();
         var prescriptionNumber = $('#prescriptionNumber').val().trim();
+        var drugsLinkId = $('#drugsLinkId').val().trim();
+        var status = $('#status').val().trim();
         if(id!=''){
             formData.append('id', id);
+            formData.append('status', status);
             formData.append('prescriptionNumber', prescriptionNumber);
+            formData.append('drugsLinkId', drugsLinkId);
         }else {
             $.modal.alertError("请联系管理员!");
             return;
@@ -1054,7 +1060,7 @@
                     $.each(shangciObj, function(key, value) {
                         $('#' + key).val(value);
                         if (key=="gender"){
-                            if (value==1){
+                            if (value==0){
                                 value="男";
                             }else {
                                 value="女";

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

@@ -238,6 +238,8 @@
     var dataList=[];
     var selectdataList=[];
     var  prescriptionNumber;
+    var  drugsLinkId;
+
      $(document).ready(function() {
         // 获取所有的输入元素(input, textarea, select)
         var $inputs = $('form').find('input, textarea, select').filter(':visible');
@@ -573,6 +575,7 @@ function initTab(datas){
     }
     function submitHandler() {
         prescriptionNumber='';
+        drugsLinkId='';
         var prescribingDoctor = $('#prescribingDoctor').val();
         if (prescribingDoctor == ''|| prescribingDoctor == null|| prescribingDoctor == undefined){
             $.modal.alertError("请输入处方医生");
@@ -768,6 +771,8 @@ function initTab(datas){
             success: function (data) {
                 if(data.data.code==200){
                     prescriptionNumber = data.data.prescriptionNumber;
+                    drugsLinkId = data.data.drugsLinkId;
+
                     openCheckYSJC();
 
 
@@ -894,6 +899,7 @@ function initTab(datas){
             formData.append("reviewingName", reviewingName);
             formData.append("reviewStatus", reviewStatus);
             formData.append("prescriptionNumber", prescriptionNumber);
+            formData.append("drugsLinkId", drugsLinkId);
             formData.append("remarks", remarks);
 
             $.ajax({
@@ -908,7 +914,7 @@ function initTab(datas){
                     $.modal.alertError("操作失败");
                 },
                 success: function (data) {
-                    if (data.data.code === 200) {
+                    if (data.code === 200) {
                         $('#myModal').modal('hide'); // 关闭弹窗
                         $.modal.alertSuccess('提交成功');
                         $.modal.closeTab();

+ 5 - 3
health-admin/src/main/resources/templates/dtp/recipe/newRecipeView.html

@@ -156,7 +156,7 @@
                         // }
                         if (key=="patientName" || key=="patientPhone" || key=="gender" || key=="age"){
                             if (key=="gender"){
-                                if (value==1){
+                                if (value==0){
                                     value="男";
                                 }else {
                                     value="女";
@@ -187,8 +187,10 @@ function initTabShow(datas){
     tableElement.bootstrapTable({
         data: datas,
         columns : [
-            {field: 'prescriptionNumber', title: '销售' , width:'250px'},
-            { field: 'prescriptionDate', title: '处方日期' },
+            {field: 'saleDate', title: '销售日期' , width:'250px'},
+            { field: 'salesOrderNumber', title: '销售订单编号' },
+            {field: 'prescriptionNumber', title: '处方编号' },
+            { field: 'prescriptionDate', title: '处方日期', width:'250px' },
             { field: 'genericName', title: '药品通用名' },
             { field: 'productName', title: '商品名' },
             { field: 'medicationRoute', title: '用药途径' },

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

@@ -137,7 +137,7 @@
 				{ field: "prescriptionNumber", title: "处方单号" },
 				{ field: "dvalueDays", title: "剂量天数" },
 				{ field: "prescriptionNumber", title: "处方单号" },
-				{ field: "saleOrderNumber", title: "销售单号" },
+				{ field: "salesOrderNumber", title: "销售单号" },
 				{ field: "hospital", title: "医院" },
 				{ field: "department", title: "科室" },
 				{ field: "prescribingDoctor", title: "处方医生" },
@@ -193,6 +193,7 @@
 						switch (value) {
 							case 0: return "审核不通过";
 							case 1: return "审核通过";
+							case 2: return "待审核";
 							default: return "待审核";
 						}
 					}

+ 32 - 45
health-admin/src/main/resources/templates/dtp/recipe/salesRegistration.html

@@ -28,26 +28,34 @@
 
 						<div class="customize-form-group">
 							<label>销售单号:</label>
-							<input type="text" class="styled-input" name="saleOrderNumber"/>
+							<input type="text" class="styled-input" placeholder="请输入销售单号号" name="saleOrderNumber"/>
 						</div>
 						<div class="customize-form-group">
-							<label>处方单号:</label>
-							<input type="text" class="styled-input" name="prescriptionNumber"/>
+							<label>药品编码:</label>
+							<input type="text" class="styled-input" placeholder="请输入药品编码" name="mdmCode"/>
 						</div>
 						<div class="customize-form-group">
-							<label>处方类型</label>
-							<select name="prescriptionType"  th:with="type=${@dict.getType('sys_select_prescription_ype')}" class="styled-input">
-								<option value="">全部</option>
-								<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"
-								></option>
-							</select>
+							<label>药品名:</label>
+							<input type="text" class="styled-input" placeholder="请输入药品名" name="productName"/>
 						</div>
+<!--						<div class="customize-form-group">-->
+<!--							<label>处方单号:</label>-->
+<!--							<input type="text" class="styled-input" name="prescriptionNumber"/>-->
+<!--						</div>-->
+<!--						<div class="customize-form-group">-->
+<!--							<label>处方类型</label>-->
+<!--							<select name="prescriptionType"  th:with="type=${@dict.getType('sys_select_prescription_ype')}" class="styled-input">-->
+<!--								<option value="">全部</option>-->
+<!--								<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"-->
+<!--								></option>-->
+<!--							</select>-->
+<!--						</div>-->
 
 						<div class="customize-form-group select-time">
-							<label>处方登记日期:</label>
-							<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="beginTime"/>
+							<label>销售日期:</label>
+							<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="sbeginTime"/>
 							<span>-</span>
-							<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="endTime"/>
+							<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="sendTime"/>
 						</div>
 						<div class="customize-form-group">
 							<label>订单状态</label>
@@ -104,7 +112,7 @@
 
 	function queryUserList() {
 		var options = {
-			url: prefix + "/list",
+			url: prefix + "/salesList",
 			viewUrl: prefix + "/viewInfo/{id}",
 			createUrl: prefix + "/add",
 			createUrl2: prefix + "/newRecipe",
@@ -130,20 +138,18 @@
 				checkbox: true
 			}, {field: "id",title: "ID",visible: false},
 				{ field: "mdmCode", title: "药品编码" },
-				{ field: "administrationMethod", title: "给药方式" },
-				{ field: "productName", title: "商品名称" },
-				{ field: "genericName", title: "通用名称" },
-				{ field: "specification", title: "规格" },
-				{ field: "dvalueDays", title: "剂量天数" },
 				{ field: "prescriptionNumber", title: "处方单号" },
-				{ field: "saleOrderNumber", title: "销售单号" },
+				{ field: "salesOrderNumber", title: "销售单号" },
 				{ field: "saleDate", title: "销售日期" },
 				{ field: "prescriptionIssueDate", title: "处方开具日期" },
 				{ field: "registrationDate", title: "处方登记日期" },
-				{ field: "hospital", title: "医院" },
-				{ field: "department", title: "科室" },
-				{ field: "prescribingDoctor", title: "处方医生" },
-				{ field: "attendingDoctor", title: "主管医生" },
+				{ field: "administrationMethod", title: "给药方式" },
+				{ field: "productName", title: "商品名称" },
+				{ field: "genericName", title: "通用名称" },
+				{ field: "specification", title: "规格" },
+				{ field: "drug_batch_number", title: "药品批号", visible: true },
+				{ field: "sales_storeName", title: "销售门店编码", visible: true },
+				{ field: "sales_storeCode", title: "销售门店名称", visible: true },
 				{ field: "patientName", title: "患者姓名" },
 				{ field: "gender", title: "性别", formatter: function(value, row, index) {
 						switch (value) {
@@ -155,20 +161,7 @@
 				},
 				{ field: "age", title: "年龄" },
 				{ field: "patientPhone", title: "患者手机号" },
-		{ field: "drug_batch_number", title: "药品批号", visible: true },
-		{ field: "sales_storeName", title: "销售门店编码", visible: true },
-		{ field: "sales_storeCode", title: "销售门店名称", visible: true },
 				{ field: "storeName", title: "建档门店", visible: true },
-				{ field: "registrant", title: "登记人" },
-				{ field: "reviewingName", title: "审核药师姓名" },
-				{ field: "prescriptionType", title: "处方类型", formatter: function(value, row, index) {
-						switch (value) {
-							case 1: return "电子处方";
-							case 2: return "纸质处方";
-							default: return "";
-						}
-					}
-				},
 				{ field: "status", title: "状态", formatter: function(value, row, index) {
 						switch (value) {
 							case 1: return "订单已完成";
@@ -185,32 +178,26 @@
 				},
 				{ field: "createdTime", title: "创建时间" },
 				{ field: "updatedTime", title: "最后更新时间", visible: false },
-				{ field: "prescriptionImageUrl", title: "处方图片URL", visible: false },
-				{ field: "invoiceImageUrl", title: "发票图片URL", visible: false },
-				{ field: "drugVarietyCount", title: "药品品种数", visible: false },
 				{ field: "drugQuantity", title: "处方取药数量" },
-				{ field: "invoiceCode", title: "发票编码", visible: false },
-				{ field: "drugsLinkId", title: "处方关联的处方购药药表ID", visible: false },
 				{ field: "reviewStatus", title: "处方审核状态", formatter: function(value, row, index) {
 						switch (value) {
 							case 0: return "审核不通过";
 							case 1: return "审核通过";
+							case 2: return "待审核";
 							default: return "待审核";
 						}
 					}
 				},
-				{ field: "source", title: "处方来源", visible: false },
 				{ field: "drugRoute", title: "用药途径", visible: false },
 				{ field: "storeId", title: "建档门店ID", visible: false },
-				{ field: "remarks", title: "备注", visible: false },
 				{
 				title: '操作',
 				align: 'center',
-				width: 165,
+				width: 175,
 				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> ');
+						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 ' + editFlag + '" 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('');

+ 147 - 87
health-admin/src/main/resources/templates/dtp/sfrw/SDtpYypzFollowUpSopAdd.html

@@ -3,7 +3,8 @@
 <head>
     <th:block th:include="include :: header('随访SOP新增')" />
     <th:block th:include="include :: datetimepicker-css" />
-
+    <th:block th:include="include :: select2-css" />
+    <th:block th:include="include :: layout-latest-css" />
 </head>
 <body>
 <div class="ui-layout-center">
@@ -27,30 +28,28 @@
                         </div>
             </form>
             <form id="form-syyp-durg">
-                    <div class="customize-form-group-row">
-                        <label class="control-label is-required">适用药品:</label>
-                        已选择2种药品 <button type="button"  onclick="selectUsersToParentCallBack2()" class="btn-primary">添加药品</button>
-                        <div class="form-horizontal">
-                            <p class="pull-right">
-                            <div class="customize-form-group select-time">
-                                <div class="panel-body">
-                                    <strong>药品信息</strong>
-                                    <div class="form-group" id="formGroup">
-                                        <div class="col-sm-12">
-                                            <div class="col-sm-11" id="carGroup">
-                                                <div id="iboxContainer">
-                                                    <ul class="list-group list-group-striped" id="inputList">
-                                                        <!-- 输入框将在这里动态添加 -->
-                                                    </ul>
-                                                </div>
-                                            </div>
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                            </p>
+                        <div class="ibox" id="data-ibox" style="overflow: auto;">
+                            <div class="ibox-title" style="width: 100%;">适用药品:已添加 <span id="drug-count">0</span> 个药品</div>
+                            <table class="fixed-layout-table table1" id="drugInfoTable">
+                                <thead>
+                                <tr>
+                                    <th>操作+<a type="button" class="btn btn-primary btn-sm" onclick="selectUsersToParentCallBack2()">添加药品</a></th>
+                                    <th>药品编码</th>
+                                    <th>药品名</th>
+                                    <th class="hidden-column">通用名</th>
+                                    <th>规格</th>
+                                    <th class="hidden-column">厂家简称</th>
+                                    <th class="hidden-column">给药方式</th>
+                                    <th class="hidden-column">随访品</th>
+                                    <th class="hidden-column">冷链品</th>
+                                    <th class="hidden-column">登记品</th>
+                                </tr>
+                                </thead>
+                                <tbody>
+                                <!-- 数据行将被插入到这里 -->
+                                </tbody>
+                            </table>
                         </div>
-                    </div>
              </form>
                 <form id="form-jdpz-nodes" >
                     <div class="customize-form-group-row">
@@ -81,10 +80,14 @@
 </div>
 <th:block th:include="include :: footer" />
 <th:block th:include="include :: datetimepicker-js" />
+<th:block th:include="include :: select2-js" />
+<th:block th:include="include :: bootstrap-table-fixed-columns-js" />
+<th:block th:include="include :: layout-latest-js" />
 </body>
 </html>
 <script>
     var prefix = ctx + "dtp/recipe";
+    var prefix_yppz= ctx + "yppz/drugConfig";
     var count = 0;
     let carNum=1;//选项卡id
     var index=0;
@@ -92,6 +95,17 @@
     var selectedOption = []; // 这里存储当前选中的选项
     var selectCount=0;
     var applicableDrug=[];
+    // 页面加载时初始化药品数量
+    $(document).ready(function() {
+        updateDrugCount(); // 初始化药品数量
+        // 绑定删除按钮点击事件
+        $(document).on('click', '.delete-drug-btn', function(event) {
+            event.preventDefault(); // 阻止默认行为
+            var productId = $(this).data('product-id');
+            deleteRow(productId);
+        });
+    });
+
     function submitHandler() {
         var businessBelonging=$("#businessBelonging").val();
         var templateName=$("#templateName").val();
@@ -207,8 +221,10 @@
     }
     function selectUsersToParentCallBack2(){
         var options = {
-            title: '药品信息',
-            url: prefix + "/drugInfo",
+            title: 'SOP随访药品配置',
+            width: 1000,
+            height: 600,
+            url: prefix_yppz + '/getAllProduct',
             callBack: doSubmit2
         };
         $.modal.openOptions(options);
@@ -322,13 +338,16 @@
             while (levelThreeSelect.firstChild) {
                 levelThreeSelect.removeChild(levelThreeSelect.firstChild);
             }
+
             // 根据二级选择加载三级选项
             if (selectedValue === '最近待执行随访距今天数' ||
                 selectedValue === '最近已完成随访距今天数' ||
                 selectedValue === '最近订单距今天数') {
+                debugger;
                 // 加载数值比较类型的三级选项
                 loadLevelThreeOptionsForNumericComparison();
             } else {
+                debugger;
                 // 加载字符串比较类型的三级选项
                 loadLevelThreeOptionsForStringComparison();
             }
@@ -461,26 +480,29 @@
         function loadLevelThreeOptionsForStringComparison() {
             var options = [
                 '请选择三级分类',
-                '--等于--',
-                '--不等于--'
+                '等于',
+                '不等于'
             ];
-
+            debugger;
             options.forEach((option, index) => {
                 var newOption = document.createElement('option');
                 if (newOption === '请选择二级分类') {
                     newOption.setAttribute('value', '');
                     newOption.disabled = true; // 设置为禁用状态
                     newOption.selected = true; // 设置为预选中状态
+                }else{
+                    if(option==='等于'){
+                        newOption.setAttribute('value','--等于--');
+                    }else if(option==='不等于'){
+                        newOption.setAttribute('value','--不等于--');
+                    }else{
+                        newOption.setAttribute('value',option);
+                    }
+                    newOption.value=option;
+                    newOption.textContent =option;
                 }
-                if (newOption === '--等于--') {
-                    newOption.setAttribute('value', '等于');
-                    newOption.value='等于';
-                    newOption.textContent = '等于';
-                } if (newOption === '--不等于--') {
-                    newOption.setAttribute('value', '不等于');
-                    newOption.value='不等于';
-                    newOption.textContent = '不等于';
-                }
+
+
                 levelThreeSelect.appendChild(newOption);
             });
 
@@ -870,60 +892,97 @@
 // 主动重新绑定事件
         bindTabEvents(count);
     }
-    function doSubmit2(index, layero){
-        var rows = layero.find("iframe")[0].contentWindow.selectColumns2();
+    function doSubmit2(index, layero) {
+        var rows = layero.find("iframe")[0].contentWindow.selectTableObject();
         if (rows.length == 0) {
             $.modal.alertWarning("请至少选择一条记录");
             return;
         }
-        rows.forEach(function(item, index) {
-            // 生成 ibox 容器
-            var ibox = '<div class="ibox" id="ibox-' + item.productId + '">' +
-                '<div class="ibox-title">' +
-                '<h5>' + item.mdmCode + ' - ' + item.productName + '</h5>' +
-                '<input name="isFlipItem" placeholder="是否为上翻品" id="isFlipItem-' + item.isFlipItem + '"  class="styled-input3" type="hidden" value="' + item.isFlipItem + '">' +
-                '<input name="productId" placeholder="商品id" id="productId-' + item.productId + '"  class="styled-input3" type="hidden" value="' + item.productId + '">' +
-                '<input name="genericName" placeholder="商品通用名" id="genericName-' + item.genericName + '"  class="styled-input3" type="hidden" value="' + item.genericName + '">' +
-                '<input name="productName" placeholder="商品名" id="productName-' + item.productName + '"  class="styled-input3" type="hidden" value="' + item.productName + '">' +
-                '<input name="mdmCode" placeholder="MD编码" id="mdmCode-' + item.mdmCode + '"  class="styled-input3" type="hidden" value="' + item.mdmCode + '">' +
-                '<input name="specification" placeholder="规格" id="specification-' + item.specification + '"  class="styled-input3" type="hidden" value="' + item.specification + '">' +
-                '</div>' +
-                '<div class="ibox-content">' +
-                '<table class="table table-bordered">' +
-                '<tbody>' +
-                '<tr>' +
-                '<td>MD编码:' + item.mdmCode + '</td>' +
-                '<td>商品名:' + item.productName + '</td>' +
-                '<td>通用名:' + item.genericName + '</td>' +
-                '<td>厂家:没有数据</td>' +
-                '<td><button onclick="deleteRow(\'' + item.productId + '\')" class="btn btn-danger">删除</button></td>' +
-                /*'<td>规格:' + item.specification[0] + '</td>' +*/
-                '</tr>' +
-                '</tbody>' +
-                '</table>' +
-                '</div>' +
-                '</div>';
+        var tableBody = $('#drugInfoTable tbody');
 
-            // 添加到容器
-            $('#iboxContainer').append(ibox);
-            // 提取隐藏输入字段的值并推送到 applicableDrug 数组
-            applicableDrug.push({
-                mdmCode: item.mdmCode,
-                productName: item.productName,
-                specification: item.specification,
+        rows.forEach(function(item) {
+            // 动态选择所有列并映射到更具描述性的名称
+            var columnsData = {
                 productId: item.productId,
+                productCode: item.productCode,
+                productName: item.productName,
                 genericName: item.genericName,
-                isFlipItem: item.isFlipItem
-            });
+                specification: item.specification,
+                packaging: item.packaging,
+                manufacturer: item.manufacturer,
+                manufacturerAbbreviation: item.manufacturerAbbreviation,
+                productStatus: item.productStatus,
+                dtpFlag: item.dtpFlag,
+                isInsuranceDrug: item.isInsuranceDrug,
+                administrationMethod: item.administrationMethod,
+                registeredItem: item.registeredItem,
+                followUpItem: item.followUpItem,
+                coldChainItem: item.coldChainItem,
+                flowItem: item.flowItem,
+                charityAidItem: item.charityAidItem,
+
+                dosageMax: item.dosageMax,
+                unitMax: item.unitMax,
+                dosageMin: item.dosageMin,
+                unitMin: item.unitMin,
+                dosageNormal: item.dosageNormal,
+                unitNormal: item.unitNormal,
+                packingValue: item.packingValue,
+                packingUnit: item.packingUnit,
+
+                dvalueDays: item.dvalueDays,
+            };
+
+            // 检查是否已经存在该药品
+            if (!isProductExist(columnsData.productId)) {
+                // 向表格中添加一行
+                var row = `
+               <tr data-product-id="${columnsData.productId}">
+                    <td><button class="btn btn-danger delete-drug-btn" data-product-id="${columnsData.productId}">删除重选择药品</button></td>
+                    <td>${columnsData.productCode}</td>
+                    <td>${columnsData.productName}</td>
+                    <td class="hidden-column">${columnsData.genericName}</td>
+                    <td>${columnsData.specification}</td>
+                    <td class="hidden-column">${columnsData.manufacturerAbbreviation}</td>
+                    <td class="hidden-column">${columnsData.administrationMethod}</td>
+                    <td class="hidden-column">${columnsData.followUpItem === 1 ? '是' : '否'}</td>
+                    <td class="hidden-column">${columnsData.coldChainItem === 1 ? '是' : '否'}</td>
+                    <td class="hidden-column">${columnsData.registeredItem === 1 ? '是' : '否'}</td>
+
+                </tr>
+            `;
+                tableBody.append(row);
+                updateDrugCount(); // 更新药品数量
+            } else {
+                $.modal.alertWarning(`药品 [ ${columnsData.productName} ] 已经添加了`);
+            }
         });
-        console.log("applicableDrug"+applicableDrug)
+
         $.modal.close(index);
     }
     function deleteRow(productId) {
-        // 删除 ibox 容器
-        $('#ibox-' + productId).remove();
-        // 更新 productId 显示
-        $('#productId').html('');
+        $.modal.confirm("确认删除该药品吗?", function() {
+            // 使用 attr 而不是直接拼接字符串,以防止潜在的XSS攻击
+            var selector = `[data-product-id="${productId}"]`;
+            $(selector).remove();
+            updateDrugCount(); // 更新药品数量
+        });
+    }
+    function isProductExist(productId) {
+        // 检查表格中是否已经存在该药品
+        return $('#drugInfoTable tbody tr[data-product-id="' + productId + '"]').length > 0;
+    }
+
+    // 更新所有行的序号
+    function updateSerialNumbers() {
+        $('#drugInfoTable tbody tr').each(function(index) {
+            $(this).find('td:first-child').text(index + 1); // 序号从1开始
+        });
+    }
+    // 更新药品数量显示
+    function updateDrugCount() {
+        var count = $('#drugInfoTable tbody tr').length;
+        $('#drug-count').text(count);
     }
     function deleteNode(id) {
         if(count===0){
@@ -991,17 +1050,18 @@
         margin-right: 10px;
     }
 
-    .ibox {
-        width: 700px;
-        margin-bottom: 20px;
-        border: 1px solid #e7eaec;
-        border-radius: 4px;
-    }
+    /*.ibox {*/
+    /*    width: 1121px;*/
+    /*    margin-bottom: 20px;*/
+    /*    border: 1px solid #e7eaec;*/
+    /*    border-radius: 4px;*/
+    /*}*/
     .ibox-title {
         background-color: #f3f3f4;
         border-bottom: 1px solid #e7eaec;
         padding: 10px 15px;
         font-size: 16px;
+        width: 1540px;
     }
     .ibox-content {
         padding: 15px;

+ 9 - 12
health-admin/src/main/resources/templates/dtp/sfrw/SDtpYypzFollowUpSopList.html

@@ -23,12 +23,11 @@
                 <form id="SDtpYypzFollowUpSop-form" class="customize-search-form">
        <div class="customize-form-group-container">
                         <div class="customize-form-group">
-                            <label>业务归属:</label>
-                                <select name="businessBelonging"  class="styled-input">
-                                    <option value="">全部</option>
-                                    <option value="常规回访">常规回访</option>
-                                    <option value="脱落召回">脱落召回</option>
-                                </select>
+                            <label class="control-label is-required">&nbsp;业务归属:&nbsp;&nbsp;</label>
+                            <select name="businessBelonging" id="businessBelonging" class="styled-input input-field"   th:with="type=${@dict.getType('sys_select_dtp_ywgs')}">
+                                <option value="">全部</option>
+                                <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictLabel}"></option>
+                            </select>
                         </div>
                         <div class="customize-form-group">
                             <label>药品:</label>
@@ -49,12 +48,10 @@
                         </div>
                         <div class="customize-form-group">
                             <label>状态:</label>
-                                <select name="status"  class="styled-input">
-                                    <option value="">全部</option>
-                                    <option value="已启用">已启用</option>
-                                    <option value="已停用">已停用</option>
-                                    <option value="已创建">已创建</option>
-                                </select>
+                            <select name="status" id="status" class="styled-input input-field"   th:with="type=${@dict.getType('sys_select_dtp_sfsopzt')}">
+                                <option value="">全部</option>
+                                <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictLabel}"></option>
+                            </select>
                         </div>
                        <div class="customize-form-group">
                            <label>模版ID:</label>

+ 37 - 30
health-admin/src/main/resources/templates/gxhpz/allProduct.html

@@ -572,7 +572,7 @@
 	}
 
 	function selectTableObject() {
-		// 动态选择所有列
+		// 动态选择所有列并映射到更具描述性的名称
 		var columnsData = {
 			id: $.table.selectColumns('id'),
 			product_code: $.table.selectColumns('product_code'),
@@ -603,37 +603,44 @@
 		};
 
 		// 构建返回的对象数组
-		var column = [{
-			productId: columnsData.id,
-			productCode: columnsData.product_code,
-			productName: columnsData.product_name,
-			genericName: columnsData.generic_name,
-			specification: columnsData.specification,
-			packaging: columnsData.packaging,
-			manufacturer: columnsData.manufacturer,
-			manufacturerAbbreviation: columnsData.manufacturer_abbreviation,
-			productStatus: columnsData.product_status,
-			dtpFlag: columnsData.dtp_flag,
-			isInsuranceDrug: columnsData.is_insurance_drug,
-			administrationMethod: columnsData.drug_delivery_way,
-			registeredItem: columnsData.registered_item,
-			followUpItem: columnsData.follow_up_item,
-			coldChainItem: columnsData.cold_chain_item,
-			flowItem: columnsData.flow_item,
-			charityAidItem: columnsData.charity_aid_item,
+		var selectedRows = [];
 
-			dosageMax: columnsData.dosage_max,
-			unitMax: columnsData.unit_max,
-			dosageMin: columnsData.dosage_min,
-			unitMin: columnsData.unit_min,
-			dosageNormal: columnsData.dosage_normal,
-			unitNormal: columnsData.unit_normal,
-			packingValue: columnsData.packing_value,
-			packingUnit: columnsData.packing_unit,
-			// Add more mappings as needed
-		}];
+		// 假设 $.table.selectColumns 返回的是一个数组,我们检查每个字段是否为空或未定义来判断是否有选择
+		for (var i = 0; i < columnsData.id.length; i++) {
+			if (columnsData.id[i]) { // 如果 id 存在,则认为该行被选中
+				var row = {
+					productId: columnsData.id[i],
+					productCode: columnsData.product_code[i],
+					productName: columnsData.product_name[i],
+					genericName: columnsData.generic_name[i],
+					specification: columnsData.specification[i],
+					packaging: columnsData.packaging[i],
+					manufacturer: columnsData.manufacturer[i],
+					manufacturerAbbreviation: columnsData.manufacturer_abbreviation[i],
+					productStatus: columnsData.product_status[i],
+					dtpFlag: columnsData.dtp_flag[i],
+					isInsuranceDrug: columnsData.is_insurance_drug[i],
+					administrationMethod: columnsData.drug_delivery_way[i],
+					registeredItem: columnsData.registered_item[i],
+					followUpItem: columnsData.follow_up_item[i],
+					coldChainItem: columnsData.cold_chain_item[i],
+					flowItem: columnsData.flow_item[i],
+					charityAidItem: columnsData.charity_aid_item[i],
 
-		return column;
+					dosageMax: columnsData.dosage_max[i],
+					unitMax: columnsData.unit_max[i],
+					dosageMin: columnsData.dosage_min[i],
+					unitMin: columnsData.unit_min[i],
+					dosageNormal: columnsData.dosage_normal[i],
+					unitNormal: columnsData.unit_normal[i],
+					packingValue: columnsData.packing_value[i],
+					packingUnit: columnsData.packing_unit[i],
+				};
+				selectedRows.push(row);
+			}
+		}
+
+		return selectedRows;
 	}
 	/*回调返回所有的选中行数据*/
 	function selectColumns2() {

+ 173 - 25
health-system/src/main/java/com/bzd/system/service/DTPService.java

@@ -39,10 +39,11 @@ public class DTPService {
      * @throws Exception
      */
     public List<PageData> findForList(final PageData pd) throws Exception {
+
         return (List<PageData>) daoSupport.findForList("DTPCFDJMapper.selectPrescriptionRegistration", pd);
     }
     /**
-     * 处方列表
+     * 处方/药品列表
      *
      * @param pd
      * @return
@@ -54,7 +55,7 @@ public class DTPService {
         if(StringUtils.isNotNull(pdObj)){
             pd3.put("recipe",pdObj);
             PageData pd2=new PageData();
-            pd2.put("prescriptionNumber",pdObj.get("prescriptionNumber"));
+            pd2.put("drugsLinkId",pdObj.get("drugsLinkId"));
             List<PageData> pdObjList= (List<PageData>) daoSupport.findForList("DTPCFDJMapper.selectListRecordByPrescriptionNumber", pd2);
             if(pdObjList.size()>0){
                 pd3.put("recipeList", pdObjList);
@@ -69,7 +70,7 @@ public class DTPService {
         if(StringUtils.isNotNull(pdObj)){
             pd3.put("recipe",pdObj);
             PageData pd2=new PageData();
-            pd2.put("prescriptionNumber",pdObj.get("prescriptionNumber"));
+            pd2.put("drugsLinkId",pdObj.get("drugsLinkId"));
             List<PageData> pdObjList= (List<PageData>) daoSupport.findForList("DTPCFDJMapper.selectListRecordByPrescriptionNumber", pd2);
             if(pdObjList.size()>0){
                 pd3.put("recipeList", pdObjList);
@@ -77,6 +78,21 @@ public class DTPService {
         }
         return pd3;
     }
+    public PageData  getLastRecipeInfoSales(final PageData pd) throws Exception {
+        PageData pd3= new PageData();
+        PageData pdObj= (PageData) daoSupport.findForObject("DTPCFDJMapper.selectOneById", pd);
+        if(StringUtils.isNotNull(pdObj)){
+            pd3.put("recipe",pdObj);
+            PageData pd2=new PageData();
+            pd2.put("drugsLinkId",pdObj.get("drugsLinkId"));
+            List<PageData> pdObjList= (List<PageData>) daoSupport.findForList("DTPCFDJMapper.selectListRecordByPrescriptionNumber", pd2);
+            if(pdObjList.size()>0){
+                pd3.put("recipeList", pdObjList);
+            }
+        }
+        return pd3;
+    }
+
     /**
      * 处方信息
      *
@@ -92,7 +108,92 @@ public class DTPService {
         return daoSupport.update("DTPMapper.BangdingRecipe", pd);
     }
     /**
-     * 处方登记 添加
+     * 先销售后登记的订单数据录入
+     *
+     * @param pd
+     * @return
+     * @throws Exception
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public PageData saveSales(final PageData pd) throws Exception {
+        PageData returnPageData = new PageData();
+        Object drugList = pd.get("drugData");//获取药品信息列表
+        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.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("createTime", DateUtils.getTime());
+            pd.put("drugQuantity", drugQuantity);
+            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
      * @return
@@ -107,7 +208,7 @@ public class DTPService {
         if (StringUtils.isEmpty(prescriptionNumber.toString())) {
             pd.put("prescriptionNumber", IdUtils.get10randomNumber());//处方表 处方单号 如果没有就自动生成
             if( StringUtils.isEmpty(prescriptionImg.toString())){
-                pd.put("status",5);//待上传处方
+                pd.put("status",4);//待上传处方
             }
             if( StringUtils.isNotEmpty(prescriptionImg)){
                 pd.put("status",6);//待绑定患者6
@@ -237,14 +338,12 @@ public class DTPService {
     @Transactional(rollbackFor = Exception.class)
     public PageData saveCFDJ(final PageData pd) throws Exception {
         PageData returnPageData = new PageData();
-
         Object drugList = pd.get("drugData");//获取药品信息列表
-        Integer Id = IdUtils.get10randomNumber();//生成处方单号
+        Integer drugsLinkId = IdUtils.get10randomNumber();//生成处方与药品关联的编号
+        Integer prescriptionNumber = IdUtils.get10randomNumber();//生成处方单号
         List<PageData> addList = new ArrayList<>();
         int resultDrug=0;
         int drugQuantity=0;
-
-
             try {
                 if (StringUtils.isNotNull(drugList)) {
                     // 将 JSON 字符串转换为 List<Map<String, Object>>
@@ -279,11 +378,11 @@ public class DTPService {
                                 pageData.put("dvalueDays", 0);
                             }
 
-
                             // 添加其他可能需要的字段(如果有的话)
                             pageData.put("medicationRoute", lxr.get("medicationRoute"));
                             //pageData.put("sales", lxr.get("sales"));
-                            pageData.put("prescriptionNumber", Id);
+                            pageData.put("prescriptionNumber", prescriptionNumber);
+                            pageData.put("drugsLinkId", drugsLinkId);
                             pageData.put("prescriptionDate", DateUtils.getTime());
                             pageData.put("hospital", lxr.get("hospital"));
                             pageData.put("prescribingDoctor", lxr.get("prescribingDoctor"));
@@ -306,20 +405,20 @@ public class DTPService {
                     }
                 }
 
-
                 // 从表单数据填充
-                pd.put("prescriptionNumber", Id); // 处方单表id主键,Id 应该是某个方式生成的唯一标识符
+                pd.put("drugsLinkId", drugsLinkId); // 处方与药品关联的唯一编码
                 pd.put("storeId", getSysUser().getDeptId());
                 pd.put("storeName", getSysUser().getDeptId()); // 假设 getDeptName() 可以获取部门名称
                 pd.put("createdBy", getSysUser().getUserId());
                 pd.put("createTime", DateUtils.getTime());
-
+                pd.put("status", 5);//5待订单销售
                 pd.put("registrationDate", DateUtils.getTime());
                 pd.put("drugQuantity", drugQuantity);
                 int result = daoSupport.save("DTPCFDJMapper.insertPrescriptionRegistration", pd);
                 if(resultDrug>0 && result>0){
                     returnPageData.put("code", 200);
-                    returnPageData.put("prescriptionNumber", Id);
+                    returnPageData.put("prescriptionNumber", prescriptionNumber);
+                    returnPageData.put("drugsLinkId", drugsLinkId);
                     return returnPageData;
                 }else {
                     returnPageData.put("msg", "天添加败");
@@ -540,14 +639,39 @@ public class DTPService {
     }
     @Transactional(rollbackFor = Exception.class)
     public int updateCFDJ(final PageData pd) throws Exception {
+        PageData pd3=new PageData();
+        try {
+            pd3.put("id",pd.get("id"));
+            PageData pd1= (PageData) daoSupport.findForObject("DTPCFDJMapper.selectOneById", pd3);
+        String status = (String) pd.get("status");
+        boolean flag = false; // 标志变量
+        Integer onlyId=null;
+        String prescriptionImageUrl = (String) pd.get("prescriptionImageUrl");
+
+        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待确认信息
+                status="2";//待上传处方
+            }else {
+                status="3";//待确认信息
+            }
+        }
         Object drugList = pd.get("drugData");//获取药品信息列表
-        Integer Id = IdUtils.get10randomNumber();//生成处方单号
+
         List<PageData> addList = new ArrayList<>();
         int resultDrug=0;
         int drugQuantity=0;
 
         if (StringUtils.isNotNull(drugList)) {
-            try {
+
                 // 将 JSON 字符串转换为 List<Map<String, Object>>
                 ObjectMapper objectMapper = new ObjectMapper();
                 List<Map<String, Object>> rowsdrugList = objectMapper.readValue(drugList.toString(), List.class);
@@ -581,7 +705,20 @@ public class DTPService {
                             pageData.put("dvalueDays", 0);
                         }
                         pageData.put("medicationRoute", lxr.get("medicationRoute"));
-                        pageData.put("prescriptionNumber", pd.get("prescriptionNumber"));
+
+                        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"));//销售门店名称
+                                pageData.put("drug_batch_number", pd1.get("drug_batch_number"));//药品批号
+                            }
+                        }else {
+                            //pageData.put("salesOrderNumber", pd.get("salesOrderNumber"));
+                            pageData.put("prescriptionNumber", pd.get("prescriptionNumber"));
+                        }
+                        pageData.put("drugsLinkId", pd.get("drugsLinkId"));
                         pageData.put("prescriptionDate", DateUtils.getTime());
                         pageData.put("hospital", lxr.get("hospital"));
                         pageData.put("prescribingDoctor", lxr.get("prescribingDoctor"));
@@ -598,25 +735,36 @@ public class DTPService {
                 pd.put("storeName", getSysUser().getDeptId()); // 假设 getDeptName() 可以获取部门名称
                 pd.put("createdBy", getSysUser().getUserId());
                 pd.put("createTime", DateUtils.getTime());
-
-                pd.put("registrationDate", DateUtils.getTime());
+                pd.put("status",Integer.parseInt(status));
+                if(flag){
+                    pd.put("prescriptionNumber", onlyId);
+                    pd.put("registrationDate", DateUtils.getTime());
+                    if(StringUtils.isNotNull(pd1)){
+
+                        pd.put("saleDate", pd1.get("saleDate"));//销售日期
+                        pd.put("ales_storeName", pd1.get("ales_storeName"));//销售门店名称
+                        pd.put("sales_storeCode", pd1.get("sales_storeCode"));//销售门店编码
+                        pd.put("drug_batch_number", pd1.get("drug_batch_number"));//药品批号
+                    }
+                }
                 pd.put("drugQuantity", drugQuantity);
                 // 患者信息
                 if (StringUtils.isNotNull(pd.get("gender"))){
                     String gender = pd.get("gender").toString();
                     if (gender.equals("男")){
-                        pd.put("gender", "1");
-                    }else if(gender.equals("女")){
                         pd.put("gender", "0");
+                    }else if(gender.equals("女")){
+                        pd.put("gender", "1");
                     }else {
                         pd.put("gender", "3");
                     }
                 }
                 return daoSupport.save("DTPCFDJMapper.updatePrescriptionRegistration", pd);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
 
+
+        }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
         return 0;
     }

+ 19 - 5
health-system/src/main/resources/mapper/mdyy/DTPCFDJMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="DTPCFDJMapper">
 
-    <!-- 查询 -->
+    <!-- 查询 先登记后销售的处方信息-->
     <select id="selectPrescriptionRegistration" parameterType="pd" resultType="pd">
         SELECT
         sddpr.mdmCode,
@@ -12,12 +12,15 @@
         sddpr.productName,
         sddpr.genericName,
         sddpr.specification,
-        sddpr.prescriptionNumber,
+        sddpr.pharmacyName,
+        sddpr.prescriptionNumber as prescriptionNumbery,
+        sddpr.drugsLinkId as drugsLinkIdy,
+        sddpr.salesOrderNumber as salesOrderNumbery,
         sddpr.dvalueDays,
         sdpr.*
         FROM
         s_dtp_prescription_registration sdpr
-        LEFT JOIN s_dtp_drug_purchase_record sddpr ON sddpr.prescriptionNumber = sdpr.prescriptionNumber
+        LEFT JOIN s_dtp_drug_purchase_record sddpr ON sddpr.drugsLinkId = sdpr.drugsLinkId
         WHERE 1=1
         <if test="mdmCode != null and mdmCode != ''">
             and sddpr.mdmCode = #{mdmCode}
@@ -163,6 +166,15 @@
         <if test="beginTime != null and beginTime != '' and endTime != null and endTime != ''">
             and sdpr.registrationDate between #{beginTime} and #{endTime}
         </if>
+        <if test="sbeginTime != null and sbeginTime != '' and sendTime != null and sendTime != ''">
+            and sdpr.saleDate between #{sbeginTime} and #{sendTime}
+        </if>
+        <if test="sales_is != null and sales_is != ''">
+            and sdpr.status   &lt;&gt;  #{sales_is}
+        </if>
+        <if test="sales_yes != null and sales_yes != ''">
+            and sdpr.status =#{sales_yes}
+        </if>
     </select>
 
     <!-- 根据patientId查询单条记录 -->
@@ -191,7 +203,7 @@
         FROM
             s_dtp_drug_purchase_record sddpr
             left join s_gxhpz_product_dtpinfo dtp on dtp.product_code = sddpr.mdmCode
-            where sddpr.prescriptionNumber=#{prescriptionNumber}
+            where sddpr.drugsLinkId=#{drugsLinkId}
     </select>
     <!-- 根据ID查询单条记录 -->
     <select id="selectOneById" parameterType="pd" resultType="pd">
@@ -645,7 +657,7 @@
     </delete>
 
     <insert id="batchDeleteDrugPurchaseRecord" parameterType="pd">
-        delete from s_dtp_drug_purchase_record where prescriptionNumber = #{prescriptionNumber}
+        delete from s_dtp_drug_purchase_record where drugsLinkId = #{drugsLinkId}
     </insert>
     <!-- 更新记录 -->
     <update id="Review" parameterType="pd">
@@ -695,6 +707,7 @@
             <if test="saleDate != null">saleDate,</if>
             <if test="pharmacyName != null or pharmacyName != ''">pharmacyName,</if>
             <if test="storeId != null">storeId,</if>
+            <if test="drugsLinkId != null">drugsLinkId,</if>
             <if test="createdBy != null or createdBy != ''">createdBy,</if>
             <if test="createdTime != null">createdTime,</if>
             <if test="updatedBy != null or updatedBy != ''">updatedBy,</if>
@@ -730,6 +743,7 @@
             <if test="saleDate != null">#{saleDate},</if>
             <if test="pharmacyName != null or pharmacyName != ''">#{pharmacyName},</if>
             <if test="storeId != null">#{storeId},</if>
+            <if test="drugsLinkId != null">#{drugsLinkId},</if>
             <if test="createdBy != null or createdBy != ''">#{createdBy},</if>
             <if test="createdTime != null">#{createdTime},</if>
             <if test="updatedBy != null or updatedBy != ''">#{updatedBy},</if>