package com.qianwen.smartman.modules.system.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.qianwen.core.boot.ctrl.BladeController; import com.qianwen.core.mp.support.Condition; import com.qianwen.core.mp.support.Query; import com.qianwen.core.scanner.modular.annotation.GetResource; import com.qianwen.core.scanner.modular.stereotype.ApiResource; import com.qianwen.core.tool.api.R; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.common.constant.ExtCacheConstant; import com.qianwen.smartman.common.utils.Lambda; import com.qianwen.smartman.modules.system.convert.BasCoderuleConvert; import com.qianwen.smartman.modules.system.dto.BasCoderuleDTO; import com.qianwen.smartman.common.cache.CodeRuleCache; import com.qianwen.smartman.modules.system.dto.BaseCodeRuleQueryDTO; import com.qianwen.smartman.modules.system.entity.BasCodeRule; import com.qianwen.smartman.modules.system.entity.MetaObjectType; import com.qianwen.smartman.modules.system.service.IBasCoderuleService; import com.qianwen.smartman.modules.system.service.ICodeGeneratorService; import com.qianwen.smartman.modules.system.service.IMetaObjectTypeService; import com.qianwen.smartman.modules.system.vo.UserVO; import com.qianwen.core.log.exception.ServiceException; import com.qianwen.core.secure.annotation.PreAuth; import com.qianwen.core.tool.api.ResultCode; import com.qianwen.core.scanner.modular.annotation.PostResource; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.lang.invoke.SerializedLambda; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import javax.validation.Valid; import com.qianwen.core.cache.utils.CacheUtil; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @ApiResource({"blade-system/bascoderule"}) @Api(value = "编码规则", tags = {"编码规则接口"}) @RestController /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/system/controller/BasCoderuleController.class */ public class BasCoderuleController extends BladeController { private IBasCoderuleService basCoderuleService; private IMetaObjectTypeService metaObjectTypeService; private ICodeGeneratorService codeGeneratorService; public BasCoderuleController(final IBasCoderuleService basCoderuleService, final IMetaObjectTypeService metaObjectTypeService, final ICodeGeneratorService codeGeneratorService) { this.basCoderuleService = basCoderuleService; this.metaObjectTypeService = metaObjectTypeService; this.codeGeneratorService = codeGeneratorService; } @ApiOperationSupport(order = 1) @GetResource({"/detail"}) @ApiOperation(value = "详情", notes = "根据编码id获取详情") public R detail(Long id) { BasCoderuleDTO detail = this.basCoderuleService.getCoderuleDetails(id); return R.data(detail); } @ApiOperationSupport(order = 2) @GetResource({"/list"}) @ApiOperation(value = "分页", notes = "传入basCoderule") @PreAuth public R> list(BaseCodeRuleQueryDTO baseCodeRuleQueryDTO, Query query) { List list = new ArrayList<>(); if (Func.isNotEmpty(baseCodeRuleQueryDTO.getSubsysId())) { List metaObjectTypes = this.metaObjectTypeService.list(Wrappers.lambdaQuery() .eq(MetaObjectType::getSubsysId, baseCodeRuleQueryDTO.getSubsysId())); /* List metaObjectTypes = this.metaObjectTypeService.list((Wrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getSubsysId(); }, baseCodeRuleQueryDTO.getSubsysId()));*/ if (metaObjectTypes.isEmpty()) { return R.data(new Page<>()); } list = metaObjectTypes.stream().map((v0) -> { return v0.getFId(); }).collect(Collectors.toList()); } IPage pages = this.basCoderuleService.page(Condition.getPage(query), Wrappers.lambdaQuery() .eq(Func.isNotEmpty(baseCodeRuleQueryDTO.getDictKey()), BasCodeRule::getRuleFieldDictKey, baseCodeRuleQueryDTO.getDictKey()) .eq(Func.isNotEmpty(baseCodeRuleQueryDTO.getObjectId()), BasCodeRule::getBillFormId, baseCodeRuleQueryDTO.getObjectId()) .in(Func.isNotEmpty(list), BasCodeRule::getBillFormId, list) .and(Func.isNotEmpty(baseCodeRuleQueryDTO.getCondition()), wrapper -> wrapper.like(BasCodeRule::getName, baseCodeRuleQueryDTO.getCondition()).or().like(BasCodeRule::getRemark, baseCodeRuleQueryDTO.getCondition()))); /* IPage pages = this.basCoderuleService.page(Condition.getPage(query), Wrappers.lambdaQuery().eq(Func.isNotEmpty(baseCodeRuleQueryDTO.getDictKey()), (v0) -> { return v0.getRuleFieldDictKey(); }, baseCodeRuleQueryDTO.getDictKey()).eq(Func.isNotEmpty(baseCodeRuleQueryDTO.getObjectId()), (v0) -> { return v0.getBillFormId(); }, baseCodeRuleQueryDTO.getObjectId()).in(Func.isNotEmpty(list), (v0) -> { return v0.getBillFormId(); }, list).and(Func.isNotEmpty(baseCodeRuleQueryDTO.getCondition()), wrapper -> { LambdaQueryWrapper lambdaQueryWrapper = (LambdaQueryWrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) wrapper.like((v0) -> { return v0.getName(); }, baseCodeRuleQueryDTO.getCondition())).or()).like((v0) -> { return v0.getRemark(); }, baseCodeRuleQueryDTO.getCondition()); }));*/ return R.data(pages); } @PreAuth @GetResource({"/count"}) @ApiOperation(value = "count", notes = "编码规则查询数量") public R count(@RequestParam("type") @ApiParam("业务对象名称") String type) { return R.data(Long.valueOf(this.basCoderuleService.count(Lambda.eq((v0) -> { return v0.getBillFormId(); }, type)))); } @GetResource({"/count-all"}) @ApiOperation(value = "count-all", notes = "查询所有业务对象编码规则数量") public R countAll() { Wrapper w = (new QueryWrapper()).select(new String[] { "count(1) as \"count\"", Lambda.getName(BasCodeRule::getBillFormId) }).lambda().groupBy(BasCodeRule::getBillFormId); /* Wrapper w = (Wrapper) new QueryWrapper().select(new String[]{"count(1) as \"count\"", Lambda.getName((v0) -> { return v0.getBillFormId(); })}).lambda().groupBy((v0) -> { return v0.getBillFormId(); });*/ return R.data(BasCoderuleConvert.INSTANCE.convert(this.basCoderuleService.listMaps(w))); } @ApiOperationSupport(order = 6) @PostResource({"/submit"}) @ApiOperation(value = "新增或修改", notes = "传入basCoderule") @PreAuth public R submit(@Valid @RequestBody BasCoderuleDTO basCoderuleDTO) { return R.data(this.basCoderuleService.submitCoderule(basCoderuleDTO)); } @ApiOperationSupport(order = 7) @PostResource({"/remove"}) @ApiOperation(value = "逻辑删除", notes = "传入ids") @PreAuth public R remove(@RequestParam @ApiParam(value = "主键集合", required = true) String ids) { CacheUtil.clear(ExtCacheConstant.CODE_RULE_CACHE, Boolean.FALSE); return R.status(this.basCoderuleService.deleteCoderule(Func.toLongList(ids)).booleanValue()); } @ApiOperationSupport(order = 8) @GetResource({"/is-exist-code-rule"}) @ApiOperation(value = "根据业务对象查询是否存在编码规则", notes = "传入业务对象") public R getIsExistCodeRuleByBillFormId(@RequestParam @ApiParam(value = "业务对象", required = true) String billFormId) { boolean existCodeRule = CodeRuleCache.existCodeRule(billFormId); return R.data(Boolean.valueOf(existCodeRule)); } @PreAuth @GetResource({"change-default/{id}"}) @ApiOperation(value = "启用停用", notes = "启用停用编码规则") public R changeDefault(@PathVariable String id) { CacheUtil.clear(ExtCacheConstant.CODE_RULE_CACHE, Boolean.FALSE); return R.status(this.basCoderuleService.changeDefault(id)); } @PostMapping({"/patch-code"}) @PreAuth @ApiOperation(value = "获取手动补号数据", notes = "传入业务对象的编码字段和业务对象,查询手动补号数据") public R> patchCodeList(@RequestParam @ApiParam("业务对象") String billFormId, @RequestBody Map objectData) { try { return R.data(this.basCoderuleService.patchCodeList(billFormId, objectData)); } catch (IllegalArgumentException e) { R re = (R) JSONObject.parseObject(e.getMessage(), R.class); re.setCode(ResultCode.FAILURE.getCode()); return re; } catch (ServiceException e2) { return R.fail(e2.getMessage()); } } @PostMapping({"/generate"}) public R generateTest(@ApiParam("新建用户对象") UserVO user) { String code = this.codeGeneratorService.getGeneratorCode(user, "User"); return R.data(code); } }