From d72d88f9e19ead4bbc2f69c4f5fbe66b1edbdc31 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 10 十月 2025 18:16:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java |  121 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 117 insertions(+), 4 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 aaa4d00..72a7925 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,17 +1,27 @@
 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.TSysOrderGoodsMapper;
-import com.ruoyi.system.mapper.TSysOrderMapper;
-import com.ruoyi.system.model.TSysOrder;
-import com.ruoyi.system.model.TSysOrderGoods;
+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.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;
 
@@ -29,6 +39,24 @@
     @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);
@@ -43,4 +71,89 @@
         }
         return this.baseMapper.queryListByAppUserId(id);
     }
+
+    @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());
+            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);
+        }
+
+    }
 }

--
Gitblit v1.7.1