From f41b11c958ef7d0416d194278d1fe7cd1a1e8219 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期三, 24 九月 2025 18:43:19 +0800
Subject: [PATCH] 拉卡拉支付

---
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpGoodsMapper.java                        |    7 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java       |   69 ++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpClinicWarehousingMapper.java            |   20 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousing.java                   |   10 
 ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java                |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementVo.java                          |    4 
 ruoyi-system/src/main/resources/mapper/system/TErpClinicWarehousingMapper.xml                  |   92 +++
 ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java                               |    6 
 ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml                        |    6 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpGoodsSetCommissionDto.java                 |   23 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/InventoryDto.java                              |    1 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java |  225 +++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/dto/AddProcurementDto.java                         |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/DetailProcurementVO.java                        |   33 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java          |  114 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpGoodsInventoryVO.java                       |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpClinicWarehousingController.java    |  136 +++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsService.java                      |    7 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/UpdateStatusProcurementDto.java                |   38 +
 ruoyi-system/src/main/java/com/ruoyi/system/vo/DetailProcurementNextVO.java                    |   39 +
 ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpClinicGoodsAddDto.java                     |  132 +++++
 ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml                              |   86 +++
 ruoyi-system/src/main/java/com/ruoyi/system/service/TErpClinicWarehousingService.java          |   19 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/UpdateStatusProcurementLastDto.java            |   25 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java             |  206 ++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicInventoryGoods.java                |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TErpSupplierWarehousing.java                 |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java                |   76 +++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysOrderController.java                |    9 
 29 files changed, 1,370 insertions(+), 31 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpClinicWarehousingController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpClinicWarehousingController.java
index 6cc76ad..4e7a0dd 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpClinicWarehousingController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpClinicWarehousingController.java
@@ -1,8 +1,27 @@
 package com.ruoyi.web.controller.api;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.dto.InventoryDto;
+import com.ruoyi.system.model.TCrmClinic;
+import com.ruoyi.system.model.TCrmSupplier;
+import com.ruoyi.system.query.TErpGoodsInventoryQuery;
+import com.ruoyi.system.query.TErpGoodsQuery;
+import com.ruoyi.system.query.TErpInventoryQuery;
+import com.ruoyi.system.query.ValidityPeriodWarningQuery;
+import com.ruoyi.system.service.*;
+import com.ruoyi.system.vo.*;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -16,6 +35,119 @@
 @RequestMapping("/t-erp-clinic-warehousing")
 public class TErpClinicWarehousingController {
 
+    private final TErpClinicWarehousingService erpClinicWarehousingService;
+    private final TErpGoodsService erpGoodsService;
+    private final TokenService tokenService;
+    private final TCrmClinicService crmClinicService;
+    private final TCrmSupplierService crmSupplierService;
+
+    @Autowired
+    public TErpClinicWarehousingController(TErpClinicWarehousingService erpClinicWarehousingService, TErpGoodsService erpGoodsService, TokenService tokenService,
+                                             TCrmClinicService crmClinicService,TCrmSupplierService crmSupplierService) {
+        this.erpClinicWarehousingService = erpClinicWarehousingService;
+        this.erpGoodsService = erpGoodsService;
+        this.tokenService = tokenService;
+        this.crmClinicService = crmClinicService;
+        this.crmSupplierService = crmSupplierService;
+
+    }
+
+
+
+
+    /**
+     * 获取erp问题上报管理列表
+     */
+    @ApiOperation(value = "展示获取库存分页列表")
+    @PostMapping(value = "/pageList")
+    public R<PageInfo<TErpGoodsVO>> pageList(@RequestBody TErpGoodsQuery query) {
+
+        SysUser user = tokenService.getLoginUser().getUser();
+        Integer roleType = user.getRoleType();
+        if(roleType == 4){
+            // 供应商
+            TCrmSupplier crmSupplier = crmSupplierService.getOne(Wrappers.lambdaQuery(TCrmSupplier.class)
+                    .eq(TCrmSupplier::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            query.setSupplierClinicId(crmSupplier.getId());
+        }
+        if(roleType == 5){
+            // 诊所
+            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                    .eq(TCrmClinic::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            query.setSupplierClinicId(crmClinic.getId());
+        }
+
+        return R.ok(erpClinicWarehousingService.pageList(query,user));
+    }
+
+
+
+    @ApiOperation(value = "诊所 盘点")
+    @PostMapping(value = "/pageInventoryList")
+    public R<PageInfo<PageInventoryListVo>> pageInventoryList(@RequestBody TErpInventoryQuery query) {
+        SysUser user = tokenService.getLoginUser().getUser();
+        return R.ok(erpClinicWarehousingService.pageInventoryList(query,user));
+    }
+
+
+
+
+
+    @ApiOperation(value = "诊所 盘点详情")
+    @GetMapping(value = "/detailInventory/{id}")
+    public R<List<InventoryDetailVo>> detailInventory(@PathVariable String id) {
+        SysUser user = tokenService.getLoginUser().getUser();
+        return R.ok(erpClinicWarehousingService.detailInventory(id,user));
+    }
+
+
+
+    @ApiOperation(value = "诊所 盘点 出库 商品选择")
+    @PostMapping(value = "/pageInventoryGoodsPageList")
+    public R<PageInfo<TErpGoodsInventoryVO>> pageInventoryGoodsPageList(@RequestBody @Valid TErpGoodsInventoryQuery query) {
+        SysUser user = tokenService.getLoginUser().getUser();
+        return R.ok(erpGoodsService.pageInventoryGoodsPageList1(query,user));
+    }
+
+
+
+
+    @ApiOperation(value = "诊所 有效期预警商品选择")
+    @GetMapping(value = "/pageInventoryGoodsList")
+    public R<List<TErpGoodsInventoryVO>> pageInventoryGoodsList(String warehouseId,@RequestParam(required = false)String batchId) {
+        SysUser user = tokenService.getLoginUser().getUser();
+        List<TErpGoodsInventoryVO> tErpGoodsInventoryVOS = erpGoodsService.pageInventoryGoodsList1(warehouseId, user);
+        if(batchId!=null && !"".equals(batchId)){
+            tErpGoodsInventoryVOS = tErpGoodsInventoryVOS.stream().filter(e->e.getId().equals(batchId)).collect(Collectors.toList());
+        }
+        return R.ok(tErpGoodsInventoryVOS);
+    }
+
+
+
+
+
+    @ApiOperation(value = "诊所 确认盘点")
+    @PostMapping(value = "/inventoryGoods")
+    public R<?> inventoryGoods(@RequestBody @Valid InventoryDto dto) {
+        SysUser user = tokenService.getLoginUser().getUser();
+        erpGoodsService.inventoryGoods1(dto,user);
+        return R.ok();
+    }
+
+
+
+
+    @ApiOperation(value = "诊所 有效期预警")
+    @PostMapping(value = "/validityPeriodWarning")
+    public R<PageInfo<ValidityPeriodWarningVo>> validityPeriodWarning(@RequestBody ValidityPeriodWarningQuery query) {
+        SysUser user = tokenService.getLoginUser().getUser();
+        PageInfo<ValidityPeriodWarningVo> pageInfo =erpClinicWarehousingService.validityPeriodWarning(query,user);
+        return R.ok(pageInfo);
+    }
+
 
 
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java
index 175acf9..01534bf 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java
@@ -9,16 +9,17 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.BaseModel;
+import com.ruoyi.common.core.domain.BasePage;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.utils.WebUtils;
 import com.ruoyi.framework.web.service.TokenService;
-import com.ruoyi.system.dto.TErpGoodsAddDto;
-import com.ruoyi.system.dto.TErpGoodsInfoSaveDto;
-import com.ruoyi.system.dto.TErpGoodsUpdateStatusDto;
+import com.ruoyi.system.dto.*;
 import com.ruoyi.system.importExcel.TErpGoodsExcel;
 import com.ruoyi.system.model.*;
 import com.ruoyi.system.query.TErpGoodsQuery;
@@ -93,7 +94,7 @@
     /**
      * 获取erp问题上报管理列表
      */
-    @ApiOperation(value = "供应商获取商品分页列表")
+    @ApiOperation(value = "供应商 诊所 获取商品分页列表")
     @PostMapping(value = "/pageList")
     public R<PageInfo<TErpGoodsVO>> pageList(@RequestBody TErpGoodsQuery query) {
         SysUser user = tokenService.getLoginUser().getUser();
@@ -113,6 +114,36 @@
             query.setSupplierClinicId(crmClinic.getId());
         }
         return R.ok(erpGoodsService.pageList(query,user));
+    }
+    /**
+     * 获取erp问题上报管理列表
+     */
+    @ApiOperation(value = "诊所 一键获取商品分页列表")
+    @PostMapping(value = "/pageAddList")
+    public R<Page<TErpGoods>> pageAddList(BasePage query) {
+        SysUser user = tokenService.getLoginUser().getUser();
+        Integer roleType = user.getRoleType();
+        String clinicSupplierId=null;
+        if(roleType == 5){
+            // 诊所
+            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                    .eq(TCrmClinic::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            clinicSupplierId = crmClinic.getId();
+        }
+        Page<TErpGoods> tErpGoodsPage = new Page<>(query.getPageNum(), query.getPageSize());
+
+        Page<TErpGoods> page = erpGoodsService.page(tErpGoodsPage, new LambdaQueryWrapper<TErpGoods>().eq(TErpGoods::getGoodsSource, 1).eq(BaseModel::getDisabled, 0).isNotNull(TErpGoods::getPlatformCommissionPrice).last(" NOT FIND_IN_SET(" + clinicSupplierId + ",clinic_ids)"));
+        for (TErpGoods record : page.getRecords()) {
+            TCrmSupplier byId = crmSupplierService.getById(record.getSupplierClinicId());
+            record.setSupplierName(byId.getSupplierName());
+
+
+            TErpGoodsType byId1 = erpGoodsTypeService.getById(record.getTypeId());
+            record.setTypeName(byId1.getTypeName());
+
+        }
+        return R.ok(page);
     }
 
 
@@ -149,6 +180,28 @@
         goods.setFormulationSpec(dto.getFormulationSpec());
         goods.setPackingSpec(dto.getPackingSpec());
         goods.setGoodsName(dto.getGoodsName());
+        return R.ok(erpGoodsService.save(goods));
+    }
+    @ApiOperation(value = "诊所添加商品")
+    @PostMapping(value = "/clinicAdd")
+    public R<Boolean> clinicAdd(@Validated @RequestBody TErpClinicGoodsAddDto dto) {
+        SysUser user = tokenService.getLoginUser().getUser();
+        if (erpGoodsService.isExit(dto.getGoodsIdCode(), dto.getQuasiNumber())) {
+            return R.fail("erp商品已存在");
+        }
+        Integer roleType = user.getRoleType();
+        TErpGoods goods = new TErpGoods();
+        BeanUtils.copyProperties(dto,goods);
+        if(roleType == 5){
+            // 诊所
+            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                    .eq(TCrmClinic::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            goods.setSupplierClinicId(crmClinic.getId());
+            goods.setGoodsSource(2);
+        }
+        goods.setCreateId(user.getUserId().toString());
+        goods.setGoodsIdCode(dto.getGoodsIdCode());
         return R.ok(erpGoodsService.save(goods));
     }
 
@@ -467,5 +520,20 @@
     }
 
 
+
+
+    @ApiOperation(value = "平台设置分佣")
+    @PostMapping(value = "/setCommission")
+    public R<Boolean> setCommission(@RequestBody @Valid TErpGoodsSetCommissionDto dto) {
+
+        SysUser user = tokenService.getLoginUser().getUser();
+        if(user.getRoleType()==1){
+            TErpGoods goods = erpGoodsService.getById(dto.getId());
+            goods.setClinicPurchasePrice(BigDecimal.valueOf(dto.getClinicPurchasePrice()).setScale(2,RoundingMode.HALF_UP));
+            goods.setPlatformCommissionPrice(BigDecimal.valueOf(dto.getPlatformCommissionPrice()).setScale(2,RoundingMode.HALF_UP));
+            erpGoodsService.updateById( goods);
+        }
+        return R.ok();
+    }
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
index be6b761..0dcdcb8 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
@@ -1,21 +1,22 @@
 package com.ruoyi.web.controller.api;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.lkl.laop.sdk.request.V3LabsTransPreorderRequest;
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.system.dto.AddProcurementDto;
-import com.ruoyi.system.model.TCrmClinic;
-import com.ruoyi.system.model.TCrmSupplier;
-import com.ruoyi.system.model.TErpGoods;
+import com.ruoyi.system.dto.UpdateStatusProcurementDto;
+import com.ruoyi.system.dto.UpdateStatusProcurementLastDto;
+import com.ruoyi.system.model.*;
 import com.ruoyi.system.query.TErpGoodsQuery;
 import com.ruoyi.system.query.TErpProcurementQuery;
-import com.ruoyi.system.service.TCrmClinicService;
-import com.ruoyi.system.service.TErpProcurementService;
-import com.ruoyi.system.service.TErpSupplierWarehousingService;
+import com.ruoyi.system.service.*;
+import com.ruoyi.system.vo.DetailProcurementVO;
 import com.ruoyi.system.vo.TErpGoodsVO;
 import com.ruoyi.system.vo.TErpProcurementDetailVo;
 import com.ruoyi.system.vo.TErpProcurementVo;
@@ -26,7 +27,10 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -45,13 +49,22 @@
     private final TErpProcurementService erpProcurementService;
     private final TokenService tokenService;
     private final TCrmClinicService crmClinicService;
+    private final TErpProcurementGoodsService erpProcurementGoodsService;
+    private final TErpGoodsService erpGoodsService;
+    private final TErpClinicWarehousingService erpClinicWarehousingService;
+    private final TErpClinicWarehousingBatchService erpClinicWarehousingBatchService;
 
 
     @Autowired
-    public TErpProcurementController(TErpProcurementService erpProcurementService, TokenService tokenService,TCrmClinicService crmClinicService) {
+    public TErpProcurementController(TErpProcurementService erpProcurementService, TokenService tokenService,TCrmClinicService crmClinicService,TErpProcurementGoodsService erpProcurementGoodsService
+    , TErpGoodsService erpGoodsService,TErpClinicWarehousingService erpClinicWarehousingService,TErpClinicWarehousingBatchService erpClinicWarehousingBatchService) {
         this.erpProcurementService = erpProcurementService;
         this.tokenService = tokenService;
         this.crmClinicService = crmClinicService;
+        this.erpProcurementGoodsService = erpProcurementGoodsService;
+        this.erpGoodsService = erpGoodsService;
+        this.erpClinicWarehousingService = erpClinicWarehousingService;
+        this.erpClinicWarehousingBatchService = erpClinicWarehousingBatchService;
     }
 
 
@@ -112,10 +125,95 @@
                     .last("LIMIT 1"));
             clinicSupplierId = crmClinic.getId();
         }
-        return R.ok(erpProcurementService.addProcurement(clinicSupplierId,user,dtos));
+        erpProcurementService.addProcurement(clinicSupplierId, user, dtos);
+        return R.ok();
     }
 
 
 
+
+    @ApiOperation(value = "采购详情")
+    @GetMapping(value = "/detailProcurement/{id}")
+    public R<DetailProcurementVO> detailProcurement(@PathVariable String id) {
+        SysUser user = tokenService.getLoginUser().getUser();
+        Integer roleType = user.getRoleType();
+        String clinicSupplierId=null;
+        if(roleType == 5){
+            // 诊所
+            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                    .eq(TCrmClinic::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            clinicSupplierId = crmClinic.getId();
+        }
+
+        return R.ok( erpProcurementService.detailProcurement(clinicSupplierId, user, id));
+    }
+
+    @ApiOperation(value = "采购详情入库")
+    @PostMapping(value = "/updateStatusProcurement")
+    public R<DetailProcurementVO> updateStatusProcurement(@RequestParam @Valid UpdateStatusProcurementLastDto dto) {
+        SysUser user = tokenService.getLoginUser().getUser();
+        Integer roleType = user.getRoleType();
+        String clinicSupplierId=null;
+        if(roleType == 5){
+            // 诊所
+            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                    .eq(TCrmClinic::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            clinicSupplierId = crmClinic.getId();
+        }
+        TErpProcurement erpProcurement = erpProcurementService.getById(dto.getId());
+        if(!erpProcurement.getClinicId().equals(clinicSupplierId)){
+            return R.fail("无权限操作");
+        }
+        if(erpProcurement.getStatus()!=4){
+            return R.fail("目前状态无法入库");
+        }
+        erpProcurement.setStatus(5);
+        erpProcurementService.updateById(erpProcurement);
+
+        List<String> collect = dto.getList().stream().map(UpdateStatusProcurementDto::getId).collect(Collectors.toList());
+
+        List<TErpProcurementGoods> list = erpProcurementGoodsService.list(new LambdaQueryWrapper<TErpProcurementGoods>().in(TErpProcurementGoods::getId, collect));
+        // goodsId分组
+        for (UpdateStatusProcurementDto updateStatusProcurementDto : dto.getList()) {
+            TErpProcurementGoods tErpProcurementGoods = list.stream().filter(t -> t.getId().equals(updateStatusProcurementDto.getId())).findFirst().get();
+
+            TErpGoods erpGoods = erpGoodsService.getById(tErpProcurementGoods.getGoodsId());
+            TErpClinicWarehousing tErpClinicWarehousing = new TErpClinicWarehousing();
+            tErpClinicWarehousing.setClinicId(erpProcurement.getClinicId());
+            tErpClinicWarehousing.setProcurementId(erpProcurement.getId());
+            tErpClinicWarehousing.setGoodsId(erpGoods.getId());
+            tErpClinicWarehousing.setGoodsName(erpGoods.getGoodsName());
+            tErpClinicWarehousing.setSupplierName(erpGoods.getSupplierName());
+            tErpClinicWarehousing.setQuasiNumber(erpGoods.getQuasiNumber());
+            tErpClinicWarehousing.setSalesAmount(tErpProcurementGoods.getSalesAmount());
+            tErpClinicWarehousing.setPurchaseCount(updateStatusProcurementDto.getPurchaseCount());
+            tErpClinicWarehousing.setTotalPrice(tErpProcurementGoods.getSalesAmount().multiply(new BigDecimal(updateStatusProcurementDto.getPurchaseCount())));
+            tErpClinicWarehousing.setUnitAmount(tErpProcurementGoods.getSalesAmount());
+            tErpClinicWarehousing.setWarehousingType(1);
+            tErpClinicWarehousing.setWarehouseNo("G"+ DateUtils.dateTimeNow());
+            erpClinicWarehousingService.save(tErpClinicWarehousing);
+
+
+            TErpClinicWarehousingBatch tErpClinicWarehousingGoods = new TErpClinicWarehousingBatch();
+            tErpClinicWarehousingGoods.setWarehousingId(tErpClinicWarehousing.getId());
+            tErpClinicWarehousingGoods.setWarehousingNumber(tErpClinicWarehousing.getPurchaseCount());
+            tErpClinicWarehousingGoods.setBatchNumber(updateStatusProcurementDto.getBatchNumber());
+            tErpClinicWarehousingGoods.setProductionDate(updateStatusProcurementDto.getProductionDate());
+            tErpClinicWarehousingGoods.setExpiryDate(updateStatusProcurementDto.getExpiryDate());
+            erpClinicWarehousingBatchService.save(tErpClinicWarehousingGoods);
+
+        }
+        return R.ok();
+    }
+
+
+
+
+
+
+
+
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysOrderController.java
index 66e7184..91a8a50 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysOrderController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysOrderController.java
@@ -126,6 +126,10 @@
             String amount = String.valueOf(erpProcurement.getPayMoney().multiply(new BigDecimal("100")).intValue());
 
             TCrmSupplier supplier = crmSupplierService.getById(erpProcurement.getSupplierId());
+            String trans_type ="41";
+            if("WECHAT".equals(type)){
+                trans_type= "51";
+            }
 
 
             String apiPath = "sit/api/v3/labs/trans/preorder";
@@ -144,7 +148,7 @@
                     "\t\t\"settle_type\": \"1\",\n" +
                     "\t\t\"total_amount\": " + amount + ",\n" +
                     "\t\t\"account_type\": \"" + type + "\",\n" +
-                    "\t\t\"trans_type\": \"41\"\n" +
+                    "\t\t\"trans_type\": \""+trans_type+"\"\n" +
                     "\t}\n" +
                     "}";
             String authorization = getAuthorization(body);
@@ -409,7 +413,6 @@
                 return jsonObject;
             }
         }
-
         return null;
     }
 
@@ -486,7 +489,7 @@
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return R.fail(500, "调用支付宝支付预下单接口错误");
+        return R.fail(500, "退款失败请联系平台管理员");
     }
 
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/AddProcurementDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/AddProcurementDto.java
index f4330ac..5b1210d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/AddProcurementDto.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/AddProcurementDto.java
@@ -1,5 +1,6 @@
 package com.ruoyi.system.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -29,4 +30,8 @@
 
     @ApiModelProperty("状态 1草稿")
     private Integer state;
+
+
+    private BigDecimal platformCommissionPrice;
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/InventoryDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/InventoryDto.java
index be19cd3..9e059a3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/InventoryDto.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/InventoryDto.java
@@ -13,7 +13,6 @@
 public class InventoryDto {
 
     @ApiModelProperty(value = "仓库id")
-    @NotBlank(message = "仓库id不能为空")
     private String warehouseId;
 
     @ApiModelProperty(value = "商品信息")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpClinicGoodsAddDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpClinicGoodsAddDto.java
new file mode 100644
index 0000000..3b4fd6f
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpClinicGoodsAddDto.java
@@ -0,0 +1,132 @@
+package com.ruoyi.system.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "erp诊所商品添加DTO")
+public class TErpClinicGoodsAddDto {
+
+    @ApiModelProperty(value = "商品名称")
+    @NotBlank ( message = "商品名称不能为空")
+    private String goodsName;
+
+
+    @ApiModelProperty(value = "供应商名称")
+    @NotBlank ( message = "供应商名称不能为空")
+    private String supplierName;
+
+
+    @ApiModelProperty(value = "国药准字号")
+    @NotBlank ( message = "国药准字号不能为空")
+    private String quasiNumber;
+
+    @ApiModelProperty(value = "生产厂家")
+    @NotBlank ( message = "生产厂家不能为空")
+    private String manufacturer;
+
+    @ApiModelProperty(value = "制剂规格")
+    @NotBlank ( message = "制剂规格不能为空")
+    private String formulationSpec;
+
+    @ApiModelProperty(value = "包装规格")
+    @NotBlank ( message = "包装规格不能为空")
+    private String packingSpec;
+
+
+    @ApiModelProperty(value = "商品类型id")
+    @NotBlank ( message = "商品类型id不能为空")
+    private String typeId;
+
+    @ApiModelProperty(value = "商品标识码")
+    @NotBlank ( message = "商品标识码不能为空")
+    private String goodsIdCode;
+
+
+    @ApiModelProperty(value = "保养周期")
+    private String maintenanceInterval;
+
+    @ApiModelProperty(value = "保养周期单位")
+    private String maintenanceIntervalUnit;
+
+
+
+    @ApiModelProperty(value = "是否为处方药 1=是 2=否")
+    private Integer isPrescriptionDrug;
+
+
+    @ApiModelProperty(value = "商品规格")
+    @NotBlank ( message = "商品规格不能为空")
+    private String goodsSpec;
+
+
+
+    @ApiModelProperty(value = "预警库存")
+    @NotNull(message = "预警库存不能为空")
+    private Integer warningInventory;
+
+    @ApiModelProperty(value = "包装单位,单位id")
+    @NotBlank ( message = "包装单位,单位id不能为空")
+    private String packingUnitId;
+
+
+    @ApiModelProperty(value = "商品售价")
+    @NotNull(message = "商品售价不能为空")
+    private BigDecimal salesAmount;
+
+
+
+    @ApiModelProperty(value = "使用说明")
+    private String instructionsUse;
+
+
+
+    @ApiModelProperty(value = "副作用")
+    private String sideEffect;
+
+
+
+    @ApiModelProperty(value = "拼音简码")
+    private String simplifiedCode;
+
+    @ApiModelProperty(value = "剂型")
+    private String dosageForm;
+
+    @ApiModelProperty(value = "用途分类")
+    private String usageClassification;
+
+    @ApiModelProperty(value = "商品品牌名")
+    private String productBrand;
+
+    @ApiModelProperty(value = "产地")
+    private String placeOfOrigin;
+
+    @ApiModelProperty(value = "成分")
+    private String ingredient;
+
+    @ApiModelProperty(value = "性状")
+    private String trait;
+
+    @ApiModelProperty(value = "适应症")
+    private String indication;
+
+    @ApiModelProperty(value = "禁忌")
+    private String taboo;
+
+    @ApiModelProperty(value = "注意事项")
+    private String precautions;
+
+    @ApiModelProperty(value = "相互作用")
+    private String interaction;
+
+
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpGoodsSetCommissionDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpGoodsSetCommissionDto.java
new file mode 100644
index 0000000..4b3e08f
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpGoodsSetCommissionDto.java
@@ -0,0 +1,23 @@
+package com.ruoyi.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "商品设置分佣DTO")
+public class TErpGoodsSetCommissionDto {
+    @ApiModelProperty(value = "商品id")
+    @NotBlank(message = "商品id不能为空")
+    private String id;
+    @ApiModelProperty(value = "采购价")
+    @NotNull(message = "采购价不能为空")
+    private Double clinicPurchasePrice;
+    @ApiModelProperty(value = "平台分佣金额")
+    @NotNull(message = "平台分佣金额不能为空")
+    private Double platformCommissionPrice;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/UpdateStatusProcurementDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/UpdateStatusProcurementDto.java
new file mode 100644
index 0000000..67ad985
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/UpdateStatusProcurementDto.java
@@ -0,0 +1,38 @@
+package com.ruoyi.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel("诊所采购入库二级dto")
+public class UpdateStatusProcurementDto {
+    @ApiModelProperty("采购二级id")
+    @NotBlank(message = "采购二级id不能为空")
+    private String id;
+
+    @ApiModelProperty("数量")
+    @NotNull(message = "数量不能为空")
+    private Integer purchaseCount;
+
+    @ApiModelProperty("批次号")
+    @NotBlank(message = "批次号不能为空")
+    private String batchNumber;
+
+
+    @ApiModelProperty(value = "生产日期")
+    @NotNull(message = "生产日期不能为空")
+    private LocalDateTime productionDate;
+
+    @ApiModelProperty(value = "有效日期")
+    @NotNull(message = "有效日期不能为空")
+    private LocalDateTime expiryDate;
+
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/UpdateStatusProcurementLastDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/UpdateStatusProcurementLastDto.java
new file mode 100644
index 0000000..117b112
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/UpdateStatusProcurementLastDto.java
@@ -0,0 +1,25 @@
+package com.ruoyi.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
+import java.util.List;
+
+@Data
+@ApiModel("诊所采购入库一级dto")
+public class UpdateStatusProcurementLastDto {
+    @ApiModelProperty("采购id")
+    @NotBlank(message = "采购id不能为空")
+    private String id;
+
+
+
+    @ApiModelProperty("采购二级dto")
+    private List<UpdateStatusProcurementDto> list;
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpClinicWarehousingMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpClinicWarehousingMapper.java
index 0815625..bbd67ed 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpClinicWarehousingMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpClinicWarehousingMapper.java
@@ -1,7 +1,19 @@
 package com.ruoyi.system.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.system.model.TErpClinicWarehousing;
+import com.ruoyi.system.query.TErpGoodsQuery;
+import com.ruoyi.system.query.TErpInventoryQuery;
+import com.ruoyi.system.query.ValidityPeriodWarningQuery;
+import com.ruoyi.system.vo.PageInventoryListVo;
+import com.ruoyi.system.vo.TErpGoodsVO;
+import com.ruoyi.system.vo.ValidityPeriodWarningVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +25,12 @@
  */
 public interface TErpClinicWarehousingMapper extends BaseMapper<TErpClinicWarehousing> {
 
+    List<PageInventoryListVo> pageInventoryList(@Param("pageInfo") PageInfo<PageInventoryListVo> pageInfo, @Param("query") TErpInventoryQuery query, @Param("user") SysUser user, @Param("sTime") String sTime, @Param("eTime") String eTime, @Param("supplierClinicId") String supplierClinicId);
+
+
+    PageInfo<ValidityPeriodWarningVo> validityPeriodWarning(@Param("pageInfo") PageInfo<ValidityPeriodWarningVo> pageInfo, @Param("query") ValidityPeriodWarningQuery query, @Param("user") SysUser user, @Param("nineMonthLater") LocalDateTime nineMonthLater, @Param("supplierClinicId") String supplierClinicId);
+
+
+    List<TErpGoodsVO> pageList(@Param("query") TErpGoodsQuery query, @Param("pageInfo") PageInfo<TErpGoodsVO> pageInfo, @Param("user") SysUser user);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpGoodsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpGoodsMapper.java
index 4e50f2b..c3e9b0e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpGoodsMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpGoodsMapper.java
@@ -31,4 +31,11 @@
 
     List<TErpGoodsInventoryVO> pageInventoryGoodsList(@Param("warehouseId") String warehouseId, @Param("user") SysUser user, @Param("supplierClinicId") String supplierClinicId, @Param("endDate") Date endDate);
 
+
+    List<TErpGoodsInventoryVO> pageInventoryGoodsList1(@Param("warehouseId") String warehouseId, @Param("user") SysUser user, @Param("supplierClinicId") String supplierClinicId, @Param("endDate") Date endDate);
+
+    List<TErpGoodsInventoryVO> pageInventoryGoodsPageList1(@Param("query") TErpGoodsInventoryQuery query, @Param("pageInfo") PageInfo<TErpGoodsInventoryVO> pageInfo, @Param("user") SysUser user, @Param("supplierClinicId") String supplierClinicId, @Param("endDate") Date endDate);
+
+
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicInventoryGoods.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicInventoryGoods.java
index f6fc2b0..8b988b0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicInventoryGoods.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicInventoryGoods.java
@@ -55,5 +55,8 @@
     @TableField("inventory_type")
     private Integer inventoryType;
 
+    @ApiModelProperty(value = "商品id")
+    @TableField("goods_id")
+    private String goodsId;
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousing.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousing.java
index 0e4b12f..66c20f5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousing.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousing.java
@@ -70,4 +70,14 @@
     @TableField("warehousing_type")
     private Integer warehousingType;
 
+    @ApiModelProperty(value = "入库单号")
+    @TableField("warehouse_no")
+    private String warehouseNo;
+
+    @ApiModelProperty(value = "单价")
+    @TableField("unit_amount")
+    private BigDecimal unitAmount;
+    @ApiModelProperty(value = "1正常 2盘点")
+    private Integer type;
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java
index 88cc2f3..db3dd53 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java
@@ -222,6 +222,12 @@
     private String storage;
 
 
+    @ApiModelProperty(value = "商品条码")
+    private String barcode;
+
+    @ApiModelProperty(value = "诊所添加供应商")
+    @TableField("supplier_name")
+    private String supplierName;
 
 
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpSupplierWarehousing.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpSupplierWarehousing.java
index 1b6f224..f2f717b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpSupplierWarehousing.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpSupplierWarehousing.java
@@ -64,4 +64,7 @@
     @ApiModelProperty(value = "入库单号")
     @TableField("warehouse_no")
     private String warehouseNo;
+
+
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpClinicWarehousingService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpClinicWarehousingService.java
index 09341a6..9f50c22 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpClinicWarehousingService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpClinicWarehousingService.java
@@ -1,7 +1,18 @@
 package com.ruoyi.system.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.system.model.TErpClinicWarehousing;
+import com.ruoyi.system.query.TErpGoodsQuery;
+import com.ruoyi.system.query.TErpInventoryQuery;
+import com.ruoyi.system.query.ValidityPeriodWarningQuery;
+import com.ruoyi.system.vo.InventoryDetailVo;
+import com.ruoyi.system.vo.PageInventoryListVo;
+import com.ruoyi.system.vo.TErpGoodsVO;
+import com.ruoyi.system.vo.ValidityPeriodWarningVo;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +24,12 @@
  */
 public interface TErpClinicWarehousingService extends IService<TErpClinicWarehousing> {
 
+    PageInfo<PageInventoryListVo> pageInventoryList(TErpInventoryQuery query, SysUser user);
+
+    List<InventoryDetailVo> detailInventory(String id, SysUser user);
+
+    PageInfo<ValidityPeriodWarningVo> validityPeriodWarning(ValidityPeriodWarningQuery query, SysUser user);
+
+    PageInfo<TErpGoodsVO> pageList(TErpGoodsQuery query, SysUser user);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsService.java
index ce1c278..5bc81ed 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsService.java
@@ -52,4 +52,11 @@
     List<TErpGoodsInventoryVO> pageInventoryGoodsList(@Valid String warehouseId, SysUser user);
 
 
+    PageInfo<TErpGoodsInventoryVO> pageInventoryGoodsPageList1(@Valid TErpGoodsInventoryQuery query, SysUser user);
+
+    void inventoryGoods1(@Valid InventoryDto dto, SysUser user);
+
+    List<TErpGoodsInventoryVO> pageInventoryGoodsList1(String warehouseId, SysUser user);
+
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java
index 1f874a9..79afcb4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java
@@ -8,6 +8,7 @@
 import com.ruoyi.system.model.TErpProcurement;
 import com.ruoyi.system.query.TErpGoodsQuery;
 import com.ruoyi.system.query.TErpProcurementQuery;
+import com.ruoyi.system.vo.DetailProcurementVO;
 import com.ruoyi.system.vo.TErpGoodsVO;
 import com.ruoyi.system.vo.TErpProcurementDetailVo;
 import com.ruoyi.system.vo.TErpProcurementVo;
@@ -36,6 +37,7 @@
     List<TErpGoodsVO> inventoryNotEnoughList(SysUser user);
 
 
-    String addProcurement(String clinicSupplierId, SysUser user, @Valid List<AddProcurementDto> dtos);
+    void addProcurement(String clinicSupplierId, SysUser user, @Valid List<AddProcurementDto> dtos);
 
+    DetailProcurementVO detailProcurement(String clinicSupplierId, SysUser user, String id);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java
index 65a8f92..122815a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java
@@ -1,10 +1,29 @@
 package com.ruoyi.system.service.impl;
 
-import com.ruoyi.system.model.TErpClinicWarehousing;
-import com.ruoyi.system.mapper.TErpClinicWarehousingMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.system.mapper.*;
+import com.ruoyi.system.model.*;
+import com.ruoyi.system.query.TErpGoodsQuery;
+import com.ruoyi.system.query.TErpInventoryQuery;
+import com.ruoyi.system.query.ValidityPeriodWarningQuery;
 import com.ruoyi.system.service.TErpClinicWarehousingService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.system.vo.InventoryDetailVo;
+import com.ruoyi.system.vo.PageInventoryListVo;
+import com.ruoyi.system.vo.TErpGoodsVO;
+import com.ruoyi.system.vo.ValidityPeriodWarningVo;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,4 +36,206 @@
 @Service
 public class TErpClinicWarehousingServiceImpl extends ServiceImpl<TErpClinicWarehousingMapper, TErpClinicWarehousing> implements TErpClinicWarehousingService {
 
+
+    @Resource
+    private TCrmClinicMapper crmClinicMapper;
+
+    @Resource
+    private TErpClinicInventoryGoodsMapper erpClinicInventoryGoodsMapper;
+
+    @Resource
+    private TErpGoodsMapper erpGoodsMapper;
+
+    @Resource
+    private TErpClinicWarehousingMapper erpClinicWarehousingMapper;
+
+    @Resource
+    private TErpClinicWarehousingBatchMapper erpClinicWarehousingBatchMapper;
+
+    @Resource
+    private TErpClinicOutboundGoodsMapper erpClinicOutboundGoodsMapper;
+
+
+    @Resource
+    private TErpClinicOutboundMapper erpClinicOutboundMapper;
+
+    @Resource
+    private TErpGoodsUnitMapper erpGoodsUnitMapper;
+
+
+    @Resource
+    private TErpGoodsTypeMapper erpGoodsTypeMapper;
+
+
+
+    @Override
+    public PageInfo<PageInventoryListVo> pageInventoryList(TErpInventoryQuery query, SysUser user) {
+        Integer roleType = user.getRoleType();
+        String supplierClinicId = null;
+        if(roleType == 5){
+            // 诊所
+            TCrmClinic crmClinic = crmClinicMapper.selectOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                    .eq(TCrmClinic::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            supplierClinicId =crmClinic.getId();
+        }
+        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";
+        }
+        PageInfo<PageInventoryListVo> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<PageInventoryListVo> list = this.baseMapper.pageInventoryList(pageInfo,query,user,sTime,eTime,supplierClinicId);
+        if(list.isEmpty()){
+            return pageInfo;
+        }
+
+
+
+        List<String> collect = list.stream().map(PageInventoryListVo::getId).collect(Collectors.toList());
+        List<TErpClinicInventoryGoods> tErpSupplierInventoryGoods = erpClinicInventoryGoodsMapper.selectList(new LambdaQueryWrapper<TErpClinicInventoryGoods>().in(TErpClinicInventoryGoods::getInventoryId,collect));
+        for (PageInventoryListVo pageInventoryListVo : list) {
+            // 盘盈
+            BigDecimal add = BigDecimal.ZERO;
+
+            // 盘亏
+            BigDecimal subtract = BigDecimal.ZERO;
+            List<TErpClinicInventoryGoods> tErpSupplierInventoryGoodsList = tErpSupplierInventoryGoods.stream().filter(t -> t.getInventoryId().equals(pageInventoryListVo.getId())).collect(Collectors.toList());
+            for (TErpClinicInventoryGoods tErpSupplierInventoryGoods1 : tErpSupplierInventoryGoodsList) {
+
+
+                if(tErpSupplierInventoryGoods1!=null){
+                    // 盘盈 查入库
+                    if(tErpSupplierInventoryGoods1.getInventoryType()==1){
+                        TErpClinicWarehousing tErpSupplierWarehousing = erpClinicWarehousingMapper.selectById(tErpSupplierInventoryGoods1.getWarehousingId());
+//                        List<TErpSupplierWarehousingBatch> tErpSupplierWarehousingBatches = erpSupplierWarehousingBatchMapper.selectList(new LambdaQueryWrapper<TErpSupplierWarehousingBatch>().eq(TErpSupplierWarehousingBatch::getWarehousingId, tErpSupplierWarehousing.getId()));
+//                        int sum = tErpSupplierWarehousingBatches.stream().mapToInt(TErpSupplierWarehousingBatch::getWarehousingNumber).sum();
+                        String goodsId = tErpSupplierWarehousing.getGoodsId();
+                        TErpGoods goods = erpGoodsMapper.selectById(goodsId);
+                        int count = tErpSupplierInventoryGoods1.getInventoryCount() - tErpSupplierInventoryGoods1.getDamagedCount();
+                        BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(count));
+                        add = add.add(multiply);
+                    }else {
+                        // 盘亏 查出库
+                        TErpClinicOutbound tErpSupplierOutbound = erpClinicOutboundMapper.selectById(tErpSupplierInventoryGoods1.getWarehousingId());
+
+                        List<TErpClinicOutboundGoods> tErpSupplierOutboundGoods = erpClinicOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpClinicOutboundGoods>().eq(TErpClinicOutboundGoods::getOutboundId, tErpSupplierOutbound.getId()));
+                        for (TErpClinicOutboundGoods tErpSupplierOutboundGood : tErpSupplierOutboundGoods) {
+                            TErpClinicWarehousing tErpSupplierWarehousing = erpClinicWarehousingMapper.selectById(tErpSupplierOutboundGood.getWarehousingId());
+                            String goodsId = tErpSupplierWarehousing.getGoodsId();
+                            TErpGoods goods = erpGoodsMapper.selectById(goodsId);
+                            int count = tErpSupplierInventoryGoods1.getInventoryCount() - tErpSupplierInventoryGoods1.getDamagedCount();
+                            BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(count));
+                            add = add.add(multiply);
+                        }
+//                        int sum = tErpSupplierOutboundGoods.stream().mapToInt(TErpSupplierOutboundGoods::getOutboundCount).sum();
+//                        String goodsId = tErpSupplierOutbound.getGoodsId();
+//                        TErpGoods goods = erpGoodsMapper.selectById(goodsId);
+//                        BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(sum));
+//                        subtract = subtract.add(multiply);
+                    }
+                }
+            }
+            int size = tErpSupplierInventoryGoodsList.stream().map(TErpClinicInventoryGoods::getGoodsId).collect(Collectors.toSet()).size();
+            pageInventoryListVo.setNum(size);
+            pageInventoryListVo.setTotalPrice(add);
+
+        }
+
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
+
+    @Override
+    public List<InventoryDetailVo> detailInventory(String id, SysUser user) {
+        ArrayList<InventoryDetailVo> inventoryDetailVos = new ArrayList<>();
+
+        List<TErpClinicInventoryGoods> tErpSupplierInventoryGoods = erpClinicInventoryGoodsMapper.selectList(new LambdaQueryWrapper<TErpClinicInventoryGoods>().eq(TErpClinicInventoryGoods::getInventoryId, id));
+        if(tErpSupplierInventoryGoods!=null && !tErpSupplierInventoryGoods.isEmpty()){
+            for (TErpClinicInventoryGoods tErpSupplierInventoryGood : tErpSupplierInventoryGoods) {
+                InventoryDetailVo inventoryDetailVo = new InventoryDetailVo();
+                if(tErpSupplierInventoryGood.getInventoryType()==1){
+                    TErpClinicWarehousing tErpSupplierWarehousing = erpClinicWarehousingMapper.selectById(tErpSupplierInventoryGood.getWarehousingId());
+                    String goodsId = tErpSupplierWarehousing.getGoodsId();
+                    TErpGoods goods = erpGoodsMapper.selectById(goodsId);
+                    inventoryDetailVo.setGoodsName(goods.getGoodsName());
+                    TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(goods.getPackingUnitId());
+                    inventoryDetailVo.setUnitName(tErpGoodsUnit.getUnitName());
+                    inventoryDetailVo.setWarehouseNo(tErpSupplierWarehousing.getWarehouseNo());
+                    TErpClinicWarehousingBatch tErpSupplierWarehousingBatch = erpClinicWarehousingBatchMapper.selectById(tErpSupplierInventoryGood.getWarehousingBatchId());
+                    inventoryDetailVo.setBatchNumber(tErpSupplierWarehousingBatch.getBatchNumber());
+
+                    List<TErpClinicWarehousingBatch> tErpSupplierWarehousingBatches = erpClinicWarehousingBatchMapper.selectList(new LambdaQueryWrapper<TErpClinicWarehousingBatch>().eq(TErpClinicWarehousingBatch::getBatchNumber, tErpSupplierWarehousingBatch.getBatchNumber()));
+                    int sum = tErpSupplierWarehousingBatches.stream().mapToInt(TErpClinicWarehousingBatch::getWarehousingNumber).sum();
+                    List<String> collect = tErpSupplierWarehousingBatches.stream().map(TErpClinicWarehousingBatch::getId).collect(Collectors.toList());
+                    if(!collect.isEmpty()){
+                        List<TErpClinicOutboundGoods> tErpSupplierOutboundGoods = erpClinicOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpClinicOutboundGoods>().eq(TErpClinicOutboundGoods::getWarehousingBatchId, collect));
+                        int sum1 = tErpSupplierOutboundGoods.stream().mapToInt(TErpClinicOutboundGoods::getOutboundCount).sum();
+                        sum = sum-sum1;
+                    }
+
+                    // sum = 剩余库存
+                    inventoryDetailVo.setNowCount(sum);
+                    inventoryDetailVo.setInventoryCount(tErpSupplierInventoryGood.getInventoryCount());
+                    inventoryDetailVo.setInventoryType(tErpSupplierInventoryGood.getInventoryType());
+                    inventoryDetailVo.setDamagedCount(tErpSupplierInventoryGood.getDamagedCount());
+                }
+                inventoryDetailVos.add(inventoryDetailVo);
+
+            }
+
+            return inventoryDetailVos;
+
+        }
+
+
+        return Collections.emptyList();
+    }
+
+
+
+    @Override
+    public PageInfo<ValidityPeriodWarningVo> validityPeriodWarning(ValidityPeriodWarningQuery query, SysUser user) {
+        Integer roleType = user.getRoleType();
+        String supplierClinicId = null;
+        if(roleType == 5){
+            // 诊所
+            TCrmClinic crmClinic = crmClinicMapper.selectOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                    .eq(TCrmClinic::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            supplierClinicId =crmClinic.getId();
+        }
+        // 获取当前时间后9个月的时间
+        LocalDateTime nineMonthLater = LocalDateTime.now().plusMonths(9);
+
+        PageInfo<ValidityPeriodWarningVo> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+
+
+
+        return this.baseMapper.validityPeriodWarning(pageInfo,query,user,nineMonthLater,supplierClinicId);
+    }
+
+    @Override
+    public PageInfo<TErpGoodsVO> pageList(TErpGoodsQuery query, SysUser user) {
+        PageInfo<TErpGoodsVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TErpGoodsVO> list = this.baseMapper.pageList(query,pageInfo,user);
+        if(list.isEmpty()){
+            return pageInfo;
+        }
+
+
+        List<String> typeIds = list.stream().map(TErpGoods::getTypeId).collect(Collectors.toList());
+        if(!typeIds.isEmpty()){
+            List<TErpGoodsType> typeList = erpGoodsTypeMapper.selectBatchIds(typeIds);
+            for (TErpGoodsVO tErpGoodsVO : list) {
+                typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName()));
+                tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName());
+            }
+        }
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
 }
+
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
index b51fd6c..cf8d384 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
@@ -46,21 +46,33 @@
 
     @Resource
     private TErpSupplierInventoryMapper erpSupplierInventoryMapper;
+    @Resource
+    private TErpClinicInventoryMapper erpClinicInventoryMapper;
 
     @Resource
     private TErpSupplierInventoryGoodsMapper erpSupplierInventoryGoodsMapper;
+    @Resource
+    private TErpClinicInventoryGoodsMapper erpClinicInventoryGoodsMapper;
 
     @Resource
     private TErpSupplierWarehousingMapper erpSupplierWarehousingMapper;
+    @Resource
+    private TErpClinicWarehousingMapper erpClinicWarehousingMapper;
 
     @Resource
     private TErpSupplierWarehousingBatchMapper erpSupplierWarehousingBatchMapper;
+    @Resource
+    private TErpClinicWarehousingBatchMapper erpClinicWarehousingBatchMapper;
 
     @Resource
     private TErpSupplierOutboundMapper erpSupplierOutboundMapper;
+    @Resource
+    private TErpClinicOutboundMapper erpClinicOutboundMapper;
 
     @Resource
     private TErpSupplierOutboundGoodsMapper erpSupplierOutboundGoodsMapper;
+    @Resource
+    private TErpClinicOutboundGoodsMapper erpClinicOutboundGoodsMapper;
 
     @Resource
     private  TCrmClinicMapper crmClinicMapper;
@@ -175,6 +187,51 @@
         return pageInfo;
     }
     @Override
+    public PageInfo<TErpGoodsInventoryVO> pageInventoryGoodsPageList1(TErpGoodsInventoryQuery query, SysUser user) {
+        Integer roleType = user.getRoleType();
+        String supplierClinicId = null;
+        if(roleType == 4){
+            // 供应商
+            TCrmSupplier crmSupplier = crmSupplierMapper.selectOne(Wrappers.lambdaQuery(TCrmSupplier.class)
+                    .eq(TCrmSupplier::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            supplierClinicId =crmSupplier.getId();
+        }
+        if(roleType == 5){
+            // 诊所
+            TCrmClinic crmClinic = crmClinicMapper.selectOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                    .eq(TCrmClinic::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            supplierClinicId =crmClinic.getId();
+        }
+
+        // 当前时间一个月后
+        Date endDate = DateUtils.addMonths(DateUtils.getNowDate(), 1);
+
+        PageInfo<TErpGoodsInventoryVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TErpGoodsInventoryVO> list = this.baseMapper.pageInventoryGoodsPageList1(query, pageInfo, user,supplierClinicId,endDate);
+        if (list.isEmpty()) {
+            return pageInfo;
+        }
+        List<String> typeIds = list.stream().map(TErpGoodsInventoryVO::getTypeId).collect(Collectors.toList());
+        if (!typeIds.isEmpty()) {
+            List<TErpGoodsType> typeList = erpGoodsTypeMapper.selectBatchIds(typeIds);
+            for (TErpGoodsInventoryVO tErpGoodsVO : list) {
+                typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName()));
+                tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName());
+            }
+        }
+        List<String> packingUnitId = list.stream().map(TErpGoodsInventoryVO::getPackingUnitId).collect(Collectors.toList());
+        if (!packingUnitId.isEmpty()) {
+            List<TErpGoodsUnit> tErpGoodsUnits = erpGoodsUnitMapper.selectBatchIds(packingUnitId);
+            for (TErpGoodsInventoryVO tErpGoodsVO : list) {
+                tErpGoodsUnits.stream().filter(t -> t.getId().equals(tErpGoodsVO.getPackingUnitId())).findFirst().ifPresent(t -> tErpGoodsVO.setPackingUnitName(t.getUnitName()));
+            }
+        }
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
+    @Override
     public List<TErpGoodsInventoryVO> pageInventoryGoodsList(String warehouseId, SysUser user) {
         Integer roleType = user.getRoleType();
         String supplierClinicId = null;
@@ -197,6 +254,49 @@
         Date endDate = DateUtils.addMonths(DateUtils.getNowDate(), 1);
 
         List<TErpGoodsInventoryVO> list = this.baseMapper.pageInventoryGoodsList(warehouseId, user,supplierClinicId,endDate);
+        if (list.isEmpty()) {
+            return list;
+        }
+        List<String> typeIds = list.stream().map(TErpGoodsInventoryVO::getTypeId).collect(Collectors.toList());
+        if (!typeIds.isEmpty()) {
+            List<TErpGoodsType> typeList = erpGoodsTypeMapper.selectBatchIds(typeIds);
+            for (TErpGoodsInventoryVO tErpGoodsVO : list) {
+                typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName()));
+                tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName());
+            }
+        }
+        List<String> packingUnitId = list.stream().map(TErpGoodsInventoryVO::getPackingUnitId).collect(Collectors.toList());
+        if (!packingUnitId.isEmpty()) {
+            List<TErpGoodsUnit> tErpGoodsUnits = erpGoodsUnitMapper.selectBatchIds(packingUnitId);
+            for (TErpGoodsInventoryVO tErpGoodsVO : list) {
+                tErpGoodsUnits.stream().filter(t -> t.getId().equals(tErpGoodsVO.getPackingUnitId())).findFirst().ifPresent(t -> tErpGoodsVO.setPackingUnitName(t.getUnitName()));
+            }
+        }
+        return list;
+    }
+    @Override
+    public List<TErpGoodsInventoryVO> pageInventoryGoodsList1(String warehouseId, SysUser user) {
+        Integer roleType = user.getRoleType();
+        String supplierClinicId = null;
+        if(roleType == 4){
+            // 供应商
+            TCrmSupplier crmSupplier = crmSupplierMapper.selectOne(Wrappers.lambdaQuery(TCrmSupplier.class)
+                    .eq(TCrmSupplier::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            supplierClinicId =crmSupplier.getId();
+        }
+        if(roleType == 5){
+            // 诊所
+            TCrmClinic crmClinic = crmClinicMapper.selectOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                    .eq(TCrmClinic::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            supplierClinicId =crmClinic.getId();
+        }
+
+        // 当前时间一个月后
+        Date endDate = DateUtils.addMonths(DateUtils.getNowDate(), 1);
+
+        List<TErpGoodsInventoryVO> list = this.baseMapper.pageInventoryGoodsList1(warehouseId, user,supplierClinicId,endDate);
         if (list.isEmpty()) {
             return list;
         }
@@ -326,4 +426,110 @@
 
 
     }
+    @Override
+    public void inventoryGoods1(InventoryDto dto, SysUser user) {
+        Integer roleType = user.getRoleType();
+        String supplierClinicId = null;
+        if(roleType == 4){
+            // 供应商
+            TCrmSupplier crmSupplier = crmSupplierMapper.selectOne(Wrappers.lambdaQuery(TCrmSupplier.class)
+                    .eq(TCrmSupplier::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            supplierClinicId =crmSupplier.getId();
+        }
+        if(roleType == 5){
+            // 诊所
+            TCrmClinic crmClinic = crmClinicMapper.selectOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                    .eq(TCrmClinic::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            supplierClinicId =crmClinic.getId();
+        }
+        TErpClinicInventory tErpSupplierInventory = new TErpClinicInventory();
+        String s = DateUtils.dateTimeNow();
+        tErpSupplierInventory.setInventoryNumber("P" + s);
+        tErpSupplierInventory.setClinicId(supplierClinicId);
+        erpClinicInventoryMapper.insert(tErpSupplierInventory);
+
+        List<InventoryGoodsDto> dtos = dto.getDtos();
+        for (InventoryGoodsDto inventoryGoodsDto : dtos) {
+            // 根据入库批次id查询入库信息
+            TErpClinicWarehousing tErpSupplierWarehousing = new TErpClinicWarehousing();
+            TErpClinicWarehousingBatch tErpSupplierWarehousingBatch = erpClinicWarehousingBatchMapper.selectById(inventoryGoodsDto.getId());
+            String warehousingId = tErpSupplierWarehousingBatch.getWarehousingId();
+            TErpClinicWarehousing tErpSupplierWarehousing1 = erpClinicWarehousingMapper.selectById(warehousingId);
+            TErpGoods erpGoods = this.getById(tErpSupplierWarehousing1.getGoodsId());
+
+            // 盘点是盘亏盘盈   赢
+            if (inventoryGoodsDto.getNum() < inventoryGoodsDto.getInventoryCount()) {
+                // 添加入库信息
+                tErpSupplierWarehousing.setClinicId(supplierClinicId);
+                tErpSupplierWarehousing.setGoodsId(tErpSupplierWarehousing1.getGoodsId());
+                tErpSupplierWarehousing.setGoodsName(erpGoods.getGoodsName());
+                tErpSupplierWarehousing.setPurchaseCount(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum());
+                tErpSupplierWarehousing.setUnitAmount(erpGoods.getSalesAmount());
+                tErpSupplierWarehousing.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(tErpSupplierWarehousing.getPurchaseCount())));
+                // 当前年月日时分秒
+                String time = DateUtils.dateTimeNow();
+                tErpSupplierWarehousing.setWarehouseNo("G" + time);
+                tErpSupplierWarehousing.setType(2);
+                erpClinicWarehousingMapper.insert(tErpSupplierWarehousing);
+
+                // 添加批次信息
+                TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch1 = new TErpSupplierWarehousingBatch();
+                tErpSupplierWarehousingBatch1.setWarehousingId(tErpSupplierWarehousing.getId());
+                tErpSupplierWarehousingBatch1.setWarehousingNumber(tErpSupplierWarehousing.getPurchaseCount());
+                tErpSupplierWarehousingBatch1.setBatchNumber(tErpSupplierWarehousingBatch.getBatchNumber());
+                tErpSupplierWarehousingBatch1.setProductionDate(tErpSupplierWarehousingBatch.getProductionDate());
+                tErpSupplierWarehousingBatch1.setExpiryDate(tErpSupplierWarehousingBatch.getExpiryDate());
+                erpSupplierWarehousingBatchMapper.insert(tErpSupplierWarehousingBatch1);
+
+
+                // 添加盘点信息
+                TErpSupplierInventoryGoods tErpSupplierInventoryGoods = new TErpSupplierInventoryGoods();
+                tErpSupplierInventoryGoods.setInventoryId(tErpSupplierInventory.getId());
+                tErpSupplierInventoryGoods.setWarehousingId(tErpSupplierWarehousing.getId());
+                tErpSupplierInventoryGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch1.getId());
+                tErpSupplierInventoryGoods.setInventoryCount(inventoryGoodsDto.getInventoryCount());
+                tErpSupplierInventoryGoods.setDamagedCount(inventoryGoodsDto.getDamagedCount());
+                tErpSupplierInventoryGoods.setInventoryType(1);
+                tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousing1.getGoodsId());
+                erpSupplierInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
+
+            } else {
+
+
+                TErpSupplierOutbound tErpSupplierOutbound = new TErpSupplierOutbound();
+                tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
+                tErpSupplierOutbound.setSupplierId(supplierClinicId);
+                tErpSupplierOutbound.setOutboundType(6);
+                tErpSupplierOutbound.setOutboundNumber("G" + s);
+                int count = inventoryGoodsDto.getNum() - inventoryGoodsDto.getInventoryCount();
+                tErpSupplierOutbound.setTotalMoney(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
+                erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+
+
+                TErpSupplierOutboundGoods tErpSupplierOutboundGoods = new TErpSupplierOutboundGoods();
+                tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId());
+                tErpSupplierOutboundGoods.setWarehousingId(tErpSupplierWarehousing1.getId());
+                tErpSupplierOutboundGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch.getId());
+                tErpSupplierOutboundGoods.setOutboundCount(count);
+                tErpSupplierOutboundGoods.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
+                erpSupplierOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
+
+
+                // 添加盘点信息
+                TErpSupplierInventoryGoods tErpSupplierInventoryGoods = new TErpSupplierInventoryGoods();
+                tErpSupplierInventoryGoods.setInventoryId(tErpSupplierInventory.getId());
+                tErpSupplierInventoryGoods.setWarehousingId(tErpSupplierOutbound.getId());
+                tErpSupplierInventoryGoods.setWarehousingBatchId(tErpSupplierOutboundGoods.getId());
+                tErpSupplierInventoryGoods.setInventoryCount(inventoryGoodsDto.getInventoryCount());
+                tErpSupplierInventoryGoods.setDamagedCount(inventoryGoodsDto.getDamagedCount());
+                tErpSupplierInventoryGoods.setInventoryType(2);
+                tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousing1.getGoodsId());
+                erpSupplierInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
+            }
+        }
+
+
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
index 99a65ec..8a0c1b0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.domain.BaseModel;
@@ -12,6 +13,7 @@
 import com.ruoyi.system.query.TErpGoodsQuery;
 import com.ruoyi.system.query.TErpProcurementQuery;
 import com.ruoyi.system.service.TErpGoodsService;
+import com.ruoyi.system.service.TErpProcurementGoodsService;
 import com.ruoyi.system.service.TErpProcurementService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.system.vo.*;
@@ -26,7 +28,10 @@
 import org.apache.http.conn.ssl.SSLSocketFactory;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.DefaultHttpClient;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.net.ssl.SSLContext;
@@ -36,6 +41,7 @@
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.security.PrivateKey;
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
@@ -77,6 +83,9 @@
 
     @Resource
     private TErpGoodsUnitMapper erpGoodsUnitMapper;
+
+    @Autowired
+    private TErpProcurementGoodsService erpProcurementGoodsService;
 
 
 
@@ -238,18 +247,22 @@
     @Override
     public List<TErpGoodsVO> inventoryNotEnoughList(SysUser user) {
         List<TErpGoodsVO> list =  this.baseMapper.inventoryNotEnoughList(user);
-
-        return null;
+        return list;
     }
 
     @Override
-    public String addProcurement(String clinicSupplierId, SysUser user, List<AddProcurementDto> dtos) {
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+    public void addProcurement(String clinicSupplierId, SysUser user, List<AddProcurementDto> dtos) {
         List<String> goodsIds = dtos.stream().map(AddProcurementDto::getGoodsId).collect(Collectors.toList());
         List<TErpGoods> tErpGoods = erpGoodsMapper.selectBatchIds(goodsIds);
         for (AddProcurementDto dto : dtos) {
             TErpGoods tErpGoodsVO = tErpGoods.stream().filter(t -> t.getId().equals(dto.getGoodsId())).findFirst().get();
+            dto.setPlatformCommissionPrice(tErpGoodsVO.getPlatformCommissionPrice());
             dto.setSupplierId(tErpGoodsVO.getSupplierClinicId());
-            dto.setGoodsSalesAmount(tErpGoodsVO.getSalesAmount());
+            dto.setGoodsSalesAmount(tErpGoodsVO.getClinicPurchasePrice());
+            if(dto.getSalesAmount()==null){
+                dto.setSalesAmount(tErpGoodsVO.getClinicPurchasePrice());
+            }
         }
         // 供应商分组
         Map<String, List<AddProcurementDto>> supplierClinicIdListMap = dtos.stream().collect(Collectors.groupingBy(AddProcurementDto::getSupplierId));
@@ -271,7 +284,10 @@
             }else {
                 tErpProcurement.setStatus(2);
             }
-            this.save(tErpProcurement);
+            ArrayList<TErpProcurementGoods> tErpProcurementGoods1 = new ArrayList<>();
+
+            BigDecimal add =BigDecimal.ZERO;
+
             for (AddProcurementDto dto : value) {
                 TErpProcurementGoods tErpProcurementGoods = new TErpProcurementGoods();
                 tErpProcurementGoods.setProcurementId(tErpProcurement.getId());
@@ -285,15 +301,56 @@
                 tErpProcurementGoods.setUnitName(tErpGoodsUnit.getUnitName());
                 tErpProcurementGoods.setPurchasePrice(dto.getGoodsSalesAmount());
                 tErpProcurementGoods.setSalesAmount(dto.getSalesAmount());
+                tErpProcurementGoods.setTotalPrice(dto.getSalesAmount().multiply(new BigDecimal(dto.getPurchaseCount())));
 
                 tErpProcurementGoods.setPurchaseCount(dto.getPurchaseCount());
                 tErpProcurementGoods.setSupplierId(supplierClinicId);
                 tErpProcurementGoods.setRecvMerchantNo(supplier.getRecvMerchantNo());
+                tErpProcurementGoods.setSupplierMoney(dto.getSalesAmount().subtract(dto.getPlatformCommissionPrice()));
+                if(tErpProcurementGoods.getSupplierMoney().doubleValue()<0){
+                    throw new RuntimeException("平台抽成不能大于售卖价格");
+                }
+                add = add.add(dto.getPlatformCommissionPrice());
+                tErpProcurementGoods1.add(tErpProcurementGoods);
             }
+            BigDecimal bigDecimal = tErpProcurement.getPayMoney().multiply(BigDecimal.valueOf(0.0038)).setScale(2, RoundingMode.HALF_UP);
 
+            tErpProcurement.setMoney(add.subtract(bigDecimal));
+            if(tErpProcurement.getMoney().doubleValue()<0){
+                throw new RuntimeException("金额设置错误,请联系平台管理员");
+            }
+            this.save(tErpProcurement);
+            tErpProcurementGoods1.forEach(e->e.setProcurementId(tErpProcurement.getId()));
+            erpProcurementGoodsService.saveBatch(tErpProcurementGoods1);
         }
 
-        return "";
+    }
+
+    @Override
+    public DetailProcurementVO detailProcurement(String clinicSupplierId, SysUser user, String id) {
+        DetailProcurementVO detailProcurementVO = new DetailProcurementVO();
+        TErpProcurement tErpProcurement = this.getById(id);
+        detailProcurementVO.setStatus(tErpProcurement.getStatus());
+        detailProcurementVO.setCreateTime(tErpProcurement.getCreateTime());
+        detailProcurementVO.setSendTime(tErpProcurement.getSendTime());
+        TCrmSupplier supplier = crmSupplierMapper.selectById(tErpProcurement.getSupplierId());
+        detailProcurementVO.setSupplierName(supplier.getSupplierName());
+        detailProcurementVO.setUserName(sysUserMapper.selectUserById(Long.valueOf(tErpProcurement.getCreateId())).getUserName());
+        List<TErpProcurementGoods> list = erpProcurementGoodsService.list(new QueryWrapper<TErpProcurementGoods>().eq("procurement_id", id));
+        ArrayList<DetailProcurementNextVO> detailProcurementNextVOS = new ArrayList<>();
+        for (TErpProcurementGoods tErpProcurementGoods : list) {
+            DetailProcurementNextVO detailProcurementNextVO = new DetailProcurementNextVO();
+            detailProcurementNextVO.setGoodsName(tErpProcurementGoods.getGoodsName());
+            detailProcurementNextVO.setQuasiNumber(tErpProcurementGoods.getQuasiNumber());
+            detailProcurementNextVO.setPackingUnitName(tErpProcurementGoods.getUnitName());
+            detailProcurementNextVO.setSalesAmount(tErpProcurementGoods.getSalesAmount());
+            detailProcurementNextVO.setNum(tErpProcurementGoods.getPurchaseCount());
+            detailProcurementNextVO.setTotalPrice(tErpProcurement.getPayMoney());
+            detailProcurementNextVO.setId(tErpProcurementGoods.getId());
+            detailProcurementNextVOS.add(detailProcurementNextVO);
+        }
+        detailProcurementVO.setList(detailProcurementNextVOS);
+        return detailProcurementVO;
     }
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/DetailProcurementNextVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/DetailProcurementNextVO.java
new file mode 100644
index 0000000..42625b1
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/DetailProcurementNextVO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.system.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel(value = "诊所采购详情二级Vo")
+public class DetailProcurementNextVO {
+
+    @ApiModelProperty(value = "采购二级id")
+    private String id;
+
+    private String goodsName;
+
+    @ApiModelProperty(value = "国药准字号")
+    private String quasiNumber;
+
+    @ApiModelProperty(value = "单位")
+    private String packingUnitName;
+
+    @ApiModelProperty(value = "商品售价")
+    private BigDecimal salesAmount;
+
+    @ApiModelProperty(value = "数量")
+    private Integer num;
+
+    @ApiModelProperty(value = "状态")
+    private BigDecimal totalPrice=BigDecimal.ZERO;
+
+
+    
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/DetailProcurementVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/DetailProcurementVO.java
new file mode 100644
index 0000000..87fa093
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/DetailProcurementVO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.system.vo;
+
+import com.ruoyi.system.model.TErpGoods;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@ApiModel(value = "诊所采购详情Vo")
+public class DetailProcurementVO{
+    @ApiModelProperty(value = "状态 1=草稿 2=待支付 3=待发货 4=已发货 5=已入库 6=已取消")
+    private Integer status;
+
+    @ApiModelProperty(value = "供应商名称")
+    private String supplierName;
+
+    @ApiModelProperty(value = "发起人")
+    private String userName;
+
+    @ApiModelProperty(value = "发起时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "发货时间")
+    private LocalDateTime sendTime;
+
+    @ApiModelProperty(value = "采购二级详情")
+    private List<DetailProcurementNextVO> list;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpGoodsInventoryVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpGoodsInventoryVO.java
index bc1d288..30efc0b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpGoodsInventoryVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpGoodsInventoryVO.java
@@ -58,4 +58,7 @@
     private LocalDateTime expiryDate;
 
 
+    private Integer goodsSource;
+
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementVo.java
index 3f3a9b5..eee3e61 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementVo.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpProcurementVo.java
@@ -26,6 +26,10 @@
     @ApiModelProperty(value = "诊所名称")
     private String clinicName;
 
+    @ApiModelProperty(value = "供应商名称")
+    private String supplierName;
+
+    @ApiModelProperty(value = "品种数")
     private Integer typeNum;
 
 
diff --git a/ruoyi-system/src/main/resources/mapper/system/TErpClinicWarehousingMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TErpClinicWarehousingMapper.xml
index 939f9e6..48188b6 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TErpClinicWarehousingMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TErpClinicWarehousingMapper.xml
@@ -26,5 +26,97 @@
     <sql id="Base_Column_List">
         id, procurement_id, clinic_id, goods_id, goods_name, supplier_name, quasi_number, sales_amount, purchase_count, total_price, warehousing_type, create_time, update_time, create_by, update_by, disabled
     </sql>
+    <select id="pageInventoryList" resultType="com.ruoyi.system.vo.PageInventoryListVo">
+        select t1.id,t1.create_time,t2.user_name createBy,t3.warehouse_name
+        from t_erp_clinic_inventory t1 left join sys_user t2 on t1.create_id = t2.user_id
+        left join t_crm_warehouse t3 on t1.warehouse_id =t3.id
+        where t1.disabled = 0
+        <if test="user.roleType !=null and user.roleType ==5">
+            and t1.clinic_id = #{supplierClinicId}
+        </if>
+        <if test="query.createBy != null and query.createBy != ''">
+            and t2.user_name like concat('%',#{query.createBy},'%')
+        </if>
+        <if test="sTime != null and eTime !=null ">
+            and t1.create_time between #{sTime} and #{eTime}
+        </if>
+        order by t1.create_time desc
+    </select>
+
+
+    <select id="validityPeriodWarning" resultType="com.ruoyi.system.vo.ValidityPeriodWarningVo">
+        select t2.warehouse_no warehousingNo, t4.goods_name, t4.quasi_number, t1.batch_number, t1.id as batchId,t1.expiry_date, t4.id as goodsId,t5.type_name,t6.unit_name packingUnitName,
+        case
+        when t3.id is null then t1.warehousing_number
+        else t1.warehousing_number -t3.outbound_count
+        end as num
+        from t_erp_clinic_warehousing_batch t1
+        left join t_erp_clinic_warehousing t2 on t1.warehousing_id = t2.id
+        LEFT JOIN t_erp_clinic_outbound_goods t3 on t3.warehousing_batch_id = t1.id
+        LEFT JOIN t_erp_goods t4 on t2.goods_id = t4.id
+        left join t_erp_goods_type t5 on t4.type_id = t5.id
+        left join t_erp_goods_unit t6 on t4.packing_unit_id = t6.id
+        where #{time} > t1.expiry_date
+        and (t1.warehousing_number - t3.outbound_count > 0 or t3.id is null)
+        <if test="user.roleType !=null and user.roleType ==5">
+            and t2.clinic_id =#{supplierClinicId}
+        </if>
+        <if test="query.name != null and query.name != ''">
+            and t4.goods_name like concat('%',#{query.goodsName},'%')
+        </if>
+        <if test="query.quasiNumber != null and query.quasiNumber != ''">
+            and t4.quasi_number like concat('%',#{query.quasiNumber},'%')
+        </if>
+        <if test="query.batchNumber != null and query.batchNumber != ''">
+            and t1.batch_number like concat('%',#{query.batchNumber},'%')
+        </if>
+        <if test="query.typeId != null and query.typeId != ''">
+            and t4.type_id = #{query.typeId}
+        </if>
+        order by t1.expiry_date
+
+    </select>
+
+    <sql id="Base_Column_List1">
+        t1.id, t1.supplier_clinic_id, t1.goods_source, t1.goods_name, t1.goods_id_code, t1.quasi_number, t1.manufacturer, t1.formulation_spec, t1.packing_spec, t1.type_id, t1.goods_yards, t1.maintenance_interval, t1.low_purchase_quantity, t1.low_unit_id, t1.is_prescription_drug, t1.goods_spec, t1.warning_inventory, t1.sales_amount, t1.packing_unit_id, t1.instructions_use, t1.side_effect, t1.clinic_purchase_price, t1.platform_commission_price, t1.create_time, t1.update_time, t1.create_by,t1.`state`, t1.update_by, t1.disabled,
+    </sql>
+    <select id="pageList" resultType="com.ruoyi.system.vo.TErpGoodsVO">
+        select * from (
+        select <include refid="Base_Column_List1"/>
+        COALESCE(sum(t2.goods_count), 0) - COALESCE(sum(t3.outbound_count), 0) as allNum,
+        SUM(t2.unit_amount * (t2.goods_count - COALESCE(t3.outbound_count, 0))) as allTotalPrice,
+
+        COALESCE(sum(t3.outbound_count), 0) as outNum
+        from t_erp_goods t1  left join  t_erp_clinic_warehousing t2  on t1.id = t2.goods_id
+        left join  t_erp_clinic_outbound_goods t3 on t2.id = t3.warehousing_id
+        where t1.disabled = 0 and t2.id is not null
+        <if test="query.goodsName != null and query.goodsName != ''">
+            and t1.goods_name like concat('%',#{query.goodsName},'%')
+        </if>
+        <if test="query.goodsIdCode != null and query.goodsIdCode != ''">
+            and t1.goods_id_code like concat('%',#{query.goodsIdCode},'%')
+        </if>
+        <if test="query.typeId != null and query.typeId != ''">
+            and t1.type_id = #{query.typeId}
+        </if>
+        <if test="query.quasiNumber != null and query.quasiNumber != ''">
+            and t1.quasi_number like concat('%',#{query.quasiNumber},'%')
+        </if>
+        <if test="query.state != null ">
+            and t1.state = #{query.state}
+        </if>
+        <if test="user.roleType != null and user.roleType == 4 ">
+            and t1.goods_source =1 and t1.supplier_clinic_id =#{query.supplierClinicId}
+        </if>
+        <if test="user.roleType != null and user.roleType == 5 ">
+            and ( ( t1.goods_source =2 and  t1.supplier_clinic_id =#{query.supplierClinicId} ) or  find_in_set(#{query.supplierClinicId},t1.clinic_ids) )
+        </if>
+        GROUP BY t1.id
+        ) o where 1=1
+        <if test="query.type != null and query.type ==1">
+            and  o.warning_inventory  > (o.allNum-o.outNum)
+        </if>
+        order by o.create_time desc
+    </select>
 
 </mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml
index 8cdc313..3e214fa 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml
@@ -76,7 +76,7 @@
             and goods_source =1 and supplier_clinic_id = #{query.supplierClinicId}
         </if>
         <if test="user.roleType != null and user.roleType == 5 ">
-            and goods_source =2 and supplier_clinic_id = #{query.supplierClinicId}
+            and  ( (goods_source =2 and supplier_clinic_id = #{query.supplierClinicId} ) or FIND_IN_SET(#{query.supplierClinicId},clinic_ids) )
         </if>
         order by create_time desc
     </select>
@@ -164,6 +164,55 @@
         where (o.warehousing_number -o.outbound_count) >0
         order by o.create_time desc
     </select>
+    <select id="pageInventoryGoodsPageList1" resultType="com.ruoyi.system.vo.TErpGoodsInventoryVO">
+        select * from (
+        SELECT t1.id,t2.warehouse_no,
+        t3.goods_name,t3.goods_source,
+        t4.supplier_name,
+        t3.type_id,
+        t3.packing_unit_id,
+        t3.quasi_number,
+        t3.goods_id_code,
+        t1.batch_number,
+        coalesce(sum(t5.outbound_count),0) as outbound_count,
+        t1.warehousing_number,
+        t2.create_time,
+        t1.warehousing_number - coalesce(sum(t5.outbound_count),0) as num,
+        t2.unit_amount as sales_amount,
+        t1.expiry_date
+        from t_erp_clinic_warehousing_batch t1
+        LEFT JOIN t_erp_clinic_warehousing t2 on t1.warehousing_id = t2.id
+        LEFT JOIN t_erp_goods t3 on t2.goods_id = t3.id
+        LEFT JOIN t_crm_supplier t4 on t3.supplier_clinic_id = t4.id
+        LEFT JOIN t_erp_clinic_outbound_goods t5 on t5.warehousing_batch_id =t1.id
+        where t2.disabled = 0 and t2.warehouse_id = #{query.warehouseId}
+        <if test="query.type != null and query.type ==1">
+            and #{time} > t1.expiry_date
+        </if>
+        <if test="query.goodsName != null and query.goodsName != ''">
+            and t3.goods_name like concat('%',#{query.goodsName},'%')
+        </if>
+        <if test="query.supplierName != null and query.supplierName != ''">
+            and (t4.supplier_name like concat('%',#{query.supplierName},'%') or t3.supplierName like concat('%',#{query.supplierName},'%'))
+        </if>
+
+        <if test="query.typeId != null and query.typeId != ''">
+            and t3.type_id = #{query.typeId}
+        </if>
+        <if test="query.quasiNumber != null and query.quasiNumber != ''">
+            and t3.quasi_number =#{query.quasiNumber}
+        </if>
+        <if test="query.batchNumber != null and query.batchNumber != ''">
+            and t1.batch_number =#{query.batchNumber}
+        </if>
+        <if test="query.warehouseNo != null and query.warehouseNo != ''">
+            and t2.warehouse_no = #{query.warehouseNo}
+        </if>
+        GROUP BY t1.id
+        ) as o
+        where (o.warehousing_number -o.outbound_count) >0
+        order by o.create_time desc
+    </select>
     <select id="pageInventoryGoodsList" resultType="com.ruoyi.system.vo.TErpGoodsInventoryVO">
         select * from (
         SELECT t1.id,t2.warehouse_no,
@@ -199,5 +248,40 @@
         where (o.warehousing_number -o.outbound_count) >0
         order by o.create_time desc
     </select>
+    <select id="pageInventoryGoodsList1" resultType="com.ruoyi.system.vo.TErpGoodsInventoryVO">
+        select * from (
+        SELECT t1.id,t2.warehouse_no,
+        t3.goods_name,
+        t4.supplier_name,
+        t3.type_id,
+        t3.packing_unit_id,
+        t3.quasi_number,
+        t3.goods_id_code,
+        t1.batch_number,
+        coalesce(sum(t5.outbound_count),0) as outbound_count,
+        t1.warehousing_number,
+        t2.create_time,
+        t1.warehousing_number - coalesce(sum(t5.outbound_count),0) as num,
+        t2.unit_amount as sales_amount,
+        t1.expiry_date
+        from t_erp_clinic_warehousing_batch t1
+        LEFT JOIN t_erp_clinic_warehousing t2 on t1.warehousing_id = t2.id
+        LEFT JOIN t_erp_goods t3 on t2.goods_id = t3.id
+        LEFT JOIN t_crm_supplier t4 on t3.supplier_clinic_id = t4.id
+        LEFT JOIN t_erp_supplier_outbound_goods t5 on t5.warehousing_batch_id =t1.id
+        where t2.disabled = 0
+        and #{endDate} > t1.expiry_date
+        <if test="user.roleType !=null and user.roleType ==4">
+            and t3.supplier_clinic_id =#{supplierClinicId} and t3.goods_source=1
+        </if>
+        <if test="user.roleType !=null and user.roleType ==5">
+            and t3.supplier_clinic_id =#{supplierClinicId} and t3.goods_source=2
+        </if>
+
+        GROUP BY t1.id
+        ) as o
+        where (o.warehousing_number -o.outbound_count) >0
+        order by o.create_time desc
+    </select>
 
 </mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml
index cd6e62c..ee22064 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml
@@ -30,7 +30,7 @@
         select t1.id,
         t1.procurement_code,
         t1.clinic_id,
-        t3.clinic_name,
+        t3.supplier_name,
         sum(t2.total_price) as totalPrice,
         t1.create_time,
         t2.id tErpProcurementGoodsId,
@@ -38,7 +38,7 @@
         t1.status
         from t_erp_procurement t1
         left JOIN t_erp_procurement_goods t2 on t1.id = t2.procurement_id
-        LEFT JOIN t_crm_clinic t3 on t1.clinic_id = t3.id
+        LEFT JOIN t_crm_supplier t3 on t1.supplier_id = t3.id
         left JOIN sys_user t4 on t1.create_id = t4.user_id
         where t1.disabled = 0
         <if test="user.roleType !=null and user.roleType==4">
@@ -48,7 +48,7 @@
             and t1.procurement_code = #{query.procurementCode}
         </if>
         <if test="query.clinicName != null and query.clinicName != ''">
-            and t3.clinic_name like concat('%',#{query.clinicName},'%')
+            and t3.supplier_name like concat('%',#{query.clinicName},'%')
         </if>
         <if test="query.userName != null and query.userName != ''">
             and t4.user_name like concat('%',#{query.userName},'%')

--
Gitblit v1.7.1