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 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 ids) { return R.status(removeByIds(ids)); } @Override // org.springblade.modules.system.service.ICustomTemplateFieldRelationService public R removeRelationByTemplateIds(List templateIds) { if (Func.isEmpty(templateIds)) { return R.status(false); } return R.status(remove(Wrappers.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 list = list(Wrappers.lambdaQuery().eq(CustomTemplateFieldRelation::getTemplateId, customTemplateFieldRelationSubmitVO.getTemplateId()) .eq(CustomTemplateFieldRelation::getConfigType, customTemplateFieldRelationSubmitVO.getConfigType())); /* List list = list((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getTemplateId(); }, customTemplateFieldRelationSubmitVO.getTemplateId())).eq((v0) -> { return v0.getConfigType(); }, customTemplateFieldRelationSubmitVO.getConfigType()));*/ Map relationMap = list.stream().collect(Collectors.toMap((v0) -> { return v0.getFieldId(); }, item -> { return item; })); remove(Wrappers.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 oldstRelation = this.baseMapper.getOldstRelation(templateId, configType); Map> fieldRelationMap = oldstRelation.stream().collect(Collectors.groupingBy((v0) -> { return v0.getFieldId(); })); if (Func.isNotEmpty(customTemplateFieldRelationSubmitVO.getFieldList())) { List insertList = new ArrayList<>(); List 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 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 ids) { List 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.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 fields = this.customTemplateFieldRelationMapper.getConditionFields(templateId, businessType); if (Func.isNotEmpty(fields)) { Map> 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.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.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 ids = customConditionFieldsSubmitVO.getIds(); List 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 getInsertField(InsertFieldQuery insertFieldQuery) { return ((CustomTemplateFieldRelationMapper) this.baseMapper).getInsertField(insertFieldQuery); } @Override // org.springblade.modules.system.service.ICustomTemplateFieldRelationService public CustomImportFieldsVO getImportFields(Integer businessType) { List 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> 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.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.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 ids = customConditionFieldsSubmitVO.getIds(); List 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)); } }