ludc
2024-03-18 7cf54012c46c54bd701310cc29caaa94676ea570
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
package com.vci.ubcs.code.controller;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.dto.CodeBasicSecDTO;
import com.vci.ubcs.code.dto.CodeOrderDTO;
import com.vci.ubcs.code.dto.CodeOrderSecDTO;
import com.vci.ubcs.code.service.ICodeBasicSecService;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
 
import javax.validation.Valid;
import java.rmi.ServerException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
 
 
/**
 * 码段基础信息控制器
 *
 * @author ludc
 * @date 2022-01-24
 */
@RestController
@RequestMapping("/codeBasicSecController")
@Api(value = "码段基础信息控制器", tags = "码段基础信息控制器")
public class CodeBasicSecController {
 
    /**
     * 码段基础信息 服务
     */
    @Autowired
    private ICodeBasicSecService codeBasicSecService;
 
    /**
     * 码段基础信息列表
     * @param bladeQueryObject 基础查询对象,包含查询条件,分页,排序等
     * @return 码段基础信息显示对象列表
     */
    @GetMapping("/gridCodeBasicSec")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页 码段基础信息列表", notes = "传入codeRuleVO")
    public R<IPage<CodeBasicSecVO>> gridCodeBasicSec(BladeQueryObject bladeQueryObject) throws Exception{
        IPage<CodeBasicSecVO> codeRuleVOIPage = codeBasicSecService.gridCodeBasicSec(bladeQueryObject.getQuery().setAscs("ordernum"),bladeQueryObject.getConditionMap());
        return R.data(codeRuleVOIPage);
    }
 
    /**
     * 增加 码段基础信息
     * @param codeBasicSecDTO 码段基础信息数据传输对象
     * @return 执行结果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PostMapping( "/addSave")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "增加 码段基础信息", notes = "codeBasicSecDTO")
    public R addSave(@Valid @RequestBody CodeBasicSecDTO codeBasicSecDTO){
        boolean resBoolean;
        try {
            resBoolean = codeBasicSecService.addSave(codeBasicSecDTO);
        } catch (VciBaseException e) {
            return R.fail(e.getCode());
        }
        return R.status(resBoolean);
    }
 
    /** 修改 码段基础信息
     * @param codeBasicSecDTO 码段基础信息数据传输对象
     * @return 执行结果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PutMapping("/editSave")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "修改 码段基础信息", notes = "codeBasicSecDTO")
    public R editSave(@RequestBody CodeBasicSecDTO codeBasicSecDTO) throws ServerException{
        boolean resBoolean;
        try {
            resBoolean = codeBasicSecService.editSave(codeBasicSecDTO);
        } catch (VciBaseException e) {
            return R.fail(e.getCode());
        }
        return R.status(resBoolean);
    }
 
    /**
     * 删除码段基础信息
     * @param codeBasicSecDTO 码段基础信息数据传输对象,oid和ts需要传输
     * @return 删除结果反馈::success:成功,fail:失败
     */
    @DeleteMapping( "/deleteData")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "删除码段基础信息", notes = "codeBasicSecDTO")
    public R delCodeBasicSec(@Valid @RequestBody CodeBasicSecDTO codeBasicSecDTO) {
        return codeBasicSecService.deleteCodeBasicSec(codeBasicSecDTO);
    }
 
    /**
     * 主键获取码段基础信息
     * @param oid 主键
     * @return 码段基础信息显示对象
     */
    @GetMapping("/getObjectByOid")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "删除码段基础信息", notes = "codeBasicSecDTO")
    public R<CodeBasicSecVO> getObjectByOid(String oid){
        CodeBasicSecVO codeBasicSecVO = codeBasicSecService.getObjectByOid(oid);
        return R.data(codeBasicSecVO);
    }
 
    /**
     * 主键批量获取码段基础信息
     * @param oids 主键,多个以逗号分隔,但是受性能影响,建议一次查询不超过10000个
     * @return 码段基础信息显示对象
     */
    @GetMapping("/listDataByOids")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "主键批量获取码段基础信息", notes = "oids")
    public R<Collection<CodeBasicSecVO>> listCodeBasicSecByOids(String oids){
        Collection<CodeBasicSecVO> voCollection =  codeBasicSecService.listCodeBasicSecByOids(VciBaseUtil.str2List(oids));
        return R.data(voCollection);
    }
 
    /**
     * 参照码段基础信息列表
     * @param bladeQueryObject 基础查询对象,包含查询条件,分页,排序等
     * @return 码段基础信息显示对象列表,生效的内容
     */
    @GetMapping("/refDataGrid")
    @ApiOperationSupport(order = 8)
    @ApiOperation(value = "参照码段基础信息列表", notes = "codeBasicSecVO")
    public R<IPage<CodeBasicSecVO>> refDataGridCodeBasicSec(BladeQueryObject bladeQueryObject){
        return R.data(codeBasicSecService.refDataGridCodeBasicSec(bladeQueryObject.getQuery(), bladeQueryObject.getConditionMap()));
    }
 
    /**
     * 参数分类码段基础信息列表
     * @param bladeQueryObject 基础查询对象,包含查询条件,分页,排序等,必须要有编码规则的主键 pkCodeRule
     * @return 码段的信息
     */
    @GetMapping("/refDataGridClassifySec")
    @ApiOperationSupport(order = 9)
    @ApiOperation(value = "参数分类码段基础信息列表", notes = "codeBasicSecVO")
    public R<IPage<CodeBasicSecVO>> refDataGridClassifySec(BladeQueryObject bladeQueryObject){
        return R.data(codeBasicSecService.refDataGridClassifySec(bladeQueryObject.getQuery(), bladeQueryObject.getConditionMap()));
    }
 
    /**
     * 克隆码段信息
     * @param codeBasicSecDTO 码段基础信息数据传输对象,oidArr:选择源码段主键的集合,pkCodeRule:目标编码规则的主键
     * @return 克隆结果反馈::success:成功,fail:失败
     */
    @PostMapping("/clone")
    @ApiOperationSupport(order = 10)
    @ApiOperation(value = "克隆码段信息", notes = "codeBasicSecDTO")
    public R cloneCodeBasicSec(@RequestBody CodeBasicSecDTO codeBasicSecDTO) throws ServerException {
        VciBaseUtil.alertNotNull(codeBasicSecDTO.getOidArr(),"选择码段主键");
        List<String> oidArr = VciBaseUtil.str2List(codeBasicSecDTO.getOidArr());
        if (CollectionUtils.isEmpty(oidArr)){
            return R.fail("选择码段主键不能为空");
        }
        return codeBasicSecService.cloneCodeBasicSec(oidArr,codeBasicSecDTO.getPkCodeRule());
    }
 
    /**
     * 查询目标分类码段所在的树结构
     * @param oid 目标分类码段主键
     * @return 分类码段树结构
     */
    /*@GetMapping("/treeCodeClassifySec")
    @ApiOperationSupport(order = 11)
    @ApiOperation(value = "查询目标分类码段所在的树结构", notes = "oid")
    public List<Tree> gridCodeClassifySecTree (String oid){
        VciBaseUtil.alertNotNull(oid,"分类码段主键");
        return codeBasicSecService.gridCodeClassifySecTree(oid);
    }*/
 
    /**
     * 上移
     * @param oid 主键
     * @return 执行结果
     */
    @PostMapping("/upOrderNum")
    @ApiOperationSupport(order = 11)
    @ApiOperation(value = "上移", notes = "oid")
    public R upOrderNum(@Valid @RequestParam String oid){
        return R.status(codeBasicSecService.upOrderNum(oid));
    }
 
    /**
     * 下移
     * @param oid 主键
     * @return 执行结果
     */
    @PostMapping("/downOrderNum")
    @ApiOperationSupport(order = 12)
    @ApiOperation(value = "下移", notes = "oid")
    public R downOrderNum(@Valid @RequestParam String oid){
        return R.status(codeBasicSecService.downOrderNum(oid));
    }
 
    /**
     * 查询编码规则的所有流水依赖的码段
     * @param ruleOid 编码规则主键
     * @return
     */
    @GetMapping("/getCodeRuleAndBasicSecByRuleOid")
    @ApiOperationSupport(order = 13)
    @ApiOperation(value = "查询编码规则的所有流水依赖的码段", notes = "传入oid")
    public R<CodeRuleVO> getCodeRuleAndBasicSecByRuleOid(String ruleOid){
        return R.data(codeBasicSecService.getSerialNumberDepend(ruleOid));
    }
 
    /**
     * 设置最大流水号
     * @param codeOrderDTO 编码申请传输对象
     * @return
     */
    @PostMapping("/setMaxSerialNumberForCodeRule")
    @ApiOperationSupport(order = 14)
    @ApiOperation(value = "设置最大流水号", notes = "codeOrderDTO")
    public R setMaxSerialNumberForCodeRule(@RequestBody CodeOrderDTO codeOrderDTO){
        return R.success(codeBasicSecService.setMaxSerialNumberForCodeRule(codeOrderDTO));
    }
 
    /***
     *  根据流水依赖获取最大流水号
     * @param secMap
     * @return
     */
    @GetMapping("/getMaxSerialNumberForCodeRule")
    @ApiOperationSupport(order = 15)
    @ApiOperation(value = "查询编码规则的所有流水依赖的最大流水", notes = "传入oid")
    public R getMaxSerialNumberForCodeRule(@RequestParam Map<String,String> secMap){
        if (secMap.isEmpty() && Func.isBlank(secMap.get("codeRuleOid"))) {
            throw new ServiceException("最大流水号的流水依赖不能为空!");
        }
        CodeOrderDTO codeOrderDTO = new CodeOrderDTO();
        codeOrderDTO.setCodeRuleOid(secMap.get("codeRuleOid"));
        secMap.remove("codeRuleOid");
        List<CodeOrderSecDTO> secDTOList = new ArrayList<>();
        secMap.entrySet().stream().forEach(item->{
            secDTOList.add(new CodeOrderSecDTO(item.getKey(),item.getValue()));
        });
        codeOrderDTO.setSecDTOList(secDTOList);
        return R.data(codeBasicSecService.getMaxSerialNumberForCodeRule(codeOrderDTO));
    }
 
}