package com.ruoyi.web.controller.api;
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.framework.web.service.TokenService;
import com.ruoyi.system.dto.InventoryDto;
import com.ruoyi.system.dto.OutboundGoodsDto;
import com.ruoyi.system.dto.WarehousingGoodsDto;
import com.ruoyi.system.model.TCrmClinic;
import com.ruoyi.system.model.TCrmSupplier;
import com.ruoyi.system.query.*;
import com.ruoyi.system.service.TCrmClinicService;
import com.ruoyi.system.service.TCrmSupplierService;
import com.ruoyi.system.service.TErpGoodsService;
import com.ruoyi.system.service.TErpSupplierWarehousingService;
import com.ruoyi.system.vo.*;
import com.ruoyi.web.core.config.LakalaConfig;
import io.swagger.annotations.Api;
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;
/**
*
* erp供应商入库 前端控制器
*
*
* @author xiaochen
* @since 2025-08-20
*/
@RestController
@RequestMapping("/t-erp-supplier-warehousing")
@Api(tags = "供应商库存管理")
public class TErpSupplierWarehousingController {
private final TErpSupplierWarehousingService erpSupplierWarehousingService;
private final TErpGoodsService erpGoodsService;
private final TokenService tokenService;
private final TCrmClinicService crmClinicService;
private final TCrmSupplierService crmSupplierService;
@Autowired
public TErpSupplierWarehousingController(TErpSupplierWarehousingService erpSupplierWarehousingService, TErpGoodsService erpGoodsService, TokenService tokenService,
TCrmClinicService crmClinicService,TCrmSupplierService crmSupplierService) {
this.erpSupplierWarehousingService = erpSupplierWarehousingService;
this.erpGoodsService = erpGoodsService;
this.tokenService = tokenService;
this.crmClinicService = crmClinicService;
this.crmSupplierService = crmSupplierService;
}
/**
* 获取erp问题上报管理列表
*/
@ApiOperation(value = "供应商获取库存分页列表")
@PostMapping(value = "/pageList")
public R> 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(erpSupplierWarehousingService.pageList(query,user));
}
@ApiOperation(value = "供应商库存详情")
@GetMapping(value = "/detail")
public R> detail(@RequestParam String id, String warehouseName) {
SysUser user = tokenService.getLoginUser().getUser();
return R.ok(erpSupplierWarehousingService.detail(id,warehouseName,user));
}
@ApiOperation(value = "供应商获取库存记录列表")
@PostMapping(value = "/pageWarehouseList")
public R> pageWarehouseList(@RequestBody @Valid TErpGoodsWarehouseQuery query) {
SysUser user = tokenService.getLoginUser().getUser();
return R.ok(erpSupplierWarehousingService.pageWarehouseList(query,user));
}
@ApiOperation(value = "供应商库存入库")
@PostMapping(value = "/warehousingGoods")
public R> warehousingGoods(@RequestBody @Valid List dtos) {
SysUser user = tokenService.getLoginUser().getUser();
erpSupplierWarehousingService.warehousingGoods(dtos,user);
return R.ok();
}
@ApiOperation(value = "供应商库存出库")
@PostMapping(value = "/outbountGoods")
public R> outbountGoods(@RequestBody @Valid OutboundGoodsDto dto) {
SysUser user = tokenService.getLoginUser().getUser();
erpSupplierWarehousingService.outbountGoods(dto,user);
return R.ok();
}
@ApiOperation(value = "有效期预警")
@PostMapping(value = "/validityPeriodWarning")
public R> validityPeriodWarning(@RequestBody ValidityPeriodWarningQuery query) {
SysUser user = tokenService.getLoginUser().getUser();
PageInfo pageInfo =erpSupplierWarehousingService.validityPeriodWarning(query,user);
return R.ok(pageInfo);
}
@ApiOperation(value = "供应商 盘点")
@PostMapping(value = "/pageInventoryList")
public R> pageInventoryList(@RequestBody TErpInventoryQuery query) {
SysUser user = tokenService.getLoginUser().getUser();
return R.ok(erpSupplierWarehousingService.pageInventoryList(query,user));
}
@ApiOperation(value = "供应商 盘点详情")
@GetMapping(value = "/detailInventory/{id}")
public R> detailInventory(@PathVariable String id) {
SysUser user = tokenService.getLoginUser().getUser();
return R.ok(erpSupplierWarehousingService.detailInventory(id,user));
}
@ApiOperation(value = "供应商 盘点 出库 商品选择")
@PostMapping(value = "/pageInventoryGoodsPageList")
public R> pageInventoryGoodsPageList(@RequestBody @Valid TErpGoodsInventoryQuery query) {
SysUser user = tokenService.getLoginUser().getUser();
return R.ok(erpGoodsService.pageInventoryGoodsPageList(query,user));
}
@ApiOperation(value = "有效期预警商品选择")
@GetMapping(value = "/pageInventoryGoodsList")
public R> pageInventoryGoodsList(@RequestParam String warehouseId,@RequestParam(required = false)String batchId) {
SysUser user = tokenService.getLoginUser().getUser();
List tErpGoodsInventoryVOS = erpGoodsService.pageInventoryGoodsList(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.inventoryGoods(dto,user);
return R.ok();
}
}