From 092a98a583c4fe822a3eb4c4dac086f84b16189c Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 26 九月 2025 17:58:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java |  210 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 204 insertions(+), 6 deletions(-)

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 6135d0b..1cf9c4e 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,36 @@
 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.BaseModel;
 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.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.TErpProcurementService;
-import com.ruoyi.system.service.TErpSupplierWarehousingService;
-import com.ruoyi.system.vo.TErpGoodsVO;
-import com.ruoyi.system.vo.TErpProcurementDetailVo;
-import com.ruoyi.system.vo.TErpProcurementVo;
+import com.ruoyi.system.service.*;
+import com.ruoyi.system.vo.*;
+import com.ruoyi.web.core.config.LakalaConfig;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -33,11 +48,26 @@
 
     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;
+    private final TCrmSupplierService crmSupplierService;
+
 
     @Autowired
-    public TErpProcurementController(TErpProcurementService erpProcurementService, TokenService tokenService) {
+    public TErpProcurementController(TErpProcurementService erpProcurementService, TokenService tokenService,TCrmClinicService crmClinicService,TErpProcurementGoodsService erpProcurementGoodsService
+    , TErpGoodsService erpGoodsService,TErpClinicWarehousingService erpClinicWarehousingService,TErpClinicWarehousingBatchService erpClinicWarehousingBatchService,
+                                     TCrmSupplierService crmSupplierService) {
         this.erpProcurementService = erpProcurementService;
         this.tokenService = tokenService;
+        this.crmClinicService = crmClinicService;
+        this.erpProcurementGoodsService = erpProcurementGoodsService;
+        this.erpGoodsService = erpGoodsService;
+        this.erpClinicWarehousingService = erpClinicWarehousingService;
+        this.erpClinicWarehousingBatchService = erpClinicWarehousingBatchService;
+        this.crmSupplierService = crmSupplierService;
     }
 
 
@@ -61,5 +91,173 @@
         return R.ok(erpProcurementService.detail(id,user,goodsName));
     }
 
+
+    /**
+     * 获取erp问题上报管理列表
+     */
+    @ApiOperation(value = "采购获取商品分页列表")
+    @PostMapping(value = "/pageGoodsPageList")
+    public R<PageInfo<TErpGoods>> pageList(@RequestBody TErpGoodsQuery query) {
+        SysUser user = tokenService.getLoginUser().getUser();
+        return R.ok(erpProcurementService.pageGoodsPageList(query,user));
+    }
+
+
+    /**
+     * 获取erp问题上报管理列表
+     */
+    @ApiOperation(value = "采购获取库存不足列表")
+    @PostMapping(value = "/inventoryNotEnoughList")
+    public R<List<TErpGoodsVO>> inventoryNotEnoughList() {
+        SysUser user = tokenService.getLoginUser().getUser();
+        return R.ok(erpProcurementService.inventoryNotEnoughList(user));
+    }
+
+
+
+    @ApiOperation(value = "添加采购")
+    @PostMapping(value = "/addProcurement")
+    public R<String> addProcurement(@RequestBody @Valid List<AddProcurementDto> dtos) {
+        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();
+        }
+        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 = "采购草稿")
+    @GetMapping(value = "/getProcurementDraft")
+    public R<ArrayList<DetailProcurementNextVO>> getProcurementDraft() {
+        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();
+        }
+        ArrayList<DetailProcurementNextVO> detailProcurementNextVOS = new ArrayList<>();
+        List<TErpProcurement> list1 = erpProcurementService.list(new LambdaQueryWrapper<TErpProcurement>().eq(TErpProcurement::getStatus, 1).orderByDesc(BaseModel::getCreateTime));
+        if(list1.isEmpty()){
+            return R.ok(detailProcurementNextVOS);
+        }
+        String id = list1.get(0).getId();
+        List<TErpProcurementGoods> list = erpProcurementGoodsService.list(new LambdaQueryWrapper<TErpProcurementGoods>().eq(TErpProcurementGoods::getProcurementId, id));
+
+        for (TErpProcurementGoods tErpProcurementGoods : list) {
+            DetailProcurementNextVO detailProcurementNextVO = new DetailProcurementNextVO();
+            detailProcurementNextVO.setId(tErpProcurementGoods.getId());
+            detailProcurementNextVO.setGoodsName(tErpProcurementGoods.getGoodsName());
+            detailProcurementNextVO.setQuasiNumber(tErpProcurementGoods.getQuasiNumber());
+            detailProcurementNextVO.setPackingUnitName(tErpProcurementGoods.getUnitName());
+            detailProcurementNextVO.setSalesAmount(tErpProcurementGoods.getSalesAmount());
+            detailProcurementNextVO.setNum(tErpProcurementGoods.getPurchaseCount());
+            detailProcurementNextVO.setTotalPrice(tErpProcurementGoods.getTotalPrice());
+            detailProcurementNextVO.setSupplierName(tErpProcurementGoods.getSupplierName());
+            detailProcurementNextVO.setUnitName(tErpProcurementGoods.getUnitName());
+            detailProcurementNextVO.setPurchasePrice(tErpProcurementGoods.getPurchasePrice());
+            detailProcurementNextVOS.add(detailProcurementNextVO);
+        }
+        return R.ok(detailProcurementNextVOS);
+    }
+
+    @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));
+        TErpClinicWarehousing tErpClinicWarehousing = new TErpClinicWarehousing();
+        tErpClinicWarehousing.setClinicId(erpProcurement.getClinicId());
+        tErpClinicWarehousing.setProcurementId(erpProcurement.getId());
+//        tErpClinicWarehousing.setGoodsId(erpGoods.getId());
+//        tErpClinicWarehousing.setGoodsName(erpGoods.getGoodsName());
+        TCrmSupplier byId = crmSupplierService.getById(erpProcurement.getSupplierId());
+        tErpClinicWarehousing.setSupplierName(byId.getSupplierName());
+//        tErpClinicWarehousing.setQuasiNumber(erpGoods.getQuasiNumber());
+//        tErpClinicWarehousing.setSalesAmount(tErpProcurementGoods.getSalesAmount());
+//        tErpClinicWarehousing.setPurchaseCount(updateStatusProcurementDto.getPurchaseCount());
+        tErpClinicWarehousing.setTotalPrice(erpProcurement.getPayMoney());
+//        tErpClinicWarehousing.setUnitAmount(tErpProcurementGoods.getSalesAmount());
+        tErpClinicWarehousing.setWarehousingType(1);
+        tErpClinicWarehousing.setType(1);
+        tErpClinicWarehousing.setWarehouseNo("G"+ DateUtils.dateTimeNow());
+        erpClinicWarehousingService.save(tErpClinicWarehousing);
+        // 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());
+            TErpClinicWarehousingBatch tErpClinicWarehousingGoods = new TErpClinicWarehousingBatch();
+            tErpClinicWarehousingGoods.setWarehousingId(tErpClinicWarehousing.getId());
+            tErpClinicWarehousingGoods.setWarehousingNumber(updateStatusProcurementDto.getPurchaseCount());
+            tErpClinicWarehousingGoods.setBatchNumber(updateStatusProcurementDto.getBatchNumber());
+            tErpClinicWarehousingGoods.setProductionDate(updateStatusProcurementDto.getProductionDate());
+            tErpClinicWarehousingGoods.setExpiryDate(updateStatusProcurementDto.getExpiryDate());
+            tErpClinicWarehousingGoods.setGoodsId(erpGoods.getId());
+            tErpClinicWarehousingGoods.setGoodsName(erpGoods.getGoodsName());
+            tErpClinicWarehousingGoods.setQuasiNumber(erpGoods.getQuasiNumber());
+            tErpClinicWarehousingGoods.setSalesAmount(tErpProcurementGoods.getSalesAmount());
+            erpClinicWarehousingBatchService.save(tErpClinicWarehousingGoods);
+
+        }
+        return R.ok();
+    }
+
+
+
+
+
+
+
+
 }
 

--
Gitblit v1.7.1