| | |
| | | package com.vincent.rsf.server.common.utils; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | 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 org.springframework.context.annotation.Configuration; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * @author Ryan |
| | |
| | | |
| | | /** |
| | | * @author Ryan |
| | | * @description 通过字段唯一标识获取动态字段Map |
| | | * @description 通过字段唯一标识获取动态字段对象key-value |
| | | * @param |
| | | * @return |
| | | * @time 2025/3/12 12:50 |
| | |
| | | return fieldsMap; |
| | | } |
| | | |
| | | public static void mergeFields(Map<String, Object> fileds ,String uuid) { |
| | | FieldsService fieldsService = SpringUtils.getBean(FieldsService.class); |
| | | List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1)); |
| | | if (fields.isEmpty()) { |
| | | return; |
| | | } |
| | | FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class); |
| | | List<FieldsItem> fieldsItems = fieldsItemService.list(new LambdaQueryWrapper<FieldsItem>().eq(FieldsItem::getUuid, uuid)); |
| | | for (Fields field : fields ) { |
| | | if (fieldsItems.isEmpty()) { |
| | | fileds.put(field.getFields(), null); |
| | | continue; |
| | | } |
| | | fieldsItems.forEach(fieldsItem -> { |
| | | if (fieldsItem.getFieldsId().equals(field.getId())) { |
| | | fileds.put(field.getFields(), fieldsItem.getValue()); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * @param template |
| | | * @return |
| | | * @author Ryan |
| | | * @description 动态字段value保存 |
| | | * @time 2025/3/18 15:00 |
| | | */ |
| | | public static void saveFields(Map<String, ?> template, String uuid) throws Exception{ |
| | | List<Fields> fields = getFieldsSta(); |
| | | FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class); |
| | | if (fields.isEmpty()) { |
| | | throw new CoolException("扩展字段不存在!!"); |
| | | } |
| | | List<FieldsItem> fieldsItems = new ArrayList<>(); |
| | | for (Fields field : fields) { |
| | | if (!Objects.isNull(template.get(field.getFields()))) { |
| | | FieldsItem item = new FieldsItem(); |
| | | item.setFieldsId(field.getId()) |
| | | .setUuid(uuid) |
| | | .setValue(template.get(field.getFields()).toString()); |
| | | fieldsItems.add(item); |
| | | } |
| | | } |
| | | if (!fieldsItemService.saveBatch(fieldsItems)) { |
| | | throw new CoolException("动态字段值保存失败!!"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取所有开启动态扩展字段 |
| | | * @return |
| | | */ |
| | | public static List<Fields> getFieldsSta() { |
| | | FieldsService fieldsService = SpringUtils.getBean(FieldsService.class); |
| | | return fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1)); |
| | | } |
| | | |
| | | public static void updateFieldsValue(Map<String, Object> params) throws Exception{ |
| | | List<Fields> fields = getFieldsSta(); |
| | | if (fields.isEmpty()) { return; } |
| | | Object fieldsIndex = params.get("fieldsIndex"); |
| | | if (!Objects.isNull(fieldsIndex)) { |
| | | String index = fieldsIndex.toString(); |
| | | FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class); |
| | | for (Fields field : fields) { |
| | | if (!Objects.isNull(params.get(field.getFields()))) { |
| | | FieldsItem indexItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>() |
| | | .eq(FieldsItem::getUuid, index) |
| | | .eq(FieldsItem::getFieldsId, field.getId())); |
| | | //如果子表为空,执行插入操作,否则就执行修改操作 |
| | | if (Objects.isNull(indexItem)) { |
| | | FieldsItem item = new FieldsItem(); |
| | | item.setUuid(index) |
| | | .setFieldsId(field.getId()) |
| | | .setValue(params.get(field.getFields()).toString()); |
| | | if (!fieldsItemService.save(item)) { |
| | | throw new CoolException("扩展字段修改失败!!"); |
| | | } |
| | | } else { |
| | | indexItem.setValue(params.get(field.getFields()).toString()); |
| | | if (!fieldsItemService.updateById(indexItem)) { |
| | | throw new CoolException("扩展字段修改失败!!"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | saveFields(params, params.get("index").toString()); |
| | | } |
| | | } |
| | | } |