From d0f665a83a1be237cd675a63ba0cef08bf31aad0 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 06 十二月 2023 10:02:35 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |  157 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 153 insertions(+), 4 deletions(-)

diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index cf8d0fe..8dca011 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1,25 +1,47 @@
 package com.doumee.service.business.impl;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdcardUtil;
+import cn.hutool.core.util.PhoneUtil;
+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.Utils;
+import com.doumee.dao.admin.request.LaborEmpowerDTO;
+import com.doumee.dao.admin.request.LaborMemberDTO;
+import com.doumee.dao.admin.response.MemberInfoDTO;
 import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.TrainTimeMapper;
+import com.doumee.dao.business.join.MemberJoinMapper;
+import com.doumee.dao.business.model.Company;
+import com.doumee.dao.business.model.Empower;
 import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.TrainTime;
 import com.doumee.service.business.MemberService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
+import org.springframework.transaction.annotation.Transactional;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 浜哄憳淇℃伅琛⊿ervice瀹炵幇
  * @author 姹熻箘韫�
- * @date 2023/11/23 18:16
+ * @date 2023/11/30 15:33
  */
 @Service
 public class MemberServiceImpl implements MemberService {
@@ -27,10 +49,73 @@
     @Autowired
     private MemberMapper memberMapper;
 
+    @Autowired
+    private MemberJoinMapper memberJoinMapper;
+
+    @Autowired
+    private TrainTimeMapper trainTimeMapper;
+
     @Override
     public Integer create(Member member) {
         memberMapper.insert(member);
         return member.getId();
+    }
+
+    @Transactional
+    @Override
+    public Integer laborMemberCreate(LaborMemberDTO member) {
+
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+
+        if (PhoneUtil.isPhone(member.getPhone())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢佃瘽鍙风爜鏍煎紡鏈夎");
+        }
+        if (IdcardUtil.isValidCard(member.getIdcardNo())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"韬唤璇佸彿鏍煎紡鏈夎");
+        }
+        if (IdcardUtil.getGenderByIdCard(member.getIdcardNo()) == member.getSex()){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鎬у埆鏈夎");
+        }
+        //鑾峰彇鍑虹敓鏃ユ湡
+        String birthByIdCard = IdcardUtil.getBirthByIdCard(member.getIdcardNo());
+        //鑴辨晱鎿嶄綔
+        String hide = IdcardUtil.hide(member.getIdcardNo(), 5, 14);
+        //杞崲鏃ユ湡
+        DateTime yyyyMMdd = DateUtil.parse(birthByIdCard, "yyyyMMdd");
+
+        Member insert = new Member();
+        insert.setCreator(loginUserInfo.getId());
+        insert.setCreateDate(new Date());
+        insert.setEditor(loginUserInfo.getId());
+        insert.setEditDate(new Date());
+        insert.setIsdeleted(Constants.ZERO);
+        insert.setCompanyId(member.getCompanyId());
+        insert.setFaceImg(member.getFaceImg());
+        insert.setImgurl(member.getImgurl());
+        insert.setType(Constants.ZERO);
+        insert.setName(member.getName());
+        insert.setBirthday(yyyyMMdd);
+        insert.setPhone(member.getPhone());
+        insert.setIdcardNo(Utils.Secure.encryptString(member.getIdcardNo()));
+        IdcardUtil.isValidCard(member.getIdcardNo());
+        insert.setIdcardDecode(hide);
+        insert.setStatus(Constants.ZERO);
+        insert.setParentId(member.getParentId());
+        memberMapper.insert(insert);
+
+        TrainTime trainTime = new TrainTime();
+        trainTime.setCreator(loginUserInfo.getId().toString());
+        trainTime.setCreateDate(new Date());
+        trainTime.setEdirot(loginUserInfo.getId().toString());
+        trainTime.setEditDate(new Date());
+        trainTime.setIsdeleted(Constants.ZERO);
+        trainTime.setMemberId(insert.getId());
+        trainTime.setStartTime(Utils.Date.getStart(member.getStartTime()));
+        trainTime.setEndTime(Utils.Date.getDayEnd(member.getEndTime()));
+//        trainTime.setImportStatus();
+//        trainTime.setImportInfo();
+        trainTimeMapper.insert(trainTime);
+        return insert.getId();
     }
 
     @Override
@@ -55,6 +140,16 @@
     @Override
     public void updateById(Member member) {
         memberMapper.updateById(member);
+    }
+
+    @Override
+    public void updateStatusById(Member member) {
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        Member update = new Member();
+        update.setEditDate(new Date());
+        update.setEditor(loginUserInfo.getId());
+        update.setStatus(member.getStatus());
+        memberMapper.updateById(update);
     }
 
     @Override
@@ -83,7 +178,7 @@
         QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
         return memberMapper.selectList(wrapper);
     }
-  
+
     @Override
     public PageData<Member> findPage(PageWrap<Member> pageWrap) {
         IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -207,6 +302,13 @@
         if (pageWrap.getModel().getRoleId() != null) {
             queryWrapper.lambda().eq(Member::getRoleId, pageWrap.getModel().getRoleId());
         }
+        if (pageWrap.getModel().getRoleDate() != null) {
+            queryWrapper.lambda().ge(Member::getRoleDate, Utils.Date.getStart(pageWrap.getModel().getRoleDate()));
+            queryWrapper.lambda().le(Member::getRoleDate, Utils.Date.getEnd(pageWrap.getModel().getRoleDate()));
+        }
+        if (pageWrap.getModel().getErpOrgId() != null) {
+            queryWrapper.lambda().eq(Member::getErpOrgId, pageWrap.getModel().getErpOrgId());
+        }
         for(PageWrap.SortData sortData: pageWrap.getSorts()) {
             if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                 queryWrapper.orderByDesc(sortData.getProperty());
@@ -218,8 +320,55 @@
     }
 
     @Override
+    public PageData<MemberInfoDTO> findLaborMemberInfoPage(PageWrap<MemberInfoDTO> pageWrap) {
+        IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
+        MemberInfoDTO model = pageWrap.getModel();
+        Utils.MP.blankToNull(model);
+        Date end = Utils.Date.getEnd(pageWrap.getModel().getTrainTimeEndTime());
+        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId)
+                .leftJoin(TrainTime.class,TrainTime::getMemberId,Member::getId)
+                .leftJoin(Empower.class,Empower::getMemberId,Member::getId);
+
+        queryWrapper.selectAll(Member.class)
+                    .selectAs(Company::getName,MemberInfoDTO::getCompanyName)
+                    .selectAs(Company::getLinkName,MemberInfoDTO::getLinkName)
+                    .select("Max(t1.endTime)","trainTimeEndTime")
+                    .select("Max(t2.endTime)","empowerEndTime");
+
+        queryWrapper.eq(Objects.nonNull(model.getCompanyId()),Member::getCompanyId,model.getCompanyId())
+                    .like(StringUtils.isNotBlank(model.getName()),Member::getName,model.getName())
+                    .like(StringUtils.isNotBlank(model.getPhone()),Member::getPhone,model.getPhone())
+                    .like(StringUtils.isNotBlank(model.getIdcardDecode()),Member::getIdcardDecode,model.getIdcardDecode())
+                    .having("trainTimeEndTime < "+ DateUtil.format(end,"yyyy-MM-dd HH:mm:ss"));
+        IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper);
+        if (!CollectionUtils.isEmpty(memberIPage.getRecords())){
+            memberIPage.getRecords().forEach(s->s.setSex(IdcardUtil.getGenderByIdCard(s.getIdcardDecode())));
+        }
+        return PageData.from(memberIPage);
+    }
+
+    @Override
     public long count(Member member) {
         QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
         return memberMapper.selectCount(wrapper);
     }
+
+    @Override
+    public void importMemberBatch(LaborEmpowerDTO laborEmpowerDTO) {
+        try {
+            ExcelImporter ie = new ExcelImporter(laborEmpowerDTO.getFile(),0,0);
+
+            List<LaborEmpowerDTO.LaborMemberEmpower> dataList = ie.getDataList(LaborEmpowerDTO.LaborMemberEmpower.class,null);
+
+            if (CollectionUtils.isEmpty(dataList)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏂囦欢鏃犳暟鎹褰�");
+            }
+
+        } catch (Exception e) {
+
+        }
+//
+
+    }
 }

--
Gitblit v1.9.3