From 3c12ba7572c436c32cd3700c4b4a8c2285c691fa Mon Sep 17 00:00:00 2001 From: houruijun <411269194@kidgrow.com> Date: Tue, 23 Jun 2020 19:27:14 +0800 Subject: [PATCH] 1.增加扣费业务相关的生成代码 2.扣费相关业务接口 3.修改登录后获取基本信息接口 --- kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java | 8 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IConsumptionRecordService.java | 41 +++ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml | 2 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java | 129 ++++++--- kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml | 1 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ConsumptionRecordMapper.java | 40 +++ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderRecordService.java | 2 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/UserProductDetail.java | 28 ++ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java | 139 ++++++++++ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml | 63 ++++ kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/ConsumptionConstant.java | 72 +++++ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ConsumptionRecord.java | 75 +++++ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ConsumptionRecordController.java | 114 ++++++++ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java | 25 + 14 files changed, 686 insertions(+), 53 deletions(-) diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ConsumptionRecord.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ConsumptionRecord.java new file mode 100644 index 0000000..93ee069 --- /dev/null +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ConsumptionRecord.java @@ -0,0 +1,75 @@ +package com.kidgrow.oprationcenter.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.kidgrow.common.model.SuperModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +/** + * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * + * @version 1.0 + * @Description: <br> + * @Project: 运营中心<br> + * @CreateDate: Created in 2020-06-23 15:07:14 <br> + * @Author: <a href="411269194@kidgrow.com">houruijun</a> + */ +@Data +@EqualsAndHashCode(callSuper = false) +@NoArgsConstructor +@AllArgsConstructor +@TableName("consumption_record") +public class ConsumptionRecord extends SuperModel { + private static final long serialVersionUID = 1L; + + /** + * 上次消费记录id(用于退费,扣费) + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long lastRecordId; + /** + * 用户充值的套餐id + */ + @JsonSerialize(using = ToStringSerializer.class) + @NotNull(message = "用户充值的套餐id不能为空") + private Long proOrderDetailId; + /** + * 调用方业务编号,光片名称 + */ + private String businessId; + /** + * 记录类型 + * 1:预扣费 + * 2:退预扣费(需要关联预扣费编号) + * 3:退扣费(需要关联扣费编号) + * 4:扣费(需要关联预扣费编号) + */ + @NotNull(message = "记录类型不能为空") + private Integer recordType; + /** + * 业务返回结果 + * bcode 含义 + * --------------------------------- + * 100 余额充足 + * 101 余额不足 + * 200 已经预扣 + * 201 已经扣费 + * 300 退还预扣 + * 301 退还扣费 + * 400 义务执行出错 + */ + @NotEmpty(message = "业务返回结果不能为空") + private String businessCode; + /** + * 扣费数量/金额 + */ + @NotNull(message = "扣费数量/金额不能为空") + private Integer consumptionCount; +} diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/UserProductDetail.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/UserProductDetail.java new file mode 100644 index 0000000..5595f12 --- /dev/null +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/UserProductDetail.java @@ -0,0 +1,28 @@ +package com.kidgrow.oprationcenter.vo; + +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * + * @Description: <br> + * @Project: <br> + * @CreateDate: Created in 2020/04/27 11:01 <br> + * @Author: <a href="411269194@kidgrow.com">houruijun</a> + * **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UserProductDetail extends Model<UserProductDetail> { + //实体序列化 必要 + private static final long serialVersionUID = 1L; + //共享套餐列表 + List<ProductOrderJoinDetail> productOrderJoinDetailListShare; + //私有套餐列表 + List<ProductOrderJoinDetail> productOrderJoinDetailsListDep; +} diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ConsumptionRecordMapper.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ConsumptionRecordMapper.java new file mode 100644 index 0000000..2b1214e --- /dev/null +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ConsumptionRecordMapper.java @@ -0,0 +1,40 @@ +package com.kidgrow.oprationcenter.mapper; + +import com.kidgrow.oprationcenter.model.ConsumptionRecord; +import com.kidgrow.db.mapper.SuperMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * @Description: <br> + * @Project: 运营中心<br> + * @CreateDate: Created in 2020-06-23 15:07:14 <br> + * @Author: <a href="411269194@kidgrow.com">houruijun</a> + * @version 1.0 + */ +public interface ConsumptionRecordMapper extends SuperMapper<ConsumptionRecord> { + /** + * 分页查询列表 + * @param page + * @param params + * @return + */ + List<ConsumptionRecord> findList(Page<ConsumptionRecord> page, @Param("p") Map<String, Object> params); + + /** + * 根据ConsumptionRecord对象当做查询条件进行查询 + * @param + * @return ConsumptionRecord对象 + */ + ConsumptionRecord findByObject(@Param("p") ConsumptionRecord consumptionRecord); + /** + * 查询列表 + * @param params + * @return + */ + List<ConsumptionRecord> findList(@Param("p") Map<String, Object> params); +} diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IConsumptionRecordService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IConsumptionRecordService.java new file mode 100644 index 0000000..b678356 --- /dev/null +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IConsumptionRecordService.java @@ -0,0 +1,41 @@ +package com.kidgrow.oprationcenter.service; + +import com.kidgrow.oprationcenter.model.ConsumptionRecord; +import com.kidgrow.common.model.PageResult; +import com.kidgrow.common.service.ISuperService; + +import java.util.List; +import java.util.Map; + +/** + * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * @Description: <br> + * @Project: 运营中心<br> + * @CreateDate: Created in 2020-06-23 15:07:14 <br> + * @Author: <a href="411269194@kidgrow.com">houruijun</a> + * @version 1.0 + */ +public interface IConsumptionRecordService extends ISuperService<ConsumptionRecord> { + /** + * 列表 + * @param params + * @return + */ + PageResult<ConsumptionRecord> findList(Map<String, Object> params); + + /** + * 自定义条件查询所有的列表 + * @param params + * @return + */ + List<ConsumptionRecord> findAllList(Map<String, Object> params); + + + /** + * 根据ConsumptionRecord对象当做查询条件进行查询 + * @param consumptionRecord + * @return ConsumptionRecord对象 + */ + ConsumptionRecord findByObject(ConsumptionRecord consumptionRecord); +} + diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java index a0d0386..7fb3857 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java @@ -8,6 +8,7 @@ import com.kidgrow.oprationcenter.vo.DiagnosisRecord; import com.kidgrow.oprationcenter.vo.GroupProductDetail; import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail; +import com.kidgrow.oprationcenter.vo.UserProductDetail; import java.util.List; import java.util.Map; @@ -61,5 +62,12 @@ * @return */ List<ProductOrderJoinDetail> findAllList(Map<String, Object> params); + /** + * 获取医院的套餐数据 + * @param hospitalId + * @param departmentId + * @return + */ + UserProductDetail getUserProductDetail(Long hospitalId, Long departmentId); } diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderRecordService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderRecordService.java index ea7668c..4d94a57 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderRecordService.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderRecordService.java @@ -60,6 +60,6 @@ */ PageResult<GroupProductDetail> groupList(Map<String, Object> params); - ResultBody biUserNowProduct(long hospitalId,Long departmentId); + ResultBody biUserNowProduct(Long hospitalId,Long departmentId); } diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java new file mode 100644 index 0000000..29d9ba4 --- /dev/null +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java @@ -0,0 +1,139 @@ +package com.kidgrow.oprationcenter.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.kidgrow.common.model.PageResult; +import com.kidgrow.common.service.impl.SuperServiceImpl; +import com.kidgrow.common.utils.StringUtils; +import com.kidgrow.oprationcenter.mapper.ConsumptionRecordMapper; +import com.kidgrow.oprationcenter.model.ConsumptionRecord; +import com.kidgrow.oprationcenter.service.IConsumptionRecordService; +import com.kidgrow.oprationcenter.service.IProductOrderDetailService; +import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail; +import com.kidgrow.oprationcenter.vo.UserProductDetail; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.MapUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * @Description: <br> + * @Project: 运营中心<br> + * @CreateDate: Created in 2020-06-23 15:07:14 <br> + * @Author: <a href="411269194@kidgrow.com">houruijun</a> + * @version 1.0 + */ +@Slf4j +@Service +public class ConsumptionRecordServiceImpl extends SuperServiceImpl<ConsumptionRecordMapper, ConsumptionRecord> implements IConsumptionRecordService { + @Autowired + private IProductOrderDetailService productOrderDetailService; + /** + * 列表 + * @param params + * @return + */ + @Override + public PageResult<ConsumptionRecord> findList(Map<String, Object> params){ + Page<ConsumptionRecord> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit")); + List<ConsumptionRecord> list = baseMapper.findList(page, params); + return PageResult.<ConsumptionRecord>builder().data(list).code(0).count(page.getTotal()).build(); + } + /** + * 列表 + * @param params + * @return + */ + @Override + public List<ConsumptionRecord> findAllList(Map<String, Object> params){ + return baseMapper.findList(params); + } + + /** + * 根据ConsumptionRecord对象当做查询条件进行查询 + * @param consumptionRecord + * @return ConsumptionRecord + */ + @Override + public ConsumptionRecord findByObject(ConsumptionRecord consumptionRecord){ + return baseMapper.findByObject(consumptionRecord); + } + + /** + * + * @param hospitalId + * @param departmentId + * @return + */ + public boolean deductionDepartmentProduct(Long hospitalId,Long departmentId) + { + UserProductDetail userProductDetail=productOrderDetailService.getUserProductDetail(hospitalId,departmentId); + //合并集合 + userProductDetail.getProductOrderJoinDetailListShare().addAll(userProductDetail.getProductOrderJoinDetailsListDep()); + List<ProductOrderJoinDetail> productOrderJoinDetailList=userProductDetail.getProductOrderJoinDetailListShare(); + //Collections.sort(productOrderJoinDetailList); + return false; + } + /** + * 写/更新记录数据 + * @param consumptionRecord + * @return + */ + public ConsumptionRecord SaveConsumptionRecord(ConsumptionRecord consumptionRecord) + { + if (consumptionRecord != null) { + this.saveOrUpdate(consumptionRecord); + return consumptionRecord; + } + return null; + } + /** + * 检查该业务是否存在该业务类型 + * @param consumptionRecordList 该业务下的扣费列表 + * @param recordType 记录类型编码 参考ConsumptionConstant里面 + * @return + */ + public boolean isBeforeDeduction(List<ConsumptionRecord> consumptionRecordList,int recordType) + { + if (consumptionRecordList != null) { + if (consumptionRecordList.size()>0) { + //过滤预扣费的记录 + return consumptionRecordList.stream().filter(f->f.getRecordType()==recordType).collect(Collectors.toList()).size()==1; + } + } + return false; + } + + /** + * 获取一个业务关联的扣费记录 + * @param businessId 光片的名称/编号 + * @return + */ + public List<ConsumptionRecord> GetBusinessConsumptionList(String businessId) + { + if (StringUtils.isNotBlank(businessId)) { + Map<String, Object> params = new HashMap<>(); + params.put("businessId", businessId); + List<ConsumptionRecord> consumptionRecordList=this.findAllList(params); + return consumptionRecordList; + } + return null; + } + /** + * 获取一个扣费记录 + * @param recordId 扣费记录id + * @return + */ + public ConsumptionRecord GetBusinessConsumptionList(Long recordId) + { + if (recordId>0) { + return baseMapper.selectById(recordId); + } + return null; + } +} diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java index acdfb9a..7a2efd8 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java @@ -13,6 +13,7 @@ import com.kidgrow.oprationcenter.vo.DiagnosisRecord; import com.kidgrow.oprationcenter.vo.GroupProductDetail; import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail; +import com.kidgrow.oprationcenter.vo.UserProductDetail; import com.kidgrow.usercenter.feign.SysDoctorService; import com.kidgrow.usercenter.feign.SysHospitalService; import com.kidgrow.usercenter.model.SysHospital; @@ -25,6 +26,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> @@ -163,4 +165,27 @@ return ResultBody.failed("该用户的组织已经失效"); } } + /** + *获取医院的套餐数据 + * @param hospitalId + * @param departmentId + * @return + */ + @Override + public UserProductDetail getUserProductDetail(Long hospitalId, Long departmentId) + { + //查询当前医院正在使用的套餐 + Map<String, Object> selectMap = new HashMap<>(); + selectMap.put("hospitalId", hospitalId); + List<ProductOrderJoinDetail> productOrderDetailList = this.findAllList(selectMap); + if (productOrderDetailList.size() > 0) { + UserProductDetail userProductDetail=new UserProductDetail(); + //包含共享的数据 + userProductDetail.setProductOrderJoinDetailListShare(productOrderDetailList.stream().filter(f -> f.getIsShare()).collect(Collectors.toList())); + //科室私有的数据 + userProductDetail.setProductOrderJoinDetailsListDep(productOrderDetailList.stream().filter((f -> departmentId.equals(f.getDepartmentId()) && f.getIsShare() == false)).collect(Collectors.toList())); + return userProductDetail; + } + return null; + } } diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java index be5ea2e..63c5f83 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java @@ -2,18 +2,22 @@ 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; import com.kidgrow.oprationcenter.feign.DiagnosticService; import com.kidgrow.oprationcenter.feign.RoleOrganizationService; import com.kidgrow.oprationcenter.mapper.ProductOrderRecordMapper; +import com.kidgrow.oprationcenter.model.ConsumptionRecord; import com.kidgrow.oprationcenter.model.ProductOrderRecord; +import com.kidgrow.oprationcenter.service.IConsumptionRecordService; import com.kidgrow.oprationcenter.service.IProductOrderDetailService; import com.kidgrow.oprationcenter.service.IProductOrderRecordService; import com.kidgrow.oprationcenter.vo.DiagnosisRecord; import com.kidgrow.oprationcenter.vo.GroupProductDetail; import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail; +import com.kidgrow.oprationcenter.vo.UserProductDetail; import com.kidgrow.usercenter.feign.SysDoctorService; import com.kidgrow.usercenter.feign.SysHospitalService; import com.kidgrow.usercenter.model.SysHospital; @@ -30,16 +34,17 @@ /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * + * @version 1.0 * @Description: 产品/明显的充值记录<br> * @Project: 用户中心<br> * @CreateDate: Created in 2020-04-01 09:37:05 <br> * @Author: <a href="4345453@kidgrow.com">liuke</a> - * @version 1.0 */ @Slf4j @Service public class ProductOrderRecordServiceImpl extends SuperServiceImpl<ProductOrderRecordMapper, ProductOrderRecord> implements IProductOrderRecordService { - @Autowired + @Autowired DiagnosticService diagnosticService; @Autowired private RoleOrganizationService roleOrganizationService; @@ -49,29 +54,36 @@ private SysHospitalService sysHospitalService; @Autowired private IProductOrderDetailService productOrderDetailService; + @Autowired + private IConsumptionRecordService consumptionRecordService; + /** * 列表 + * * @param params * @return */ @Override - public PageResult<ProductOrderRecord> findList(Map<String, Object> params){ + public PageResult<ProductOrderRecord> findList(Map<String, Object> params) { Page<ProductOrderRecord> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit")); - List<ProductOrderRecord> list = baseMapper.findList(page, params); + List<ProductOrderRecord> list = baseMapper.findList(page, params); return PageResult.<ProductOrderRecord>builder().data(list).code(0).count(page.getTotal()).build(); } /** * 获取诊断列表 + * * @param params * @return */ @Override - public PageResult<DiagnosisRecord> findAllDataList(Map<String, Object> params){ - return diagnosticService.getDiagnosticItemList(params).getData(); + public PageResult<DiagnosisRecord> findAllDataList(Map<String, Object> params) { + return diagnosticService.getDiagnosticItemList(params).getData(); } + /** * 列表 + * * @param params * @return */ @@ -80,67 +92,82 @@ Page<ProductOrderJoinDetail> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit")); Map<String, Object> roleOrgMap = roleOrganizationService.getRoleOrgMap(sysUser.getRoles()); params.putAll(roleOrgMap); - List<ProductOrderJoinDetail> list = baseMapper.findAllList(page,params); + List<ProductOrderJoinDetail> list = baseMapper.findAllList(page, params); return PageResult.<ProductOrderJoinDetail>builder().data(list).code(0).count(page.getTotal()).build(); } /** * 获取统计数据 + * * @param params * @return */ @Override public PageResult<GroupProductDetail> groupList(Map<String, Object> params) { Page<GroupProductDetail> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit")); - List<GroupProductDetail> list = baseMapper.groupProductDetail(page,params); + List<GroupProductDetail> list = baseMapper.groupProductDetail(page, params); return PageResult.<GroupProductDetail>builder().data(list).code(0).count(page.getTotal()).build(); } /** - * 统计用户所有套餐剩余 + * 统计用户所有套餐剩余 套餐剩余量=(有效期内的医院所有共享+科室私有的套餐的读片量)-预扣费的读片量 + * * @param hospitalId * @param departmentId * @return */ @Override - public ResultBody biUserNowProduct(long hospitalId, Long departmentId) { - if (hospitalId>0&& departmentId>0) { - //查询当前医院正在使用的套餐 - Map<String,Object> selectMap=new HashMap<>(); - selectMap.put("hospitalId",hospitalId); - List<ProductOrderJoinDetail> productOrderDetailList=productOrderDetailService.findAllList(selectMap); - Long userAICount=0l; - if (productOrderDetailList.size()>0) { + public ResultBody biUserNowProduct(Long hospitalId, Long departmentId) { + if (hospitalId > 0 && departmentId > 0) { + UserProductDetail userProductDetail=productOrderDetailService.getUserProductDetail(hospitalId,departmentId); + int userAICount = 0; + if (userProductDetail!=null) { //包含共享的数据 - List<ProductOrderJoinDetail> productOrderJoinDetailListShare=productOrderDetailList.stream().filter(f->f.getIsShare()).collect(Collectors.toList()); + List<ProductOrderJoinDetail> productOrderJoinDetailListShare = userProductDetail.getProductOrderJoinDetailListShare(); //科室私有的数据 - List<ProductOrderJoinDetail> productOrderJoinDetailsListDep=productOrderDetailList.stream().filter((f->departmentId.equals(f.getDepartmentId())&&f.getIsShare()==false)).collect(Collectors.toList()); + List<ProductOrderJoinDetail> productOrderJoinDetailsListDep = userProductDetail.getProductOrderJoinDetailsListDep(); //本医院可共享的读片总量 - Long shareCount=productOrderJoinDetailListShare.stream().collect(Collectors.summingLong(ProductOrderJoinDetail::getAilightCount)); + int shareCount = productOrderJoinDetailListShare.stream().collect(Collectors.summingInt(ProductOrderJoinDetail::getAilightCount)); //本科室私有读片总量 - Long depCount=productOrderJoinDetailsListDep.stream().collect(Collectors.summingLong(ProductOrderJoinDetail::getAilightCount)); + int depCount = productOrderJoinDetailsListDep.stream().collect(Collectors.summingInt(ProductOrderJoinDetail::getAilightCount)); //可用的总量 - userAICount=shareCount+depCount; + userAICount = shareCount + depCount; + //计算预扣费的总量 + Map<String, Object> selectMap = new HashMap<>(); + selectMap.put("recordType", ConsumptionConstant.BEFORE_DEDUCTION); + List<ConsumptionRecord> consumptionRecordList = consumptionRecordService.findAllList(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()); + //共享套餐里面预扣费总数 + 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); + } } + return ResultBody.ok().data(userAICount); - } - else - { + } else { return ResultBody.failed("医院和科室数据有误!"); } } - /** - * 根据ProductOrderRecord对象当做查询条件进行查询 - * @param productOrderRecord - * @return ProductOrderRecord - */ + * 根据ProductOrderRecord对象当做查询条件进行查询 + * + * @param productOrderRecord + * @return ProductOrderRecord + */ @Override - public ProductOrderRecord findByObject(ProductOrderRecord productOrderRecord){ + public ProductOrderRecord findByObject(ProductOrderRecord productOrderRecord) { return baseMapper.findByObject(productOrderRecord); } + /** * 修改数据状态 启用 禁用 + * * @param params * @return */ @@ -162,46 +189,46 @@ @Override public ResultBody getTypeByUser(SysUser sysUser) { List<SysOrganization> organizations = sysUser.getOrganizations(); - if(organizations.size()>0){ + if (organizations.size() > 0) { SysOrganization sysOrganization = organizations.get(0); - List<ProductOrderJoinDetail> list=baseMapper.getTypeByUser(sysOrganization.getId()); - if (list.size()>0) { + List<ProductOrderJoinDetail> list = baseMapper.getTypeByUser(sysOrganization.getId()); + if (list.size() > 0) { ProductOrderJoinDetail productOrderJoinDetail = list.get(0); //查询用户的真实姓名 - Map<String,Object> selectMap=new HashMap<>(); - selectMap.put("user_id",sysUser.getId()); + Map<String, Object> selectMap = new HashMap<>(); + selectMap.put("user_id", sysUser.getId()); ResultBody listByMap = sysDoctorService.getListByMap(selectMap); List<SysDoctor> sysDoctors = JSON.parseArray(JSON.toJSONString(listByMap.getData()), SysDoctor.class); - String str=""; - if(sysDoctors!=null&&sysDoctors.size()>0){ - str= sysDoctors.get(0).getDoctorName(); + String str = ""; + if (sysDoctors != null && sysDoctors.size() > 0) { + str = sysDoctors.get(0).getDoctorName(); } //查询医院的 logo - Map<String,Object> map=new HashMap<>(); - map.put("id",sysOrganization.getId()); + Map<String, Object> map = new HashMap<>(); + map.put("id", sysOrganization.getId()); ResultBody allByMap = sysHospitalService.findAllByMap(map); List<SysHospital> hospitals = JSON.parseArray(JSON.toJSONString(allByMap.getData()), SysHospital.class); - String logo=""; - if(hospitals.size()>0){ + String logo = ""; + if (hospitals.size() > 0) { logo = hospitals.get(0).getHospitalLogo(); } - Map<String,Object> mapVo=new HashMap<>(); - mapVo.put("type",productOrderJoinDetail.getProType()); - mapVo.put("realName",str); + Map<String, Object> mapVo = new HashMap<>(); + mapVo.put("type", productOrderJoinDetail.getProType()); + mapVo.put("realName", str); //剩余时间 Date proEndtime = productOrderJoinDetail.getProEndtime(); - Double surplusDay=DateUtils.getDays(proEndtime, new Date()); + Double surplusDay = DateUtils.getDays(proEndtime, new Date()); int surplus = surplusDay.intValue(); - mapVo.put("surplus",surplus); - mapVo.put("logo",logo); + mapVo.put("surplus", surplus); + mapVo.put("logo", logo); //获取 售后服务工程师********不能从sysOrganization获取,从department获取 /* mapVo.put("saleUserName",sysOrganization.getSaleUserName()); mapVo.put("saleUserTel",sysOrganization.getSaleUserTel());*/ return ResultBody.ok().data(mapVo); - }else { + } else { return ResultBody.failed("该用户套餐已经失效"); } - }else { + } else { return ResultBody.failed("该用户的组织已经失效"); } } diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml new file mode 100644 index 0000000..61f1ac4 --- /dev/null +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<!----> +<mapper namespace="com.kidgrow.oprationcenter.mapper.ConsumptionRecordMapper"> + <!--定义查询列--> + <sql id="Column_List"> + * + </sql> + + <!--sql查询片段--> + <sql id="where"> + <where> + <!--查询条件自行添加--> + 1=1 + <if test="p.recordId != null and p.recordId !=''"> + and record_id = #{p.recordId} + </if> + <if test="p.lastRecordId != null and p.lastRecordId !=''"> + and last_record_id = #{p.lastRecordId} + </if> + <if test="p.proOrderDetailId != null and p.proOrderDetailId !=''"> + and pro_order_detail_id = #{p.proOrderDetailId} + </if> + <if test="p.businessId != null and p.businessId !=''"> + and business_id = #{p.businessId} + </if> + <if test="p.recordType != null and p.recordType !=''"> + and record_type = #{p.recordType} + </if> + <if test="p.businessCode != null and p.businessCode !=''"> + and business_code = #{p.businessCode} + </if> + <if test="p.consumptionCount != null and p.consumptionCount !=''"> + and consumption_count = #{p.consumptionCount} + </if> + <if test="p.updateTime != null and p.updateTime !=''"> + and update_time = #{p.updateTime} + </if> + <if test="p.createTime != null and p.createTime !=''"> + and create_time = #{p.createTime} + </if> + </where> + </sql> + + <!--定义根据-ConsumptionRecord当作查询条件返回对象--> + <select id="findByObject" resultType="com.kidgrow.oprationcenter.model.ConsumptionRecord"> + select + <include refid="Column_List"/> + from consumption_record + <include refid="where"/> + order by record_id desc + limit 1 + </select> + + <!--定义根据-ConsumptionRecord当作查询条件返回对象集合--> + <select id="findList" resultType="com.kidgrow.oprationcenter.model.ConsumptionRecord"> + select + <include refid="Column_List"/> + from consumption_record + <include refid="where"/> + order by record_id desc + </select> +</mapper> \ No newline at end of file diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml index 707adc9..27594bd 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml @@ -154,6 +154,7 @@ <!--查询产品的购买记录--> <select id="findAllList" resultType="com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail"> SELECT + DE.id, DE.ailight_count, DE.record_count, DE.is_share, diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ConsumptionRecordController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ConsumptionRecordController.java new file mode 100644 index 0000000..08420e1 --- /dev/null +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ConsumptionRecordController.java @@ -0,0 +1,114 @@ +package com.kidgrow.oprationcenter.controller; + +import com.kidgrow.common.controller.BaseController; +import com.kidgrow.common.model.PageResult; +import com.kidgrow.common.model.ResultBody; +import com.kidgrow.oprationcenter.model.ConsumptionRecord; +import com.kidgrow.oprationcenter.service.IConsumptionRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.validation.ObjectError; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + + +/** + * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * @Description: + * @Project: 运营中心 + * @CreateDate: Created in 2020-06-23 15:07:14 <br> + * @Author: <a href="411269194@kidgrow.com">houruijun</a> + * @version: 1.0 + */ +@Slf4j +@RestController +@RequestMapping("/consumption") +@Api(tags = "") +public class ConsumptionRecordController extends BaseController{ + @Autowired + private IConsumptionRecordService consumptionRecordService; + + /** + * 列表 + */ + @ApiOperation(value = "查询列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") + }) + @GetMapping + public ResultBody<PageResult> list(@RequestParam Map<String, Object> params) { + if(params.size()==0){ + params.put("page",1); + params.put("limit",10); + } + return ResultBody.ok().data(consumptionRecordService.findList(params)); + } + + /** + * 查询 + */ + @ApiOperation(value = "查询") + @GetMapping("/{recordId}") + public ResultBody findById(@PathVariable Long recordId) { + ConsumptionRecord model = consumptionRecordService.getById(recordId); + return ResultBody.ok().data(model).msg("查询成功"); + } + + /** + * 根据ConsumptionRecord当做查询条件进行查询 + */ + @ApiOperation(value = "根据ConsumptionRecord当做查询条件进行查询") + @PostMapping("/query") + public ResultBody findByObject(@RequestBody ConsumptionRecord consumptionRecord) { + ConsumptionRecord model = consumptionRecordService.findByObject(consumptionRecord); + return ResultBody.ok().data(model).msg("查询成功"); + } + + /** + * 新增or更新 + */ + @ApiOperation(value = "保存") + @PostMapping + public ResultBody save(@Valid @RequestBody ConsumptionRecord consumptionRecord, BindingResult bindingResult) { + List<String> errMsg= new ArrayList<>(); + if (bindingResult.hasErrors()) { + for (ObjectError error : bindingResult.getAllErrors()) { + errMsg.add(error.getDefaultMessage()); + } + return ResultBody.failed().msg(errMsg.toString()); + } else { + boolean v= consumptionRecordService.saveOrUpdate(consumptionRecord); + if(v) { + return ResultBody.ok().data(consumptionRecord).msg("保存成功"); + } + else { + return ResultBody.failed().msg("保存失败"); + } + } + } + + /** + * 删除 + */ + @ApiOperation(value = "删除") + @DeleteMapping("/{id}") + public ResultBody delete(@PathVariable Long recordId) { + boolean v= consumptionRecordService.removeById(recordId); + if(v) { + return ResultBody.ok().msg("删除成功"); + } + else { + return ResultBody.failed().msg("删除失败"); + } + } +} diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml index bb4e75f..a437e46 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml @@ -57,12 +57,12 @@ #多租户隔离字段 tenantid: tenant_id ignoreTables: - - sys_user - sys_logger - data_need - business_records - sys_feedback - doctor_templete + - consumption_record ignoreSqls: - com.kidgrow.usercenter.mapper.SysRoleMapper.findAll diff --git a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/ConsumptionConstant.java b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/ConsumptionConstant.java new file mode 100644 index 0000000..41d3cc4 --- /dev/null +++ b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/ConsumptionConstant.java @@ -0,0 +1,72 @@ +package com.kidgrow.common.constant; + +/** + * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * + * @Description: 全局公共常量<br> + * @Project: <br> + * @CreateDate: Created in 2020/06/23 16:24 <br> + * @Author: <a href="4345453@kidgrow.com">houruijun</a> + **/ +public interface ConsumptionConstant { +//记录类型 +//1:预扣费 +//2:退预扣费(需要关联预扣费编号) +//3:退扣费(需要关联扣费编号) +//4:扣费(需要关联预扣费编号) + /** + * 预扣费业务标识 + */ + int BEFORE_DEDUCTION = 1; + /** + * 退还预扣费业务标识 + */ + int RETURN_BEFORE_DEDUCTION = 2; + /** + * 扣费业务标识 + */ + int DEDUCTION = 3; + /** + * 退扣费业务标识 + */ + int RETURN_DEDUCTION = 4; + +// 业务返回结果 +// bcode 含义 +//--------------------------------- +//100 余额充足 +//101 余额不足 +//200 已经预扣 +//201 已经扣费 +//300 退还预扣 +//301 退还扣费 +//400 义务执行出错 + /** + * 余额充足 + */ + int BUSINESS_CODE_OK = 100; + /** + * 余额不足 + */ + int BUSINESS_CODE_FAIL = 101; + /** + * 已经预扣 + */ + int BUSINESS_CODE_IS_BEFORE_DEDUCTION = 200; + /** + * 已经扣费 + */ + int BUSINESS_CODE_IS_DEDUCTION = 201; + /** + * 退还预扣 + */ + int BUSINESS_CODE_RETURN_BEFORE_DEDUCTION = 300; + /** + * 退还预扣 + */ + int BUSINESS_CODE_RETURN_DEDUCTION = 301; + /** + * 业务出错 + */ + int BUSINESS_CODE_ERROR = 400; +} -- Gitblit v1.8.0