deb
This commit is contained in:
parent
253190d255
commit
6b375c519b
|
|
@ -1,15 +1,20 @@
|
||||||
package com.syjiaer.clinic.server.controller.charge;
|
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.common.vo.Result;
|
||||||
import com.syjiaer.clinic.server.controller.BaseController;
|
import com.syjiaer.clinic.server.controller.BaseController;
|
||||||
import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
|
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.ChargeQuery;
|
||||||
import com.syjiaer.clinic.server.entity.charge.dto.ChargeSaveDto;
|
import com.syjiaer.clinic.server.entity.charge.dto.ChargeSaveDto;
|
||||||
import com.syjiaer.clinic.server.service.charge.ChargeService;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/charge")
|
@RequestMapping("/charge")
|
||||||
public class ChargeController extends BaseController {
|
public class ChargeController extends BaseController {
|
||||||
|
|
@ -57,4 +62,18 @@ public class ChargeController extends BaseController {
|
||||||
return success();
|
return success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 每日收费报表
|
||||||
|
*/
|
||||||
|
@RequestMapping("/dailyChargingReport")
|
||||||
|
public Result<Map<String, RetailOrderDailyChargingReportVo>> 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));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,45 +61,13 @@ public class StatisticsController extends BaseController {
|
||||||
|
|
||||||
@RequestMapping("getPersonPayOverview")
|
@RequestMapping("getPersonPayOverview")
|
||||||
public Result<PersonPayOverviewVo> getPersonPayOverview() {
|
public Result<PersonPayOverviewVo> getPersonPayOverview() {
|
||||||
// String begin = parmsUtil.getString("beginTime", "开始时间为空");
|
String begin = parmsUtil.getString("beginTime", "开始时间为空");
|
||||||
// String end = parmsUtil.getString("endTime", "结束时间为空");
|
String end = parmsUtil.getString("endTime", "结束时间为空");
|
||||||
// LocalDateTime beginTime = DateUtil.getDateTime(begin);
|
LocalDateTime beginTime = DateUtil.getDateTime(begin);
|
||||||
// LocalDateTime endTime = DateUtil.getDateTime(end);
|
LocalDateTime endTime = DateUtil.getDateTime(end);
|
||||||
// QueryWrapper<RetailOrder> vipQuery = new QueryWrapper<>();
|
PersonPayOverviewVo personPayOverviewVo = statisticsService.getPersonPayOverview(beginTime, endTime);
|
||||||
// vipQuery.select("create_date,sum(total_price)");
|
return success(personPayOverviewVo);
|
||||||
// vipQuery.ge("pay_time", beginTime);
|
|
||||||
// vipQuery.le("pay_time", endTime);
|
|
||||||
//
|
|
||||||
// vipQuery.groupBy("create_date");
|
|
||||||
// vipQuery.orderByAsc("create_date");
|
|
||||||
// vipQuery.isNotNull("vip_id");
|
|
||||||
// List<Map<String, Object>> vipMaps = retailOrderService.listMaps(vipQuery);
|
|
||||||
// QueryWrapper<RetailOrder> 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<Map<String, Object>> commonMaps = retailOrderService.listMaps(commonQuery);
|
|
||||||
// List<LocalDate> dateList = DateUtil.getDatesBetween(beginTime, endTime);
|
|
||||||
// Map<Object, BigDecimal> tempMap = new HashMap<>();
|
|
||||||
// for (LocalDate date : dateList) {
|
|
||||||
// tempMap.put(date.toString(), BigDecimal.ZERO);
|
|
||||||
// }
|
|
||||||
// for (Map<String, Object> 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<String, Object> map : commonMaps) {
|
|
||||||
// tempMap.put(map.get("create_date").toString(), (BigDecimal) map.get("sum"));
|
|
||||||
// }
|
|
||||||
// personPayOverview.setCommonPrice(new ArrayList<>(tempMap.values()));
|
|
||||||
|
|
||||||
return success();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
@ -18,7 +19,7 @@ import lombok.experimental.Accessors;
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author NiuZiYuan
|
* @author NiuZiYuan
|
||||||
* @since 2025-04-24
|
* @since 2025-04-27
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
|
|
@ -66,4 +67,10 @@ public class ChargeOrder implements Serializable {
|
||||||
|
|
||||||
@ApiModelProperty("诊断code")
|
@ApiModelProperty("诊断code")
|
||||||
private String diagnosisCode;
|
private String diagnosisCode;
|
||||||
|
|
||||||
|
@ApiModelProperty("创建日期")
|
||||||
|
private LocalDate createDate;
|
||||||
|
|
||||||
|
@ApiModelProperty("总成本")
|
||||||
|
private BigDecimal totalCost;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ import lombok.experimental.Accessors;
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author NiuZiYuan
|
* @author NiuZiYuan
|
||||||
* @since 2025-04-24
|
* @since 2025-04-27
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
|
|
@ -42,4 +42,7 @@ public class Diagnosis implements Serializable {
|
||||||
|
|
||||||
@ApiModelProperty("创建时间")
|
@ApiModelProperty("创建时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("0待收费 1已收费")
|
||||||
|
private Integer status;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.SocialDirectoryMapper;
|
||||||
import com.syjiaer.clinic.server.mapper.social.SocialItemMapper;
|
import com.syjiaer.clinic.server.mapper.social.SocialItemMapper;
|
||||||
import com.syjiaer.clinic.server.service.BaseService;
|
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.inventory.InventoryService;
|
||||||
import com.syjiaer.clinic.server.service.patient.PatientRegistrationService;
|
import com.syjiaer.clinic.server.service.patient.PatientRegistrationService;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
|
@ -55,10 +57,13 @@ import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ChargeService extends BaseService {
|
public class ChargeService extends BaseService {
|
||||||
|
|
@ -97,9 +102,9 @@ public class ChargeService extends BaseService {
|
||||||
|
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ChargeOrder save(ChargeSaveDto dto){
|
public ChargeOrder save(ChargeSaveDto dto) {
|
||||||
ChargeOrder dbOrder = chargeOrderMapper.selectById(dto.getId());
|
ChargeOrder dbOrder = chargeOrderMapper.selectById(dto.getId());
|
||||||
if (dbOrder != null){
|
if (dbOrder != null) {
|
||||||
//清除已有的订单
|
//清除已有的订单
|
||||||
chargeItemListMapper.delete(new QueryWrapper<ChargeItemList>().eq("charge_order_code", dbOrder.getCode()));
|
chargeItemListMapper.delete(new QueryWrapper<ChargeItemList>().eq("charge_order_code", dbOrder.getCode()));
|
||||||
chargeGoodsListMapper.delete(new QueryWrapper<ChargeGoodsList>().eq("charge_order_code", dbOrder.getCode()));
|
chargeGoodsListMapper.delete(new QueryWrapper<ChargeGoodsList>().eq("charge_order_code", dbOrder.getCode()));
|
||||||
|
|
@ -113,7 +118,7 @@ public class ChargeService extends BaseService {
|
||||||
BigDecimal preTotalPrice = BigDecimal.ZERO;
|
BigDecimal preTotalPrice = BigDecimal.ZERO;
|
||||||
BigDecimal totalPrice = BigDecimal.ZERO;
|
BigDecimal totalPrice = BigDecimal.ZERO;
|
||||||
List<ChargeItemList> chargeServiceLists = new ArrayList<>();
|
List<ChargeItemList> chargeServiceLists = new ArrayList<>();
|
||||||
for (DiagnosisMedicalItemList service : dto.getItemDetail()){
|
for (DiagnosisMedicalItemList service : dto.getItemDetail()) {
|
||||||
ChargeItemList itemList = new ChargeItemList();
|
ChargeItemList itemList = new ChargeItemList();
|
||||||
String fsn = StringUtil.getCode("FSN");
|
String fsn = StringUtil.getCode("FSN");
|
||||||
itemList.setChargeOrderCode(code);
|
itemList.setChargeOrderCode(code);
|
||||||
|
|
@ -136,10 +141,10 @@ public class ChargeService extends BaseService {
|
||||||
chargeItemListMapper.insert(chargeServiceLists);
|
chargeItemListMapper.insert(chargeServiceLists);
|
||||||
|
|
||||||
List<ChargeGoodsList> chargeGoodsLists = new ArrayList<>();
|
List<ChargeGoodsList> chargeGoodsLists = new ArrayList<>();
|
||||||
for (ChargeGoodsListVo goods : dto.getGoodsDetail()){
|
for (ChargeGoodsListVo goods : dto.getGoodsDetail()) {
|
||||||
ChargeGoodsList itemList = new ChargeGoodsList();
|
ChargeGoodsList itemList = new ChargeGoodsList();
|
||||||
Goods dbGoods = goodsMapper.selectById(goods.getId());
|
Goods dbGoods = goodsMapper.selectById(goods.getId());
|
||||||
if (dbGoods == null){
|
if (dbGoods == null) {
|
||||||
throw new RuntimeException("商品不存在");
|
throw new RuntimeException("商品不存在");
|
||||||
}
|
}
|
||||||
String fsn = StringUtil.getCode("FSN");
|
String fsn = StringUtil.getCode("FSN");
|
||||||
|
|
@ -151,7 +156,7 @@ public class ChargeService extends BaseService {
|
||||||
BigDecimal subTotalPrice = goods.getSelectedPrice().multiply(BigDecimal.valueOf(goods.getSelectedNum()));
|
BigDecimal subTotalPrice = goods.getSelectedPrice().multiply(BigDecimal.valueOf(goods.getSelectedNum()));
|
||||||
itemList.setSubTotalPrice(subTotalPrice);
|
itemList.setSubTotalPrice(subTotalPrice);
|
||||||
itemList.setTrdnFlag(true);
|
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.setTrdnFlag(false);
|
||||||
}
|
}
|
||||||
itemList.setUnit(goods.getSelectedUnit());
|
itemList.setUnit(goods.getSelectedUnit());
|
||||||
|
|
@ -159,6 +164,7 @@ public class ChargeService extends BaseService {
|
||||||
itemList.setFeedetlSn(fsn);
|
itemList.setFeedetlSn(fsn);
|
||||||
itemList.setCreateDate(nowLocalDate);
|
itemList.setCreateDate(nowLocalDate);
|
||||||
itemList.setCreateTime(nowLocalDateTime);
|
itemList.setCreateTime(nowLocalDateTime);
|
||||||
|
itemList.setType(dbGoods.getType());
|
||||||
chargeGoodsLists.add(itemList);
|
chargeGoodsLists.add(itemList);
|
||||||
preTotalPrice = preTotalPrice.add(subTotalPrice);
|
preTotalPrice = preTotalPrice.add(subTotalPrice);
|
||||||
totalPrice = totalPrice.add(subTotalPrice);
|
totalPrice = totalPrice.add(subTotalPrice);
|
||||||
|
|
@ -170,6 +176,7 @@ public class ChargeService extends BaseService {
|
||||||
chargeOrder.setPreTotalPrice(preTotalPrice);
|
chargeOrder.setPreTotalPrice(preTotalPrice);
|
||||||
chargeOrder.setTotalPrice(totalPrice);
|
chargeOrder.setTotalPrice(totalPrice);
|
||||||
chargeOrder.setCreateDatetime(nowLocalDateTime);
|
chargeOrder.setCreateDatetime(nowLocalDateTime);
|
||||||
|
chargeOrder.setCreateDate(nowLocalDate);
|
||||||
chargeOrder.setStatus(RetailOrderStatusEnum.UNFINISHED.getCode());
|
chargeOrder.setStatus(RetailOrderStatusEnum.UNFINISHED.getCode());
|
||||||
chargeOrder.setPatientId(dto.getPatientInfo().getId());
|
chargeOrder.setPatientId(dto.getPatientInfo().getId());
|
||||||
chargeOrder.setDiagnosisCode(dto.getCode());
|
chargeOrder.setDiagnosisCode(dto.getCode());
|
||||||
|
|
@ -181,18 +188,18 @@ public class ChargeService extends BaseService {
|
||||||
|
|
||||||
public Page<ChargeDetailVo> pageList(ChargeQuery query) {
|
public Page<ChargeDetailVo> pageList(ChargeQuery query) {
|
||||||
QueryWrapper<ChargeOrder> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<ChargeOrder> queryWrapper = new QueryWrapper<>();
|
||||||
if (query.getPageSize() == null || query.getPageSize() == 0){
|
if (query.getPageSize() == null || query.getPageSize() == 0) {
|
||||||
query.setPageSize(Constants.DetailPageSize);
|
query.setPageSize(Constants.DetailPageSize);
|
||||||
}
|
}
|
||||||
if (query.getPageNum() == null || query.getPageNum() == 0){
|
if (query.getPageNum() == null || query.getPageNum() == 0) {
|
||||||
query.setPageNum(1);
|
query.setPageNum(1);
|
||||||
}
|
}
|
||||||
if (query.getPatientName() != null){
|
if (query.getPatientName() != null) {
|
||||||
queryWrapper.like("patient_name",query.getPatientName());
|
queryWrapper.like("patient_name", query.getPatientName());
|
||||||
}
|
}
|
||||||
Page<ChargeOrder> orderPage = pageHelper(query.getPageNum(), query.getPageSize(), queryWrapper, chargeOrderMapper, "create_datetime", false);
|
Page<ChargeOrder> orderPage = pageHelper(query.getPageNum(), query.getPageSize(), queryWrapper, chargeOrderMapper, "create_datetime", false);
|
||||||
List<ChargeDetailVo> voList = new ArrayList<>();
|
List<ChargeDetailVo> voList = new ArrayList<>();
|
||||||
for (ChargeOrder chargeOrder : orderPage.getList()){
|
for (ChargeOrder chargeOrder : orderPage.getList()) {
|
||||||
ChargeDetailVo detailVo = new ChargeDetailVo();
|
ChargeDetailVo detailVo = new ChargeDetailVo();
|
||||||
BeanUtils.copyProperties(chargeOrder, detailVo);
|
BeanUtils.copyProperties(chargeOrder, detailVo);
|
||||||
detailVo.setPatientInfo(patientInfoMapper.selectById(chargeOrder.getPatientId()));
|
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);
|
ChargeOrder order = chargeOrderMapper.selectById(id);
|
||||||
if (order == null){
|
if (order == null) {
|
||||||
throw new MessageException("订单不存在");
|
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("订单状态错误");
|
throw new MessageException("订单状态错误");
|
||||||
}
|
}
|
||||||
|
//更新诊断状态
|
||||||
|
Diagnosis updateDiagnosis = new Diagnosis();
|
||||||
|
updateDiagnosis.setId(diagnosis.getId());
|
||||||
|
updateDiagnosis.setStatus(1);
|
||||||
|
//完成订单
|
||||||
ChargeOrder updateOrder = new ChargeOrder();
|
ChargeOrder updateOrder = new ChargeOrder();
|
||||||
updateOrder.setId(id);
|
updateOrder.setId(id);
|
||||||
updateOrder.setStatus(RetailOrderStatusEnum.FINISHED.getCode());
|
updateOrder.setStatus(RetailOrderStatusEnum.FINISHED.getCode());
|
||||||
|
|
@ -250,9 +266,9 @@ public class ChargeService extends BaseService {
|
||||||
for (ChargeGoodsListVo goodsList : goodsLists) {
|
for (ChargeGoodsListVo goodsList : goodsLists) {
|
||||||
Integer wholeNumber = 0;
|
Integer wholeNumber = 0;
|
||||||
Integer fragmentNumber = 0;
|
Integer fragmentNumber = 0;
|
||||||
if (goodsList.getPackagingUnit().equals(goodsList.getSelectedUnit())){
|
if (goodsList.getPackagingUnit().equals(goodsList.getSelectedUnit())) {
|
||||||
wholeNumber = goodsList.getSelectedNum();
|
wholeNumber = goodsList.getSelectedNum();
|
||||||
}else {
|
} else {
|
||||||
fragmentNumber = goodsList.getSelectedNum();
|
fragmentNumber = goodsList.getSelectedNum();
|
||||||
}
|
}
|
||||||
List<InventoryLog> logs = inventoryService.adjustNumberByGoodsId(goodsList.getId(), wholeNumber, fragmentNumber, "订单完成");
|
List<InventoryLog> logs = inventoryService.adjustNumberByGoodsId(goodsList.getId(), wholeNumber, fragmentNumber, "订单完成");
|
||||||
|
|
@ -265,6 +281,7 @@ public class ChargeService extends BaseService {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void uploadCostDetails(String changeOrderCode) {
|
public void uploadCostDetails(String changeOrderCode) {
|
||||||
ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode);
|
ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode);
|
||||||
Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode());
|
Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode());
|
||||||
|
|
@ -280,7 +297,7 @@ public class ChargeService extends BaseService {
|
||||||
|
|
||||||
IM2204 im2204 = new IM2204();
|
IM2204 im2204 = new IM2204();
|
||||||
List<IM2204.Feedetail> feedetails = new ArrayList<>();
|
List<IM2204.Feedetail> feedetails = new ArrayList<>();
|
||||||
for (ChargeGoodsList goodsList : goodsLists){
|
for (ChargeGoodsList goodsList : goodsLists) {
|
||||||
IM2204.Feedetail feedetail = new IM2204.Feedetail();
|
IM2204.Feedetail feedetail = new IM2204.Feedetail();
|
||||||
feedetail.setFeedetl_sn(goodsList.getFeedetlSn());
|
feedetail.setFeedetl_sn(goodsList.getFeedetlSn());
|
||||||
feedetail.setMdtrt_id(registration.getMdtrtId());
|
feedetail.setMdtrt_id(registration.getMdtrtId());
|
||||||
|
|
@ -303,7 +320,7 @@ public class ChargeService extends BaseService {
|
||||||
feedetail.setHosp_appr_flag("1");
|
feedetail.setHosp_appr_flag("1");
|
||||||
feedetails.add(feedetail);
|
feedetails.add(feedetail);
|
||||||
}
|
}
|
||||||
for (ChargeItemList itemList : itemLists){
|
for (ChargeItemList itemList : itemLists) {
|
||||||
IM2204.Feedetail feedetail = new IM2204.Feedetail();
|
IM2204.Feedetail feedetail = new IM2204.Feedetail();
|
||||||
feedetail.setFeedetl_sn(itemList.getFeedetlSn());
|
feedetail.setFeedetl_sn(itemList.getFeedetlSn());
|
||||||
feedetail.setMdtrt_id(registration.getMdtrtId());
|
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);
|
ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode);
|
||||||
Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode());
|
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);
|
ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode);
|
||||||
Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode());
|
Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode());
|
||||||
|
|
||||||
|
|
@ -385,4 +402,66 @@ public class ChargeService extends BaseService {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收费日报
|
||||||
|
*
|
||||||
|
* @param startDateTime
|
||||||
|
* @param endDateTime
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Map<String, RetailOrderDailyChargingReportVo> dailyChargingReport(LocalDateTime startDateTime, LocalDateTime endDateTime) {
|
||||||
|
Map<String, RetailOrderDailyChargingReportVo> result = new HashMap<>();
|
||||||
|
QueryWrapper<ChargeOrder> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.between("create_datetime", startDateTime, endDateTime)
|
||||||
|
.eq("status", RetailOrderStatusEnum.FINISHED.getCode())
|
||||||
|
.orderByDesc("create_datetime");
|
||||||
|
List<ChargeOrder> 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -97,12 +97,14 @@ public class MedicalRecordService extends BaseService {
|
||||||
String code = StringUtil.getCode("ZD");
|
String code = StringUtil.getCode("ZD");
|
||||||
LocalDateTime now = LocalDateTime.now();
|
LocalDateTime now = LocalDateTime.now();
|
||||||
BeanUtils.copyProperties(saveDto, diagnosis);
|
BeanUtils.copyProperties(saveDto, diagnosis);
|
||||||
|
diagnosis.setStatus(0);
|
||||||
if (diagnosis.getId() == null){
|
if (diagnosis.getId() == null){
|
||||||
diagnosis.setCode(code);
|
diagnosis.setCode(code);
|
||||||
diagnosis.setCreateTime(now);
|
diagnosis.setCreateTime(now);
|
||||||
}else {
|
}else {
|
||||||
code = diagnosis.getCode();
|
code = diagnosis.getCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
diagnosisMapper.insertOrUpdate(diagnosis);
|
diagnosisMapper.insertOrUpdate(diagnosis);
|
||||||
|
|
||||||
//病例表
|
//病例表
|
||||||
|
|
@ -147,14 +149,6 @@ public class MedicalRecordService extends BaseService {
|
||||||
|
|
||||||
diagnosisMedicalGoodsListMapper.insert(goodsLists);
|
diagnosisMedicalGoodsListMapper.insert(goodsLists);
|
||||||
|
|
||||||
//添加收费单
|
|
||||||
// saveDto.setId(medicalRecordId);
|
|
||||||
// chargeService.save(saveDto);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -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()){
|
if(list.isEmpty()){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
socialDirectoryMapper.insert(list, 100);
|
socialDirectoryMapper.insert(list, 100);
|
||||||
socialDirectoryVersionService.saveVersion(type, version_name, list.get(0).getVersionName(), list.size());
|
|
||||||
return next_version_name;
|
return next_version_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.GoodsTypeEnum;
|
||||||
import com.syjiaer.clinic.server.common.enums.RetailOrderPayTypeEnum;
|
import com.syjiaer.clinic.server.common.enums.RetailOrderPayTypeEnum;
|
||||||
import com.syjiaer.clinic.server.common.enums.RetailOrderStatusEnum;
|
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.ChargeGoodsList;
|
||||||
import com.syjiaer.clinic.server.entity.charge.ChargeItemList;
|
import com.syjiaer.clinic.server.entity.charge.ChargeItemList;
|
||||||
import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
|
import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
|
||||||
import com.syjiaer.clinic.server.entity.statistics.GoodsTypeRevenue;
|
import com.syjiaer.clinic.server.entity.statistics.GoodsTypeRevenue;
|
||||||
import com.syjiaer.clinic.server.entity.statistics.PayTypeRevenue;
|
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.entity.statistics.RevenueOverviewVo;
|
||||||
import com.syjiaer.clinic.server.mapper.charge.ChargeGoodsListMapper;
|
import com.syjiaer.clinic.server.mapper.charge.ChargeGoodsListMapper;
|
||||||
import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper;
|
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 org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class StatisticsService extends BaseService {
|
public class StatisticsService extends BaseService {
|
||||||
|
|
@ -90,4 +91,43 @@ public class StatisticsService extends BaseService {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public PersonPayOverviewVo getPersonPayOverview(LocalDateTime beginTime, LocalDateTime endTime) {
|
||||||
|
|
||||||
|
|
||||||
|
// QueryWrapper<ChargeOrder> 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<Map<String, Object>> vipMaps = chargeOrderMapper.selectMaps(vipQuery);
|
||||||
|
QueryWrapper<ChargeOrder> 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<Map<String, Object>> commonMaps = chargeOrderMapper.selectMaps(commonQuery);
|
||||||
|
List<LocalDate> dateList = DateUtil.getDatesBetween(beginTime, endTime);
|
||||||
|
Map<Object, BigDecimal> tempMap = new TreeMap<>();
|
||||||
|
for (LocalDate date : dateList) {
|
||||||
|
tempMap.put(date.toString(), BigDecimal.ZERO);
|
||||||
|
}
|
||||||
|
// for (Map<String, Object> 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<String, Object> map : commonMaps) {
|
||||||
|
tempMap.put(map.get("create_date").toString(), (BigDecimal) map.get("sum"));
|
||||||
|
}
|
||||||
|
personPayOverview.setCommonPrice(new ArrayList<>(tempMap.values()));
|
||||||
|
return personPayOverview;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue