只处理入参中出现且能解析出文件数组的字段,其它字段的附件数据保持不动; + * value 整体解析失败时该字段按"保留旧附件"处理,空数组则清空该字段附件。
+ * + * @param tableName 物理表名称(zz_online_table.table_name),分录字段传分录表自己的表名。 + * @param businessId 业务Id(所在表记录主键值)。 + * @param fileData key为字段名,value为文件JSON数组。 + */ + void replaceFileListByTableName(String tableName, Long businessId, JSONObject fileData); + } diff --git a/common/common-online/src/main/java/apelet/common/online/service/impl/OnlineFileServiceImpl.java b/common/common-online/src/main/java/apelet/common/online/service/impl/OnlineFileServiceImpl.java index 9f19f8b..046e8c0 100644 --- a/common/common-online/src/main/java/apelet/common/online/service/impl/OnlineFileServiceImpl.java +++ b/common/common-online/src/main/java/apelet/common/online/service/impl/OnlineFileServiceImpl.java @@ -2,21 +2,28 @@ package apelet.common.online.service.impl; import apelet.common.core.annotation.MyDataSourceResolver; import apelet.common.core.constant.ApplicationConstant; +import apelet.common.core.object.TokenData; import apelet.common.core.util.DefaultDataSourceResolver; import apelet.common.online.dao.OnlineFileMapper; import apelet.common.online.model.OnlineFile; +import apelet.common.online.model.OnlineTable; import apelet.common.online.service.OnlineFileService; +import apelet.common.online.service.OnlineTableService; import apelet.common.sequence.wrapper.IdGeneratorWrapper; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -25,6 +32,7 @@ import java.util.stream.Collectors; * @author guifc * @date 2023-08-04 */ +@Slf4j @MyDataSourceResolver( resolver = DefaultDataSourceResolver.class, intArg = ApplicationConstant.COMMON_FLOW_AND_ONLINE_DATASOURCE_TYPE) @@ -34,6 +42,8 @@ public class OnlineFileServiceImpl implements OnlineFileService { @Autowired private OnlineFileMapper onlineFileMapper; @Autowired + private OnlineTableService onlineTableService; + @Autowired private IdGeneratorWrapper idGenerator; @Transactional(rollbackFor = Exception.class) @@ -90,4 +100,114 @@ public class OnlineFileServiceImpl implements OnlineFileService { .in("business_id", businessIdList)); return fileList.stream().collect(Collectors.groupingBy(OnlineFile::getBusinessId)); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void replaceFileListByTableName(String tableName, Long businessId, JSONObject fileData) { + if (StrUtil.isBlank(tableName) || businessId == null || MapUtil.isEmpty(fileData)) { + return; + } + OnlineTable table = onlineTableService.getOne(new LambdaQueryWrapper值为空、不是数组或数组内没有任何可用文件时返回null,交由调用方按"保留旧附件"处理。
+ */ + private List