package com.ruoyi.web.controller.api;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.BaseModel;
|
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.ClinicOutboundGoodsDto;
|
import com.ruoyi.system.dto.InventoryDto;
|
import com.ruoyi.system.dto.WarehouseGoodsDto;
|
import com.ruoyi.system.dto.clinicWarehouseGoodsDto;
|
import com.ruoyi.system.model.*;
|
import com.ruoyi.system.query.*;
|
import com.ruoyi.system.service.*;
|
import com.ruoyi.system.vo.*;
|
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.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* erp诊所入库 前端控制器
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2025-08-20
|
*/
|
@RestController
|
@RequestMapping("/t-erp-clinic-warehousing")
|
@Api(tags = "诊所库存管理")
|
public class TErpClinicWarehousingController {
|
|
private final TErpClinicWarehousingService erpClinicWarehousingService;
|
private final TErpGoodsService erpGoodsService;
|
private final TokenService tokenService;
|
private final TCrmClinicService crmClinicService;
|
private final TCrmSupplierService crmSupplierService;
|
private final TErpClinicWarehousingBatchService erpClinicWarehousingBatchService;
|
private final TErpGoodsUnitService erpGoodsUnitService;
|
|
|
@Autowired
|
public TErpClinicWarehousingController(TErpClinicWarehousingService erpClinicWarehousingService, TErpGoodsService erpGoodsService, TokenService tokenService,
|
TCrmClinicService crmClinicService,TCrmSupplierService crmSupplierService,TErpClinicWarehousingBatchService erpClinicWarehousingBatchService,
|
TErpGoodsUnitService erpGoodsUnitService) {
|
this.erpClinicWarehousingService = erpClinicWarehousingService;
|
this.erpGoodsService = erpGoodsService;
|
this.tokenService = tokenService;
|
this.crmClinicService = crmClinicService;
|
this.crmSupplierService = crmSupplierService;
|
this.erpClinicWarehousingBatchService = erpClinicWarehousingBatchService;
|
this.erpGoodsUnitService = erpGoodsUnitService;
|
|
}
|
|
|
|
|
/**
|
* 获取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));
|
}
|
|
/**
|
* 获取erp问题上报管理列表
|
*/
|
@ApiOperation(value = "诊所 获取库存库存不足")
|
@PostMapping(value = "/pageNotInventoryGoodsList")
|
public R<List<TErpGoodsVO>> pageNotInventoryGoodsList(@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.pageList1(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);
|
}
|
|
|
|
|
/**
|
* 获取erp问题上报管理列表
|
*/
|
@ApiOperation(value = "诊所 入库列表")
|
@PostMapping(value = "/warehousePageList")
|
public R<PageInfo<TErpClinicWarehousePageListVO>> warehousePageList(@RequestBody TClinicWarehouseQuery query) {
|
|
SysUser user = tokenService.getLoginUser().getUser();
|
Integer roleType = user.getRoleType();
|
String supplierClinicId =null;
|
if(roleType == 5){
|
// 诊所
|
TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
|
.eq(TCrmClinic::getUserId, user.getUserId())
|
.last("LIMIT 1"));
|
supplierClinicId = crmClinic.getId();
|
}
|
|
return R.ok(erpClinicWarehousingService.warehousePageList(query,user,supplierClinicId));
|
}
|
|
|
@ApiOperation(value = "诊所 入库商品列表")
|
@PostMapping(value = "/warehouseGoodsPageList")
|
public R<Page<TErpGoods>> warehouseGoodsPageList(@RequestBody TClinicGoodsWarehouseQuery query) {
|
|
SysUser user = tokenService.getLoginUser().getUser();
|
Integer roleType = user.getRoleType();
|
String supplierClinicId =null;
|
if(roleType == 5){
|
// 诊所
|
TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
|
.eq(TCrmClinic::getUserId, user.getUserId())
|
.last("LIMIT 1"));
|
supplierClinicId = crmClinic.getId();
|
}
|
|
return R.ok(erpGoodsService.warehouseGoodsPageList(query,user,supplierClinicId));
|
}
|
|
|
|
@ApiOperation(value = "诊所 入库商品详情")
|
@GetMapping(value = "/warehouseGoodsDetail/{id}")
|
public R<WarehouseGoodsDetailVo> warehouseGoodsDetail(@PathVariable String id) {
|
SysUser user = tokenService.getLoginUser().getUser();
|
Integer roleType = user.getRoleType();
|
String supplierClinicId =null;
|
if(roleType == 5){
|
// 诊所
|
TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
|
.eq(TCrmClinic::getUserId, user.getUserId())
|
.last("LIMIT 1"));
|
supplierClinicId = crmClinic.getId();
|
}
|
|
return R.ok(erpGoodsService.warehouseGoodsDetail(id));
|
}
|
|
|
@ApiOperation(value = "诊所 出库商品详情")
|
@GetMapping(value = "/outboundGoodsDetail/{id}")
|
public R<OutboundGoodsDetailVo> outboundGoodsDetail(@PathVariable String id) {
|
SysUser user = tokenService.getLoginUser().getUser();
|
Integer roleType = user.getRoleType();
|
String supplierClinicId =null;
|
if(roleType == 5){
|
// 诊所
|
TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
|
.eq(TCrmClinic::getUserId, user.getUserId())
|
.last("LIMIT 1"));
|
supplierClinicId = crmClinic.getId();
|
}
|
|
return R.ok(erpGoodsService.outboundGoodsDetail(id));
|
}
|
|
@ApiOperation(value = "诊所 入库商品操作")
|
@PostMapping(value = "/warehouseGoods")
|
public R<?> warehouseGoods(@RequestBody @Valid WarehouseGoodsDto dto) {
|
SysUser user = tokenService.getLoginUser().getUser();
|
Integer roleType = user.getRoleType();
|
String supplierClinicId =null;
|
if(roleType == 5){
|
// 诊所
|
TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
|
.eq(TCrmClinic::getUserId, user.getUserId())
|
.last("LIMIT 1"));
|
supplierClinicId = crmClinic.getId();
|
}
|
erpClinicWarehousingService.warehouseGoods(dto,user,supplierClinicId);
|
return R.ok();
|
}
|
@ApiOperation(value = "诊所 获取草稿")
|
@GetMapping(value = "/getWarehouseGoodsDraft")
|
public R<List<TErpClinicWarehousingBatch>> getWarehouseGoodsDraft() {
|
SysUser user = tokenService.getLoginUser().getUser();
|
Integer roleType = user.getRoleType();
|
String supplierClinicId =null;
|
ArrayList<TErpClinicWarehousingBatch> clinicWarehouseGoodsDtos = new ArrayList<>();
|
if(roleType == 5){
|
// 诊所
|
TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
|
.eq(TCrmClinic::getUserId, user.getUserId())
|
.last("LIMIT 1"));
|
supplierClinicId = crmClinic.getId();
|
List<TErpClinicWarehousing> list = erpClinicWarehousingService.list(new LambdaQueryWrapper<TErpClinicWarehousing>().eq(TErpClinicWarehousing::getClinicId, supplierClinicId).eq(TErpClinicWarehousing::getStatus, 1).orderByDesc(BaseModel::getCreateTime));
|
if(list.isEmpty()){
|
return R.ok(clinicWarehouseGoodsDtos);
|
}
|
List<TErpClinicWarehousingBatch> list1 = erpClinicWarehousingBatchService.list(new LambdaQueryWrapper<TErpClinicWarehousingBatch>().eq(TErpClinicWarehousingBatch::getWarehousingId, list.get(0).getId()));
|
for (TErpClinicWarehousingBatch tErpClinicWarehousingBatch : list1) {
|
String goodsId = tErpClinicWarehousingBatch.getGoodsId();
|
TErpGoods tErpGoods = erpGoodsService.getOne(new LambdaQueryWrapper<TErpGoods>().eq(TErpGoods::getId, goodsId));
|
TErpGoodsUnit byId = erpGoodsUnitService.getById(tErpGoods.getPackingUnitId());
|
tErpClinicWarehousingBatch.setUnitName(byId.getUnitName());
|
}
|
return R.ok(list1);
|
}
|
return R.ok(clinicWarehouseGoodsDtos);
|
}
|
|
|
|
|
|
/**
|
* 获取erp问题上报管理列表
|
*/
|
@ApiOperation(value = "诊所 出库列表")
|
@PostMapping(value = "/outboundPageList")
|
public R<PageInfo<TErpClinicOutboundPageListVO>> outboundPageList(@RequestBody TClinicOutboundQuery query) {
|
SysUser user = tokenService.getLoginUser().getUser();
|
Integer roleType = user.getRoleType();
|
String supplierClinicId =null;
|
if(roleType == 5){
|
// 诊所
|
TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
|
.eq(TCrmClinic::getUserId, user.getUserId())
|
.last("LIMIT 1"));
|
supplierClinicId = crmClinic.getId();
|
}
|
|
return R.ok(erpClinicWarehousingService.outboundPageList(query,user,supplierClinicId));
|
}
|
|
|
@ApiOperation(value = "诊所 出库商品操作")
|
@PostMapping(value = "/outboundGoods")
|
public R<?> outboundGoods(@RequestBody @Valid ClinicOutboundGoodsDto dto) {
|
SysUser user = tokenService.getLoginUser().getUser();
|
Integer roleType = user.getRoleType();
|
String supplierClinicId =null;
|
if(roleType == 5){
|
// 诊所
|
TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
|
.eq(TCrmClinic::getUserId, user.getUserId())
|
.last("LIMIT 1"));
|
supplierClinicId = crmClinic.getId();
|
}
|
erpClinicWarehousingService.outboundGoods(dto,user,supplierClinicId);
|
return R.ok();
|
}
|
|
|
}
|