package com.vincent.rsf.server.common.utils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.common.SpringUtils; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.system.entity.Fields; import com.vincent.rsf.server.system.entity.FieldsItem; import com.vincent.rsf.server.system.service.FieldsItemService; import com.vincent.rsf.server.system.service.FieldsService; import java.util.*; /** * @author Ryan * @version 1.0 * @title FieldsUtils * @description * @create 2025/3/12 12:33 */ public class FieldsUtils { /** * @author Ryan * @description 通过字段唯一标识获取动态字段对象key-value * @param * @return * @time 2025/3/12 12:50 */ public static Map getFields(String uuid) { Map fieldsMap = new HashMap<>(); FieldsService fieldsService = SpringUtils.getBean(FieldsService.class); List fields = fieldsService.list(new LambdaQueryWrapper().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1)); if (fields.isEmpty()) { return null; } FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class); List fieldsItems = fieldsItemService.list(new LambdaQueryWrapper().eq(FieldsItem::getUuid, uuid)); for (Fields field : fields ) { if (fieldsItems.isEmpty()) { fieldsMap.put(field.getFields(), null); continue; } fieldsItems.forEach(fieldsItem -> { if (fieldsItem.getFieldsId().equals(field.getId())) { fieldsMap.put(field.getFields(), fieldsItem.getValue()); } }); } return fieldsMap; } /** * @param template * @return * @author Ryan * @description 动态字段value保存 * @time 2025/3/18 15:00 */ public static void saveFields(Map template, String uuid) { List fields = getFieldsSta(); FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class); if (fields.isEmpty()) { throw new CoolException("扩展字段不存在!!"); } List fieldsItems = new ArrayList<>(); fields.forEach(fields1 -> { if (!Objects.isNull(template.get(fields1.getFields()))) { FieldsItem item = new FieldsItem(); item.setFieldsId(fields1.getId()) .setUuid(uuid) .setValue(template.get(fields1.getFields())); fieldsItems.add(item); } }); if (!fieldsItemService.saveBatch(fieldsItems)) { throw new CoolException("动态字段值保存失败!!"); } } /** * 获取所有开启动态扩展字段 * @return */ public static List getFieldsSta() { FieldsService fieldsService = SpringUtils.getBean(FieldsService.class); return fieldsService.list(new LambdaQueryWrapper().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1)); } }