package com.qianwen.smartman.modules.tool.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import java.lang.invoke.SerializedLambda;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
import com.qianwen.smartman.common.cache.RegionCache;
|
import com.qianwen.smartman.common.constant.DncConstant;
|
import com.qianwen.smartman.common.utils.Lambda;
|
import com.qianwen.smartman.common.utils.MessageUtils;
|
import com.qianwen.core.coderule.constant.enums.ElementTypeEnum;
|
import com.qianwen.core.log.exception.ServiceException;
|
import com.qianwen.core.mp.base.BaseServiceImpl;
|
import com.qianwen.core.mp.support.Query;
|
import com.qianwen.core.tool.node.ForestNodeMerger;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.modules.system.dto.BasCoderuleDTO;
|
import com.qianwen.smartman.modules.system.entity.BasCodeRuleEntry;
|
import com.qianwen.smartman.modules.system.entity.Dict;
|
import com.qianwen.smartman.modules.system.entity.MetaObjectType;
|
import com.qianwen.smartman.modules.system.service.IBasCoderuleService;
|
import com.qianwen.smartman.modules.system.service.IDictService;
|
import com.qianwen.smartman.modules.system.service.IMetaObjectTypeService;
|
import com.qianwen.smartman.modules.system.vo.DictVO;
|
import com.qianwen.smartman.modules.tool.constant.ToolConstant;
|
import com.qianwen.smartman.modules.tool.convert.ToolCategoryConvert;
|
import com.qianwen.smartman.modules.tool.entity.ToolCategory;
|
import com.qianwen.smartman.modules.tool.mapper.ToolCategoryMapper;
|
import com.qianwen.smartman.modules.tool.service.IToolCategoryService;
|
import com.qianwen.smartman.modules.tool.service.IToolManageService;
|
import com.qianwen.smartman.modules.tool.service.IToolModelService;
|
import com.qianwen.smartman.modules.tool.vo.ToolCategoryTreeVO;
|
import com.qianwen.smartman.modules.tool.vo.ToolCategoryVO;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
@Service
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/tool/service/impl/ToolCategoryServiceImpl.class */
|
public class ToolCategoryServiceImpl extends BaseServiceImpl<ToolCategoryMapper, ToolCategory> implements IToolCategoryService {
|
@Autowired
|
private IDictService dictService;
|
@Autowired
|
private IMetaObjectTypeService metaObjectTypeService;
|
@Autowired
|
private IBasCoderuleService basCoderuleService;
|
@Autowired
|
@Lazy
|
private IToolManageService toolManageService;
|
@Autowired
|
private IToolModelService toolModelService;
|
private final Integer MIN_SORT = 1;
|
|
private static /* synthetic */ Object $deserializeLambda$(SerializedLambda lambda) {
|
String implMethodName = lambda.getImplMethodName();
|
boolean z = true;
|
switch (implMethodName.hashCode()) {
|
case -1669172377:
|
if (implMethodName.equals("getToolCategoryId")) {
|
z = true;
|
break;
|
}
|
break;
|
case -1249363733:
|
if (implMethodName.equals("getFId")) {
|
z = true;
|
break;
|
}
|
break;
|
case -1041904421:
|
if (implMethodName.equals("getParentId")) {
|
z = true;
|
break;
|
}
|
break;
|
case -75308287:
|
if (implMethodName.equals("getName")) {
|
z = true;
|
break;
|
}
|
break;
|
case -75145708:
|
if (implMethodName.equals("getSort")) {
|
z = false;
|
break;
|
}
|
break;
|
case 58947841:
|
if (implMethodName.equals("getRuleFieldDictKey")) {
|
z = true;
|
break;
|
}
|
break;
|
case 98245393:
|
if (implMethodName.equals("getId")) {
|
z = true;
|
break;
|
}
|
break;
|
}
|
switch (z) {
|
case false:
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/tool/entity/ToolCategory") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) {
|
return (v0) -> {
|
return v0.getSort();
|
};
|
}
|
break;
|
case true:
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/BasCodeRule") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
|
return (v0) -> {
|
return v0.getRuleFieldDictKey();
|
};
|
}
|
break;
|
case true:
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/MetaObjectType") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
|
return (v0) -> {
|
return v0.getFId();
|
};
|
}
|
break;
|
case true:
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/tool/entity/ToolCategory") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
|
return (v0) -> {
|
return v0.getName();
|
};
|
}
|
break;
|
case true:
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/tool/entity/Tool") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) {
|
return (v0) -> {
|
return v0.getToolCategoryId();
|
};
|
}
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/tool/entity/ToolModel") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) {
|
return (v0) -> {
|
return v0.getToolCategoryId();
|
};
|
}
|
break;
|
case RegionCache.VILLAGE_LEVEL /* 5 */:
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/core/mp/base/BaseEntity") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) {
|
return (v0) -> {
|
return v0.getId();
|
};
|
}
|
break;
|
case true:
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/tool/entity/ToolCategory") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) {
|
return (v0) -> {
|
return v0.getParentId();
|
};
|
}
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/tool/entity/ToolCategory") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) {
|
return (v0) -> {
|
return v0.getParentId();
|
};
|
}
|
break;
|
}
|
throw new IllegalArgumentException("Invalid lambda deserialization");
|
}
|
|
@Override // org.springblade.modules.tool.service.IToolCategoryService
|
public List<ToolCategoryTreeVO> tree() {
|
List<ToolCategoryTreeVO> toolCategoryList = ((ToolCategoryMapper) this.baseMapper).listCategoryList();
|
List<ToolCategoryTreeVO> tree = ForestNodeMerger.merge(toolCategoryList);
|
calculateModelNum(tree);
|
return tree;
|
}
|
|
private Integer calculateModelNum(List<ToolCategoryTreeVO> toolCategoryList) {
|
Integer allItemNum = 0;
|
for (ToolCategoryTreeVO toolCategoryTreeVO : toolCategoryList) {
|
List<ToolCategoryTreeVO> children = toolCategoryTreeVO.getChildren();
|
Integer childrenItemNum = calculateModelNum(children);
|
toolCategoryTreeVO.setItemNum(Integer.valueOf(childrenItemNum.intValue() + toolCategoryTreeVO.getItemNum().intValue()));
|
allItemNum = Integer.valueOf(allItemNum.intValue() + toolCategoryTreeVO.getItemNum().intValue());
|
}
|
return allItemNum;
|
}
|
|
@Override // org.springblade.modules.tool.service.IToolCategoryService
|
@Transactional(rollbackFor = {Exception.class})
|
public ToolCategoryVO save(ToolCategoryVO toolCategoryVO) {
|
checkName(null, toolCategoryVO.getName());
|
int nextSort = getNextSort(toolCategoryVO.getParentId());
|
toolCategoryVO.setSort(Integer.valueOf(nextSort));
|
ToolCategory toolCategory = ToolCategoryConvert.INSTANCE.convert(toolCategoryVO);
|
save(toolCategory);
|
Dict dict = createDict(toolCategory);
|
createCodeRule(toolCategoryVO, dict);
|
return ToolCategoryConvert.INSTANCE.convert(toolCategory);
|
}
|
|
private Dict createDict(ToolCategory toolCategory) {
|
Long dictParentId;
|
HashMap<String, Object> dictQueryMap = new HashMap<>();
|
dictQueryMap.put("code", ToolConstant.TOOL_CATEGORY_DICT_KEY);
|
Query query = new Query().setSize(15).setCurrent(1);
|
IPage<DictVO> dictVOIPage = this.dictService.parentList(dictQueryMap, query);
|
if (Func.isEmpty(dictVOIPage.getRecords())) {
|
Dict parentDict = new Dict();
|
parentDict.setIsSealed(0);
|
parentDict.setCode(ToolConstant.TOOL_CATEGORY_DICT_KEY);
|
parentDict.setDictKey(DncConstant.DNC_DEFAULT_PARENT_ID);
|
parentDict.setDictValue("刀具类型");
|
parentDict.setSort(1);
|
this.dictService.submit(parentDict);
|
dictParentId = parentDict.getId();
|
} else {
|
dictParentId = ((DictVO) dictVOIPage.getRecords().get(0)).getId();
|
}
|
Dict dict = new Dict();
|
dict.setId(toolCategory.getId());
|
dict.setCode(ToolConstant.TOOL_CATEGORY_DICT_KEY);
|
dict.setDictKey(String.valueOf(toolCategory.getId()));
|
dict.setDictValue(toolCategory.getName());
|
dict.setIsSealed(0);
|
dict.setSort(Integer.valueOf(getNextDictSort(dictParentId)));
|
dict.setParentId(dictParentId);
|
dict.setIsDeleted(0);
|
this.dictService.save(dict);
|
return dict;
|
}
|
|
private void createCodeRule(ToolCategoryVO toolCategoryVO, Dict dict) {
|
if (Func.isEmpty(toolCategoryVO.getCodeLength())) {
|
if (Func.isNotEmpty(toolCategoryVO.getToolPrefixCode())) {
|
throw new ServiceException(MessageUtils.message("tool.code.generate.code.length.can.bot.be.empty", new Object[0]));
|
}
|
if (Func.isEmpty(toolCategoryVO.getToolPrefixCode())) {
|
return;
|
}
|
}
|
MetaObjectType metaObjectType = (MetaObjectType) this.metaObjectTypeService.getOne(Lambda.eq((v0) -> {
|
return v0.getFId();
|
}, ToolConstant.TOOL_MANAGE));
|
if (Func.isEmpty(metaObjectType.getRuleDictCode())) {
|
this.metaObjectTypeService.saveRuleFiled(ToolConstant.TOOL_MANAGE, "tool_category", ToolConstant.TOOL_CATEGORY_DICT_KEY);
|
}
|
BasCoderuleDTO basCoderuleDTO = new BasCoderuleDTO();
|
basCoderuleDTO.setAutoBillno(false);
|
basCoderuleDTO.setBillFormId(ToolConstant.TOOL_MANAGE);
|
basCoderuleDTO.setSystemDefault(true);
|
basCoderuleDTO.setName(toolCategoryVO.getToolPrefixCode() + toolCategoryVO.getCodeLength());
|
basCoderuleDTO.setPreview(toolCategoryVO.getToolPrefixCode() + toolCategoryVO.getCodeLength());
|
basCoderuleDTO.setRemark(toolCategoryVO.getToolPrefixCode() + toolCategoryVO.getCodeLength());
|
basCoderuleDTO.setRepairBillno(false);
|
basCoderuleDTO.setRuleFieldDictKey(dict.getDictKey());
|
List<BasCodeRuleEntry> basCodeRuleEntryList = new ArrayList<>();
|
if (Func.isNotEmpty(toolCategoryVO.getToolPrefixCode())) {
|
BasCodeRuleEntry basCodeRuleEntry = new BasCodeRuleEntry();
|
basCodeRuleEntry.setAddChar("");
|
basCodeRuleEntry.setAddStyle(false);
|
basCodeRuleEntry.setCodeElement(true);
|
basCodeRuleEntry.setCutStyle(true);
|
basCodeRuleEntry.setElementSource("");
|
basCodeRuleEntry.setElementType(ElementTypeEnum.CONSTANT.getType());
|
basCodeRuleEntry.setElementValue(toolCategoryVO.getToolPrefixCode());
|
basCodeRuleEntry.setIncrementStep(1);
|
basCodeRuleEntry.setLength(Integer.valueOf(toolCategoryVO.getToolPrefixCode().length()));
|
basCodeRuleEntry.setReChar("");
|
basCodeRuleEntry.setSeed(0);
|
basCodeRuleEntry.setCodeOnlyBy(false);
|
basCodeRuleEntry.setFormat("");
|
basCodeRuleEntry.setSeparatorChar("");
|
basCodeRuleEntry.setSeq(1);
|
basCodeRuleEntryList.add(basCodeRuleEntry);
|
}
|
BasCodeRuleEntry basCodeRuleEntry1 = new BasCodeRuleEntry();
|
basCodeRuleEntry1.setAddChar("0");
|
basCodeRuleEntry1.setAddStyle(false);
|
basCodeRuleEntry1.setCodeElement(true);
|
basCodeRuleEntry1.setCodeOnlyBy(false);
|
basCodeRuleEntry1.setCutStyle(true);
|
basCodeRuleEntry1.setElementSource("");
|
basCodeRuleEntry1.setElementType(ElementTypeEnum.SEQUENCE.getType());
|
basCodeRuleEntry1.setElementValue("");
|
basCodeRuleEntry1.setIncrementStep(1);
|
basCodeRuleEntry1.setLength(Integer.valueOf(toolCategoryVO.getCodeLength().length()));
|
basCodeRuleEntry1.setReChar("");
|
basCodeRuleEntry1.setSeed(1);
|
basCodeRuleEntry1.setCodeOnlyBy(false);
|
basCodeRuleEntry1.setFormat("");
|
basCodeRuleEntry1.setSeparatorChar("");
|
basCodeRuleEntry1.setSeq(2);
|
basCodeRuleEntryList.add(basCodeRuleEntry1);
|
basCoderuleDTO.setEntryList(basCodeRuleEntryList);
|
this.basCoderuleService.submitCoderule(basCoderuleDTO);
|
}
|
|
@Override // org.springblade.modules.tool.service.IToolCategoryService
|
@Transactional(rollbackFor = {Exception.class})
|
public Boolean updateName(Long id, String newName) {
|
checkName(id, newName);
|
ToolCategory toolCategory = (ToolCategory) getById(id);
|
toolCategory.setName(newName);
|
updateById(toolCategory);
|
Dict dict = (Dict) this.dictService.getById(toolCategory.getId());
|
dict.setDictValue(newName);
|
this.dictService.updateById(dict);
|
return null;
|
}
|
|
@Override // org.springblade.modules.tool.service.IToolCategoryService
|
@Transactional(rollbackFor = {Exception.class})
|
public Boolean remove(List<Long> ids) {
|
List<Long> categoryIds = getChildrenIds(ids, ids);
|
long count = this.toolManageService.count((Wrapper) Wrappers.lambdaQuery().in((v0) -> {
|
return v0.getToolCategoryId();
|
}, categoryIds));
|
if (count > 0) {
|
throw new ServiceException(MessageUtils.message("tool.have.tool.can.not.delete", new Object[0]));
|
}
|
this.toolModelService.remove((Wrapper) Wrappers.lambdaQuery().in((v0) -> {
|
return v0.getToolCategoryId();
|
}, categoryIds));
|
List<String> idStrList = (List) categoryIds.stream().map((v0) -> {
|
return String.valueOf(v0);
|
}).collect(Collectors.toList());
|
this.basCoderuleService.remove((Wrapper) Wrappers.lambdaQuery().in((v0) -> {
|
return v0.getRuleFieldDictKey();
|
}, idStrList));
|
String idList = (String) categoryIds.stream().map((v0) -> {
|
return String.valueOf(v0);
|
}).reduce(a, b -> {
|
return a + "," + b;
|
}).get();
|
this.dictService.removeDict(idList);
|
return Boolean.valueOf(removeBatchByIds(categoryIds));
|
}
|
|
private int getNextDictSort(Long parentId) {
|
List<DictVO> dictVOS = this.dictService.childList(new HashMap(), parentId);
|
return ((Integer) dictVOS.stream().map((v0) -> {
|
return v0.getSort();
|
}).max((v0, v1) -> {
|
return v0.compareTo(v1);
|
}).orElse(-1)).intValue() + 1;
|
}
|
|
private int getNextSort(Long parentId) {
|
List<ToolCategory> toolCategoryList = list((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
|
return v0.getParentId();
|
}, parentId)).orderByDesc((v0) -> {
|
return v0.getSort();
|
}));
|
if (Func.isEmpty(toolCategoryList)) {
|
return this.MIN_SORT.intValue();
|
}
|
return toolCategoryList.get(0).getSort().intValue() + 1;
|
}
|
|
private void checkName(Long id, String name) {
|
long count = count((Wrapper) Wrappers.lambdaQuery().ne(Func.isNotEmpty(id), (v0) -> {
|
return v0.getId();
|
}, id).eq((v0) -> {
|
return v0.getName();
|
}, name));
|
if (count > 0) {
|
throw new ServiceException(MessageUtils.message("tool.category.already.exists", new Object[0]));
|
}
|
}
|
|
@Override // org.springblade.modules.tool.service.IToolCategoryService
|
public List<Long> getChildrenIds(List<Long> queryIdList, List<Long> ids) {
|
List<Long> categoryIdList = (List) list(Lambda.in((v0) -> {
|
return v0.getParentId();
|
}, queryIdList)).stream().map((v0) -> {
|
return v0.getId();
|
}).collect(Collectors.toList());
|
if (Func.isEmpty(categoryIdList)) {
|
return ids;
|
}
|
ids.addAll(categoryIdList);
|
return getChildrenIds(categoryIdList, ids);
|
}
|
}
|