k94314517
2024-05-22 c8bc6fdbdc37f551388b71372c35d4f42f58e571
代码初始化
已添加2个文件
已修改12个文件
494 ■■■■■ 文件已修改
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/RegisterDriverDTO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/ApproveJoinMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveParam.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java
@@ -100,4 +100,11 @@
        return ApiResponse.success(carUseBookService.checkDateUse(carId,dateDay));
    }
    @ApiOperation("申请撤销")
    @GetMapping("/revoke")
    public ApiResponse  revoke (@RequestParam Integer id, @RequestParam String info, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        carUseBookService.revoke(id,info,getLoginUser(token));
        return ApiResponse.success("操作成功");
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java
@@ -13,6 +13,7 @@
import com.doumee.dao.admin.request.LaborMemberDTO;
import com.doumee.dao.admin.request.MemberImport;
import com.doumee.dao.admin.request.MemberQuery;
import com.doumee.dao.business.dto.RegisterDriverDTO;
import com.doumee.dao.business.dto.ResetPasswordDTO;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.MemberRole;
@@ -327,4 +328,16 @@
        return ApiResponse.success(null);
    }
    @LoginNoRequired
    @ApiOperation("司机注册")
    @PostMapping("/registerDriver")
    public ApiResponse registerDriver(@RequestBody RegisterDriverDTO registerDriverDTO ){
        memberService.registerDriver(registerDriverDTO);
        return ApiResponse.success("注册成功");
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/RegisterDriverDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.doumee.dao.business.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/5/20 14:54
 */
@Data
public class RegisterDriverDTO {
    @ApiModelProperty(value = "姓名")
    private String name;
    @ApiModelProperty(value = "手机号")
    private String phone;
    @ApiModelProperty(value = "验证码")
    private String validCode;
    @ApiModelProperty(value = "密码")
    private String password;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/ApproveJoinMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.doumee.dao.business.join;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.Approve;
import com.github.yulichang.base.mapper.MPJJoinMapper;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2023/12/28 14:09
 */
public interface ApproveJoinMapper extends MPJJoinMapper<Approve> {
    void insertBatchSomeColumn(List<Approve> list);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
@@ -96,9 +97,6 @@
    @ExcelColumn(name="关联业务主键")
    private Integer objId;
    @ApiModelProperty(value = "关联业务类型:0=访客申请;1=用车申请", example = "1")
    @ExcelColumn(name="关联业务类型:0=访客申请;1=用车申请")
    private Integer objType;
    @ApiModelProperty(value = "审批等级", example = "1")
    @ExcelColumn(name="审批等级")
@@ -108,7 +106,39 @@
    @ExcelColumn(name="多人审批方式 0或签 1会签")
    private Integer approveType;
    @ApiModelProperty(value = "是否指定司机项 0不指定 1指定", example = "1")
    @ExcelColumn(name="是否指定司机项 0不指定 1指定")
    private Integer driverParam;
    @ApiModelProperty(value = "是否修改目的地 0否 1是", example = "1")
    @ExcelColumn(name="是否修改目的地 0否 1是")
    private Integer addrParam;
    @ApiModelProperty(value = "关联业务类型:0非施工人员访客申请 1非施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约", example = "1")
    @ExcelColumn(name="关联业务类型:0非施工人员访客申请 1非施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约")
    private Integer objType;
    @ApiModelProperty(value = "类型 0审批 1抄送", example = "1")
    @ExcelColumn(name="类型 0审批 1抄送")
    private Integer type;
    @ApiModelProperty(value = "姓名", example = "1")
    @ExcelColumn(name="姓名")
    @TableField(exist = false)
    private String memberName;
    @ApiModelProperty(value = "手机号", example = "1")
    @ExcelColumn(name="手机号")
    @TableField(exist = false)
    private String memberPhone;
    @ApiModelProperty(value = "部门", example = "1")
    @ExcelColumn(name="部门")
    @TableField(exist = false)
    private String companyName;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveParam.java
@@ -93,4 +93,16 @@
    @ExcelColumn(name="无主管选项 0流程结束 1由上级主管代替审核")
    private Integer noleaderOpt;
    @ApiModelProperty(value = "模版编码(关联approve_templ)", example = "1")
    @ExcelColumn(name="模版编码(关联approve_templ)")
    private Integer templId;
    @ApiModelProperty(value = "是否指定司机项 0不指定 1指定", example = "1")
    @ExcelColumn(name="是否指定司机项 0不指定 1指定")
    private Integer driverParam;
    @ApiModelProperty(value = "是否修改目的地 0否 1是", example = "1")
    @ExcelColumn(name="是否修改目的地 0否 1是")
    private Integer addrParam;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java
@@ -93,13 +93,11 @@
    @ApiModelProperty(value = "取消类型 0申请人取消 1派车员撤销")
    @ExcelColumn(name="取消类型 0申请人取消 1派车员撤销")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date cancelType;
    private Integer cancelType;
    @ApiModelProperty(value = "是否已取消 0未取消 1已取消")
    @ExcelColumn(name="是否已取消 0未取消 1已取消")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date cancelStatus;
    private Integer cancelStatus;
    @ApiModelProperty(value = "取消时间")
    @ExcelColumn(name="取消时间")
@@ -172,4 +170,7 @@
    @ApiModelProperty(value = "申请人电话")
    @TableField(exist = false)
    private String memberMobile;
    @ApiModelProperty(value = "审批记录")
    @TableField(exist = false)
    private List<Approve> approveList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
@@ -104,4 +104,6 @@
     * @return
     */
    InternalHomeVO getHomeData(Integer memberId);
    void createApproveFlow(Integer tempType,Integer businessId,Integer createMemberId);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java
@@ -1,5 +1,6 @@
package com.doumee.service.business;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.CarUseBook;
@@ -101,4 +102,6 @@
    List<CarUseBook> carUseBookList(CarUseBook carUseBook);
    List<DateIntervalVO> checkDateUse(Integer cars, String dateDay);
    void revoke(Integer id, String info, LoginUserInfo loginUserInfo);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java
@@ -7,6 +7,7 @@
import com.doumee.dao.admin.request.LaborMemberDTO;
import com.doumee.dao.admin.request.MemberQuery;
import com.doumee.dao.admin.response.StagingDataVO;
import com.doumee.dao.business.dto.RegisterDriverDTO;
import com.doumee.dao.business.dto.ResetPasswordDTO;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.MemberRole;
@@ -161,6 +162,11 @@
    void memberFreeze();
    /********************************************公众号接口***********************************************************************/
    /**
     * å¸æœºæ³¨å†Œ
     * @param registerDriverDTO
     */
    void registerDriver(RegisterDriverDTO registerDriverDTO);
    /**
     * å¾®ä¿¡æŽˆæƒæŽ¥å£
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -1,23 +1,31 @@
package com.doumee.service.business.impl;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
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.business.ApproveMapper;
import com.doumee.dao.business.model.Approve;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.CompanyMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.web.response.InternalHomeVO;
import com.doumee.service.business.ApproveService;
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 org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
 * å®¡æ‰¹ä¿¡æ¯è®°å½•表Service实现
@@ -32,6 +40,24 @@
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private ApproveTemplMapper approveTemplMapper;
    @Autowired
    private ApproveParamMapper approveParamMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private CompanyMapper companyMapper;
    @Autowired
    private CarUseBookMapper carUseBookMapper;
    @Autowired
    private CarDriverMapper carDriverMapper;
    @Override
    public Integer create(Approve approve) {
@@ -189,10 +215,214 @@
    }
    /**
     * åˆ›å»ºå®¡æ‰¹æµç¨‹
     * @param tempType æ¨¡æ¿ç±»åž‹  0非施工人员访客申请 1非施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约
     * @param businessId ä¸šåС䏻键 æ ¹æ® tempType
     * @param createMemberId æäº¤æµç¨‹äººå‘˜
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void createApproveFlow(Integer tempType,Integer businessId,Integer createMemberId){
        //查询处理模板
        ApproveTempl approveTempl = approveTemplMapper.selectOne(new QueryWrapper<ApproveTempl>().lambda()
                .eq(ApproveTempl::getType,tempType)
                .eq(ApproveTempl::getIsdeleted,Constants.ZERO)
                .last(" limit 1 ")
        );
        if(Objects.isNull(approveTempl)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到配置模板");
        }
        //查询配置流程
        List<ApproveParam> approveParamAllList = approveParamMapper.selectList(new QueryWrapper<ApproveParam>()
                .lambda().eq(ApproveParam::getIsdeleted,Constants.ZERO)
                .eq(ApproveParam::getTemplId,approveTempl.getId())
                .orderByAsc(ApproveParam::getType)
                .orderByAsc(ApproveParam::getLevel)
        );
        if(Objects.isNull(approveParamAllList)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未配置审批流程");
        }
        //审批配置
        List<ApproveParam> approveParamList = approveParamAllList.stream().filter(i->i.getType().equals(Constants.ZERO)).collect(Collectors.toList());
        if(Objects.isNull(approveParamList)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未配置审批流程");
        }
        List<ApproveParam> approveCopyList = approveParamAllList.stream().filter(i->i.getType().equals(Constants.ONE)).collect(Collectors.toList());
        Member createMember = memberMapper.selectById(createMemberId);
        if(Objects.isNull(createMember)|| Objects.isNull(createMember.getCompanyId())){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"申请人组织信息异常");
        }
        List<Approve> approveList = new ArrayList<>();
        this.organizeApproveData(approveTempl,approveParamList,createMember,businessId,approveList);
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(approveList)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误");
        }
        //处理抄送数据
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(approveCopyList)){
            this.organizeApproveCopyData(approveTempl,approveParamList,businessId,approveList);
        }
        approveMapper.insertBatchSomeColumn(approveList);
    }
    /**
     * ç»„织审批流数据
     * @param approveTempl
     * @param approveParamList
     * @param createMember
     * @param businessId
     * @param approveList
     */
    public void organizeApproveData(ApproveTempl approveTempl,List<ApproveParam> approveParamList,Member createMember,Integer businessId,List<Approve> approveList){
        //审批业务数据
        for (int i = 0; i < approveParamList.size(); i++) {
            ApproveParam approveParam = approveParamList.get(i);
            List<Integer> ids = this.getApproveUserIds(approveParam,createMember);
            for (Integer memberId:ids) {
                Approve approve = new Approve();
                approve.setCreateDate(new Date());
                approve.setIsdeleted(Constants.ZERO);
                approve.setTemplatId(approveTempl.getId());
                approve.setChekorId(memberId);
                approve.setStatus(Constants.ZERO);
                approve.setStatusInfo("待审批");
                approve.setIsEndCheck((i+1) == approveParamList.size()?Constants.ONE:Constants.ZERO);
                approve.setObjId(businessId);
                approve.setLevel(i+1);
                approve.setApproveType(approveParam.getApproveType());
                approve.setDriverParam(approveParam.getDriverParam());
                approve.setAddrParam(approveParam.getAddrParam());
                approve.setType(Constants.ZERO);
                approveList.add(approve);
            }
        }
    }
    public void organizeApproveCopyData(ApproveTempl approveTempl,List<ApproveParam> approveCopyList,Integer businessId,List<Approve> approveList){
        for (ApproveParam approveParam:approveCopyList) {
            if(StringUtils.isBlank(approveParam.getObjIds())){
                return;
            }
            List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
                    .eq(Member::getIsdeleted,Constants.ZERO)
                    .eq(Member::getWorkStatus,Constants.ZERO)
                    .in(Member::getId,approveParam.getObjIds().split(",")));
            List<Integer> userIds = new ArrayList<>();
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberList)){
                userIds.addAll(memberList.stream().map(m->m.getId()).collect(Collectors.toList()));
            }
            //公务用车 é»˜è®¤åŠ å…¥ å¸æœºæŠ„送
            if(approveTempl.getType()==Constants.THREE||approveTempl.getType()==Constants.FOUR){
                CarUseBook carUseBook = carUseBookMapper.selectById(businessId);
                if(Objects.isNull(carUseBook)){
                    throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"为查询到用车申请信息");
                }
                CarDriver carDriver = carDriverMapper.selectById(carUseBook.getDriverId());
                if(Objects.isNull(carDriver)){
                    throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"为查询到司机信息");
                }
                userIds.add(carDriver.getMemberId());
            }
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(userIds)){
                for (Integer memberId:userIds) {
                    Approve approve = new Approve();
                    approve.setCreateDate(new Date());
                    approve.setIsdeleted(Constants.ZERO);
                    approve.setTemplatId(approveTempl.getId());
                    approve.setChekorId(memberId);
                    approve.setObjId(businessId);
                    approve.setType(Constants.ONE);
                    approveList.add(approve);
                }
            }
        }
    }
    public List<Integer> getApproveUserIds(ApproveParam approveParam,Member createMember){
        List<Integer> userIds = new ArrayList<>();
        if(approveParam.getMemberType().equals(Constants.ZERO)){
            //申请人
            userIds.add(createMember.getId());
        }else if(approveParam.getMemberType().equals(Constants.ONE)){
            //指定人员
            if(StringUtils.isBlank(approveParam.getObjIds())){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"审批流配置错误[未配置指定审批人员]");
            }
            List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
                    .eq(Member::getIsdeleted,Constants.ZERO)
                    .in(Member::getId,approveParam.getObjIds().split(",")));
            if(memberList.size()!=approveParam.getObjIds().split(",").length){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误[指定审批人员信息异常]");
            }
            userIds.addAll(memberList.stream().map(m->m.getId()).collect(Collectors.toList()));
        }else if(approveParam.getMemberType().equals(Constants.TWO)){
            //部门主管审批
            //审批部门
            Company memberCompany = companyMapper.selectById(createMember.getCompanyId());
            if(Objects.isNull(memberCompany)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误[指定审批部门未查询到]");
            }
            Company auditCompany = this.getAuditCompanyHead(memberCompany.getParentId(),approveParam.getObjLevel());
            if(Objects.isNull(auditCompany)){
                //审批部门为空 è‡ªåŠ¨æµè½¬ä¸‹ä¸€çº§å®¡æ‰¹é…ç½®
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误[指定审批部门未查询到]");
            }else{
                //查询部门负责人
                Member headMember = memberMapper.selectById(auditCompany.getHeadId());
                if(Objects.isNull(headMember)){
                    //未查询到部门负责人  æ ¹æ®é…ç½®å¤„理   ç”±ä¸Šçº§ä¸»ç®¡ä»£æ›¿å®¡æ ¸/直接结束流程
                    if(approveParam.getNoleaderOpt().equals(Constants.ONE)&&!Objects.isNull(auditCompany.getParentId())){
                        auditCompany = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getId,auditCompany.getParentId()));
                        //无父级 ç›´æŽ¥æµä¼ ä¸‹ä¸€çº§å®¡æ‰¹
                        if(Objects.isNull(auditCompany)){
                            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误[指定审批部门未查询到]");
                        }
                        headMember = memberMapper.selectById(auditCompany.getHeadId());
                        if(Objects.isNull(headMember)){
                            //查询部门负责人 ä¸ºç©º è‡ªåŠ¨æµè½¬ä¸‹ä¸€çº§å®¡æ‰¹é…ç½®
                            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误[指定审批部门未设置负责人]");
                        }else{
                            //添加审批人
                            userIds.add(headMember.getId());
                        }
                    }else{
                        //添加审批人
                        userIds.add(headMember.getId());
                    }
                }
            }
        }
        return userIds;
    }
    /**
     * æ ¹æ®é…ç½®æŸ¥è¯¢ä¸Šçº§æ•°æ®
     * @param companyId çˆ¶çº§éƒ¨é—¨ä¸»é”®
     * @param objLevel  æŸ¥è¯¢çº§åˆ«
     */
    public Company getAuditCompanyHead(Integer companyId, Integer objLevel){
        Integer queryLevel = Constants.ZERO;
        Company auditCompany =  companyMapper.selectById(companyId);
        while(queryLevel.equals(objLevel)){
            auditCompany = companyMapper.selectById(auditCompany.getParentId());
            if(Objects.isNull(auditCompany)){
                return null;
            }
            queryLevel = queryLevel + 1;
        }
        return auditCompany;
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
@@ -10,12 +10,15 @@
import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.ApproveMapper;
import com.doumee.dao.business.CarUseBookMapper;
import com.doumee.dao.business.CarsMapper;
import com.doumee.dao.business.join.ApproveJoinMapper;
import com.doumee.dao.business.join.CarUseBookJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.DateIntervalVO;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.service.business.ApproveService;
import com.doumee.service.business.CarUseBookService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -56,6 +59,12 @@
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private ApproveJoinMapper approveJoinMapper;
    @Autowired
    private ApproveService approveService;
    @Override
@@ -103,6 +112,8 @@
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在车辆预约时间与已预约时间冲突~");
        }
        carUseBookMapper.insert(carUseBook);
        //用车申请 å®¡æ‰¹è®°å½•创建
        approveService.createApproveFlow(carUseBook.getType()==0?3:4,carUseBook.getId(),carUseBook.getMemberId());
        return carUseBook.getId();
    }
@@ -155,6 +166,21 @@
                .eq(CarUseBook::getId,id)
                .last("limit 1"  );
        CarUseBook model = carUseBookMapper.selectJoinOne(CarUseBook.class,queryWrapper);
        //审批记录
       List<Approve> approveList = approveJoinMapper.selectJoinList(Approve.class,
                new MPJLambdaWrapper<Approve>()
                        .selectAll(Approve.class)
                        .selectAs(Member::getName,Approve::getMemberName)
                        .selectAs(Member::getPhone,Approve::getMemberPhone)
                        .selectAs(Company::getName,Approve::getCompanyName)
                        .leftJoin(Member.class,Member::getId,Approve::getChekorId)
                        .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                        .eq(Approve::getIsdeleted,Constants.ZERO)
                        .eq(Approve::getObjType,Constants.ONE)
                        .eq(Approve::getObjId,id)
                        .orderByAsc(Approve::getLevel)
        );
       model.setApproveList(approveList);
        return  model;
    }
@@ -207,10 +233,8 @@
                .le(pageWrap.getModel().getCheckDate() != null, CarUseBook::getCheckDate, Utils.Date.getEnd(pageWrap.getModel().getCheckDate()))
                .eq(pageWrap.getModel().getCheckUserId() != null, CarUseBook::getCheckUserId, pageWrap.getModel().getCheckUserId())
                .eq(pageWrap.getModel().getCheckInfo() != null, CarUseBook::getCheckInfo, pageWrap.getModel().getCheckInfo())
                .ge(pageWrap.getModel().getCancelType() != null, CarUseBook::getCancelType, Utils.Date.getStart(pageWrap.getModel().getCancelType()))
                .le(pageWrap.getModel().getCancelType() != null, CarUseBook::getCancelType, Utils.Date.getEnd(pageWrap.getModel().getCancelType()))
                .ge(pageWrap.getModel().getCancelStatus() != null, CarUseBook::getCancelStatus, Utils.Date.getStart(pageWrap.getModel().getCancelStatus()))
                .le(pageWrap.getModel().getCancelStatus() != null, CarUseBook::getCancelStatus, Utils.Date.getEnd(pageWrap.getModel().getCancelStatus()))
                .eq(pageWrap.getModel().getCancelType() != null, CarUseBook::getCancelType,  pageWrap.getModel().getCancelType())
                .eq(pageWrap.getModel().getCancelStatus() != null, CarUseBook::getCancelStatus, pageWrap.getModel().getCancelStatus())
                .ge(pageWrap.getModel().getCancelTime() != null, CarUseBook::getCancelTime, Utils.Date.getStart(pageWrap.getModel().getCancelTime()))
                .le(pageWrap.getModel().getCancelTime() != null, CarUseBook::getCancelTime, Utils.Date.getEnd(pageWrap.getModel().getCancelTime()))
                .eq(pageWrap.getModel().getCancelUser() != null, CarUseBook::getCancelUser, pageWrap.getModel().getCancelUser())
@@ -377,11 +401,30 @@
    }
    public void revoke(Integer id, LoginUserInfo loginUserInfo){
    @Override
    public void revoke(Integer id, String info, LoginUserInfo loginUserInfo){
       CarUseBook carUseBook = carUseBookMapper.selectById(id);
       if(Objects.isNull(carUseBook)){
           throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到用车申请信息");
       }
       carUseBook.setCancelInfo(info);
       carUseBook.setCancelTime(new Date());
       carUseBook.setCancelStatus(Constants.ONE);
       carUseBook.setStatus(Constants.FOUR);
       carUseBook.setCancelUser(loginUserInfo.getId());
       carUseBook.setCancelType(Constants.ONE);
       if(loginUserInfo.getId().equals(carUseBook.getCreator())){
           carUseBook.setCancelType(Constants.ZERO);
       }
       carUseBookMapper.updateById(carUseBook);
       //处理审批记录
       approveJoinMapper.update(null,new UpdateWrapper<Approve>()
                .lambda()
                .set(Approve::getStatus,Constants.FOUR)
                .set(Approve::getCheckInfo,"用车申请取消")
                .in(Approve::getStatus,Constants.ZERO,Constants.ONE)
                .eq(Approve::getObjId,id)
        );
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -34,6 +34,7 @@
import com.doumee.dao.admin.response.StagingDataVO;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.CompanyMapper;
import com.doumee.dao.business.dto.RegisterDriverDTO;
import com.doumee.dao.business.dto.ResetPasswordDTO;
import com.doumee.dao.business.join.MemberJoinMapper;
import com.doumee.dao.business.join.RetentionJoinMapper;
@@ -48,6 +49,7 @@
import com.doumee.dao.web.response.MemberVO;
import com.doumee.dao.web.response.WxAuthorizeVO;
import com.doumee.service.business.MemberService;
import com.doumee.service.business.SmsEmailService;
import com.doumee.service.business.impl.hksync.HkSyncEmpowerServiceImpl;
import com.doumee.service.business.impl.hksync.ferp.HkSyncOrgUserToHKServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -119,6 +121,8 @@
    @Autowired
    private SystemUserMapper systemUserMapper;
    @Autowired
    private SmsEmailService smsEmailService;
    @Value("${debug_model}")
    private Boolean isDebug;
@@ -1932,6 +1936,57 @@
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void registerDriver(RegisterDriverDTO registerDriverDTO){
        if(Objects.isNull(registerDriverDTO)
        || StringUtils.isBlank(registerDriverDTO.getName())
                || StringUtils.isBlank(registerDriverDTO.getPassword())
                || StringUtils.isBlank(registerDriverDTO.getValidCode())
                || StringUtils.isBlank(registerDriverDTO.getPhone())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda()
                .eq(Member::getIsdeleted,Constants.ZERO)
                .eq(Member::getPhone,registerDriverDTO.getPhone())
        )>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"手机号已注册!");
        };
        if(systemUserMapper.selectCount(new QueryWrapper<SystemUser>().lambda()
                .eq(SystemUser::getDeleted,Constants.ZERO)
                        .and(i->i.eq(SystemUser::getMobile,registerDriverDTO.getPhone()).or().eq(SystemUser::getUsername,registerDriverDTO.getPhone()))
        )>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"手机号已注册!");
        };
        smsEmailService.validateCode(registerDriverDTO.getValidCode(),registerDriverDTO.getPhone());
        String salt = RandomStringUtils.randomAlphabetic(6);
       ;
        Member member = new Member();
        member.setCreateDate(new Date());
        member.setIsdeleted(Constants.ZERO);
        member.setType(Constants.TWO);
        member.setName(registerDriverDTO.getName());
        member.setPhone(registerDriverDTO.getPhone());
        member.setStatus(Constants.ZERO);
        member.setPassward(Utils.Secure.encryptPassword(registerDriverDTO.getPassword(), salt));
        memberMapper.insert(member);
        SystemUser systemUser = new SystemUser();
        systemUser.setCreateTime(new Date());
        systemUser.setDeleted(Boolean.FALSE);
        systemUser.setUsername(registerDriverDTO.getPhone());
        systemUser.setRealname(registerDriverDTO.getName());
        systemUser.setMemberId(member.getId());
        systemUser.setSalt(salt);
        systemUser.setPassword(member.getPassward());
        systemUser.setStatus(Constants.ZERO);
        systemUserMapper.insert(systemUser);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -39,6 +39,7 @@
import com.doumee.dao.web.reqeust.VisitRecordDTO;
import com.doumee.dao.web.response.VisitDetailVO;
import com.doumee.dao.web.response.VisitRecordVO;
import com.doumee.service.business.ApproveService;
import com.doumee.service.business.InterfaceLogService;
import com.doumee.service.business.SmsEmailService;
import com.doumee.service.business.VisitsService;
@@ -104,6 +105,8 @@
    private SmsEmailService smsEmailService;
    @Autowired
    private SystemUserMapper systemUserMapper;
    @Autowired
    private ApproveService approveService;
    @Override
@@ -237,6 +240,7 @@
        }else if(dataSyncConfig.getVisitorDataOrigin().equals(Constants.ZERO)){
            visits.setStatus(Constants.VisitStatus.pass);
            visitsMapper.updateById(visits);
            approveService.createApproveFlow(visits.getType(),visits.getId(),visits.getReceptMemberId());
        }else{
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,发起拜访审批申请失败!");
        }
@@ -490,7 +494,6 @@
                .eq(ApproveParam::getMemberType,Constants.ZERO)
                .last("limit 1"));
         return  Objects.isNull(approveParam)?null:approveParam.getId();
    }
@@ -1356,8 +1359,6 @@
        dto.setId(systemUser.getId());
        dto.setOperaUserId(systemUser.getId());
        systemUserBiz.resetPwd(dto);
    }
}