skyouc
4 天以前 48b875f66aa0b9346b698e600f03361e972028e8
rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java
@@ -30,10 +30,10 @@
public class FieldsUtils {
    /**
     * @author Ryan
     * @description 通过字段唯一标识获取动态字段对象key-value
     * @param
     * @return 扩展字段对象
     * @author Ryan
     * @description 通过字段唯一标识获取动态字段对象key-value
     * @time 2025/3/12 12:50
     */
    public static Map<String, String> getFields(String uuid) {
@@ -45,7 +45,7 @@
        }
        FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class);
        List<FieldsItem> fieldsItems = fieldsItemService.list(new LambdaQueryWrapper<FieldsItem>().eq(FieldsItem::getUuid, uuid));
        for (Fields field : fields ) {
        for (Fields field : fields) {
            if (fieldsItems.isEmpty()) {
                fieldsMap.put(field.getFields(), null);
                continue;
@@ -57,14 +57,14 @@
            });
        }
        return  fieldsMap;
        return fieldsMap;
    }
    /**
     * @param
     * @return 包含扩展字段的集合对象
     * @author Ryan
     * @description 获取集合扩展字段key-value值
     * @param
     * @return  包含扩展字段的集合对象
     * @time 2025/3/15 15:05
     */
    public static List<Map<String, Object>> getExtendFields(List<Map<String, Object>> params) {
@@ -104,7 +104,7 @@
     * @time 2025/3/18 15:00
     */
    @Transactional(rollbackFor = Exception.class)
    public static boolean saveFields(Map<String, ?> template, String uuid) throws Exception{
    public static boolean saveFields(Map<String, ?> template, String uuid) throws Exception {
        List<Fields> fields = getFieldsSta();
        FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class);
        List<FieldsItem> fieldsItems = new ArrayList<>();
@@ -132,6 +132,7 @@
    /**
     * 获取所有开启动态扩展字段
     *
     * @return
     */
    public static List<Fields> getFieldsSta() {
@@ -140,43 +141,45 @@
    }
    /**
     * @author Ryan
     * @description 动态字段修改
     * @param
     * @return
     * @author Ryan
     * @description 动态字段修改
     * @time 2025/4/7 15:28
     */
    @Synchronized
    @Transactional(rollbackFor = Exception.class)
    public static void updateFieldsValue(Map<String, Object> params) throws Exception {
        List<Fields> fields = getFieldsSta();
        if (fields.isEmpty()) { return; }
        if (fields.isEmpty()) {
            return;
        }
        Object fieldsIndex = params.get("fieldsIndex");
        if (!Objects.isNull(fieldsIndex) && StringUtils.isNotBlank(fieldsIndex.toString())) {
            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())
                                    .setMatnrId(!Objects.isNull(params.get("matnrId")) ? Long.parseLong(params.get("matnrId").toString()) : null)
                                    .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("扩展字段修改失败!!");
                            }
                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())
                                .setMatnrId(!Objects.isNull(params.get("matnrId")) ? Long.parseLong(params.get("matnrId").toString()) : null)
                                .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());
@@ -196,12 +199,12 @@
            Fields fields = fieldsService.getOne(new LambdaQueryWrapper<Fields>().eq(Fields::getFields, key));
            if (!Cools.isEmpty(fields)) {
                String applySql = String.format(
                    "EXISTS (SELECT 1 FROM sys_fields_item fie " +
                    "WHERE %s.fields_index IS NOT NULL " +
                    "AND fie.uuid = %s.fields_index " +
                    "AND fie.fields_id = '%s' " +
                    "AND fie.value = '%s')",
                    tableName, tableName, fields.getId(), val
                        "EXISTS (SELECT 1 FROM sys_fields_item fie " +
                                "WHERE %s.fields_index IS NOT NULL " +
                                "AND fie.uuid = %s.fields_index " +
                                "AND fie.fields_id = '%s' " +
                                "AND fie.value = '%s')",
                        tableName, tableName, fields.getId(), val
                );
                queryWrapper.apply(applySql);
            }