|  | @@ -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)));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |