package com.qianwen.smartman.modules.system.service.impl;
|
|
import java.util.ArrayList;
|
import java.util.Comparator;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.qianwen.core.mp.base.BaseServiceImpl;
|
import com.qianwen.core.tool.api.R;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.common.constant.CommonConstant;
|
import com.qianwen.smartman.modules.coproduction.vo.InsertFieldQuery;
|
import com.qianwen.smartman.modules.system.convert.CustomTemplateFieldRelationConvert;
|
import com.qianwen.smartman.modules.system.entity.CustomTemplate;
|
import com.qianwen.smartman.modules.system.entity.CustomTemplateFieldRelation;
|
import com.qianwen.smartman.modules.system.enums.BusinessTypeEnums;
|
import com.qianwen.smartman.modules.system.enums.ConfigTypeEnum;
|
import com.qianwen.smartman.modules.system.enums.ImportSpecialHandlingEnum;
|
import com.qianwen.smartman.modules.system.handler.field.FieldCodeCache;
|
import com.qianwen.smartman.modules.system.mapper.CustomTemplateFieldRelationMapper;
|
import com.qianwen.smartman.modules.system.mapper.CustomTemplateMapper;
|
import com.qianwen.smartman.modules.system.service.ICustomTemplateFieldRelationService;
|
import com.qianwen.smartman.modules.system.vo.CustomConditionFieldInfoVO;
|
import com.qianwen.smartman.modules.system.vo.CustomConditionFieldsSubmitVO;
|
import com.qianwen.smartman.modules.system.vo.CustomConditionFieldsVO;
|
import com.qianwen.smartman.modules.system.vo.CustomImportFieldInfoVO;
|
import com.qianwen.smartman.modules.system.vo.CustomImportFieldsVO;
|
import com.qianwen.smartman.modules.system.vo.CustomTemplateFieldRelationSubmitVO;
|
import com.qianwen.smartman.modules.system.vo.CustomTemplateFieldRelationVO;
|
|
@Service
|
public class CustomTemplateFieldRelationServiceImpl extends BaseServiceImpl<CustomTemplateFieldRelationMapper, CustomTemplateFieldRelation> implements ICustomTemplateFieldRelationService {
|
private final CustomTemplateFieldRelationMapper customTemplateFieldRelationMapper;
|
private final CustomTemplateMapper customTemplateMapper;
|
|
|
public CustomTemplateFieldRelationServiceImpl(final CustomTemplateFieldRelationMapper customTemplateFieldRelationMapper, final CustomTemplateMapper customTemplateMapper) {
|
this.customTemplateFieldRelationMapper = customTemplateFieldRelationMapper;
|
this.customTemplateMapper = customTemplateMapper;
|
}
|
|
@Override // org.springblade.modules.system.service.ICustomTemplateFieldRelationService
|
public R removeRelation(List<Long> ids) {
|
return R.status(removeByIds(ids));
|
}
|
|
@Override // org.springblade.modules.system.service.ICustomTemplateFieldRelationService
|
public R removeRelationByTemplateIds(List<Long> templateIds) {
|
if (Func.isEmpty(templateIds)) {
|
return R.status(false);
|
}
|
|
return R.status(remove(Wrappers.<CustomTemplateFieldRelation>lambdaQuery().in(CustomTemplateFieldRelation::getTemplateId, templateIds)));
|
/*
|
return R.status(remove((Wrapper) Wrappers.lambdaQuery().in((v0) -> {
|
return v0.getTemplateId();
|
}, templateIds)));*/
|
}
|
|
@Override // org.springblade.modules.system.service.ICustomTemplateFieldRelationService
|
public CustomTemplateFieldRelation updateRelation(CustomTemplateFieldRelationVO customTemplateFieldRelationVO) {
|
FieldCodeCache.getInstance().clear(customTemplateFieldRelationVO.getTemplateId(), customTemplateFieldRelationVO.getConfigType());
|
CustomTemplateFieldRelation customTemplateFieldRelation = CustomTemplateFieldRelationConvert.INSTANCE.convert(customTemplateFieldRelationVO);
|
updateById(customTemplateFieldRelation);
|
return customTemplateFieldRelation;
|
}
|
|
@Override // org.springblade.modules.system.service.ICustomTemplateFieldRelationService
|
@Transactional(rollbackFor = {Exception.class})
|
public Boolean saveRelation(CustomTemplateFieldRelationSubmitVO customTemplateFieldRelationSubmitVO) {
|
CustomTemplateFieldRelation customTemplateFieldRelation;
|
FieldCodeCache.getInstance().clear(customTemplateFieldRelationSubmitVO.getTemplateId(), customTemplateFieldRelationSubmitVO.getConfigType());
|
|
List<CustomTemplateFieldRelation> list = list(Wrappers.<CustomTemplateFieldRelation>lambdaQuery().eq(CustomTemplateFieldRelation::getTemplateId, customTemplateFieldRelationSubmitVO.getTemplateId())
|
.eq(CustomTemplateFieldRelation::getConfigType, customTemplateFieldRelationSubmitVO.getConfigType()));
|
/*
|
List<CustomTemplateFieldRelation> list = list((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
|
return v0.getTemplateId();
|
}, customTemplateFieldRelationSubmitVO.getTemplateId())).eq((v0) -> {
|
return v0.getConfigType();
|
}, customTemplateFieldRelationSubmitVO.getConfigType()));*/
|
Map<Long, CustomTemplateFieldRelation> relationMap = list.stream().collect(Collectors.toMap((v0) -> {
|
return v0.getFieldId();
|
}, item -> {
|
return item;
|
}));
|
remove(Wrappers.<CustomTemplateFieldRelation>lambdaQuery().eq(CustomTemplateFieldRelation::getTemplateId, customTemplateFieldRelationSubmitVO.getTemplateId())
|
.eq(CustomTemplateFieldRelation::getConfigType, customTemplateFieldRelationSubmitVO.getConfigType()));
|
/*
|
remove((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
|
return v0.getTemplateId();
|
}, customTemplateFieldRelationSubmitVO.getTemplateId())).eq((v0) -> {
|
return v0.getConfigType();
|
}, customTemplateFieldRelationSubmitVO.getConfigType()));*/
|
Long templateId = customTemplateFieldRelationSubmitVO.getTemplateId();
|
Integer configType = customTemplateFieldRelationSubmitVO.getConfigType();
|
List<CustomImportFieldInfoVO> oldstRelation = this.baseMapper.getOldstRelation(templateId, configType);
|
Map<Long, List<CustomImportFieldInfoVO>> fieldRelationMap = oldstRelation.stream().collect(Collectors.groupingBy((v0) -> {
|
return v0.getFieldId();
|
}));
|
if (Func.isNotEmpty(customTemplateFieldRelationSubmitVO.getFieldList())) {
|
List<CustomTemplateFieldRelation> insertList = new ArrayList<>();
|
List<String> fieldList = customTemplateFieldRelationSubmitVO.getFieldList();
|
for (int i = 0; i < fieldList.size(); i++) {
|
String fieldId = fieldList.get(i);
|
if (relationMap.containsKey(Long.valueOf(fieldId))) {
|
customTemplateFieldRelation = relationMap.get(Long.valueOf(fieldId));
|
} else {
|
customTemplateFieldRelation = new CustomTemplateFieldRelation();
|
customTemplateFieldRelation.setFieldId(Long.valueOf(fieldList.get(i)));
|
customTemplateFieldRelation.setTemplateId(customTemplateFieldRelationSubmitVO.getTemplateId());
|
customTemplateFieldRelation.setConfigType(customTemplateFieldRelationSubmitVO.getConfigType());
|
}
|
customTemplateFieldRelation.setId(null);
|
customTemplateFieldRelation.setSort(Integer.valueOf(i));
|
if (fieldRelationMap.containsKey(Long.valueOf(fieldId))) {
|
List<CustomImportFieldInfoVO> fieldInfoVOS = fieldRelationMap.get(Long.valueOf(fieldId));
|
if (Func.isNotEmpty(fieldInfoVOS)) {
|
CustomImportFieldInfoVO customImportFieldInfoVO = fieldInfoVOS.get(0);
|
customTemplateFieldRelation.setSort(customImportFieldInfoVO.getSort());
|
}
|
}
|
insertList.add(customTemplateFieldRelation);
|
}
|
saveBatch(insertList);
|
}
|
return true;
|
}
|
|
@Override // org.springblade.modules.system.service.ICustomTemplateFieldRelationService
|
public Boolean sort(List<Long> ids) {
|
List<CustomTemplateFieldRelation> updateList = new ArrayList<>();
|
for (int i = 0; i < ids.size(); i++) {
|
CustomTemplateFieldRelation customTemplateFieldRelation = new CustomTemplateFieldRelation();
|
customTemplateFieldRelation.setId(ids.get(i));
|
customTemplateFieldRelation.setSort(Integer.valueOf(i));
|
updateList.add(customTemplateFieldRelation);
|
}
|
return Boolean.valueOf(updateBatchById(updateList));
|
}
|
|
@Override // org.springblade.modules.system.service.ICustomTemplateFieldRelationService
|
public CustomConditionFieldsVO getConditionFields(Long templateId) {
|
Integer businessType = BusinessTypeEnums.PLAN_ORDER.getCode();
|
if (Func.isEmpty(templateId)) {
|
CustomTemplate customTemplate = this.customTemplateMapper.selectOne(Wrappers.<CustomTemplate>lambdaQuery()
|
.select( CustomTemplate::getId).eq(CustomTemplate::getBusinessType, BusinessTypeEnums.PRODUCT.getCode()));
|
/*
|
CustomTemplate customTemplate = (CustomTemplate) this.customTemplateMapper.selectOne((Wrapper) Wrappers.lambdaQuery().select(new SFunction[]{(v0) -> {
|
return v0.getId();
|
}}).eq((v0) -> {
|
return v0.getBusinessType();
|
}, BusinessTypeEnums.PRODUCT.getCode()));*/
|
templateId = customTemplate.getId();
|
businessType = BusinessTypeEnums.PRODUCT.getCode();
|
}
|
CustomConditionFieldsVO customConditionFieldsVO = new CustomConditionFieldsVO();
|
List<CustomConditionFieldInfoVO> fields = this.customTemplateFieldRelationMapper.getConditionFields(templateId, businessType);
|
if (Func.isNotEmpty(fields)) {
|
Map<Integer, List<CustomConditionFieldInfoVO>> groupResult = fields.stream().collect(Collectors.groupingBy((v0) -> {
|
return v0.getSystemField();
|
}));
|
customConditionFieldsVO.setCustomFieldList(groupResult.get(0));
|
customConditionFieldsVO.setSystemFieldList(groupResult.get(1));
|
}
|
return customConditionFieldsVO;
|
}
|
|
@Override // org.springblade.modules.system.service.ICustomTemplateFieldRelationService
|
@Transactional(rollbackFor = {Exception.class})
|
public Boolean submitConditionFields(CustomConditionFieldsSubmitVO customConditionFieldsSubmitVO) {
|
FieldCodeCache.getInstance().clear(customConditionFieldsSubmitVO.getTemplateId());
|
if (Func.isEmpty(customConditionFieldsSubmitVO.getTemplateId())) {
|
CustomTemplate customTemplate = this.customTemplateMapper.selectOne(Wrappers.<CustomTemplate>lambdaQuery()
|
.select( CustomTemplate::getId ).eq(CustomTemplate::getBusinessType, BusinessTypeEnums.PRODUCT.getCode()));
|
/*
|
CustomTemplate customTemplate = (CustomTemplate) this.customTemplateMapper.selectOne((Wrapper) Wrappers.lambdaQuery().select(new SFunction[]{(v0) -> {
|
return v0.getId();
|
}}).eq((v0) -> {
|
return v0.getBusinessType();
|
}, BusinessTypeEnums.PRODUCT.getCode()));*/
|
customConditionFieldsSubmitVO.setTemplateId(customTemplate.getId());
|
}
|
remove(Wrappers.<CustomTemplateFieldRelation>lambdaQuery().eq(CustomTemplateFieldRelation::getConfigType, ConfigTypeEnum.QUERY_CONDITION.getCode())
|
.eq(CustomTemplateFieldRelation::getTemplateId, customConditionFieldsSubmitVO.getTemplateId()));
|
/*
|
remove((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
|
return v0.getConfigType();
|
}, ConfigTypeEnum.QUERY_CONDITION.getCode())).eq((v0) -> {
|
return v0.getTemplateId();
|
}, customConditionFieldsSubmitVO.getTemplateId()));*/
|
List<Long> ids = customConditionFieldsSubmitVO.getIds();
|
List<CustomTemplateFieldRelation> insertList = new ArrayList<>();
|
for (int i = 0; i < ids.size(); i++) {
|
CustomTemplateFieldRelation customTemplateFieldRelation = new CustomTemplateFieldRelation();
|
customTemplateFieldRelation.setTemplateId(customConditionFieldsSubmitVO.getTemplateId());
|
customTemplateFieldRelation.setFieldId(ids.get(i));
|
customTemplateFieldRelation.setSort(Integer.valueOf(i));
|
customTemplateFieldRelation.setConfigType(ConfigTypeEnum.QUERY_CONDITION.getCode());
|
insertList.add(customTemplateFieldRelation);
|
}
|
if (Func.isNotEmpty(insertList)) {
|
return Boolean.valueOf(saveBatch(insertList));
|
}
|
return true;
|
}
|
|
@Override // org.springblade.modules.system.service.ICustomTemplateFieldRelationService
|
public List<CustomTemplateFieldRelationVO> getInsertField(InsertFieldQuery insertFieldQuery) {
|
return ((CustomTemplateFieldRelationMapper) this.baseMapper).getInsertField(insertFieldQuery);
|
}
|
|
@Override // org.springblade.modules.system.service.ICustomTemplateFieldRelationService
|
public CustomImportFieldsVO getImportFields(Integer businessType) {
|
List<CustomImportFieldInfoVO> fields = this.customTemplateFieldRelationMapper.getImportFieldsByBusinessType(businessType);
|
fields.forEach(item -> {
|
item.setFieldName(ImportSpecialHandlingEnum.getImportName(item.getFieldName(), businessType));
|
if (Func.isEmpty(item.getImportSort())) {
|
Integer systemField = item.getSystemField();
|
if (systemField == null) {
|
systemField = 0;
|
}
|
item.setImportSort(Integer.valueOf(Integer.MAX_VALUE - systemField.intValue()));
|
}
|
});
|
fields.sort(Comparator.comparing((v0) -> {
|
return v0.getImportSort();
|
}));
|
CustomImportFieldsVO customImportFieldsVO = new CustomImportFieldsVO();
|
if (Func.isNotEmpty(fields)) {
|
Map<Integer, List<CustomImportFieldInfoVO>> groupResult = fields.stream().collect(Collectors.groupingBy((v0) -> {
|
return v0.getSystemField();
|
}));
|
customImportFieldsVO.setCustomFieldList(groupResult.get(0));
|
customImportFieldsVO.setSystemFieldList(groupResult.get(1));
|
}
|
return customImportFieldsVO;
|
}
|
|
@Override // org.springblade.modules.system.service.ICustomTemplateFieldRelationService
|
@Transactional(rollbackFor = {Exception.class})
|
public Boolean submitImportFields(CustomConditionFieldsSubmitVO customConditionFieldsSubmitVO) {
|
if (Func.isEmpty(customConditionFieldsSubmitVO.getTemplateId())) {
|
CustomTemplate customTemplate = this.customTemplateMapper.selectOne(Wrappers.<CustomTemplate>lambdaQuery()
|
.select(CustomTemplate::getId).eq(CustomTemplate::getBusinessType, BusinessTypeEnums.PRODUCT.getCode()));
|
/*
|
CustomTemplate customTemplate = (CustomTemplate) this.customTemplateMapper.selectOne((Wrapper) Wrappers.lambdaQuery().select(new SFunction[]{(v0) -> {
|
return v0.getId();
|
}}).eq((v0) -> {
|
return v0.getBusinessType();
|
}, BusinessTypeEnums.PRODUCT.getCode()));*/
|
customConditionFieldsSubmitVO.setTemplateId(customTemplate.getId());
|
}
|
|
update(Wrappers.<CustomTemplateFieldRelation>lambdaUpdate().set(CustomTemplateFieldRelation::getImportSort, null)
|
.set(CustomTemplateFieldRelation::getImportField, CommonConstant.DISABLE)
|
.eq(CustomTemplateFieldRelation::getTemplateId, customConditionFieldsSubmitVO.getTemplateId())
|
.eq(CustomTemplateFieldRelation::getConfigType, ConfigTypeEnum.NEW_PAGE.getCode())
|
.ne(CustomTemplateFieldRelation::getMustField, CommonConstant.ENABLE));
|
/*
|
update((Wrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) Wrappers.lambdaUpdate().set((v0) -> {
|
return v0.getImportSort();
|
}, (Object) null)).set((v0) -> {
|
return v0.getImportField();
|
}, CommonConstant.DISABLE)).eq((v0) -> {
|
return v0.getTemplateId();
|
}, customConditionFieldsSubmitVO.getTemplateId())).eq((v0) -> {
|
return v0.getConfigType();
|
}, ConfigTypeEnum.NEW_PAGE.getCode())).ne((v0) -> {
|
return v0.getMustField();
|
}, CommonConstant.ENABLE));*/
|
List<Long> ids = customConditionFieldsSubmitVO.getIds();
|
List<CustomTemplateFieldRelation> updateList = new ArrayList<>();
|
for (int i = 0; i < ids.size(); i++) {
|
CustomTemplateFieldRelation customTemplateFieldRelation = new CustomTemplateFieldRelation();
|
customTemplateFieldRelation.setId(ids.get(i));
|
customTemplateFieldRelation.setImportSort(Integer.valueOf(i));
|
customTemplateFieldRelation.setImportField(CommonConstant.ENABLE);
|
updateList.add(customTemplateFieldRelation);
|
}
|
return Boolean.valueOf(updateBatchById(updateList));
|
}
|
}
|