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.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.*;
|
import com.ruoyi.system.vo.DetailProcurementVO;
|
import com.ruoyi.system.vo.TErpGoodsVO;
|
import com.ruoyi.system.vo.TErpProcurementDetailVo;
|
import com.ruoyi.system.vo.TErpProcurementVo;
|
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.math.BigDecimal;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* erp采购 前端控制器
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2025-08-20
|
*/
|
@RestController
|
@RequestMapping("/t-erp-procurement")
|
@Api(tags = "erp采购管理")
|
public class TErpProcurementController {
|
|
|
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,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;
|
}
|
|
|
|
/**
|
* erp采购管理分页列表
|
*/
|
@ApiOperation(value = "erp采购管理分页列表")
|
@PostMapping(value = "/pageList")
|
public R<PageInfo<TErpProcurementVo>> pageList(@RequestBody TErpProcurementQuery query) {
|
SysUser user = tokenService.getLoginUser().getUser();
|
return R.ok(erpProcurementService.pageList(query,user));
|
}
|
|
|
|
@ApiOperation(value = "erp采购管理详情")
|
@GetMapping(value = "/detail")
|
public R<TErpProcurementDetailVo> detail(@RequestParam String id, String goodsName) {
|
SysUser user = tokenService.getLoginUser().getUser();
|
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 = "采购详情入库")
|
@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();
|
}
|
|
|
|
|
|
|
|
|
}
|