xuhy
8 天以前 f131c141bafa2a060050fa85799fb9d1eb617b69
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package com.ruoyi.web.controller.api;
 
 
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.model.TErpGoods;
import com.ruoyi.system.model.TErpGoodsType;
import com.ruoyi.system.query.TErpGoodsTypeQuery;
import com.ruoyi.system.service.TErpGoodsService;
import com.ruoyi.system.service.TErpGoodsTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
 
import java.util.List;
 
/**
 * <p>
 * erp商品类型名称 前端控制器
 * </p>
 *
 * @author xiaochen
 * @since 2025-08-20
 */
@Api(tags = "erp商品类型")
@RestController
@RequestMapping("/t-erp-goods-type")
public class TErpGoodsTypeController {
 
    private final TErpGoodsTypeService erpGoodsTypeService;
    private final TErpGoodsService erpGoodsService;
    @Autowired
    public TErpGoodsTypeController(TErpGoodsTypeService erpGoodsTypeService, TErpGoodsService erpGoodsService) {
        this.erpGoodsTypeService = erpGoodsTypeService;
        this.erpGoodsService = erpGoodsService;
    }
 
    /**
     * 获取erp商品类型管理列表
     */
    @ApiOperation(value = "获取erp商品类型分页列表")
    @PostMapping(value = "/pageList")
    public R<PageInfo<TErpGoodsType>> pageList(@RequestBody TErpGoodsTypeQuery query) {
        return R.ok(erpGoodsTypeService.pageList(query));
    }
 
    /**
     * 获取erp商品类型管理列表
     */
    @ApiOperation(value = "获取erp商品类型列表")
    @PostMapping(value = "/list")
    public R<List<TErpGoodsType>> list() {
        return R.ok(erpGoodsTypeService.list(Wrappers.lambdaQuery(TErpGoodsType.class).orderByDesc(TErpGoodsType::getCreateTime)));
    }
 
    /**
     * 添加erp商品类型管理
     */
    @Log(title = "erp商品类型信息-新增erp商品类型", businessType = BusinessType.INSERT)
    @ApiOperation(value = "添加erp商品类型")
    @PostMapping(value = "/add")
    public R<Boolean> add(@Validated @RequestBody TErpGoodsType dto) {
        if (erpGoodsTypeService.isExit(dto)) {
            return R.fail("erp商品类型名称已存在");
        }
        return R.ok(erpGoodsTypeService.save(dto));
    }
 
    /**
     * 修改erp商品类型
     */
    @Log(title = "erp商品类型信息-修改erp商品类型", businessType = BusinessType.UPDATE)
    @ApiOperation(value = "修改erp商品类型")
    @PostMapping(value = "/update")
    public R<Boolean> update(@Validated @RequestBody TErpGoodsType dto) {
        if (erpGoodsTypeService.isExit(dto)) {
            return R.fail("erp商品类型名称已存在");
        }
        return R.ok(erpGoodsTypeService.updateById(dto));
    }
 
    /**
     * 查看erp商品类型详情
     */
    @ApiOperation(value = "查看erp商品类型详情")
    @GetMapping(value = "/getDetailById")
    public R<TErpGoodsType> getDetailById(@RequestParam String id) {
        return R.ok(erpGoodsTypeService.getById(id));
    }
 
    /**
     * 删除erp商品类型
     */
    @Log(title = "erp商品类型信息-删除erp商品类型", businessType = BusinessType.DELETE)
    @ApiOperation(value = "删除erp商品类型")
    @DeleteMapping(value = "/deleteById")
    public R<Boolean> deleteById(@RequestParam String id) {
        long count = erpGoodsService.count(Wrappers.lambdaQuery(TErpGoods.class).eq(TErpGoods::getTypeId, id));
        if (count>0) {
            return R.fail("该商品分类下有商品,无法删除");
        }
        return R.ok(erpGoodsTypeService.removeById(id));
    }
 
    /**
     * 批量删除erp商品类型
     */
    @Log(title = "erp商品类型信息-删除erp商品类型", businessType = BusinessType.DELETE)
    @ApiOperation(value = "批量删除erp商品类型")
    @DeleteMapping(value = "/deleteByIds")
    public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
        List<TErpGoods> items = erpGoodsService.list(Wrappers.lambdaQuery(TErpGoods.class).in(TErpGoods::getTypeId, ids));
        for (String id : ids) {
            if (items.stream().anyMatch(t -> t.getTypeId().equals(id))) {
                TErpGoodsType itemType = erpGoodsTypeService.getById(id);
                return R.fail("该商品分类["+itemType.getTypeName()+"]下有商品,无法删除");
            }
        }
        return R.ok(erpGoodsTypeService.removeByIds(ids));
    }
    
}