package com.qianwen.smartman.modules.cps.controller;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import java.lang.invoke.SerializedLambda;
|
import java.util.List;
|
import java.util.Objects;
|
import javax.validation.Valid;
|
import com.qianwen.smartman.common.cache.RegionCache;
|
import com.qianwen.smartman.common.utils.MessageUtils;
|
import com.qianwen.core.boot.ctrl.BladeController;
|
import com.qianwen.core.log.exception.ServiceException;
|
import com.qianwen.core.mp.support.Condition;
|
import com.qianwen.core.mp.support.Query;
|
import com.qianwen.core.oss.model.BladeFile;
|
import com.qianwen.core.scanner.modular.annotation.DeleteResource;
|
import com.qianwen.core.scanner.modular.annotation.GetResource;
|
import com.qianwen.core.scanner.modular.annotation.PostResource;
|
import com.qianwen.core.scanner.modular.annotation.PutResource;
|
import com.qianwen.core.scanner.modular.stereotype.ApiResource;
|
import com.qianwen.core.secure.annotation.PreAuth;
|
import com.qianwen.core.tool.api.R;
|
import com.qianwen.core.tool.node.ForestNodeMerger;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.modules.cps.convert.ProductConvert;
|
import com.qianwen.smartman.modules.cps.entity.Product;
|
import com.qianwen.smartman.modules.cps.service.IProductService;
|
import com.qianwen.smartman.modules.cps.service.IProductTypeService;
|
import com.qianwen.smartman.modules.cps.vo.ProductAddVO;
|
import com.qianwen.smartman.modules.cps.vo.ProductChangeStatusVO;
|
import com.qianwen.smartman.modules.cps.vo.ProductEasyVO;
|
import com.qianwen.smartman.modules.cps.vo.ProductSearchVO;
|
import com.qianwen.smartman.modules.cps.vo.ProductSelectVO;
|
import com.qianwen.smartman.modules.cps.vo.ProductUpdateVO;
|
import com.qianwen.smartman.modules.cps.vo.ProductVO;
|
import com.qianwen.smartman.modules.resource.service.impl.SystemResourceServiceImpl;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.multipart.MultipartFile;
|
|
@Api(value = "产品信息管理", tags = {"产品信息管理"})
|
@ApiResource({"blade-cps/product"})
|
@RestController
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/cps/controller/ProductController.class */
|
public class ProductController extends BladeController {
|
private final IProductService productService;
|
private final SystemResourceServiceImpl systemResourceService;
|
private final IProductTypeService productTypeService;
|
|
|
public ProductController(final IProductService productService, final SystemResourceServiceImpl systemResourceService, final IProductTypeService productTypeService) {
|
this.productService = productService;
|
this.systemResourceService = systemResourceService;
|
this.productTypeService = productTypeService;
|
}
|
|
@ApiOperationSupport(order = 1)
|
@PostResource({"/insert"})
|
@ApiOperation(value = "产品信息新增", notes = "传入productVO")
|
@PreAuth
|
public R<ProductVO> insert(@Valid @RequestBody ProductAddVO productAddVO) {
|
return R.data(ProductConvert.INSTANCE.convert(this.productService.insert(productAddVO)));
|
}
|
|
@ApiOperationSupport(order = 2)
|
@PutResource({"/update"})
|
@ApiOperation(value = "产品信息修改", notes = "传入productVO")
|
@PreAuth
|
public R<ProductVO> update(@Valid @RequestBody ProductUpdateVO productUpdateVO) {
|
return R.data(ProductConvert.INSTANCE.convert(this.productService.update(productUpdateVO)));
|
}
|
|
@ApiOperationSupport(order = 3)
|
@ApiOperation(value = "产品信息删除", notes = "传入ids")
|
@PreAuth
|
@DeleteResource({"/remove"})
|
public R remove(@ApiParam(value = "主键", required = true) @RequestBody List<String> ids) {
|
if (ids.isEmpty()) {
|
return R.status(false);
|
}
|
return R.status(this.productService.delete(Func.toLongList(ids)));
|
}
|
|
@ApiOperationSupport(order = 4)
|
@GetResource({"/page"})
|
@ApiOperation(value = "产品信息分页", notes = "")
|
@PreAuth
|
public R<IPage<ProductVO>> page(ProductSelectVO productSelectVO, Query query) {
|
return R.data(this.productService.selectPage(Condition.getPage(query), productSelectVO));
|
}
|
|
@ApiOperationSupport(order = 4)
|
@GetResource({"/list"})
|
@ApiOperation(value = "产品信息列表", notes = "传入productSelectVO")
|
@PreAuth
|
public R<List<ProductVO>> list(ProductSelectVO productSelectVO) {
|
return R.data(this.productService.selectList(productSelectVO));
|
}
|
|
@ApiOperationSupport(order = RegionCache.VILLAGE_LEVEL)
|
@GetResource({"/tree"})
|
@ApiOperation(value = "产品信息树", notes = "")
|
@PreAuth
|
public R<List<ProductVO>> tree(ProductSelectVO productSelectVO) {
|
List<Product> list = this.productService.list(Wrappers.<Product>lambdaQuery()
|
.select(Product::getId, Product::getName, Product::getCode, Product::getParentId).eq(Product::getStatus, Integer.valueOf(1)));
|
List<ProductVO> vos = ProductConvert.INSTANCE.convert(list);
|
return R.data(ForestNodeMerger.merge(vos));
|
/*
|
List<Product> list = this.productService.list((Wrapper) Wrappers.lambdaQuery().select(new SFunction[]{(v0) -> {
|
return v0.getId();
|
}, (v0) -> {
|
return v0.getName();
|
}, (v0) -> {
|
return v0.getCode();
|
}, (v0) -> {
|
return v0.getParentId();
|
}}).eq((v0) -> {
|
return v0.getStatus();
|
}, 1));
|
List<ProductVO> vos = ProductConvert.INSTANCE.convert(list);
|
return R.data(ForestNodeMerger.merge(vos));
|
*/
|
}
|
|
@ApiOperationSupport(order = 7)
|
@GetResource({"/export-template"})
|
@ApiOperation("导出模板")
|
@PreAuth
|
public R<BladeFile> exportTemplate() {
|
return R.data(this.productService.exportTemplateProduct());
|
}
|
|
@ApiOperationSupport(order = 8)
|
@PostResource({"/import-product"})
|
@ApiOperation("导入产品")
|
@PreAuth
|
public R<BladeFile> importProduct(MultipartFile file) {
|
if (Objects.isNull(file)) {
|
throw new ServiceException(MessageUtils.message("excel.import.file.is.null", new Object[0]));
|
}
|
return R.data(this.productService.importProduct(file));
|
}
|
|
@ApiOperationSupport(order = 9)
|
@PostResource({"/export-product"})
|
@ApiOperation("导出产品")
|
@PreAuth
|
public R<BladeFile> exportProduct(@RequestParam(value = "id", required = false) String id, @RequestBody ProductSearchVO vo) {
|
return R.data(this.productService.exportProduct(id, vo));
|
}
|
|
@ApiOperationSupport(order = 10)
|
@PutResource({"/change-status"})
|
@ApiOperation(value = "切换产品状态", notes = "传入产品ids")
|
public R changeStatus(@RequestBody ProductChangeStatusVO changeStatusVO) {
|
this.productService.changeStatusCheck(changeStatusVO);
|
return R.status(this.productService.changeStatus(Func.toLongList(changeStatusVO.getIds()), changeStatusVO.getStatus()));
|
}
|
|
@ApiOperationSupport(order = 11)
|
@GetResource({"/get/{id}"})
|
@ApiOperation(value = "产品信息详情", notes = "传入product")
|
@PreAuth
|
public R<ProductVO> detail(@PathVariable Long id) {
|
return R.data(this.productService.detail(id));
|
}
|
|
@ApiOperationSupport(order = 12)
|
@PostResource({"/lazy/tree"})
|
@ApiOperation(value = "产品信息懒加载树", notes = "传入product")
|
@PreAuth
|
public R<IPage<ProductEasyVO>> lazyTree(@RequestParam(value = "id", required = false) String id, Query query, @RequestBody ProductSearchVO vo) {
|
return R.data(this.productService.lazyTree(query, id, vo));
|
}
|
}
|