From 453ee097563df5788f96e102b38249f0ca70d82a Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 14 十月 2025 18:41:54 +0800
Subject: [PATCH] 诊所和供应商首页统计
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 174 insertions(+), 2 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java
index fa46e03..ebb9ffb 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java
@@ -1,10 +1,31 @@
package com.ruoyi.system.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.system.mapper.TSysOrderMapper;
-import com.ruoyi.system.model.TSysOrder;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.system.dto.TSysOrderDto;
+import com.ruoyi.system.dto.TSysOrderNextDto;
+import com.ruoyi.system.mapper.*;
+import com.ruoyi.system.model.*;
+import com.ruoyi.system.query.TSysOrderQuery;
+import com.ruoyi.system.service.TCrmClinicService;
+import com.ruoyi.system.service.TErpClinicOutboundService;
import com.ruoyi.system.service.TSysOrderService;
+import com.ruoyi.system.vo.ClinicSalesStatisticsGoodsCountVO;
+import com.ruoyi.system.vo.ClinicSalesStatisticsGoodsTypeVO;
+import com.ruoyi.system.vo.TSysOrderPageVo;
+import com.ruoyi.system.vo.TSysOrderVO;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
/**
* <p>
@@ -17,4 +38,155 @@
@Service
public class TSysOrderServiceImpl extends ServiceImpl<TSysOrderMapper, TSysOrder> implements TSysOrderService {
+ @Autowired
+ private TSysOrderGoodsMapper sysOrderGoodsMapper;
+
+ @Resource
+ private TErpClinicWarehousingBatchMapper erpClinicWarehousingBatchMapper;
+
+ @Resource
+ private TErpClinicOutboundGoodsMapper erpClinicOutboundGoodsMapper;
+
+ @Resource
+ private TErpGoodsMapper erpGoodsMapper;
+
+ @Resource
+ private TErpGoodsTypeMapper erpGoodsTypeMapper;
+
+ @Resource
+ private TErpGoodsUnitMapper erpGoodsUnitMapper;
+
+ @Resource
+ private TErpClinicOutboundMapper erpClinicOutboundMapper;
+
+ @Override
+ public List<TSysOrderVO> queryListByAppUserId(String id) {
+ List<TSysOrderVO> sysOrderVOS = this.baseMapper.queryListByAppUserId(id);
+ if(CollectionUtils.isEmpty(sysOrderVOS)){
+ return sysOrderVOS;
+ }
+ List<String> orderIds = sysOrderVOS.stream().map(TSysOrderVO::getId).collect(Collectors.toList());
+ List<TSysOrderGoods> sysOrderGoodsList = sysOrderGoodsMapper.selectList(Wrappers.lambdaQuery(TSysOrderGoods.class)
+ .in(TSysOrderGoods::getOrderId, orderIds));
+ for (TSysOrderVO sysOrderVO : sysOrderVOS) {
+ sysOrderVO.setSysOrderGoods(sysOrderGoodsList.stream().filter(sysOrderGoods -> sysOrderGoods.getOrderId().equals(sysOrderVO.getId())).collect(Collectors.toList()));
+ }
+ return sysOrderVOS;
+ }
+
+ @Override
+ public PageInfo<TSysOrderPageVo> pageList(TSysOrderQuery query) {
+ PageInfo<TSysOrderPageVo> page = new PageInfo<>(query.getPageNum(), query.getPageSize());
+ String sTime =null;
+ String eTime = null;
+ if(query.getTime() != null && !query.getTime().isEmpty()){
+ String[] split = query.getTime().split(" - ");
+ sTime = split[0] + " 00:00:00";
+ eTime = split[1] + " 23:59:59";
+ }
+ List<TSysOrderPageVo> sysOrderPageVOS = this.baseMapper.pageList(page, query,sTime,eTime);
+ page.setRecords(sysOrderPageVOS);
+ return page;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void add(TSysOrderDto dto, TCrmClinic crmClinic) {
+ // 判断库存够不够 添加订单 添加订单二级 出库记录
+ List<TSysOrderNextDto> dtoList = dto.getDtoList();
+ ArrayList<TSysOrderGoods> tSysOrderGoods = new ArrayList<>();
+ ArrayList<TErpClinicOutboundGoods> erpClinicOutboundGoods = new ArrayList<>();
+
+ for (TSysOrderNextDto sysOrderNextDto : dtoList) {
+ TErpClinicWarehousingBatch tErpClinicWarehousingBatch = erpClinicWarehousingBatchMapper.selectById(sysOrderNextDto.getBatchId());
+ // 找出这个批次出库多少
+ List<TErpClinicOutboundGoods> tErpClinicOutboundGoods = erpClinicOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpClinicOutboundGoods>().eq(TErpClinicOutboundGoods::getWarehousingBatchId, sysOrderNextDto.getBatchId()));
+ int count = tErpClinicOutboundGoods.stream().mapToInt(TErpClinicOutboundGoods::getOutboundCount).sum();
+ if(tErpClinicWarehousingBatch.getPurchaseCount() < count + sysOrderNextDto.getNum()){
+ throw new RuntimeException("库存不足");
+ }
+ TErpGoods goods = erpGoodsMapper.selectById(tErpClinicWarehousingBatch.getGoodsId());
+ TSysOrderGoods tSysOrderGoods1 = new TSysOrderGoods();
+ tSysOrderGoods1.setGoodsName(goods.getGoodsName());
+ TErpGoodsType tErpGoodsType = erpGoodsTypeMapper.selectById(goods.getTypeId());
+ tSysOrderGoods1.setTypeName(tErpGoodsType.getTypeName());
+ tSysOrderGoods1.setQuasiNumber(goods.getQuasiNumber());
+ TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(goods.getPackingUnitId());
+ tSysOrderGoods1.setGoodsUnit(tErpGoodsUnit.getUnitName());
+ tSysOrderGoods1.setSaleCount(sysOrderNextDto.getNum());
+ tSysOrderGoods1.setSaleAmount(goods.getSalesAmount());
+ tSysOrderGoods1.setBatchId(tErpClinicWarehousingBatch.getId());
+ tSysOrderGoods1.setBatchNumber(tErpClinicWarehousingBatch.getBatchNumber());
+ tSysOrderGoods1.setRemainingQuantity(sysOrderNextDto.getRemainingQuantity());
+ tSysOrderGoods1.setGoodsId(goods.getId());
+ tSysOrderGoods.add(tSysOrderGoods1);
+
+
+ TErpClinicOutboundGoods tErpClinicOutboundGoods1 = new TErpClinicOutboundGoods();
+ tErpClinicOutboundGoods1.setWarehousingId(tErpClinicWarehousingBatch.getWarehousingId());
+ tErpClinicOutboundGoods1.setWarehousingBatchId(tErpClinicWarehousingBatch.getId());
+ tErpClinicOutboundGoods1.setOutboundCount(sysOrderNextDto.getNum());
+ tErpClinicOutboundGoods1.setGoodsId(goods.getId());
+ tErpClinicOutboundGoods1.setTotalPrice(sysOrderNextDto.getSaleAmount().multiply(BigDecimal.valueOf(sysOrderNextDto.getNum())));
+ erpClinicOutboundGoods.add(tErpClinicOutboundGoods1);
+
+ }
+
+ TSysOrder tSysOrder = new TSysOrder();
+ tSysOrder.setAppUserId(dto.getAppUserId());
+ tSysOrder.setClinicId(crmClinic.getId());
+ tSysOrder.setInspectionId(dto.getInspectionId());
+ tSysOrder.setTotalMoney(dto.getTotalMoney());
+ tSysOrder.setCheckTime(dto.getCheckTime());
+ tSysOrder.setOrderNumber(System.currentTimeMillis() + "");
+ this.save(tSysOrder);
+ for (TSysOrderGoods tSysOrderGood : tSysOrderGoods) {
+ tSysOrderGood.setOrderId(tSysOrder.getId());
+ sysOrderGoodsMapper.insert(tSysOrderGood);
+ }
+
+ TErpClinicOutbound tErpClinicOutbound = new TErpClinicOutbound();
+ tErpClinicOutbound.setClinicId(crmClinic.getId());
+ tErpClinicOutbound.setOutboundType(7);
+ tErpClinicOutbound.setOrderNumber(tSysOrder.getOrderNumber());
+ tErpClinicOutbound.setTotalMoney(dto.getTotalMoney());
+ tErpClinicOutbound.setOutboundNumber("G"+System.currentTimeMillis());
+ erpClinicOutboundMapper.insert(tErpClinicOutbound);
+
+ for (TErpClinicOutboundGoods erpClinicOutboundGood : erpClinicOutboundGoods) {
+ erpClinicOutboundGood.setOutboundId(tErpClinicOutbound.getId());
+ erpClinicOutboundGoodsMapper.insert(erpClinicOutboundGood);
+ }
+
+ }
+
+ @Override
+ public Integer clinicSalesStatisticsCount(String clinicId) {
+ return this.baseMapper.clinicSalesStatisticsCount(clinicId);
+ }
+
+ @Override
+ public Integer clinicSalesStatisticsTypeCount(String clinicId) {
+ return this.baseMapper.clinicSalesStatisticsTypeCount(clinicId);
+ }
+
+ @Override
+ public BigDecimal clinicSalesStatisticsMoney(String clinicId, String startTime, String endTime) {
+ return this.baseMapper.clinicSalesStatisticsMoney(clinicId,startTime,endTime);
+ }
+
+ @Override
+ public List<ClinicSalesStatisticsGoodsTypeVO> supplierSalesStatisticsGoodsType(String clinicId, String startTime, String endTime) {
+ return this.baseMapper.supplierSalesStatisticsGoodsType(clinicId,startTime,endTime);
+ }
+
+ @Override
+ public List<ClinicSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCount(String clinicId, String startTime, String endTime, String goodsName) {
+ return this.baseMapper.supplierSalesStatisticsGoodsCount(clinicId,startTime,endTime,goodsName);
+ }
+
+ @Override
+ public List<ClinicSalesStatisticsGoodsCountVO> supplierSalesStatisticsGoodsCountMonth(String clinicId, String startTime, String endTime, String goodsName) {
+ return this.baseMapper.supplierSalesStatisticsGoodsCountMonth(clinicId,startTime,endTime,goodsName);
+ }
}
--
Gitblit v1.7.1