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