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 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 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 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> 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(ProductSelectVO productSelectVO) { return R.data(this.productService.selectList(productSelectVO)); } @ApiOperationSupport(order = RegionCache.VILLAGE_LEVEL) @GetResource({"/tree"}) @ApiOperation(value = "产品信息树", notes = "") @PreAuth public R> tree(ProductSelectVO productSelectVO) { List list = this.productService.list(Wrappers.lambdaQuery() .select(Product::getId, Product::getName, Product::getCode, Product::getParentId).eq(Product::getStatus, Integer.valueOf(1))); List vos = ProductConvert.INSTANCE.convert(list); return R.data(ForestNodeMerger.merge(vos)); /* List 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 vos = ProductConvert.INSTANCE.convert(list); return R.data(ForestNodeMerger.merge(vos)); */ } @ApiOperationSupport(order = 7) @GetResource({"/export-template"}) @ApiOperation("导出模板") @PreAuth public R exportTemplate() { return R.data(this.productService.exportTemplateProduct()); } @ApiOperationSupport(order = 8) @PostResource({"/import-product"}) @ApiOperation("导入产品") @PreAuth public R 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 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 detail(@PathVariable Long id) { return R.data(this.productService.detail(id)); } @ApiOperationSupport(order = 12) @PostResource({"/lazy/tree"}) @ApiOperation(value = "产品信息懒加载树", notes = "传入product") @PreAuth public R> lazyTree(@RequestParam(value = "id", required = false) String id, Query query, @RequestBody ProductSearchVO vo) { return R.data(this.productService.lazyTree(query, id, vo)); } }