施工人员文件处理
This commit is contained in:
@ -63,6 +63,13 @@ spring:
|
|||||||
url: jdbc:mysql://192.168.110.2:13386/zmkgc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
url: jdbc:mysql://192.168.110.2:13386/zmkgc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||||
username: zmkgc
|
username: zmkgc
|
||||||
password: nWKDKRNRT48tFBdh
|
password: nWKDKRNRT48tFBdh
|
||||||
|
slave1:
|
||||||
|
lazy: true
|
||||||
|
type: ${spring.datasource.type}
|
||||||
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
|
url: jdbc:mysql://192.168.110.2:13386/zmkgprod?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||||
|
username: zmkgprod
|
||||||
|
password: MaY8nehwWkJriWPm
|
||||||
# # 从库数据源
|
# # 从库数据源
|
||||||
# slave:
|
# slave:
|
||||||
# lazy: true
|
# lazy: true
|
||||||
|
|||||||
@ -197,9 +197,9 @@ public class TransferDataController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/transferSpecialWorkPic")
|
@GetMapping("/handleFile")
|
||||||
private void handleFaceImage() {
|
private void handleFile() {
|
||||||
transferDataService.handleSpecialWorkPic();
|
transferDataService.handleFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,20 @@
|
|||||||
|
package org.dromara.transferData.domain;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ConstructionUserNew {
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private Long sysUserId;
|
||||||
|
|
||||||
|
private Long goId;
|
||||||
|
|
||||||
|
private String yhkPic;
|
||||||
|
|
||||||
|
private String sfzFrontPic;
|
||||||
|
|
||||||
|
private String sfzBackPic;
|
||||||
|
|
||||||
|
private String specialWorkPic;
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package org.dromara.transferData.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class OldFile {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
private String userImgType;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String path;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
package org.dromara.transferData.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 施工人员文件存储对象 sub_construction_user_file
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-04-01
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class UserFile {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件类型
|
||||||
|
*/
|
||||||
|
private String fileType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件路径
|
||||||
|
*/
|
||||||
|
private String path;
|
||||||
|
|
||||||
|
|
||||||
|
private Long goId;
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,13 +1,9 @@
|
|||||||
package org.dromara.transferData.mapper;
|
package org.dromara.transferData.mapper;
|
||||||
|
|
||||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||||
import org.apache.ibatis.annotations.Insert;
|
import org.apache.ibatis.annotations.*;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
import org.apache.ibatis.annotations.Select;
|
|
||||||
import org.dromara.project.domain.BusAttendance;
|
import org.dromara.project.domain.BusAttendance;
|
||||||
import org.dromara.transferData.domain.ConstructionUserCopy;
|
import org.dromara.transferData.domain.*;
|
||||||
import org.dromara.transferData.domain.OldAttendance;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -40,4 +36,38 @@ public interface TransferDataMapper {
|
|||||||
"</foreach>" +
|
"</foreach>" +
|
||||||
"</script>")
|
"</script>")
|
||||||
int saveBatchCopy(@Param("list") List<BusAttendance> busAttendanceList);
|
int saveBatchCopy(@Param("list") List<BusAttendance> busAttendanceList);
|
||||||
|
|
||||||
|
|
||||||
|
@Select("select id,go_id,sfz_front_pic,sfz_back_pic,yhk_pic,special_work_pic from sub_construction_user_copy1")
|
||||||
|
List<ConstructionUserNew> getConstructionUserList();
|
||||||
|
|
||||||
|
|
||||||
|
@DS("slave1")
|
||||||
|
@Select("<script>" +
|
||||||
|
"SELECT * FROM bus_construction_user_file " +
|
||||||
|
"WHERE user_id IN " +
|
||||||
|
"<foreach collection='userIds' item='userId' open='(' separator=',' close=')'>" +
|
||||||
|
"#{userId}" +
|
||||||
|
"</foreach>" +
|
||||||
|
"</script>")
|
||||||
|
List<OldFile> getOldFileList1(List<Long> userIds);
|
||||||
|
|
||||||
|
@DS("slave")
|
||||||
|
@Select("<script>" +
|
||||||
|
"SELECT * FROM bus_construction_user_file " +
|
||||||
|
"WHERE user_id IN " +
|
||||||
|
"<foreach collection='userIds' item='userId' open='(' separator=',' close=')'>" +
|
||||||
|
"#{userId}" +
|
||||||
|
"</foreach>" +
|
||||||
|
"</script>")
|
||||||
|
List<OldFile> getOldFileList(List<Long> userIds);
|
||||||
|
|
||||||
|
@Select("<script>" +
|
||||||
|
"SELECT * FROM sub_construction_user_file " +
|
||||||
|
"WHERE go_id IN " +
|
||||||
|
"<foreach collection='goIds' item='userId' open='(' separator=',' close=')'>" +
|
||||||
|
"#{userId}" +
|
||||||
|
"</foreach>" +
|
||||||
|
"</script>")
|
||||||
|
List<UserFile> getUserFileList(List<Long> goIds);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,11 @@
|
|||||||
package org.dromara.transferData.service;
|
package org.dromara.transferData.service;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.Query;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import jakarta.activation.MimetypesFileTypeMap;
|
import jakarta.activation.MimetypesFileTypeMap;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
@ -15,6 +21,10 @@ import org.dromara.project.service.IBusAttendanceRuleService;
|
|||||||
import org.dromara.project.service.IBusAttendanceService;
|
import org.dromara.project.service.IBusAttendanceService;
|
||||||
import org.dromara.system.domain.vo.SysOssVo;
|
import org.dromara.system.domain.vo.SysOssVo;
|
||||||
import org.dromara.system.service.ISysOssService;
|
import org.dromara.system.service.ISysOssService;
|
||||||
|
import org.dromara.transferData.domain.ConstructionUserNew;
|
||||||
|
import org.dromara.transferData.domain.OldFile;
|
||||||
|
import org.dromara.transferData.domain.UserFile;
|
||||||
|
import org.dromara.transferData.mapper.TransferDataMapper;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -29,10 +39,13 @@ import java.nio.file.Paths;
|
|||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static kotlin.reflect.jvm.internal.impl.builtins.StandardNames.FqNames.list;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author 铁憨憨
|
* @Author 铁憨憨
|
||||||
* @Date 2025/9/14 10:53
|
* @Date 2025/9/14 10:53
|
||||||
@ -55,6 +68,8 @@ public class TransferDataService {
|
|||||||
@Resource
|
@Resource
|
||||||
@Qualifier("attendanceAsyncPool") // 对应之前 AsyncConfig 中定义的线程池Bean名
|
@Qualifier("attendanceAsyncPool") // 对应之前 AsyncConfig 中定义的线程池Bean名
|
||||||
private Executor attendanceAsyncExecutor;
|
private Executor attendanceAsyncExecutor;
|
||||||
|
@Resource
|
||||||
|
private TransferDataMapper transferDataMapper;
|
||||||
|
|
||||||
|
|
||||||
// 两个候选基础URL
|
// 两个候选基础URL
|
||||||
@ -62,8 +77,10 @@ public class TransferDataService {
|
|||||||
"http://xny.yj-3d.com:7464",
|
"http://xny.yj-3d.com:7464",
|
||||||
"http://xny.yj-3d.com:7363"
|
"http://xny.yj-3d.com:7363"
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 异步处理照片并批量保存(修复线程安全 + 性能优化)
|
* 异步处理照片并批量保存(修复线程安全 + 性能优化)
|
||||||
|
*
|
||||||
* @param batchList 原始批量数据(浅拷贝)
|
* @param batchList 原始批量数据(浅拷贝)
|
||||||
*/
|
*/
|
||||||
// 2. 修复后的照片批量异步处理逻辑
|
// 2. 修复后的照片批量异步处理逻辑
|
||||||
@ -164,7 +181,7 @@ public class TransferDataService {
|
|||||||
try (InputStream inputStream = httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream()).body()) {
|
try (InputStream inputStream = httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream()).body()) {
|
||||||
// 从响应头获取真实Content-Type(比文件名解析更准确)
|
// 从响应头获取真实Content-Type(比文件名解析更准确)
|
||||||
HttpResponse<?> response = httpClient.send(request, HttpResponse.BodyHandlers.discarding());
|
HttpResponse<?> response = httpClient.send(request, HttpResponse.BodyHandlers.discarding());
|
||||||
if(response.statusCode() == 200){
|
if (response.statusCode() == 200) {
|
||||||
contentType = response.headers().firstValue("Content-Type").orElse(contentType);
|
contentType = response.headers().firstValue("Content-Type").orElse(contentType);
|
||||||
long contentLength = response.headers().firstValueAsLong("Content-Length").orElse(-1);
|
long contentLength = response.headers().firstValueAsLong("Content-Length").orElse(-1);
|
||||||
|
|
||||||
@ -197,21 +214,21 @@ public class TransferDataService {
|
|||||||
//获取到施工人员信息,然后处理图片
|
//获取到施工人员信息,然后处理图片
|
||||||
List<SubConstructionUser> list1 = constructionUserService.list();
|
List<SubConstructionUser> list1 = constructionUserService.list();
|
||||||
for (SubConstructionUser subConstructionUser : list1) {
|
for (SubConstructionUser subConstructionUser : list1) {
|
||||||
if(subConstructionUser.getFacePic()!=null){
|
if (subConstructionUser.getFacePic() != null) {
|
||||||
Long l = handleSinglePhoto1(subConstructionUser.getFacePic());
|
Long l = handleSinglePhoto1(subConstructionUser.getFacePic());
|
||||||
subConstructionUser.setFacePic(l==null?"":l.toString());
|
subConstructionUser.setFacePic(l == null ? "" : l.toString());
|
||||||
}
|
}
|
||||||
if(subConstructionUser.getSfzFrontPic()!=null){
|
if (subConstructionUser.getSfzFrontPic() != null) {
|
||||||
Long l = handleSinglePhoto1(subConstructionUser.getSfzFrontPic());
|
Long l = handleSinglePhoto1(subConstructionUser.getSfzFrontPic());
|
||||||
subConstructionUser.setSfzFrontPic(l==null?"":l.toString());
|
subConstructionUser.setSfzFrontPic(l == null ? "" : l.toString());
|
||||||
}
|
}
|
||||||
if(subConstructionUser.getSfzBackPic()!=null){
|
if (subConstructionUser.getSfzBackPic() != null) {
|
||||||
Long l = handleSinglePhoto1(subConstructionUser.getSfzBackPic());
|
Long l = handleSinglePhoto1(subConstructionUser.getSfzBackPic());
|
||||||
subConstructionUser.setSfzBackPic(l==null?"":l.toString());
|
subConstructionUser.setSfzBackPic(l == null ? "" : l.toString());
|
||||||
}
|
}
|
||||||
if(subConstructionUser.getYhkPic()!=null){
|
if (subConstructionUser.getYhkPic() != null) {
|
||||||
Long l = handleSinglePhoto1(subConstructionUser.getYhkPic());
|
Long l = handleSinglePhoto1(subConstructionUser.getYhkPic());
|
||||||
subConstructionUser.setYhkPic(l==null?"":l.toString());
|
subConstructionUser.setYhkPic(l == null ? "" : l.toString());
|
||||||
}
|
}
|
||||||
objects.add(subConstructionUser);
|
objects.add(subConstructionUser);
|
||||||
}
|
}
|
||||||
@ -230,8 +247,8 @@ public class TransferDataService {
|
|||||||
String[] split = path.split(",");
|
String[] split = path.split(",");
|
||||||
for (String s : split) {
|
for (String s : split) {
|
||||||
Long l = handleSinglePhoto1(s);
|
Long l = handleSinglePhoto1(s);
|
||||||
if(l!=null){
|
if (l != null) {
|
||||||
subConstructionUser.setPath(subConstructionUser.getPath().replace(s,l.toString()));
|
subConstructionUser.setPath(subConstructionUser.getPath().replace(s, l.toString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -243,7 +260,6 @@ public class TransferDataService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private Long handleSinglePhoto1(String facePicRelativePath) {
|
private Long handleSinglePhoto1(String facePicRelativePath) {
|
||||||
if (facePicRelativePath == null || facePicRelativePath.isEmpty()) {
|
if (facePicRelativePath == null || facePicRelativePath.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
@ -272,7 +288,7 @@ public class TransferDataService {
|
|||||||
try (InputStream inputStream = httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream()).body()) {
|
try (InputStream inputStream = httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream()).body()) {
|
||||||
// 从响应头获取真实Content-Type(比文件名解析更准确)
|
// 从响应头获取真实Content-Type(比文件名解析更准确)
|
||||||
HttpResponse<?> response = httpClient.send(request, HttpResponse.BodyHandlers.discarding());
|
HttpResponse<?> response = httpClient.send(request, HttpResponse.BodyHandlers.discarding());
|
||||||
if(response.statusCode() == 200){
|
if (response.statusCode() == 200) {
|
||||||
contentType = response.headers().firstValue("Content-Type").orElse(contentType);
|
contentType = response.headers().firstValue("Content-Type").orElse(contentType);
|
||||||
long contentLength = response.headers().firstValueAsLong("Content-Length").orElse(-1);
|
long contentLength = response.headers().firstValueAsLong("Content-Length").orElse(-1);
|
||||||
|
|
||||||
@ -301,13 +317,127 @@ public class TransferDataService {
|
|||||||
for (SubConstructionUser constructionUser : list) {
|
for (SubConstructionUser constructionUser : list) {
|
||||||
String facePicRelativePath = constructionUser.getSpecialWorkPic();
|
String facePicRelativePath = constructionUser.getSpecialWorkPic();
|
||||||
Long l = handleSinglePhoto1(facePicRelativePath);
|
Long l = handleSinglePhoto1(facePicRelativePath);
|
||||||
constructionUser.setSpecialWorkPic(l==null?"":l.toString());
|
constructionUser.setSpecialWorkPic(l == null ? "" : l.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
constructionUserService.updateBatchById(list);
|
constructionUserService.updateBatchById(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void handleFile() {
|
||||||
|
List<ConstructionUserNew> constructionUserList = transferDataMapper.getConstructionUserList();
|
||||||
|
log.info("开始处理特殊图片,一共{}条数据", constructionUserList.size());
|
||||||
|
List<Long> list1 = constructionUserList.stream().map(ConstructionUserNew::getGoId).toList();
|
||||||
|
//zmkgprod
|
||||||
|
List<OldFile> oldFileList1 = transferDataMapper.getOldFileList1(list1);
|
||||||
|
// 将 oldFileList1 转换为 Map<Long, Map<String, String>> 结构
|
||||||
|
Map<Long, Map<String, String>> resultMap1 = oldFileList1.stream()
|
||||||
|
.collect(Collectors.groupingBy(
|
||||||
|
OldFile::getUserId,
|
||||||
|
Collectors.toMap(
|
||||||
|
OldFile::getUserImgType,
|
||||||
|
OldFile::getPath,
|
||||||
|
(existing, replacement) -> replacement // 如果有重复的 key,保留后面的值
|
||||||
|
)
|
||||||
|
));
|
||||||
|
//zmkgc
|
||||||
|
List<OldFile> oldFileList = transferDataMapper.getOldFileList(list1);
|
||||||
|
|
||||||
|
// 将 oldFileList1 转换为 Map<Long, Map<String, String>> 结构
|
||||||
|
Map<Long, Map<String, String>> resultMap = oldFileList.stream()
|
||||||
|
.collect(Collectors.groupingBy(
|
||||||
|
OldFile::getUserId,
|
||||||
|
Collectors.toMap(
|
||||||
|
OldFile::getUserImgType,
|
||||||
|
OldFile::getPath,
|
||||||
|
(existing, replacement) -> replacement // 如果有重复的 key,保留后面的值
|
||||||
|
)
|
||||||
|
));
|
||||||
|
//本地文件
|
||||||
|
|
||||||
|
//身份证(正面),0
|
||||||
|
//身份证(反面),1
|
||||||
|
//银行卡,2
|
||||||
|
//特种作业证,3
|
||||||
|
//合同,4
|
||||||
|
//体检报告,5
|
||||||
|
//安全责任书,6
|
||||||
|
//岗位危险告知书,7
|
||||||
|
//安全技术交底,8
|
||||||
|
//三级安全教育,10
|
||||||
|
|
||||||
|
for (ConstructionUserNew constructionUser : constructionUserList) {
|
||||||
|
Long goId = constructionUser.getGoId();
|
||||||
|
Map<String, String> map = resultMap1.get(goId);
|
||||||
|
if (map != null) {
|
||||||
|
handle0to3(map, constructionUser);
|
||||||
|
handle4to10(map,goId);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, String> map1 = resultMap.get(goId);
|
||||||
|
if (map1 != null) {
|
||||||
|
handle0to3(map1, constructionUser);
|
||||||
|
handle4to10(map1,goId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handle0to3(Map<String, String> map, ConstructionUserNew constructionUser) {
|
||||||
|
String s = map.get("0");
|
||||||
|
if (s != null) {
|
||||||
|
Long l = handleSinglePhoto1(s);
|
||||||
|
if (l != null) {
|
||||||
|
constructionUser.setSfzFrontPic(l.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String s1 = map.get("1");
|
||||||
|
if (s1 != null) {
|
||||||
|
Long l = handleSinglePhoto1(s1);
|
||||||
|
if (l != null) {
|
||||||
|
constructionUser.setSfzBackPic(l.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String s2 = map.get("2");
|
||||||
|
if (s2 != null) {
|
||||||
|
Long l = handleSinglePhoto1(s2);
|
||||||
|
if (l != null) {
|
||||||
|
constructionUser.setYhkPic(l.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String s3 = map.get("3");
|
||||||
|
if (s3 != null) {
|
||||||
|
Long l = handleSinglePhoto1(s3);
|
||||||
|
if (l != null) {
|
||||||
|
constructionUser.setSpecialWorkPic(l.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SubConstructionUser constructionUser1 = BeanUtil.copyProperties(constructionUser, SubConstructionUser.class);
|
||||||
|
constructionUserService.updateById(constructionUser1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handle4to10(Map<String, String> map,Long goId){
|
||||||
|
List<SubConstructionUserFile> list1 = constructionUserFileService.list(Wrappers.<SubConstructionUserFile>lambdaQuery()
|
||||||
|
.eq(SubConstructionUserFile::getUserId, goId)
|
||||||
|
);
|
||||||
|
for (SubConstructionUserFile subConstructionUserFile : list1) {
|
||||||
|
String s = map.get(subConstructionUserFile.getFileType());
|
||||||
|
if (s != null) {
|
||||||
|
String[] split = s.split(",");
|
||||||
|
List<Long> path = new ArrayList<>();
|
||||||
|
for (String s1 : split) {
|
||||||
|
Long l = handleSinglePhoto1(s1);
|
||||||
|
if (l != null) {
|
||||||
|
path.add(l);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (CollectionUtil.isNotEmpty(path)) {
|
||||||
|
subConstructionUserFile.setPath(path.stream().map(String::valueOf).collect(Collectors.joining(",")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
constructionUserFileService.updateBatchById(list1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user