From 17efddc6a667670dca682bf36b51a43e99615e6d Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期三, 16 十月 2024 15:59:38 +0800 Subject: [PATCH] 代码初始化 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/TrainTimeServiceImpl.java | 164 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 154 insertions(+), 10 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 0a7c27b..ee00da0 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,15 +1,29 @@ 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.Utils; +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; -import com.doumee.dao.business.model.Visits; import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.TrainTimeService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -19,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; /** @@ -32,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 @@ -109,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); } @@ -128,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::getCompanyId) + .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.insert(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