kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ConsumptionRecordMapper.java
@@ -37,4 +37,10 @@ * @return */ List<ConsumptionRecord> findList(@Param("p") Map<String, Object> params); /** * 查询有效预扣费 * @param DetailList 有效的套餐 * @return */ List<ConsumptionRecord> findDetailList(List<Long> DetailList); } kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java
@@ -115,7 +115,8 @@ //2.没有扣费,检查是否已经预扣费 if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { //3.没有预扣,查询余额 if (VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId())) { Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { //4.余额充足 获取要扣的套餐 写预扣费记录 if (beforeConsumption(consumptionRequest)) { //预扣费成功 @@ -128,9 +129,9 @@ bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; } } else { //余额不足 //余额不足 或获取异常 isSuccess = false; reMsg = "余额不足或获取失败!"; reMsg = vateMap.get("vateMsg").toString(); bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } } else { @@ -178,7 +179,8 @@ //2.没有扣费,检查是否已经预扣费 if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { //2.1.没有预扣,查询余额 if (VateUserNowProduct(consumptionRequest.getConsumptionCount(),hospitalId,consumptionRequest.getDepartmentId())) { Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),hospitalId,consumptionRequest.getDepartmentId()); if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { //2.2.余额充足 获取要扣的套餐 写预扣费记录 if (beforeConsumption(consumptionRequest)) { //预扣费成功 @@ -193,7 +195,7 @@ } else { //余额不足 isSuccess = false; reMsg = "余额不足或获取失败!"; reMsg = vateMap.get("vateMsg").toString(); bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); } @@ -379,7 +381,8 @@ //2.没有扣费,检查是否已经预扣费 if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { //3.没有预扣,查询余额 if (VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId())) { Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { //4.余额充足 获取要扣的套餐 写预扣费记录 if (!beforeConsumption(consumptionRequest)) { //预扣费执行失败 @@ -394,7 +397,7 @@ } } else { //余额不足 reMsg = "余额不足或获取失败!"; reMsg = vateMap.get("vateMsg").toString(); bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); } @@ -563,24 +566,32 @@ * @param consumptionCount 要扣的数量 * @return */ private Boolean VateUserNowProduct(int consumptionCount,Long hospitalId,Long departmentId) { private Map<String,Object> VateUserNowProduct(int consumptionCount,Long hospitalId,Long departmentId) { Map<String,Object> returnMap=new HashMap<>(); ResultBody biUserPro = productOrderDetailService.biUserNowProduct(hospitalId, departmentId); if (biUserPro.getCode() == 0) { if (StringUtils.isNotBlank(biUserPro.getData().toString())) { //余额 int userAICount = Integer.parseInt(biUserPro.getData().toString()); if (userAICount >= consumptionCount) { return true; returnMap.put("vateRe",true); returnMap.put("vateMsg","余额足够!"); } else { returnMap.put("vateRe",false); returnMap.put("vateMsg","余额不足!"); logger.info("医院id:【{}】余额不足!", hospitalId); } } else { returnMap.put("vateRe",false); returnMap.put("vateMsg","余额获取异常,data为空!"); logger.error("医院id:【{}】余额获取异常!", hospitalId); } } else { returnMap.put("vateRe",false); returnMap.put("vateMsg","余额获取异常,Code非0!"); logger.info("医院id:【{}】余额获取异常,返回非0!", hospitalId); } return false; return returnMap; } /** kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
@@ -2,7 +2,6 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.constant.ConsumptionConstant; import com.kidgrow.common.model.*; import com.kidgrow.common.service.impl.SuperServiceImpl; import com.kidgrow.common.utils.DateUtils; @@ -315,18 +314,22 @@ int depCount = productOrderJoinDetailsListDep.stream().collect(Collectors.summingInt(ProductOrderJoinDetail::getAilightCount)); //可用的总量 userAICount = shareCount + depCount; //计算预扣费的总量 Map<String, Object> selectMap = new HashMap<>(); selectMap.put("recordType", ConsumptionConstant.BEFORE_DEDUCTION); List<ConsumptionRecord> consumptionRecordList = consumptionRecordMapper.findList(selectMap);; if (consumptionRecordList.size() > 0) { //共享套餐里面的detailid List<Long> shareDetailId = productOrderJoinDetailListShare.stream().map(m -> m.getId()).collect(Collectors.toList()); //私有套餐里面的detailid List<Long> depDetailId = productOrderJoinDetailsListDep.stream().map(m -> m.getId()).collect(Collectors.toList()); //获取所有有效的套餐id List<Long> nowDetailList=shareDetailId; nowDetailList.addAll(depDetailId); //查询已预扣 未退还 未扣费的数据 List<ConsumptionRecord> consumptionRecordList = consumptionRecordMapper.findDetailList(nowDetailList); //计算预扣费的总量 if (consumptionRecordList.size() > 0) { //共享套餐里面预扣费总数 int shareConCount = consumptionRecordList.stream().filter(f -> shareDetailId.contains(f.getProOrderDetailId())).collect(Collectors.summingInt(ConsumptionRecord::getConsumptionCount)); //共享套餐里面预扣费总数 //私有套餐里面预扣费总数 int depConCount = consumptionRecordList.stream().filter(f -> depDetailId.contains(f.getProOrderDetailId())).collect(Collectors.summingInt(ConsumptionRecord::getConsumptionCount)); userAICount -= (shareConCount + depConCount); } kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml
@@ -60,4 +60,20 @@ <include refid="where"/> order by id desc </select> <!--定义根据-ConsumptionRecord当作查询条件返回对象集合--> <select id="findDetailList" resultType="com.kidgrow.oprationcenter.model.ConsumptionRecord"> SELECT * FROM `consumption_record` where record_type=1 and update_time is null <where> <if test="DetailList!=null and DetailList.size()>0"> and pro_order_detail_id in <foreach item="item" index="index" collection="DetailList" open="(" close=")" separator=","> #{item} </foreach> </if> </where> and pro_order_detail_id in (1,1) order by id desc </select> </mapper> kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
@@ -75,6 +75,7 @@ headers: { 'Authorization': 'Bearer ' + config.getToken().access_token }, page: true, cols: [[ { field: 'hospitalId', width: 180, title: '医院编号', fixed: 'left' }, { field: 'hospitalName', width: 250, title: '医院名称', fixed: 'left' }, { field: 'departmentName', width: 100, title: '科室/部门', fixed: 'left' }, {