From 8c79ff2c695254275669390dc4353593b42b7475 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 20 五月 2024 11:16:48 +0800
Subject: [PATCH] 最新版本

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/TrainTimeServiceImpl.java |  162 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 154 insertions(+), 8 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/TrainTimeServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/TrainTimeServiceImpl.java
index a23d069..c44988f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/TrainTimeServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/TrainTimeServiceImpl.java
@@ -1,10 +1,26 @@
 package com.doumee.service.business.impl;
 
-import com.baomidou.mybatisplus.core.toolkit.Constants;
+import cn.hutool.core.util.IdcardUtil;
+import cn.hutool.core.util.PhoneUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.annotation.excel.ExcelImporter;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DESUtil;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.admin.request.MemberImport;
+import com.doumee.dao.admin.request.TrainTimeImport;
+import com.doumee.dao.business.EmpowerMapper;
+import com.doumee.dao.business.MemberRoleMapper;
 import com.doumee.dao.business.TrainTimeMapper;
+import com.doumee.dao.business.join.MemberJoinMapper;
 import com.doumee.dao.business.join.TrainTimeJoinMapper;
+import com.doumee.dao.business.join.UserActionJoinMapper;
 import com.doumee.dao.business.model.Company;
 import com.doumee.dao.business.model.Member;
 import com.doumee.dao.business.model.TrainTime;
@@ -17,9 +33,14 @@
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
-
+import org.springframework.web.multipart.MultipartFile;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -30,12 +51,26 @@
 @Service
 public class TrainTimeServiceImpl implements TrainTimeService {
 
+    @Value("${debug_model}")
+    private Boolean isDebug;
     @Autowired
     private TrainTimeMapper trainTimeMapper;
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
     @Autowired
     private TrainTimeJoinMapper trainTimeJoinMapper;
+    @Autowired
+    private MemberJoinMapper memberJoinMapper;
+    @Autowired
+    private MemberRoleMapper memberRoleMapper;
+    @Autowired
+    private EmpowerMapper empowerMapper;
 
-
+    @Autowired
+    private UserActionJoinMapper userActionJoinMapper;
+    @Autowired
+    private RedisTemplate<String, Object> redisTemplate;
 
 
     @Override
@@ -107,16 +142,25 @@
         queryWrapper.selectAll(TrainTime.class);
         queryWrapper.selectAs(Member::getName,TrainTime::getName);
         queryWrapper.selectAs(Member::getPhone,TrainTime::getPhone);
-        queryWrapper.selectAs(Member::getIdcardNo,TrainTime::getIdcardNo);
-        queryWrapper.selectAs(Company::getName,TrainTime::getCompanyName);
-        queryWrapper.selectAs(SystemUser::getUsername,TrainTime::getCreateName);
-
+        queryWrapper.selectAs(Member::getFaceImg,TrainTime::getFaceImg);
+        queryWrapper.selectAs(Member::getIdcardDecode,TrainTime::getIdcardNo);
+        queryWrapper.selectAs(Company::getCompanyNamePath,TrainTime::getCompanyName);
+        queryWrapper.selectAs(SystemUser::getRealname,TrainTime::getCreateName);
         queryWrapper.eq(TrainTime::getIsdeleted, Constants.ZERO);
         queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getName()), ms->ms.like(Member::getPhone,pageWrap.getModel().getName())
                 .or().like(Member::getName,pageWrap.getModel().getName()));
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Company::getName,pageWrap.getModel().getCompanyName());
-        queryWrapper.orderByDesc(TrainTime::getCreateDate);
+        queryWrapper.orderByDesc(TrainTime::getId);
         IPage<TrainTime> result = trainTimeJoinMapper.selectJoinPage(page, TrainTime.class,queryWrapper);
+        if(result!=null && result.getRecords()!=null){
+            String path =  systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+            for(TrainTime model : result.getRecords()){
+                if(StringUtils.isNotBlank(model.getFaceImg())){
+                    model.setFaceImg(path +model.getFaceImg());
+                }
+            }
+        }
         return PageData.from(result);
     }
 
@@ -126,5 +170,107 @@
         return trainTimeMapper.selectCount(wrapper);
     }
 
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public String importBatch(MultipartFile file,  LoginUserInfo loginUserInfo){
+        Boolean importing = (Boolean) redisTemplate.opsForValue().get(com.doumee.core.utils.Constants.RedisKeys.IMPORTING_MEMBER);
+        if(importing!=null && importing){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝宸插瓨鍦ㄥ憳宸ュ鍏ヤ换鍔℃鍦ㄦ墽琛屼腑锛岃绋嶅悗鍐嶈瘯锛�");
+        }
+        redisTemplate.opsForValue().set(com.doumee.core.utils.Constants.RedisKeys.IMPORTING_MEMBER,true);
+        try {
+            ExcelImporter ie = null;
+            List<TrainTimeImport> dataList =null;
+            try {
+                ie = new ExcelImporter(file,1,0);
+                dataList = ie.getDataList(TrainTimeImport.class,null);
+            }  catch (Exception e) {
+                e.printStackTrace();
+            }
+            if(dataList == null || dataList.size() ==0){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁涓虹┖锛�");
+            }
+            //鏌ヨ鍏ㄩ儴鐩稿叧鏂逛汉鍛樹俊鎭�
+            List<Member> list =  memberJoinMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>()
+                    .selectAll(Member.class)
+                    .leftJoin(Company.class,Company::getId,Member::getId)
+                    .eq(Company::getType,Constants.ZERO)
+//                    .in(Company::getId,loginUserInfo.getCompanyIdList() )
+                    .eq(Member::getIsdeleted, com.doumee.core.utils.Constants.ZERO));
+            List<TrainTime> newList = new ArrayList<>();
+            for(int i=0;i<dataList.size();i++){
+                TrainTimeImport model = dataList.get(i);
+                if(StringUtils.isBlank(model.getName())
+                        &&StringUtils.isBlank(model.getIdcardNo())
+                        && StringUtils.isBlank(model.getStartTimeStr())
+                        && StringUtils.isBlank(model.getEndTimeStr()) ){
+                    continue;
+                }
+
+                model.setStartTime(DateUtil.getDateFromString2(model.getStartTimeStr()));
+                model.setEndTime(DateUtil.getDateFromString2(model.getEndTimeStr()));
+                TrainTime insert = checkModelParam(model,i,loginUserInfo,list);
+                newList.add(insert);
+                //鏇存柊鐢ㄦ埛涓嬪彂鐘舵�佷负寰呬笅鍙�
+                memberJoinMapper. update(null,new UpdateWrapper<Member>().lambda()
+                        .set(Member::getStartTime,null)
+                        .set(Member::getEndTime,null)
+                        .set(Member::getRoleId,null)
+                        .set(Member::getEditDate,insert.getEditDate())
+                        .set(Member::getEditor,insert.getCreator())
+                         .set(Member::getAuthStatus, Constants.ZERO)
+                        .eq(Member::getId,insert.getId()));
+                Member member = new Member();
+                member.setId(insert.getMemberId());
+                member.setEditor(insert.getCreator());
+                member.setEditDate(insert.getCreateDate());
+                MemberServiceImpl.saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.IMPORT_TRAIMETIME,userActionJoinMapper, JSONObject.toJSONString(insert));
+                //鍙栨秷鎺堟潈
+                MemberServiceImpl.cancelAllMemberEmpower(member,memberRoleMapper,empowerMapper);
+            }
+            if(newList == null || newList.size() ==0){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏈夋晥鏁版嵁涓虹┖锛�");
+            }
+            trainTimeMapper.insertBatchSomeColumn(newList);
+            return "瀵煎叆鎴愬姛";
+        }catch (BusinessException e){
+            throw e;
+        }catch (Exception e){
+            e.printStackTrace();
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"鍛樺伐淇℃伅瀵煎叆澶辫触锛岃绋嶅悗閲嶈瘯");
+        }finally {
+            redisTemplate.delete( Constants.RedisKeys.IMPORTING_MEMBER);
+        }
+    }
+
+    private TrainTime checkModelParam(TrainTimeImport model, int index, LoginUserInfo loginUserInfo, List<Member> list) {
+        if(StringUtils.isBlank(model.getName())
+                || StringUtils.isBlank(model.getIdcardNo())
+                || model.getStartTime()==null
+                ||  model.getEndTime()==null
+                ||  model.getEndTime().getTime() < model.getStartTime().getTime() ){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛屼汉鍛樹俊鎭笉瀹屾暣,鎴栬�呮湁鏁堟湡涓嶅悎娉曪紝璇锋鏌ヨ〃鏍煎唴瀹癸紒");
+        }
+        if (  !isDebug &&  !IdcardUtil.isValidCard(model.getIdcardNo())){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛岃韩浠借瘉鍙枫��"+model.getIdcardNo()+"銆戞牸寮忎笉姝g‘锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒");
+        }
+        Member m = MemberServiceImpl.findMemberFromListByIdcard( DESUtil.encrypt(Constants.EDS_PWD, model.getIdcardNo()),list);
+        if(m == null){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛岃韩浠借瘉鍙枫��"+model.getIdcardNo()+"銆戜笉瀛樺湪锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒");
+        }
+        TrainTime trainTime = new TrainTime();
+        trainTime.setIsdeleted(Constants.ZERO);
+        trainTime.setCreator(loginUserInfo.getId());
+        trainTime.setCreateDate(new Date());
+        trainTime.setEdirot(loginUserInfo.getId());
+        trainTime.setEditDate(trainTime.getCreateDate());
+        trainTime.setStartTime(model.getStartTime());
+        trainTime.setEndTime(model.getEndTime());
+        trainTime.setMemberId(m.getId());
+        trainTime.setImportStatus(Constants.ZERO);
+        trainTime.setImportInfo("鐢便��"+loginUserInfo.getRealname()+"銆戜簬"+DateUtil.getPlusTime2(trainTime.getCreateDate())+"瀵煎叆");
+        return trainTime;
+    }
+
 
 }

--
Gitblit v1.9.3