From d727cdfbd0315850f3c7572149e77f5421db5682 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期三, 18 六月 2025 15:52:12 +0800 Subject: [PATCH] 生成波次功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java | 99 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 68 insertions(+), 31 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java index 672771e..c2f1713 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java @@ -1,12 +1,19 @@ package com.vincent.rsf.server.common.utils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.TableInfo; +import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; +import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.SpringUtils; import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.common.domain.BaseParam; +import com.vincent.rsf.server.common.domain.PageParam; 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 lombok.Synchronized; import org.apache.commons.lang3.StringUtils; import org.springframework.transaction.annotation.Transactional; @@ -23,10 +30,10 @@ public class FieldsUtils { /** - * @author Ryan - * @description 閫氳繃瀛楁鍞竴鏍囪瘑鑾峰彇鍔ㄦ�佸瓧娈靛璞ey-value * @param * @return 鎵╁睍瀛楁瀵硅薄 + * @author Ryan + * @description 閫氳繃瀛楁鍞竴鏍囪瘑鑾峰彇鍔ㄦ�佸瓧娈靛璞ey-value * @time 2025/3/12 12:50 */ public static Map<String, String> getFields(String uuid) { @@ -38,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; @@ -50,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) { @@ -97,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<>(); @@ -125,6 +132,7 @@ /** * 鑾峰彇鎵�鏈夊紑鍚姩鎬佹墿灞曞瓧娈� + * * @return */ public static List<Fields> getFieldsSta() { @@ -133,45 +141,74 @@ } /** - * @author Ryan - * @description 鍔ㄦ�佸瓧娈典慨鏀� * @param * @return + * @author Ryan + * @description 鍔ㄦ�佸瓧娈典慨鏀� * @time 2025/4/7 15:28 */ + @Synchronized @Transactional(rollbackFor = Exception.class) - public synchronized static void updateFieldsValue(Map<String, Object> params) throws Exception { + 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()); } } -} + + public static <T> QueryWrapper<T> setFieldsFilters(QueryWrapper<T> queryWrapper, PageParam<T, BaseParam> pageParam, Class<T> entityClass) { + // 鍔ㄦ�佽幏鍙栬〃鍚� + TableInfo tableInfo = TableInfoHelper.getTableInfo(entityClass); + String tableName = tableInfo.getTableName(); + + FieldsService fieldsService = SpringUtils.getBean(FieldsService.class); + Map<String, Object> map = pageParam.getWhere().getFields(); + + for (String key : map.keySet()) { + Object val = map.get(key); + 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 + ); + queryWrapper.apply(applySql); + } + } + return queryWrapper; + } +} \ No newline at end of file -- Gitblit v1.9.1