| 
					
				 | 
			
			
				@@ -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);//生成定时任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 |