From c8bc6fdbdc37f551388b71372c35d4f42f58e571 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期三, 22 五月 2024 18:14:29 +0800 Subject: [PATCH] 代码初始化 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java | 238 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 234 insertions(+), 4 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java index 08320d3..289c28d 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java +++ b/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; /** * 瀹℃壒淇℃伅璁板綍琛⊿ervice瀹炵幇 @@ -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(),"瀹℃壒娴侀厤缃敊璇痆鎸囧畾瀹℃壒閮ㄩ棬鏈缃礋璐d汉]"); + }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; + } } -- Gitblit v1.9.3