From 6b375c519bfc1eb13a67b75b6290daae408ed2e3 Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Sun, 27 Apr 2025 15:38:10 +0800 Subject: [PATCH] deb --- .../controller/charge/ChargeController.java | 19 +++ .../statistics/StatisticsController.java | 44 +------ .../server/entity/charge/ChargeOrder.java | 9 +- .../server/entity/diagnosis/Diagnosis.java | 5 +- .../server/service/charge/ChargeService.java | 119 +++++++++++++++--- .../service/charge/vo/PaymentMethodVo.java | 27 ++++ .../vo/RetailOrderDailyChargingReportVo.java | 23 ++++ .../diagnosis/MedicalRecordService.java | 10 +- .../social/SocialDirectoryService.java | 7 +- .../service/statistics/StatisticsService.java | 46 ++++++- 10 files changed, 236 insertions(+), 73 deletions(-) create mode 100644 src/main/java/com/syjiaer/clinic/server/service/charge/vo/PaymentMethodVo.java create mode 100644 src/main/java/com/syjiaer/clinic/server/service/charge/vo/RetailOrderDailyChargingReportVo.java diff --git a/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java b/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java index 390d529..9850cb6 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java @@ -1,15 +1,20 @@ package com.syjiaer.clinic.server.controller.charge; +import com.syjiaer.clinic.server.common.util.DateUtil; import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.controller.BaseController; import com.syjiaer.clinic.server.entity.charge.ChargeOrder; import com.syjiaer.clinic.server.entity.charge.dto.ChargeQuery; import com.syjiaer.clinic.server.entity.charge.dto.ChargeSaveDto; import com.syjiaer.clinic.server.service.charge.ChargeService; +import com.syjiaer.clinic.server.service.charge.vo.RetailOrderDailyChargingReportVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.time.LocalDateTime; +import java.util.Map; + @RestController @RequestMapping("/charge") public class ChargeController extends BaseController { @@ -57,4 +62,18 @@ public class ChargeController extends BaseController { return success(); } + /** + * 每日收费报表 + */ + @RequestMapping("/dailyChargingReport") + public Result> dailyChargingReport() { + String startDateStr = parmsUtil.getString("startDate", "请选择开始时间"); + String endDateStr = parmsUtil.getString("endDate", "请选择结束时间"); + LocalDateTime startDateTime = DateUtil.getDateTime(startDateStr); + LocalDateTime endDateTime = DateUtil.getDateTime(endDateStr); + endDateTime = endDateTime.plusDays(1); + + return success(chargeService.dailyChargingReport(startDateTime, endDateTime)); + } + } diff --git a/src/main/java/com/syjiaer/clinic/server/controller/statistics/StatisticsController.java b/src/main/java/com/syjiaer/clinic/server/controller/statistics/StatisticsController.java index 8eb3f95..afbccca 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/statistics/StatisticsController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/statistics/StatisticsController.java @@ -61,45 +61,13 @@ public class StatisticsController extends BaseController { @RequestMapping("getPersonPayOverview") public Result getPersonPayOverview() { -// String begin = parmsUtil.getString("beginTime", "开始时间为空"); -// String end = parmsUtil.getString("endTime", "结束时间为空"); -// LocalDateTime beginTime = DateUtil.getDateTime(begin); -// LocalDateTime endTime = DateUtil.getDateTime(end); -// QueryWrapper vipQuery = new QueryWrapper<>(); -// vipQuery.select("create_date,sum(total_price)"); -// vipQuery.ge("pay_time", beginTime); -// vipQuery.le("pay_time", endTime); -// -// vipQuery.groupBy("create_date"); -// vipQuery.orderByAsc("create_date"); -// vipQuery.isNotNull("vip_id"); -// List> vipMaps = retailOrderService.listMaps(vipQuery); -// QueryWrapper commonQuery = new QueryWrapper<>(); -// commonQuery.select("create_date,sum(total_price)"); -// commonQuery.ge("pay_time", beginTime); -// commonQuery.le("pay_time", endTime); -// -// commonQuery.groupBy("create_date"); -// commonQuery.orderByAsc("create_date"); -// commonQuery.isNull("vip_id"); -// List> commonMaps = retailOrderService.listMaps(commonQuery); -// List dateList = DateUtil.getDatesBetween(beginTime, endTime); -// Map tempMap = new HashMap<>(); -// for (LocalDate date : dateList) { -// tempMap.put(date.toString(), BigDecimal.ZERO); -// } -// for (Map map : vipMaps) { -// tempMap.put(map.get("create_date").toString(), (BigDecimal) map.get("sum")); -// } -// PersonPayOverviewVo personPayOverview = new PersonPayOverviewVo(); -// personPayOverview.setDateList(dateList.stream().map(LocalDate::toString).toList()); -// personPayOverview.setVipPrice(new ArrayList<>(tempMap.values())); -// for (Map map : commonMaps) { -// tempMap.put(map.get("create_date").toString(), (BigDecimal) map.get("sum")); -// } -// personPayOverview.setCommonPrice(new ArrayList<>(tempMap.values())); + String begin = parmsUtil.getString("beginTime", "开始时间为空"); + String end = parmsUtil.getString("endTime", "结束时间为空"); + LocalDateTime beginTime = DateUtil.getDateTime(begin); + LocalDateTime endTime = DateUtil.getDateTime(end); + PersonPayOverviewVo personPayOverviewVo = statisticsService.getPersonPayOverview(beginTime, endTime); + return success(personPayOverviewVo); - return success(); } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java index 4b7ffb9..f83fd46 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java @@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; import lombok.Getter; import lombok.Setter; @@ -18,7 +19,7 @@ import lombok.experimental.Accessors; *

* * @author NiuZiYuan - * @since 2025-04-24 + * @since 2025-04-27 */ @Getter @Setter @@ -66,4 +67,10 @@ public class ChargeOrder implements Serializable { @ApiModelProperty("诊断code") private String diagnosisCode; + + @ApiModelProperty("创建日期") + private LocalDate createDate; + + @ApiModelProperty("总成本") + private BigDecimal totalCost; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/Diagnosis.java b/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/Diagnosis.java index af687f5..81be0ea 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/Diagnosis.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/Diagnosis.java @@ -16,7 +16,7 @@ import lombok.experimental.Accessors; *

* * @author NiuZiYuan - * @since 2025-04-24 + * @since 2025-04-27 */ @Getter @Setter @@ -42,4 +42,7 @@ public class Diagnosis implements Serializable { @ApiModelProperty("创建时间") private LocalDateTime createTime; + + @ApiModelProperty("0待收费 1已收费") + private Integer status; } diff --git a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java index 7f30730..8377b35 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java @@ -46,6 +46,8 @@ import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper; import com.syjiaer.clinic.server.mapper.social.SocialDirectoryMapper; import com.syjiaer.clinic.server.mapper.social.SocialItemMapper; import com.syjiaer.clinic.server.service.BaseService; +import com.syjiaer.clinic.server.service.charge.vo.PaymentMethodVo; +import com.syjiaer.clinic.server.service.charge.vo.RetailOrderDailyChargingReportVo; import com.syjiaer.clinic.server.service.inventory.InventoryService; import com.syjiaer.clinic.server.service.patient.PatientRegistrationService; import org.springframework.beans.BeanUtils; @@ -55,10 +57,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Service public class ChargeService extends BaseService { @@ -97,9 +102,9 @@ public class ChargeService extends BaseService { @Transactional(rollbackFor = Exception.class) - public ChargeOrder save(ChargeSaveDto dto){ + public ChargeOrder save(ChargeSaveDto dto) { ChargeOrder dbOrder = chargeOrderMapper.selectById(dto.getId()); - if (dbOrder != null){ + if (dbOrder != null) { //清除已有的订单 chargeItemListMapper.delete(new QueryWrapper().eq("charge_order_code", dbOrder.getCode())); chargeGoodsListMapper.delete(new QueryWrapper().eq("charge_order_code", dbOrder.getCode())); @@ -113,7 +118,7 @@ public class ChargeService extends BaseService { BigDecimal preTotalPrice = BigDecimal.ZERO; BigDecimal totalPrice = BigDecimal.ZERO; List chargeServiceLists = new ArrayList<>(); - for (DiagnosisMedicalItemList service : dto.getItemDetail()){ + for (DiagnosisMedicalItemList service : dto.getItemDetail()) { ChargeItemList itemList = new ChargeItemList(); String fsn = StringUtil.getCode("FSN"); itemList.setChargeOrderCode(code); @@ -136,10 +141,10 @@ public class ChargeService extends BaseService { chargeItemListMapper.insert(chargeServiceLists); List chargeGoodsLists = new ArrayList<>(); - for (ChargeGoodsListVo goods : dto.getGoodsDetail()){ + for (ChargeGoodsListVo goods : dto.getGoodsDetail()) { ChargeGoodsList itemList = new ChargeGoodsList(); Goods dbGoods = goodsMapper.selectById(goods.getId()); - if (dbGoods == null){ + if (dbGoods == null) { throw new RuntimeException("商品不存在"); } String fsn = StringUtil.getCode("FSN"); @@ -151,7 +156,7 @@ public class ChargeService extends BaseService { BigDecimal subTotalPrice = goods.getSelectedPrice().multiply(BigDecimal.valueOf(goods.getSelectedNum())); itemList.setSubTotalPrice(subTotalPrice); itemList.setTrdnFlag(true); - if (dbGoods.getPackagingUnit().equals(goods.getSelectedUnit()) || dbGoods.getPackagingUnit().equals(dbGoods.getMinPackagingUnit())){ + if (dbGoods.getPackagingUnit().equals(goods.getSelectedUnit()) || dbGoods.getPackagingUnit().equals(dbGoods.getMinPackagingUnit())) { itemList.setTrdnFlag(false); } itemList.setUnit(goods.getSelectedUnit()); @@ -159,6 +164,7 @@ public class ChargeService extends BaseService { itemList.setFeedetlSn(fsn); itemList.setCreateDate(nowLocalDate); itemList.setCreateTime(nowLocalDateTime); + itemList.setType(dbGoods.getType()); chargeGoodsLists.add(itemList); preTotalPrice = preTotalPrice.add(subTotalPrice); totalPrice = totalPrice.add(subTotalPrice); @@ -170,6 +176,7 @@ public class ChargeService extends BaseService { chargeOrder.setPreTotalPrice(preTotalPrice); chargeOrder.setTotalPrice(totalPrice); chargeOrder.setCreateDatetime(nowLocalDateTime); + chargeOrder.setCreateDate(nowLocalDate); chargeOrder.setStatus(RetailOrderStatusEnum.UNFINISHED.getCode()); chargeOrder.setPatientId(dto.getPatientInfo().getId()); chargeOrder.setDiagnosisCode(dto.getCode()); @@ -181,18 +188,18 @@ public class ChargeService extends BaseService { public Page pageList(ChargeQuery query) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if (query.getPageSize() == null || query.getPageSize() == 0){ + if (query.getPageSize() == null || query.getPageSize() == 0) { query.setPageSize(Constants.DetailPageSize); } - if (query.getPageNum() == null || query.getPageNum() == 0){ + if (query.getPageNum() == null || query.getPageNum() == 0) { query.setPageNum(1); } - if (query.getPatientName() != null){ - queryWrapper.like("patient_name",query.getPatientName()); + if (query.getPatientName() != null) { + queryWrapper.like("patient_name", query.getPatientName()); } Page orderPage = pageHelper(query.getPageNum(), query.getPageSize(), queryWrapper, chargeOrderMapper, "create_datetime", false); List voList = new ArrayList<>(); - for (ChargeOrder chargeOrder : orderPage.getList()){ + for (ChargeOrder chargeOrder : orderPage.getList()) { ChargeDetailVo detailVo = new ChargeDetailVo(); BeanUtils.copyProperties(chargeOrder, detailVo); detailVo.setPatientInfo(patientInfoMapper.selectById(chargeOrder.getPatientId())); @@ -231,14 +238,23 @@ public class ChargeService extends BaseService { // // } - public void completeOrder (Integer id,Integer payType){ + public void completeOrder(Integer id, Integer payType) { ChargeOrder order = chargeOrderMapper.selectById(id); - if (order == null){ + if (order == null) { throw new MessageException("订单不存在"); } - if (!order.getStatus().equals(RetailOrderStatusEnum.UNFINISHED.getCode())){ + Diagnosis diagnosis = diagnosisMapper.selectById(order.getDiagnosisCode()); + if (diagnosis == null) { + throw new MessageException("诊断信息不存在"); + } + if (!order.getStatus().equals(RetailOrderStatusEnum.UNFINISHED.getCode())) { throw new MessageException("订单状态错误"); } + //更新诊断状态 + Diagnosis updateDiagnosis = new Diagnosis(); + updateDiagnosis.setId(diagnosis.getId()); + updateDiagnosis.setStatus(1); + //完成订单 ChargeOrder updateOrder = new ChargeOrder(); updateOrder.setId(id); updateOrder.setStatus(RetailOrderStatusEnum.FINISHED.getCode()); @@ -250,9 +266,9 @@ public class ChargeService extends BaseService { for (ChargeGoodsListVo goodsList : goodsLists) { Integer wholeNumber = 0; Integer fragmentNumber = 0; - if (goodsList.getPackagingUnit().equals(goodsList.getSelectedUnit())){ + if (goodsList.getPackagingUnit().equals(goodsList.getSelectedUnit())) { wholeNumber = goodsList.getSelectedNum(); - }else { + } else { fragmentNumber = goodsList.getSelectedNum(); } List logs = inventoryService.adjustNumberByGoodsId(goodsList.getId(), wholeNumber, fragmentNumber, "订单完成"); @@ -265,6 +281,7 @@ public class ChargeService extends BaseService { } } + public void uploadCostDetails(String changeOrderCode) { ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode); Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode()); @@ -280,7 +297,7 @@ public class ChargeService extends BaseService { IM2204 im2204 = new IM2204(); List feedetails = new ArrayList<>(); - for (ChargeGoodsList goodsList : goodsLists){ + for (ChargeGoodsList goodsList : goodsLists) { IM2204.Feedetail feedetail = new IM2204.Feedetail(); feedetail.setFeedetl_sn(goodsList.getFeedetlSn()); feedetail.setMdtrt_id(registration.getMdtrtId()); @@ -303,7 +320,7 @@ public class ChargeService extends BaseService { feedetail.setHosp_appr_flag("1"); feedetails.add(feedetail); } - for (ChargeItemList itemList : itemLists){ + for (ChargeItemList itemList : itemLists) { IM2204.Feedetail feedetail = new IM2204.Feedetail(); feedetail.setFeedetl_sn(itemList.getFeedetlSn()); feedetail.setMdtrt_id(registration.getMdtrtId()); @@ -335,7 +352,7 @@ public class ChargeService extends BaseService { /** * 医保预支付 */ - public void socialPrePay(String changeOrderCode,String mdtrtCertType,String mdtrtCertNO,String insutype){ + public void socialPrePay(String changeOrderCode, String mdtrtCertType, String mdtrtCertNO, String insutype) { ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode); Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode()); @@ -360,7 +377,7 @@ public class ChargeService extends BaseService { } - public void socialRealPay(String changeOrderCode,String mdtrtCertType,String mdtrtCertNO,String insutype){ + public void socialRealPay(String changeOrderCode, String mdtrtCertType, String mdtrtCertNO, String insutype) { ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode); Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode()); @@ -385,4 +402,66 @@ public class ChargeService extends BaseService { } + /** + * 收费日报 + * + * @param startDateTime + * @param endDateTime + * @return + */ + public Map dailyChargingReport(LocalDateTime startDateTime, LocalDateTime endDateTime) { + Map result = new HashMap<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.between("create_datetime", startDateTime, endDateTime) + .eq("status", RetailOrderStatusEnum.FINISHED.getCode()) + .orderByDesc("create_datetime"); + List chargeOrders = chargeOrderMapper.selectList(queryWrapper); + for (ChargeOrder order : chargeOrders) { + String dateKey = order.getCreateDatetime().toLocalDate().toString();// 格式为 yyyy-MM-dd + RetailOrderDailyChargingReportVo retailOrderDailyChargingReportVo = result.get(dateKey); + if (retailOrderDailyChargingReportVo == null) { + retailOrderDailyChargingReportVo = new RetailOrderDailyChargingReportVo(); + retailOrderDailyChargingReportVo.setTotalMoney(order.getTotalPrice() == null ? new BigDecimal(0) : order.getTotalPrice()); + retailOrderDailyChargingReportVo.setTotalCost(order.getTotalCost() == null ? new BigDecimal(0) : order.getTotalCost()); + retailOrderDailyChargingReportVo.setOrderVolume(1); + retailOrderDailyChargingReportVo.setPaymentMethodVo(getPaymentMethod(order.getPayType(), new PaymentMethodVo(), order.getTotalPrice())); + } else { + retailOrderDailyChargingReportVo.setTotalMoney(retailOrderDailyChargingReportVo.getTotalMoney().add(order.getTotalPrice())); + retailOrderDailyChargingReportVo.setTotalCost(retailOrderDailyChargingReportVo.getTotalCost().add(order.getTotalCost())); + retailOrderDailyChargingReportVo.setOrderVolume(retailOrderDailyChargingReportVo.getOrderVolume() + 1); + retailOrderDailyChargingReportVo.setPaymentMethodVo(getPaymentMethod(order.getPayType(), retailOrderDailyChargingReportVo.getPaymentMethodVo(), order.getTotalPrice())); + } + result.put(dateKey, retailOrderDailyChargingReportVo); + } + + result.forEach((key, value) -> { + BigDecimal grossMargin = value.getTotalMoney().subtract(value.getTotalCost()); + value.setGrossMargin(grossMargin); + value.setGrossProfitRate(String.format("%.2f%%", grossMargin.divide(value.getTotalMoney(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")))); + }); + return result; + } + + //获取各支付方式支付的金额 + private PaymentMethodVo getPaymentMethod(Integer payType, PaymentMethodVo paymentMethodVo, BigDecimal totalPrice) { + //1医保 2微信支付 3支付宝支付 4现金支付 5其他 + switch (payType) { + case 1: + paymentMethodVo.setMedicalInsurancePayment(paymentMethodVo.getMedicalInsurancePayment().add(totalPrice)); + break; + case 2: + paymentMethodVo.setWechatPayment(paymentMethodVo.getWechatPayment().add(totalPrice)); + break; + case 3: + paymentMethodVo.setAliPayment(paymentMethodVo.getAliPayment().add(totalPrice)); + break; + case 4: + paymentMethodVo.setCashPayment(paymentMethodVo.getCashPayment().add(totalPrice)); + break; + case 5: + paymentMethodVo.setOtherPayment(paymentMethodVo.getOtherPayment().add(totalPrice)); + break; + } + return paymentMethodVo; + } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/charge/vo/PaymentMethodVo.java b/src/main/java/com/syjiaer/clinic/server/service/charge/vo/PaymentMethodVo.java new file mode 100644 index 0000000..028d5d4 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/service/charge/vo/PaymentMethodVo.java @@ -0,0 +1,27 @@ +package com.syjiaer.clinic.server.service.charge.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class PaymentMethodVo { + //微信支付 + private BigDecimal wechatPayment; + //支付宝支付 + private BigDecimal aliPayment; + //现金支付 + private BigDecimal cashPayment; + //其他支付 + private BigDecimal otherPayment; + //医保支付 + private BigDecimal medicalInsurancePayment; + + public PaymentMethodVo() { + wechatPayment = new BigDecimal(0); + aliPayment = new BigDecimal(0); + cashPayment = new BigDecimal(0); + otherPayment = new BigDecimal(0); + medicalInsurancePayment = new BigDecimal(0); + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/service/charge/vo/RetailOrderDailyChargingReportVo.java b/src/main/java/com/syjiaer/clinic/server/service/charge/vo/RetailOrderDailyChargingReportVo.java new file mode 100644 index 0000000..9efee1c --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/service/charge/vo/RetailOrderDailyChargingReportVo.java @@ -0,0 +1,23 @@ +package com.syjiaer.clinic.server.service.charge.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Data +public class RetailOrderDailyChargingReportVo { + //总金额 + private BigDecimal totalMoney; + //总成本 + private BigDecimal totalCost; + //毛利 + private BigDecimal grossMargin; + //毛利率 + private String grossProfitRate; + //订单量 + private Integer orderVolume; + //支付方式 + private PaymentMethodVo paymentMethodVo; + +} diff --git a/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java b/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java index 3f19030..c21c058 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java @@ -97,12 +97,14 @@ public class MedicalRecordService extends BaseService { String code = StringUtil.getCode("ZD"); LocalDateTime now = LocalDateTime.now(); BeanUtils.copyProperties(saveDto, diagnosis); + diagnosis.setStatus(0); if (diagnosis.getId() == null){ diagnosis.setCode(code); diagnosis.setCreateTime(now); }else { code = diagnosis.getCode(); } + diagnosisMapper.insertOrUpdate(diagnosis); //病例表 @@ -147,14 +149,6 @@ public class MedicalRecordService extends BaseService { diagnosisMedicalGoodsListMapper.insert(goodsLists); - //添加收费单 -// saveDto.setId(medicalRecordId); -// chargeService.save(saveDto); - - - - - } /** diff --git a/src/main/java/com/syjiaer/clinic/server/service/social/SocialDirectoryService.java b/src/main/java/com/syjiaer/clinic/server/service/social/SocialDirectoryService.java index 95b7ddd..c3cc181 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/social/SocialDirectoryService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/social/SocialDirectoryService.java @@ -143,12 +143,15 @@ public class SocialDirectoryService extends BaseService { } } - + if (next_version_name.isEmpty()){ + return next_version_name; + } + socialDirectoryVersionService.saveVersion(type, version_name, list.get(0).getVersionName(), list.size()); if(list.isEmpty()){ return null; } socialDirectoryMapper.insert(list, 100); - socialDirectoryVersionService.saveVersion(type, version_name, list.get(0).getVersionName(), list.size()); + return next_version_name; } diff --git a/src/main/java/com/syjiaer/clinic/server/service/statistics/StatisticsService.java b/src/main/java/com/syjiaer/clinic/server/service/statistics/StatisticsService.java index abb47f9..f3a848d 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/statistics/StatisticsService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/statistics/StatisticsService.java @@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.syjiaer.clinic.server.common.enums.GoodsTypeEnum; import com.syjiaer.clinic.server.common.enums.RetailOrderPayTypeEnum; import com.syjiaer.clinic.server.common.enums.RetailOrderStatusEnum; +import com.syjiaer.clinic.server.common.util.DateUtil; import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList; import com.syjiaer.clinic.server.entity.charge.ChargeItemList; import com.syjiaer.clinic.server.entity.charge.ChargeOrder; import com.syjiaer.clinic.server.entity.statistics.GoodsTypeRevenue; import com.syjiaer.clinic.server.entity.statistics.PayTypeRevenue; +import com.syjiaer.clinic.server.entity.statistics.PersonPayOverviewVo; import com.syjiaer.clinic.server.entity.statistics.RevenueOverviewVo; import com.syjiaer.clinic.server.mapper.charge.ChargeGoodsListMapper; import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper; @@ -17,10 +19,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; @Service public class StatisticsService extends BaseService { @@ -90,4 +91,43 @@ public class StatisticsService extends BaseService { } + public PersonPayOverviewVo getPersonPayOverview(LocalDateTime beginTime, LocalDateTime endTime) { + + +// QueryWrapper vipQuery = new QueryWrapper<>(); +// vipQuery.select("create_date,sum(total_price)"); +// vipQuery.ge("pay_time", beginTime); +// vipQuery.le("pay_time", endTime); +// +// vipQuery.groupBy("create_date"); +// vipQuery.orderByAsc("create_date"); +// vipQuery.isNotNull("vip_id"); +// List> vipMaps = chargeOrderMapper.selectMaps(vipQuery); + QueryWrapper commonQuery = new QueryWrapper<>(); + commonQuery.select("create_date,sum(total_price)"); + commonQuery.ge("pay_time", beginTime); + commonQuery.le("pay_time", endTime); + + commonQuery.groupBy("create_date"); + commonQuery.orderByAsc("create_date"); +// commonQuery.isNull("vip_id"); + List> commonMaps = chargeOrderMapper.selectMaps(commonQuery); + List dateList = DateUtil.getDatesBetween(beginTime, endTime); + Map tempMap = new TreeMap<>(); + for (LocalDate date : dateList) { + tempMap.put(date.toString(), BigDecimal.ZERO); + } +// for (Map map : vipMaps) { +// tempMap.put(map.get("create_date").toString(), (BigDecimal) map.get("sum")); +// } + PersonPayOverviewVo personPayOverview = new PersonPayOverviewVo(); + personPayOverview.setDateList(dateList.stream().map(LocalDate::toString).toList()); +// personPayOverview.setVipPrice(new ArrayList<>(tempMap.values())); + for (Map map : commonMaps) { + tempMap.put(map.get("create_date").toString(), (BigDecimal) map.get("sum")); + } + personPayOverview.setCommonPrice(new ArrayList<>(tempMap.values())); + return personPayOverview; + + } }