| 
					
				 | 
			
			
				@@ -1,5 +1,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package thyyxxk.webserver.service.inpatient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.hutool.extra.spring.SpringUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.dynamic.datasource.annotation.DS; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -59,6 +60,10 @@ public class XiangMuLuRuService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.siSettleApplyDao = siSettleApplyDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private XiangMuLuRuService getThis() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return SpringUtil.getBean(this.getClass()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 获取患者费用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 费用 类型  1 - 医嘱  2 - 项目费用  3 - 医技 4 - 全部  5 -药品费用 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -189,9 +194,9 @@ public class XiangMuLuRuService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,中药无法退费。", item.getDetailSn())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 数据库有个 触发器 如果带了医嘱号且有篆刻那么这里就需要改成 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            if (BigUtils.bigDaYu(item.getOrderNo(), 10)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                item.setOrderNo(new BigDecimal(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (BigUtils.bigDaYu(item.getOrderNo(), 10)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                item.setNewOrderNo(new BigDecimal(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 00 是项目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if ("00".equals(item.getSerial())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 maxDetailSn = setRefund(project, tuiFeiList, updateRefundFlag, maxDetailSn, item); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -234,14 +239,14 @@ public class XiangMuLuRuService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ZyActpatient patientInfo = publicServer.huoQuHuanZheXinXi(param.getInpatientNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 药品单号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Integer pageNo = publicServer.getTheDrugListNo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 退药单汇总 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            dao.drugReturnForm(pageNo, userInfo.getDeptCode(), TokenUtil.getTokenUserId(), param.getGroupNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            // 药品单号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            Integer pageNo = publicServer.getTheDrugListNo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            // 退药单汇总 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            dao.drugReturnForm(pageNo, userInfo.getDeptCode(), TokenUtil.getTokenUserId(), param.getGroupNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 退药明细 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             dao.detailsOfDrugReturnForm(drug, patientInfo.getInpatientNo(), patientInfo.getAdmissTimes(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     patientInfo.getName(), patientInfo.getBedNo(), userInfo.getDeptCode(), infantFlag, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    param.getGroupNo(), TokenUtil.getTokenUserId(), pageNo, ledgerSn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    param.getGroupNo(), TokenUtil.getTokenUserId(), 0, ledgerSn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 药品的退药 标准 为 -2 申请退药 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             dao.genXinZhenShuTuiFeiLiuShui(param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, updateDrugLabel, -2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             log.info("项目录入==》药品退费,操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(drug, DateUtil.DEFAULT_PATTERN)); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -863,17 +868,6 @@ public class XiangMuLuRuService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public ResultVo<Map<String, List<DrugReturnForm>>> drugRefundForm(String groupNo, String patNo, Integer times, String refundTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<String, List<DrugReturnForm>> drugPageNoGy = dao.queryTheDrugReturnForm(groupNo, patNo, times, refundTime).stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .collect(Collectors.groupingBy(DrugReturnForm::getPageNoTy)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (drugPageNoGy.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "没有护士退药单。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return ResultVoUtil.success(drugPageNoGy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public ResultVo<String> rejectNotGeneratedMedicationList(String patNo, Integer times) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log.info("拒绝生成的药单 ==> 住院号:{},住院次数:{},操作人:{}", patNo, times, TokenUtil.getTokenUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date disdate; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -888,5 +882,57 @@ public class XiangMuLuRuService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public ResultVo<List<DrugReturnForm>> getNoMedicineReturnOrderGenerated(String startDate, String endDate, String groupNo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserInfo us = redisLikeService.getUserInfoByToken(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return ResultVoUtil.success(groupingValues(dao.selectNoMedicineReturnOrderGenerated(startDate, endDate, us.getDeptCode(), groupNo))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public List<DrugReturnForm> groupingValues(List<DrugReturnForm> list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ListUtil.isBlank(list)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, DrugReturnForm> map = new HashMap<>(list.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        list.forEach(item -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (map.containsKey(item.getChargeCode())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                DrugReturnForm temp = map.get(item.getChargeCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                temp.setAmount(temp.getAmount().add(item.getAmount())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                temp.setRetprice(temp.getRetprice().add(item.getRetprice())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                map.put(item.getChargeCode(), item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return new ArrayList<>(map.values()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 生成药单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param startDate 开始时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param endDate   结束时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param groupNo   药房 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 返回提示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public ResultVo<Integer> generateMedicationList(String startDate, String endDate, String groupNo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserInfo us = redisLikeService.getUserInfoByToken(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Integer pageNo = publicServer.getTheDrugListNo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getThis().generateMedicationListFunc(startDate, endDate, groupNo, pageNo, us.getDeptCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "药单生成成功。", pageNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void generateMedicationListFunc(String startDate, String endDate, String groupNo, Integer pageNo, String dept) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dao.drugReturnForm(pageNo, dept, TokenUtil.getTokenUserId(), groupNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dao.generateMedicationList(startDate, endDate, dept, groupNo, pageNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public ResultVo<List<DrugReturnForm>> getPrescription(String startDate, String endDate) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserInfo us = redisLikeService.getUserInfoByToken(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return ResultVoUtil.success(dao.getPrescription(startDate, endDate, us.getDeptCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public ResultVo<List<DrugReturnForm>> getAPrescriptionByPageNo(Integer pageNo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return ResultVoUtil.success(groupingValues(dao.getAPrescriptionByPageNo(pageNo))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |