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; /** *

* erp诊所入库 前端控制器 *

* * @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> 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> 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> pageInventoryList(@RequestBody TErpInventoryQuery query) { SysUser user = tokenService.getLoginUser().getUser(); return R.ok(erpClinicWarehousingService.pageInventoryList(query,user)); } @ApiOperation(value = "诊所 盘点详情") @GetMapping(value = "/detailInventory/{id}") public R> detailInventory(@PathVariable String id) { SysUser user = tokenService.getLoginUser().getUser(); return R.ok(erpClinicWarehousingService.detailInventory(id,user)); } @ApiOperation(value = "诊所 盘点 出库 商品选择") @PostMapping(value = "/pageInventoryGoodsPageList") public R> pageInventoryGoodsPageList(@RequestBody @Valid TErpGoodsInventoryQuery query) { SysUser user = tokenService.getLoginUser().getUser(); return R.ok(erpGoodsService.pageInventoryGoodsPageList1(query,user)); } @ApiOperation(value = "诊所 有效期预警商品选择") @GetMapping(value = "/pageInventoryGoodsList") public R> pageInventoryGoodsList(String warehouseId,@RequestParam(required = false)String batchId) { SysUser user = tokenService.getLoginUser().getUser(); List 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> validityPeriodWarning(@RequestBody ValidityPeriodWarningQuery query) { SysUser user = tokenService.getLoginUser().getUser(); PageInfo pageInfo =erpClinicWarehousingService.validityPeriodWarning(query,user); return R.ok(pageInfo); } /** * 获取erp问题上报管理列表 */ @ApiOperation(value = "诊所 入库列表") @PostMapping(value = "/warehousePageList") public R> 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> 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 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 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> getWarehouseGoodsDraft() { SysUser user = tokenService.getLoginUser().getUser(); Integer roleType = user.getRoleType(); String supplierClinicId =null; ArrayList 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 list = erpClinicWarehousingService.list(new LambdaQueryWrapper().eq(TErpClinicWarehousing::getClinicId, supplierClinicId).eq(TErpClinicWarehousing::getStatus, 1).orderByDesc(BaseModel::getCreateTime)); if(list.isEmpty()){ return R.ok(clinicWarehouseGoodsDtos); } List list1 = erpClinicWarehousingBatchService.list(new LambdaQueryWrapper().eq(TErpClinicWarehousingBatch::getWarehousingId, list.get(0).getId())); for (TErpClinicWarehousingBatch tErpClinicWarehousingBatch : list1) { String goodsId = tErpClinicWarehousingBatch.getGoodsId(); TErpGoods tErpGoods = erpGoodsService.getOne(new LambdaQueryWrapper().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> 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(); } }