|
@@ -0,0 +1,101 @@
|
|
|
+package com.slibra.web.controller.listener;
|
|
|
+
|
|
|
+import com.alibaba.excel.context.AnalysisContext;
|
|
|
+import com.alibaba.excel.event.AnalysisEventListener;
|
|
|
+import com.alibaba.fastjson2.JSON;
|
|
|
+import com.slibra.business.domain.TImportFail;
|
|
|
+import com.slibra.business.domain.TUserInfo;
|
|
|
+import com.slibra.business.mapper.TImportFailMapper;
|
|
|
+import com.slibra.business.mapper.TUserInfoMapper;
|
|
|
+import com.slibra.business.res.UpdateUserExcelInfo;
|
|
|
+import com.slibra.business.res.UserExcelInfo;
|
|
|
+import com.slibra.common.utils.DateUtils;
|
|
|
+import com.slibra.common.utils.StringUtils;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.ibatis.session.SqlSession;
|
|
|
+import org.apache.tomcat.Jar;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Component
|
|
|
+@Slf4j
|
|
|
+public class UpdateUserDataListener extends AnalysisEventListener<UpdateUserExcelInfo> {
|
|
|
+
|
|
|
+ SqlSession sqlSession;
|
|
|
+ TUserInfoMapper tUserInfoMapper;
|
|
|
+ TImportFailMapper tImportFailMapper;
|
|
|
+
|
|
|
+ //成功数量
|
|
|
+ private int successNum = 0;
|
|
|
+
|
|
|
+ //失败数量
|
|
|
+ private int failNum = 0;
|
|
|
+
|
|
|
+ //失败数据列表
|
|
|
+ private List<UpdateUserExcelInfo> failList = new ArrayList<>();
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void invoke(UpdateUserExcelInfo userExcelInfo, AnalysisContext context) {
|
|
|
+ //查询 如果2个有一个为空的,就标记为错误
|
|
|
+ String userNo = userExcelInfo.getUserNo();
|
|
|
+ String phone = userExcelInfo.getPhone();
|
|
|
+ if(StringUtils.isBlank(userNo) || StringUtils.isBlank(phone)){
|
|
|
+ log.info("存在为空的数据,无法更新");
|
|
|
+ failNum ++;
|
|
|
+ failList.add(userExcelInfo);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //都存在
|
|
|
+ //通过编号查询用户数据,如果存在就更新并记录成功数量,不存在标记错误。
|
|
|
+ List<TUserInfo> tUserInfos = this.tUserInfoMapper.selectTUserInfoList(TUserInfo.builder().userNo(userNo).build());
|
|
|
+ if(CollectionUtils.isEmpty(tUserInfos)){
|
|
|
+ log.info("通过用户编号未查询到用户明细");
|
|
|
+ failNum ++;
|
|
|
+ failList.add(userExcelInfo);
|
|
|
+ }else {
|
|
|
+ TUserInfo tUserInfo = tUserInfos.get(0);
|
|
|
+ tUserInfo.setPhone(phone);
|
|
|
+ this.tUserInfoMapper.updateTUserInfo(tUserInfo);
|
|
|
+ successNum++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void doAfterAllAnalysed(AnalysisContext context) {
|
|
|
+ // 所有数据读取完毕后的处理逻辑
|
|
|
+ log.info("所有数据读取完毕");
|
|
|
+ Date nowDate = DateUtils.getNowDate();
|
|
|
+
|
|
|
+ //记录失败数据情况
|
|
|
+ TImportFail tImportFail = new TImportFail();
|
|
|
+ HashMap<String, Object> map = new HashMap<>();
|
|
|
+ map.put("time", DateUtils.getTime());
|
|
|
+ map.put("failNum", failNum);
|
|
|
+ map.put("successNum", successNum);
|
|
|
+ map.put("failList", failList);
|
|
|
+ tImportFail.setContent(JSON.toJSONString(map));
|
|
|
+ tImportFail.setCreateTime(nowDate);
|
|
|
+ tImportFail.setCreateBy("system");
|
|
|
+ this.tImportFailMapper.insertTImportFail(tImportFail);
|
|
|
+ sqlSession.commit();
|
|
|
+ sqlSession.close();
|
|
|
+ }
|
|
|
+
|
|
|
+ public UpdateUserDataListener() {
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public UpdateUserDataListener(SqlSession sqlSession, TUserInfoMapper tUserInfoMapper, TImportFailMapper tImportFailMapper) {
|
|
|
+ this.sqlSession = sqlSession;
|
|
|
+ this.tUserInfoMapper = tUserInfoMapper;
|
|
|
+ this.tImportFailMapper = tImportFailMapper;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|