package com.qianwen.smartman.modules.cps.service.impl;
|
|
import com.alibaba.excel.write.merge.AbstractMergeStrategy;
|
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 com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
import java.lang.invoke.SerializedLambda;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
import java.util.stream.Collectors;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import com.qianwen.smartman.common.cache.RegionCache;
|
import com.qianwen.smartman.common.constant.CommonConstant;
|
import com.qianwen.smartman.common.constant.ExcelConstant;
|
import com.qianwen.smartman.common.enums.StatusType;
|
import com.qianwen.smartman.common.utils.MessageUtils;
|
import com.qianwen.smartman.common.utils.ValidatorUtils;
|
import com.qianwen.core.excel.util.ExcelUtil;
|
import com.qianwen.core.log.exception.ServiceException;
|
import com.qianwen.core.mp.service.impl.BladeServiceImpl;
|
import com.qianwen.core.mp.support.Condition;
|
import com.qianwen.core.mp.support.Query;
|
import com.qianwen.core.oss.model.BladeFile;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.modules.cps.convert.ProcessConvert;
|
import com.qianwen.smartman.modules.cps.entity.Process;
|
import com.qianwen.smartman.modules.cps.enums.WorkTypeEnum;
|
import com.qianwen.smartman.modules.cps.excel.ProcessExcel;
|
import com.qianwen.smartman.modules.cps.excel.ProcessImport;
|
import com.qianwen.smartman.modules.cps.mapper.ProcessMapper;
|
import com.qianwen.smartman.modules.cps.service.IProcessAssociationService;
|
import com.qianwen.smartman.modules.cps.service.IProcessService;
|
import com.qianwen.smartman.modules.cps.utils.ThrowFun;
|
import com.qianwen.smartman.modules.cps.vo.ProcessDetailVO;
|
import com.qianwen.smartman.modules.cps.vo.ProcessSaveVO;
|
import com.qianwen.smartman.modules.cps.vo.ProcessVO;
|
import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder;
|
import com.qianwen.smartman.modules.system.entity.Dict;
|
import com.qianwen.smartman.modules.system.service.ICodeGeneratorService;
|
import com.qianwen.smartman.modules.system.service.IDictService;
|
import com.qianwen.smartman.modules.tpm.enums.MetaTypeEnum;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.multipart.MultipartFile;
|
|
@Service
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/cps/service/impl/ProcessServiceImpl.class */
|
public class ProcessServiceImpl extends BladeServiceImpl<ProcessMapper, Process> implements IProcessService {
|
private static final Logger log = LoggerFactory.getLogger(ProcessServiceImpl.class);
|
private final IProcessAssociationService processAssociationService;
|
private final OssBuilder ossBuilder;
|
private final ProcessMapper processMapper;
|
private final IDictService dictService;
|
private final ICodeGeneratorService codeGeneratorService;
|
|
private static /* synthetic */ Object $deserializeLambda$(SerializedLambda lambda) {
|
String implMethodName = lambda.getImplMethodName();
|
boolean z = true;
|
switch (implMethodName.hashCode()) {
|
case -1601031533:
|
if (implMethodName.equals("getDictKey")) {
|
z = false;
|
break;
|
}
|
break;
|
case -1104365260:
|
if (implMethodName.equals("getProcessId")) {
|
z = true;
|
break;
|
}
|
break;
|
case -982980443:
|
if (implMethodName.equals("getDictValue")) {
|
z = true;
|
break;
|
}
|
break;
|
case -75622813:
|
if (implMethodName.equals("getCode")) {
|
z = true;
|
break;
|
}
|
break;
|
case 98245393:
|
if (implMethodName.equals("getId")) {
|
z = true;
|
break;
|
}
|
break;
|
case 803533544:
|
if (implMethodName.equals("getStatus")) {
|
z = true;
|
break;
|
}
|
break;
|
case 1567138533:
|
if (implMethodName.equals("getIsImport")) {
|
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/system/entity/Dict") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
|
return (v0) -> {
|
return v0.getDictKey();
|
};
|
}
|
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/cps/entity/ProcessAssociation") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) {
|
return (v0) -> {
|
return v0.getProcessId();
|
};
|
}
|
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/core/mp/base/BaseEntity") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) {
|
return (v0) -> {
|
return v0.getId();
|
};
|
}
|
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();
|
};
|
}
|
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();
|
};
|
}
|
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/core/mp/base/BaseEntity") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) {
|
return (v0) -> {
|
return v0.getStatus();
|
};
|
}
|
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/Integer;")) {
|
return (v0) -> {
|
return v0.getStatus();
|
};
|
}
|
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/Dict") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
|
return (v0) -> {
|
return v0.getDictValue();
|
};
|
}
|
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/modules/system/entity/Dict") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
|
return (v0) -> {
|
return v0.getCode();
|
};
|
}
|
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/cps/entity/Process") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
|
return (v0) -> {
|
return v0.getCode();
|
};
|
}
|
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/cps/entity/Process") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
|
return (v0) -> {
|
return v0.getCode();
|
};
|
}
|
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/cps/entity/Process") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) {
|
return (v0) -> {
|
return v0.getIsImport();
|
};
|
}
|
break;
|
}
|
throw new IllegalArgumentException("Invalid lambda deserialization");
|
}
|
|
public ProcessServiceImpl(final IProcessAssociationService processAssociationService, final OssBuilder ossBuilder, final ProcessMapper processMapper, final IDictService dictService, final ICodeGeneratorService codeGeneratorService) {
|
this.processAssociationService = processAssociationService;
|
this.ossBuilder = ossBuilder;
|
this.processMapper = processMapper;
|
this.dictService = dictService;
|
this.codeGeneratorService = codeGeneratorService;
|
}
|
|
@Override // org.springblade.modules.cps.service.IProcessService
|
public IPage<ProcessVO> listPage(Query query, String keyword, Integer status) {
|
IPage<ProcessVO> page = Condition.getPage(query);
|
page.setRecords(ProcessConvert.INSTANCE.convertDTO2ListPage(this.processMapper.listPage(page, keyword, status)));
|
return page;
|
}
|
|
@Override // org.springblade.modules.cps.service.IProcessService
|
@Transactional(rollbackFor = {Exception.class})
|
public ProcessDetailVO insert(ProcessSaveVO vo) {
|
if (Func.isBlank(vo.getCode())) {
|
String code = this.codeGeneratorService.getGeneratorCode(vo, MetaTypeEnum.PROCESS.getCode());
|
log.info("工序编码规则生成的code:{}", code + " ," + code.length());
|
vo.setCode(code);
|
}
|
checkProcess(vo);
|
Process process = ProcessConvert.INSTANCE.convert(vo);
|
Long id = vo.getId();
|
if (Func.isNull(id)) {
|
save(process);
|
} else {
|
Process p = (Process) getById(vo.getId());
|
Integer type = vo.getType();
|
if (!p.getType().equals(type)) {
|
throw new ServiceException(MessageUtils.message("cps.process.type.not.change", new Object[0]));
|
}
|
updateById(process);
|
}
|
return ProcessConvert.INSTANCE.convertDetail(process);
|
}
|
|
@Override // org.springblade.modules.cps.service.IProcessService
|
public ProcessDetailVO getDetail(Long processId) {
|
ProcessDetailVO processDetailVO = this.processMapper.selectByIdWithType(processId);
|
return processDetailVO;
|
}
|
|
@Override // org.springblade.modules.cps.service.IProcessService
|
@Transactional(rollbackFor = {Exception.class})
|
public Boolean delete(List<Long> processIds, Integer type) {
|
if (StatusType.REMOVE.getType().equals(type)) {
|
int count = this.baseMapper.existCraftProcess(processIds);
|
ThrowFun.isTrue(count > 0).throwMessage(MessageUtils.message("cps.process.binding.craft", new Object[0]));
|
this.processAssociationService.remove(Wrappers.query().lambda().in(Func.isNotEmpty(processIds), (v0) -> {
|
return v0.getProcessId();
|
}, processIds));
|
remove(Wrappers.query().lambda().in(Func.isNotEmpty(processIds), (v0) -> {
|
return v0.getId();
|
}, processIds));
|
return true;
|
}
|
return Boolean.valueOf(changeStatus(processIds, CommonConstant.DEACTIVATE));
|
}
|
|
@Override // org.springblade.modules.cps.service.IProcessService
|
@Transactional(rollbackFor = {Exception.class})
|
public BladeFile importProcess(List<ProcessImport> data) {
|
if (Func.isEmpty(data)) {
|
throw new ServiceException(MessageUtils.message("excel.import.data.can.not.be.null", new Object[0]));
|
}
|
if (data.size() > 200) {
|
throw new ServiceException(MessageUtils.message("excel.import.size.failed", new Object[0]));
|
}
|
HashMap<String, Object> codeMap = new HashMap<>(16);
|
List<Process> processList = list();
|
if (Func.isNotEmpty(processList)) {
|
processList.forEach(x -> {
|
if (CommonConstant.ENABLE.equals(x.getStatus())) {
|
codeMap.put(x.getCode(), null);
|
}
|
});
|
}
|
Set<String> codeDisableSet = (Set) processList.stream().filter(c -> {
|
return CommonConstant.DEACTIVATE.equals(c.getStatus());
|
}).map((v0) -> {
|
return v0.getCode();
|
}).collect(Collectors.toSet());
|
Map<String, String> dictMap = new HashMap<>(16);
|
List<Dict> dictList = this.dictService.list((Wrapper) Wrappers.lambdaQuery().select(new SFunction[]{(v0) -> {
|
return v0.getDictKey();
|
}, (v0) -> {
|
return v0.getDictValue();
|
}}).eq((v0) -> {
|
return v0.getCode();
|
}, "work_type"));
|
if (Func.isNotEmpty(dictList)) {
|
dictMap = (Map) dictList.stream().collect(Collectors.toMap((v0) -> {
|
return v0.getDictValue();
|
}, (v0) -> {
|
return v0.getDictKey();
|
}));
|
}
|
boolean flag = Boolean.TRUE.booleanValue();
|
for (ProcessImport datum : data) {
|
checkImportProcess(datum, codeMap, codeDisableSet, dictMap);
|
if (Func.isNotEmpty(datum.getFailReason())) {
|
flag = Boolean.FALSE.booleanValue();
|
}
|
}
|
if (!flag) {
|
MultipartFile multipartFile = ExcelUtil.exportFillTemplateToMultipartFile(ExcelConstant.DIRECTORY + "processFailTemplate" + ExcelConstant.SUFFIX, MessageUtils.message("excel.import.failed.report.name", new Object[0]) + ExcelConstant.SUFFIX, "工序信息表", (List) data.stream().filter(x2 -> {
|
return Func.isNotEmpty(x2.getFailReason());
|
}).collect(Collectors.toList()), (Object) null, (AbstractMergeStrategy) null);
|
return this.ossBuilder.tempTemplate().putFile(multipartFile.getOriginalFilename(), multipartFile);
|
}
|
data.forEach(x3 -> {
|
Process process = ProcessConvert.INSTANCE.convert(x3);
|
process.setIsImport(1);
|
saveOrUpdate(process);
|
});
|
return null;
|
}
|
|
@Override // org.springblade.modules.cps.service.IProcessService
|
public List<ProcessExcel> listProcessExcel(String keyword, Integer status) {
|
return this.baseMapper.listProcessExcel(keyword, status);
|
}
|
|
private void checkProcess(ProcessSaveVO processSaveVO) {
|
long count = count((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().ne(Func.isNotEmpty(processSaveVO.getId()), (v0) -> {
|
return v0.getId();
|
}, processSaveVO.getId()).eq((v0) -> {
|
return v0.getCode();
|
}, processSaveVO.getCode())).eq((v0) -> {
|
return v0.getStatus();
|
}, CommonConstant.ENABLE));
|
if (count > 0) {
|
throw new ServiceException(MessageUtils.message("cps.process.code.already.exists", new Object[0]));
|
}
|
long countDisable = count((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().ne(Func.isNotEmpty(processSaveVO.getId()), (v0) -> {
|
return v0.getId();
|
}, processSaveVO.getId()).eq((v0) -> {
|
return v0.getCode();
|
}, processSaveVO.getCode())).eq((v0) -> {
|
return v0.getStatus();
|
}, CommonConstant.ENABLE));
|
if (countDisable > 0) {
|
throw new ServiceException(MessageUtils.message("cps.process.code.disable.already.exists", new Object[0]));
|
}
|
if (WorkTypeEnum.HANDLE.getCode().equals(processSaveVO.getType())) {
|
throw new ServiceException(MessageUtils.message("cps.process.type.can.not.handle", new Object[0]));
|
}
|
}
|
|
private void checkImport(List<Long> ids) {
|
Long count = Long.valueOf(count((Wrapper) Wrappers.query().lambda().in(Func.isNotEmpty(ids), (v0) -> {
|
return v0.getId();
|
}, ids).eq((v0) -> {
|
return v0.getIsImport();
|
}, 1)));
|
if (count.longValue() > 0) {
|
throw new ServiceException(MessageUtils.message("cps.process.delete.failed", new Object[0]));
|
}
|
}
|
|
private void checkImportProcess(ProcessImport processImport, HashMap<String, Object> codeMap, Set<String> codeDisableSet, Map<String, String> dictMap) {
|
if (Func.isEmpty(processImport.getCode())) {
|
processImport.setFailReason(MessageUtils.message("cps.process.code.can.not.be.null", new Object[0]));
|
} else if (codeMap.containsKey(processImport.getCode())) {
|
processImport.setFailReason(MessageUtils.message("cps.process.code.already.exists", new Object[0]));
|
} else if (codeDisableSet.contains(processImport.getCode())) {
|
processImport.setFailReason(MessageUtils.message("cps.process.code.disable.already.exists", new Object[0]));
|
} else if (ValidatorUtils.checkContextLength(processImport.getCode())) {
|
processImport.setFailReason(MessageUtils.message("cps.process.column.code.can.not.exceed", new Object[0]));
|
} else {
|
codeMap.put(processImport.getCode(), null);
|
if (Func.isEmpty(processImport.getName())) {
|
processImport.setFailReason(MessageUtils.message("cps.process.name.can.not.be.null", new Object[0]));
|
} else if (ValidatorUtils.checkContextLength(processImport.getName())) {
|
processImport.setFailReason(MessageUtils.message("cps.process.column.name.can.not.exceed", new Object[0]));
|
} else if (Func.isNotEmpty(processImport.getTypeName()) && ValidatorUtils.checkContextLength(processImport.getTypeName())) {
|
processImport.setFailReason(MessageUtils.message("cps.process.column.type.can.not.exceed", new Object[0]));
|
} else if (Func.isNotEmpty(processImport.getDescription()) && ValidatorUtils.checkContextLength(processImport.getDescription())) {
|
processImport.setFailReason(MessageUtils.message("cps.process.column.description.can.not.exceed", new Object[0]));
|
} else if (Func.isNotEmpty(processImport.getTypeName()) && !dictMap.containsKey(processImport.getTypeName())) {
|
processImport.setFailReason(MessageUtils.message("cps.process.column.type.not.exist", new Object[0]));
|
} else if (Func.isNotEmpty(processImport.getTypeName())) {
|
processImport.setType(Integer.valueOf(dictMap.get(processImport.getTypeName())));
|
}
|
}
|
}
|
}
|