Browse Source

临时解决异步情况下,主线程结束,子线程request header被清空的bug

master
wangxianzhang 4 years ago
parent
commit
8d4657f60e
  1. 7
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ThreadLocalConstant.java
  2. 32
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java
  3. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/GlobalFilter.java
  4. 89
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  5. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java
  6. 102
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java

7
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ThreadLocalConstant.java

@ -1,5 +1,7 @@
package com.epmet.commons.tools.constant;
import java.util.Map;
/**
* ThreadLocal常亮
*/
@ -19,4 +21,9 @@ public class ThreadLocalConstant {
* 用于本次的获取请求参数
*/
public static final ThreadLocal<String> requestParam = new ThreadLocal();
/**
* 可被子线程继承的追加的request headers
*/
public static final InheritableThreadLocal<Map<String, String>> inheritableAdditionalHeaders = new InheritableThreadLocal<>();
}

32
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java

@ -1,5 +1,6 @@
package com.epmet.commons.tools.feign;
import com.epmet.commons.tools.constant.ThreadLocalConstant;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.web.context.request.RequestAttributes;
@ -8,17 +9,38 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
public class EpmetBaseRequestInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if (requestAttributes == null) {
return;
// 自定义追加的request header,可被子线程继承拷贝
Map<String, String> inheritableAdditionalHeaders = ThreadLocalConstant.inheritableAdditionalHeaders.get();
Map<String, String> requestHeaders = getHeadersFromRequest();
if (requestHeaders != null && requestHeaders.size() > 0) {
for (Map.Entry<String, String> kv : requestHeaders.entrySet()) {
template.header(kv.getKey(), kv.getValue());
}
}
if (inheritableAdditionalHeaders != null && inheritableAdditionalHeaders.size() > 0) {
for (Map.Entry<String, String> kv : inheritableAdditionalHeaders.entrySet()) {
template.header(kv.getKey(), kv.getValue());
}
}
}
/**
* 从header里面获取headers
*/
public HashMap<String, String> getHeadersFromRequest() {
HashMap<String, String> headers = new HashMap<>();
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) {
@ -27,9 +49,11 @@ public class EpmetBaseRequestInterceptor implements RequestInterceptor {
Enumeration<String> values = request.getHeaders(name);
while (values.hasMoreElements()) {
String value = values.nextElement();
template.header(name, value);
headers.put(name, value);
}
}
}
return headers;
}
}

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/GlobalFilter.java

@ -25,6 +25,7 @@ public class GlobalFilter implements Filter {
ThreadLocalConstant.sqlFilter.remove();
ThreadLocalConstant.requirePermissionTl.remove();
ThreadLocalConstant.requestParam.remove();
ThreadLocalConstant.inheritableAdditionalHeaders.remove();
}
}
}

89
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java

@ -27,6 +27,7 @@ import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.constant.ThreadLocalConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.dto.result.OptionDataResultDTO;
import com.epmet.commons.tools.enums.IcFormCodeEnum;
@ -34,6 +35,7 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.EpmetBaseRequestInterceptor;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.RedisKeys;
@ -58,6 +60,7 @@ import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.feign.OssFeignClient;
import com.epmet.service.IcResiUserImportService;
import com.epmet.service.IcResiUserService;
import feign.RequestInterceptor;
import jodd.io.FileUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
@ -71,7 +74,6 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest;
@ -132,7 +134,7 @@ public class IcResiUserController implements ResultDataResolver {
@Autowired
private LoginUserUtil loginUserUtil;
@Autowired
private ExecutorService executorService;
private RequestInterceptor requestInterceptor;
/**
* 模板枚举
@ -358,6 +360,7 @@ public class IcResiUserController implements ResultDataResolver {
//表数据写入
//通过枚举获取相关表并按照sheetNo排序
List<IcResiUserTableEnum> resiTableList = Arrays.stream(IcResiUserTableEnum.values())
.filter((v) -> v.getSheetNo() != null)
.sorted(Comparator.comparing(IcResiUserTableEnum::getSheetNo))
.collect(Collectors.toList());
List<Map<String, Object>> resiResultList = null;
@ -464,27 +467,14 @@ public class IcResiUserController implements ResultDataResolver {
throw new RenException("上传失败");
}
HttpServletRequest request = ((StandardMultipartHttpServletRequest)multipartRequest).getRequest();
HashMap<String, String> headers = ((EpmetBaseRequestInterceptor) requestInterceptor).getHeadersFromRequest();
HashMap<String, String> headers = getHeadersFromRequest(request);
ThreadLocalConstant.inheritableAdditionalHeaders.set(headers);
// 三.异步执行导入
executorService.execute(() -> {
new Thread(() -> {
try {
// 睡眠2秒钟,等待主线程先结束,主线程会清空request对象的headers,等他执行了清空之后,我们这边再手动setHeader进去
Thread.sleep(3000l);
log.info("【上传居民信息】子线程请求头:" + headers);
} catch (InterruptedException e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【上传居民信息】失败,睡眠2s发生中断:{}", errorMsg);
return;
}
try {
setHeaders2Request(request, headers);
List<FormItemResult> formItemList = icResiUserService.listFormItems(customerId,IcFormCodeEnum.RESI_BASE_INFO.getCode());
icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, importTempFileSavePath.toString(), response, IC_RESI_UPLOAD_DIR);
} catch (Throwable e) {
@ -502,56 +492,29 @@ public class IcResiUserController implements ResultDataResolver {
log.error("【导入居民信息失败】清理上传的文件失败:{}", ExceptionUtils.getErrorStackTrace(e));
}
// 清理request对象
RequestContextHolder.resetRequestAttributes();
// 清理tl对象
ThreadLocalConstant.inheritableAdditionalHeaders.remove();
}
});
}).start();
return new Result();
}
private HashMap<String, String> getHeadersFromRequest(HttpServletRequest request) {
HashMap<String, String> headers = new HashMap<>();
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) {
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
Enumeration<String> values = request.getHeaders(name);
while (values.hasMoreElements()) {
String value = values.nextElement();
headers.put(name, value);
}
}
}
return headers;
}
private void setHeaders2Request(HttpServletRequest request, HashMap<String, String> headers) {
for (Map.Entry<String, String> kv : headers.entrySet()) {
setParam2Header(request, kv.getKey(), kv.getValue());
}
}
private void setParam2Header(HttpServletRequest requestFacade, String key, String value){
Class<? extends HttpServletRequest> requestFacadeClass = requestFacade.getClass();
try {
Field requestField = requestFacadeClass.getDeclaredField("request");
requestField.setAccessible(true);
Object requestObject = requestField.get(requestFacade);
Field coyoteRequestField = requestObject.getClass().getDeclaredField("coyoteRequest");
coyoteRequestField.setAccessible(true);
Object coyoteRequestObject = coyoteRequestField.get(requestObject);
Field headers = coyoteRequestObject.getClass().getDeclaredField("headers");
headers.setAccessible(true);
MimeHeaders o2 = (MimeHeaders)headers.get(coyoteRequestObject);
o2.addValue(key).setString(value);
} catch (Exception e) {
e.printStackTrace();
log.error("为子线程设置请求头出错");
}
}
// private HashMap<String, String> getHeadersFromRequest(HttpServletRequest request) {
// HashMap<String, String> headers = new HashMap<>();
// Enumeration<String> headerNames = request.getHeaderNames();
// if (headerNames != null) {
// while (headerNames.hasMoreElements()) {
// String name = headerNames.nextElement();
// Enumeration<String> values = request.getHeaders(name);
// while (values.hasMoreElements()) {
// String value = values.nextElement();
// headers.put(name, value);
// }
// }
// }
// return headers;
// }
@PostMapping("test")
public Result<List<Map<String, Object>>> test(@LoginUser TokenDto tokenDto, @RequestBody DynamicQueryFormDTO formDTO) {

2
epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java

@ -89,7 +89,7 @@ public enum IcResiUserTableEnum {
return tableComment;
}
public int getSheetNo() {
public Integer getSheetNo() {
return sheetNo;
}

102
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java

@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.epmet.bean.ResiImportCategoryData;
import com.epmet.bean.ResiImportResiCategoryChangedCache;
import com.epmet.bean.ResiImportChangedData;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.constant.ThreadLocalConstant;
@ -23,7 +24,6 @@ import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constants.ImportTaskConstants;
@ -103,10 +103,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
*/
Cache<String, Map<String, Map<String, String>>> itemIdAndOptionsCache = CacheBuilder.newBuilder().maximumSize(500).build();
@Autowired
private LoginUserUtil loginUserUtil;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@ -217,22 +213,11 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
@Override
public void importIcResiInfoFromExcel(String importTaskId, List<FormItemResult> formItemList, String excelPathName, HttpServletResponse response, Path importTempPath) {
String loginUserId = loginUserUtil.getLoginUserId();
String loginUserApp = loginUserUtil.getLoginUserApp();
String loginUserClient = loginUserUtil.getLoginUserClient();
String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId();
log.info("importIcResiInfoFromExcel:: userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId);
String app = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.APP);
String client = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CLIENT);
String loginUserId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase());
// LoginUserDetailsFormDTO userForm = new LoginUserDetailsFormDTO();
// userForm.setApp(loginUserApp);
// userForm.setClient(loginUserClient);
// userForm.setUserId(loginUserId);
String currUserAgencyId = userService.getLoginUserDetails(
loginUserApp,
loginUserClient,
loginUserId).getAgencyId();
String currUserAgencyId = userService.getLoginUserDetails(app, client, loginUserId).getAgencyId();
log.info("importIcResiInfoFromExcel:: currUserAgencyId:{}", currUserAgencyId);
@ -331,7 +316,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
*/
private void initImportThreadLocal(String customerId) {
// 生成importTag,用于标记唯一一次导入操作,导入完成之后,用来删除redis里面临时的key
String operatorId = loginUserUtil.getLoginUserId();
String operatorId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase());
String importTag = operatorId + System.currentTimeMillis();
// 错误信息
@ -371,10 +356,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
private void importIcResiBaseInfoFromExcel(List<FormItemResult> formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currUserAgencyPids, String currentUserId,
String tableName, String customerId) {
String loginUserId = loginUserUtil.getLoginUserId();
String loginUserApp = loginUserUtil.getLoginUserApp();
String loginUserClient = loginUserUtil.getLoginUserClient();
String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId();
String loginUserApp = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.APP);
String loginUserClient = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CLIENT);
String loginUserId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase());
String loginUserCustomerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CUSTOMER_ID.toLowerCase());
log.info("importIcResiBaseInfoFromExcel:: userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId);
@ -430,10 +415,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
String currUserAgencyId, Map<Integer, String> checkBoxOptionColumnIdxAndLabel,
String currUserAgencyPids, String currentUserId, String tableName) {
String loginUserId = loginUserUtil.getLoginUserId();
String loginUserApp = loginUserUtil.getLoginUserApp();
String loginUserClient = loginUserUtil.getLoginUserClient();
String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId();
String loginUserApp = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.APP);
String loginUserClient = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CLIENT);
String loginUserId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase());
String loginUserCustomerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase());
log.info("persistIcResiBaseInfo:: userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId);
@ -562,10 +547,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
LinkedHashMap<String, String> columnAndValues = new LinkedHashMap<>();
String loginUserId = loginUserUtil.getLoginUserId();
String loginUserApp = loginUserUtil.getLoginUserApp();
String loginUserClient = loginUserUtil.getLoginUserClient();
String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId();
String loginUserApp = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.APP);
String loginUserClient = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CLIENT);
String loginUserId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase());
String loginUserCustomerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CUSTOMER_ID.toLowerCase());
log.info("persistIcResiExtraInfo:: userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId);
@ -1297,7 +1282,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
Date now = new Date();
CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(loginUserUtil.getLoginUserCustomerId(), loginUserUtil.getLoginUserId());
String customerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CUSTOMER_ID.toLowerCase());
String userId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase());
CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(customerId, userId);
for (Map.Entry<String, ResiImportChangedData> entry : categoryChangedResis.entrySet()) {
String resiId = entry.getKey();
@ -1326,7 +1314,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
}
// 生成changeRecord并存入
IcUserChangeRecordEntity changeRecord = fillChangeRecord(loginUserUtil.getLoginUserCustomerId(), resiId, resiInfoMap.get("NAME"), null, loginUserUtil.getLoginUserId(),
IcUserChangeRecordEntity changeRecord = fillChangeRecord(customerId, resiId, resiInfoMap.get("NAME"), null, userId,
operator.getRealName() , descBefore, descAfter, "category", "类别", "", now);
icUserChangeRecordDao.insert(changeRecord);
@ -1346,7 +1334,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
String unitId = newData.getUnitId();
String homeId = newData.getHomeId();
IcUserChangeDetailedEntity newDetail = fillChangeDetail(loginUserUtil.getLoginUserCustomerId(), resiId, changeRecord.getId(), agencyId,
IcUserChangeDetailedEntity newDetail = fillChangeDetail(customerId, resiId, changeRecord.getId(), agencyId,
gridId, villageId, buildId, unitId,
homeId, "category", "类别", columnEntry.getKey(), 1, resiInfoMap.get("PIDS"));
@ -1391,7 +1379,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
Set<String> newResiKeys = redisUtils.keys(RedisKeys.icResiImportTypeKey(newlyOrChangedResi.get().getImportTag(), "add").concat("*"));
CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(loginUserUtil.getLoginUserCustomerId(), loginUserUtil.getLoginUserId());
String customerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CUSTOMER_ID.toLowerCase());
String userId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase());
CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(customerId, userId);
for (String resiKey : newResiKeys) {
Map<String, Object> newResiInfoMap = redisUtils.hGetAll(resiKey);
@ -1400,14 +1391,14 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
IcResiUserEntity resiInfo = icResiUserDao.selectById(newResiInfoObj.getResiId());
// 插入changeRecord
IcUserChangeRecordEntity changeRecord = fillChangeRecord(loginUserUtil.getLoginUserCustomerId(), newResiInfoObj.getResiId(), resiInfo.getName(), null,
loginUserUtil.getLoginUserId(), operator.getRealName(), "-", "-",
IcUserChangeRecordEntity changeRecord = fillChangeRecord(customerId, newResiInfoObj.getResiId(), resiInfo.getName(), null,
userId, operator.getRealName(), "-", "-",
"add", "新增", "", now);
icUserChangeRecordDao.insert(changeRecord);
// 插入changeDetail
for (Map.Entry<String, String> mainTableColumn : newResiInfoObj.getCategories().entrySet()) {
IcUserChangeDetailedEntity changedetail = fillChangeDetail(loginUserUtil.getLoginUserCustomerId(), newResiInfoObj.getResiId(), changeRecord.getId(), newResiInfoObj.getAgencyId(),
IcUserChangeDetailedEntity changedetail = fillChangeDetail(customerId, newResiInfoObj.getResiId(), changeRecord.getId(), newResiInfoObj.getAgencyId(),
newResiInfoObj.getGridId(), newResiInfoObj.getVillageId(), newResiInfoObj.getBuildId(), newResiInfoObj.getUnitId(),
newResiInfoObj.getHomeId(), "add", "新增", mainTableColumn.getKey(), 1, resiInfo.getPids());
@ -1426,8 +1417,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
*/
public void saveTransferedResiRecord(Map<String, ResiImportChangedData> transferedResis) {
Date now = new Date();
String customerId = loginUserUtil.getLoginUserCustomerId();
CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(customerId, loginUserUtil.getLoginUserId());
String loginUserId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase());
String loginUserCustomerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CUSTOMER_ID.toLowerCase());
CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(loginUserCustomerId, loginUserId);
for (Map.Entry<String, ResiImportChangedData> resi : transferedResis.entrySet()) {
@ -1460,7 +1452,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
String newHomeId = newData.getHomeId();
IcResiUserOrgMsgFormDTO oldOrgFormDTO = new IcResiUserOrgMsgFormDTO();
oldOrgFormDTO.setCustomerId(customerId);
oldOrgFormDTO.setCustomerId(loginUserCustomerId);
oldOrgFormDTO.setAgencyId(oldAgencyId);
oldOrgFormDTO.setGridId(oldGridId);
oldOrgFormDTO.setNeighborHoodId(oldvillageId);
@ -1470,7 +1462,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
Result<IcResiUserOrgMsgResultDTO> oldOrgInfoRst = govOrgOpenFeignClient.icResiUserOrgMsg(oldOrgFormDTO);
IcResiUserOrgMsgFormDTO newOrgInfo = new IcResiUserOrgMsgFormDTO();
newOrgInfo.setCustomerId(customerId);
newOrgInfo.setCustomerId(loginUserCustomerId);
newOrgInfo.setAgencyId(newAgencyId);
newOrgInfo.setGridId(newGridId);
newOrgInfo.setNeighborHoodId(newvillageId);
@ -1540,13 +1532,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
}
// 保存 transferRecord
IcUserTransferRecordEntity transferRecord = fillTransferRecord(resiId, resiName, operator, customerId,
oldAgencyId, oldGridId, oldvillageId, oldBuildId, oldUnitId, oldHomeId, customerId,
IcUserTransferRecordEntity transferRecord = fillTransferRecord(resiId, resiName, operator, loginUserCustomerId,
oldAgencyId, oldGridId, oldvillageId, oldBuildId, oldUnitId, oldHomeId, loginUserCustomerId,
newAgencyId, newGridId, newvillageId, newBuildId, newUnitId, newHomeId, oldOrg, newOrg);
icUserTransferRecordDao.insert(transferRecord);
// 保存 调动changeRecord
IcUserChangeRecordEntity transferChangeRecord = fillChangeRecord(customerId, resiId, resiName, transferRecord.getId(), operator.getStaffId(),
IcUserChangeRecordEntity transferChangeRecord = fillChangeRecord(loginUserCustomerId, resiId, resiName, transferRecord.getId(), operator.getStaffId(),
operator.getRealName(), sbBefore.toString(), sbAfter.toString(), "transfer", "调动", "", now);
icUserChangeRecordDao.insert(transferChangeRecord);
@ -1580,7 +1572,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
String categoryDescAfter = sbAfter.toString();
if (!StringUtils.isAllBlank(categoryDescBefore, categoryDescAfter)) {
IcUserChangeRecordEntity categoryChangeRecord = fillChangeRecord(customerId, resiId, resiName, transferRecord.getId(), operator.getStaffId(),
IcUserChangeRecordEntity categoryChangeRecord = fillChangeRecord(loginUserCustomerId, resiId, resiName, transferRecord.getId(), operator.getStaffId(),
operator.getRealName(), categoryDescBefore, categoryDescAfter , "category", "类别", "", now);
icUserChangeRecordDao.insert(categoryChangeRecord);
}
@ -1593,7 +1585,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
// 之前是这个类型,那这个类型需要-1
String oldValue = oldCategories.getValue();
if ("1".equals(oldValue)) {
IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, transferChangeRecord.getId(), oldAgencyId,
IcUserChangeDetailedEntity changeDetail = fillChangeDetail(loginUserCustomerId, resiId, transferChangeRecord.getId(), oldAgencyId,
oldGridId, oldvillageId, oldBuildId, oldUnitId,
oldHomeId, transferChangeRecord.getType(), transferChangeRecord.getTypeName(), key, -1, pids);
icUserChangeDetailedDao.insert(changeDetail);
@ -1607,7 +1599,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
// 现在是这个类型,这个类型要+1
if ("1".equals(newValue)) {
IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, transferChangeRecord.getId(), newAgencyId,
IcUserChangeDetailedEntity changeDetail = fillChangeDetail(loginUserCustomerId, resiId, transferChangeRecord.getId(), newAgencyId,
newGridId, newvillageId, newBuildId, newUnitId,
newHomeId, transferChangeRecord.getType(), transferChangeRecord.getTypeName(), key, 1, pids);
icUserChangeDetailedDao.insert(changeDetail);
@ -1840,11 +1832,11 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
}
public void printLog(String positionPrefix) {
String loginUserId = loginUserUtil.getLoginUserId();
String loginUserApp = loginUserUtil.getLoginUserApp();
String loginUserClient = loginUserUtil.getLoginUserClient();
String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId();
String app = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.APP);
String client = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CLIENT);
String loginUserId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase());
String loginUserCustomerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CUSTOMER_ID.toLowerCase());
log.info("{}:: userId:{}, app:{}, client:{}, customerId:{}", positionPrefix, loginUserId, loginUserApp, loginUserClient, loginUserCustomerId);
log.info("{}:: userId:{}, app:{}, client:{}, customerId:{}", positionPrefix, loginUserId, app, client, loginUserCustomerId);
}
}

Loading…
Cancel
Save