|  |  |  | 
|---|
|  |  |  | import cn.hutool.core.util.ReUtil; | 
|---|
|  |  |  | import com.doumee.core.model.PageData; | 
|---|
|  |  |  | import com.doumee.core.model.PageWrap; | 
|---|
|  |  |  | import com.doumee.core.utils.Constants; | 
|---|
|  |  |  | import com.doumee.core.utils.Utils; | 
|---|
|  |  |  | import com.doumee.dao.admin.request.RetentionQuery; | 
|---|
|  |  |  | import com.doumee.dao.business.RetentionMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.join.RetentionJoinMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.model.*; | 
|---|
|  |  |  | import com.doumee.dao.system.SystemDictDataMapper; | 
|---|
|  |  |  | import com.doumee.dao.system.model.SystemDictData; | 
|---|
|  |  |  | import com.doumee.dao.system.vo.RetentionVo; | 
|---|
|  |  |  | import com.doumee.service.business.RetentionService; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
|---|
|  |  |  | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.util.CollectionUtils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Objects; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | import java.util.function.Function; | 
|---|
|  |  |  | import java.util.stream.Collectors; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 在厂人员信息 表(滞留)Service实现 | 
|---|
|  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private RetentionJoinMapper retentionJoinMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SystemDictDataMapper systemDictDataMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public Integer create(Retention retention) { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void deleteById(Integer id) { | 
|---|
|  |  |  | retentionMapper.deleteById(id); | 
|---|
|  |  |  | retentionMapper.update(null,new UpdateWrapper<Retention>().lambda().set(Retention::getIsdeleted,Constants.ONE).eq(Retention::getId,id)); | 
|---|
|  |  |  | //        retentionMapper.deleteById(id); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public PageData<Retention> findTrainTimePage(PageWrap<Retention> pageWrap) { | 
|---|
|  |  |  | IPage<Retention> retentionIPage = getDataInfo(pageWrap); | 
|---|
|  |  |  | if(null != retentionIPage && retentionIPage.getRecords().size() > 0) { | 
|---|
|  |  |  | List<String> codes = Arrays.asList(Constants.FTP_RESOURCE_PATH,Constants.MEMBER_IMG); | 
|---|
|  |  |  | List<SystemDictData> list = systemDictDataMapper.list(codes); | 
|---|
|  |  |  | Map<String,SystemDictData> dataMap = list.stream().collect(Collectors.toMap(SystemDictData::getLabel, Function.identity())); | 
|---|
|  |  |  | retentionIPage.getRecords().stream().forEach(obj->{ | 
|---|
|  |  |  | if(StringUtils.isNotBlank(obj.getFaceImg())){ | 
|---|
|  |  |  | obj.setFaceImgFull(dataMap.get(Constants.FTP_RESOURCE_PATH).getCode() | 
|---|
|  |  |  | +dataMap.get(Constants.MEMBER_IMG).getCode() | 
|---|
|  |  |  | +obj.getFaceImg()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Objects.nonNull(obj.getType())){ | 
|---|
|  |  |  | if(!obj.getType().equals(Constants.memberType.visitor)){ | 
|---|
|  |  |  | obj.setExcelCompanyName(obj.getCompanyName()); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | obj.setExcelCompanyName(obj.getVisitCompanyName()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return PageData.from(retentionIPage); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<RetentionVo> findPageExcel(PageWrap<Retention> pageWrap) { | 
|---|
|  |  |  | IPage<Retention> retentionInfo = getDataInfo(pageWrap); | 
|---|
|  |  |  | List<RetentionVo> retentionVoList = new ArrayList<>(); | 
|---|
|  |  |  | if(null != retentionInfo && retentionInfo.getRecords().size() > 0) { | 
|---|
|  |  |  | for (Retention obj:retentionInfo.getRecords()) { | 
|---|
|  |  |  | RetentionVo vo = new RetentionVo(); | 
|---|
|  |  |  | vo.setCompanyName(obj.getCompanyName()); | 
|---|
|  |  |  | if(null != obj.getType()) { | 
|---|
|  |  |  | if(Constants.ZERO == obj.getType()){ | 
|---|
|  |  |  | vo.setTypeName(Constants.Status.LW_FK.getDes()); | 
|---|
|  |  |  | }else if(Constants.ONE == obj.getType()) { | 
|---|
|  |  |  | vo.setTypeName(Constants.Status.PT_FK.getDes()); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | vo.setTypeName(Constants.Status.NB_FK.getDes()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | vo.setTypeName(""); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | vo.setName(obj.getName()); | 
|---|
|  |  |  | vo.setPhone(obj.getPhone()); | 
|---|
|  |  |  | vo.setIdcardNo(obj.getIdcardNo()); | 
|---|
|  |  |  | vo.setDeviceName(obj.getDeviceName()); | 
|---|
|  |  |  | vo.setEventDate(obj.getEventDate()); | 
|---|
|  |  |  | retentionVoList.add(vo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return retentionVoList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private  IPage<Retention> getDataInfo(PageWrap<Retention> pageWrap) { | 
|---|
|  |  |  | //是否是数字 | 
|---|
|  |  |  | boolean number = Validator.isNumber(pageWrap.getModel().getKeyWords()); | 
|---|
|  |  |  | //是否包含中文 | 
|---|
|  |  |  | 
|---|
|  |  |  | IPage<Retention> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|---|
|  |  |  | MPJLambdaWrapper<Retention> queryWrapper = new MPJLambdaWrapper<>(); | 
|---|
|  |  |  | Utils.MP.blankToNull(pageWrap.getModel()); | 
|---|
|  |  |  | queryWrapper.leftJoin(Company.class,Company::getId,Retention::getId); | 
|---|
|  |  |  | queryWrapper.leftJoin(Company.class,Company::getId,Retention::getCompanyId); | 
|---|
|  |  |  | queryWrapper.selectAll(Retention.class) | 
|---|
|  |  |  | .selectAs(Company::getName,Retention::getCompanyName); | 
|---|
|  |  |  | queryWrapper.like(number,Retention::getPhone,pageWrap.getModel().getKeyWords()) | 
|---|
|  |  |  | .like((b||hasWord),Retention::getName,pageWrap.getModel().getKeyWords()) | 
|---|
|  |  |  | .eq(Objects.nonNull(pageWrap.getModel().getType()), | 
|---|
|  |  |  | Retention::getType, | 
|---|
|  |  |  | pageWrap.getModel().getType()) | 
|---|
|  |  |  | .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()), | 
|---|
|  |  |  | Company::getName, | 
|---|
|  |  |  | pageWrap.getModel().getCompanyName()) | 
|---|
|  |  |  | .ge(Objects.nonNull(pageWrap.getModel().getStartTime()), | 
|---|
|  |  |  | Retention::getEventDate,pageWrap.getModel().getStartTime()) | 
|---|
|  |  |  | .le(Objects.nonNull(pageWrap.getModel().getEndTime()), | 
|---|
|  |  |  | Retention::getEventDate,pageWrap.getModel().getStartTime()); | 
|---|
|  |  |  | .selectAs(Company::getName,Retention::getCompanyName) | 
|---|
|  |  |  | .select(" ( SELECT v.company_name FROM visits v WHERE v.member_id = t.member_id and v.status = "+Constants.VisitStatus.signin+" ORDER BY create_date DESC limit 1 ) as visitCompanyName "); | 
|---|
|  |  |  | queryWrapper.eq(Retention::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .like(number,Retention::getPhone,pageWrap.getModel().getKeyWords()) | 
|---|
|  |  |  | .like((b||hasWord),Retention::getName,pageWrap.getModel().getKeyWords()) | 
|---|
|  |  |  | .eq(Objects.nonNull(pageWrap.getModel().getType()), | 
|---|
|  |  |  | Retention::getType, | 
|---|
|  |  |  | pageWrap.getModel().getType()) | 
|---|
|  |  |  | .and(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()), | 
|---|
|  |  |  | p-> p.like(Company::getName, pageWrap.getModel().getCompanyName()) | 
|---|
|  |  |  | .or() | 
|---|
|  |  |  | .exists(" select 1 from visits v where  v.member_id = t.member_id and v.company_name like '%"+pageWrap.getModel().getCompanyName()+"%' and v.status = "+Constants.VisitStatus.signin+"")) | 
|---|
|  |  |  | .ge(Objects.nonNull(pageWrap.getModel().getStartTime()), | 
|---|
|  |  |  | Retention::getEventDate,pageWrap.getModel().getStartTime()) | 
|---|
|  |  |  | .le(Objects.nonNull(pageWrap.getModel().getEndTime()), | 
|---|
|  |  |  | Retention::getEventDate,pageWrap.getModel().getStartTime()); | 
|---|
|  |  |  | queryWrapper.orderByDesc(Retention::getCreateDate); | 
|---|
|  |  |  | IPage<Retention> retentionIPage = retentionJoinMapper.selectJoinPage(page, Retention.class, queryWrapper); | 
|---|
|  |  |  | return PageData.from(retentionIPage); | 
|---|
|  |  |  | return retentionIPage; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|