forked from kidgrow-microservices-platform

1.修改获取余额的时候,将预扣费算作有效的bug
2.医院管理 增加了显示医院编号
5 files modified
71 ■■■■ changed files
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ConsumptionRecordMapper.java 6 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java 31 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java 17 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml 16 ●●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html 1 ●●●● patch | view | raw | blame | history
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' },
                {