/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package com.vci.ubcs.code.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.vci.ubcs.code.dto.CodeRuleDTO; import com.vci.ubcs.code.entity.CodeRule; import com.vci.ubcs.code.service.ICodeRuleService; import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO; import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO; import com.vci.ubcs.code.wrapper.CodeRuleWrapper; import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject; 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 lombok.AllArgsConstructor; import org.apache.http.util.EncodingUtils; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.Collection; import java.util.Map; /** * 编码规则 控制器 * * @author ludc * @since 2023-04-03 */ @RestController @AllArgsConstructor @RequestMapping("/mdmRule") @Api(value = "编码规则", tags = "编码规则接口") public class CodeRuleController extends BladeController { private final ICodeRuleService codeRuleService; /** * 编码规则 详情 */ @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入codeRule") public R detail(CodeRule codeRule) { CodeRule detail = codeRuleService.getOne(Condition.getQueryWrapper(codeRule)); return R.data(CodeRuleWrapper.build().entityVO(detail)); } /** * 编码规则 自定义分页 * @return baseQueryObject */ @GetMapping(value = "/gridCodeRule") @ApiOperationSupport(order = 3) @ApiOperation(value = "分页", notes = "传入CodeRule") public R> gridCodeRule(BladeQueryObject bladeQueryObject) { IPage pages = codeRuleService.gridCodeRule(bladeQueryObject.getQuery().setDescs("CREATETIME"), bladeQueryObject.getConditionMap()); return R.data(pages); } /** * 增加 主数据编码规则 * @param codeRuleDTO 主数据编码规则数据传输对象 * @return 执行结果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象 */ @PostMapping("/addCode") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入CodeRule") public R save(@Valid @RequestBody CodeRuleDTO codeRuleDTO) { return R.status(codeRuleService.addSave(codeRuleDTO)); } /** * 修改 主数据编码规则 * @param codeRuleDTO 主数据编码规则数据传输对象 * @return 执行结果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象 */ @PostMapping("/update") @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入CodeRule") public R update(@Valid @RequestBody CodeRuleDTO codeRuleDTO) { return R.status(codeRuleService.editSave(codeRuleDTO)); } /** * 删除主数据编码规则 * @param codeRuleDTO 主数据编码规则数据传输对象,oid和ts需要传输 * @return 删除结果反馈::success:成功,fail:失败 */ @DeleteMapping( "/deleteData") @ApiOperationSupport(order = 7) @ApiOperation(value = "删除", notes = "传入codeRuleDTO") public R delCodeRule(@RequestBody CodeRuleDTO codeRuleDTO) { return codeRuleService.deleteCodeRule(codeRuleDTO); } /** * 主键获取主数据编码规则 * @param oid 主键 * @return 主数据编码规则显示对象 */ @GetMapping("/getObjectByOid") @ApiOperationSupport(order = 8) @ApiOperation(value = "主键获取主数据编码规则", notes = "传入oid") public R getObjectByOid(@Valid @RequestParam String oid){ CodeRuleVO codeRuleVO = codeRuleService.getObjectByOid(oid); return R.data(codeRuleVO); } /** * 主键批量获取主数据编码规则 * @param oids 主键,多个以逗号分隔,但是受性能影响,建议一次查询不超过10000个 * @return 主数据编码规则显示对象 */ @GetMapping("/listDataByOids") @ApiOperationSupport(order = 9) @ApiOperation(value = "主键批量获取主数据编码规则", notes = "传入oids") public R> listCodeRuleByOids(@Valid @RequestParam String oids){ Collection voCollection = codeRuleService.listCodeRuleByOids(VciBaseUtil.str2List(oids)); return R.data(voCollection); } /** * 参照主数据编码规则列表 * @param bladeQueryObject * @return 主数据编码规则显示对象列表,生效的内容 */ @GetMapping("/refDataGrid") @ApiOperationSupport(order = 10) @ApiOperation(value = "参照主数据编码规则列表", notes = "传入oids") public R> refDataGridCodeRule(BladeQueryObject bladeQueryObject){ return R.data(codeRuleService.refDataGridCodeRule(bladeQueryObject)); } /** * 查看主数据编码规则的使用范围 * @param oid 主键 * @return 使用范围 */ @GetMapping("/listUseRange") @ApiOperationSupport(order = 11) @ApiOperation(value = "查看主数据编码规则的使用范围", notes = "传入oid") public R> listUseRange(@Valid @RequestParam String oid){ Collection voList = codeRuleService.listUseRangeInCodeClassify(oid); return R.data(voList); } /** * 停用与启用编码规则 * @param map 封装参数,包括oid 编码规则主键 update 更新状态的操作 * @return 执行结果 */ @PostMapping ("/updateStatus") @ApiOperationSupport(order = 12) @ApiOperation(value = "停用与启用编码规则", notes = "传入map") public R updateStatus(@Valid @RequestBody Map map){ if (CollectionUtils.isEmpty(map)){ return R.fail("参数错误"); } String oid = map.get("oid"); String update = map.get("update"); return codeRuleService.updateStatus(oid,update); } /** * 克隆编码规则 * @param codeRuleDTO 主数据编码规则数据传输对象,oid和ts需要传输 * @return 主数据编码规则显示对象 */ @PostMapping("/clone") @ApiOperationSupport(order = 13) @ApiOperation(value = "克隆编码规则", notes = "传入codeRuleDTO") public R cloneCodeRule(@RequestBody CodeRuleDTO codeRuleDTO){ return codeRuleService.cloneCodeRule(codeRuleDTO); } /** * 编码规则清空所有已生成的编码 * @param oid 编码规则主键 * @return 执行结果 */ @DeleteMapping("/clearAllCode") @ApiOperationSupport(order = 14) @ApiOperation(value = "编码规则清空所有已生成的编码", notes = "传入oid") public R clearAllCode(String oid){ return codeRuleService.clearAllCode(oid); } }