Commit add1ea5b by jianan

AGMS审批人要在ydLife上能审批

parent bf328037
......@@ -8,9 +8,11 @@ import com.yd.dal.entity.agms.hiring.*;
import com.yd.dal.entity.customer.*;
import com.yd.dal.entity.meta.MdPractitionerHiringApproveSteps;
import com.yd.dal.entity.user.AclUser;
import com.yd.dal.mapper.customer.AclPractitionerHiringBasicInfoMapper;
import com.yd.dal.service.agms.AgmsHiringDALService;
import com.yd.dal.service.customer.*;
import com.yd.dal.service.meta.MdPractitionerHiringApproveStepsDALService;
import com.yd.dal.service.practitioner.PractitionerHiringDALService;
import com.yd.dal.service.user.AclUserDALService;
import com.yd.rmi.cache.SystemConfigService;
import com.yd.util.CommonUtil;
......@@ -44,6 +46,11 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
private AclPractitionerSubordinateSystemDALService aclPractitionerSubordinateSystemDalService;
private AclCustomerDALService aclCustomerDalService;
@Autowired
private AclPractitionerHiringBasicInfoMapper basicInfoMapper;
@Autowired
private PractitionerHiringDALService practitionerHiringDalService;
@Autowired
public void setAgmsHiringDalService(AgmsHiringDALService agmsHiringDalService){
this.agmsHiringDalService = agmsHiringDalService;
}
......@@ -206,20 +213,36 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
String mobileNo, List<MdPractitionerHiringApproveSteps> hiringApproveStepsList,
PractitionerHiringApproveRequestVO requestVO,
PractitionerHiringApproveResponseVO responseVO) {
BeanPropertyValueEqualsPredicate predicate = new BeanPropertyValueEqualsPredicate("stepSeq",requestVO.getHiringApproveStepsSeq());
List<MdPractitionerHiringApproveSteps> steps = (List<MdPractitionerHiringApproveSteps>) CollectionUtils.select(hiringApproveStepsList,predicate);
Long basicInfoId = requestVO.getHiringBasicInfoId();
// 先查出当前审批流程
AclPractitionerHiringBasicInfo basicInfo = basicInfoMapper.selectByPrimaryKey(basicInfoId);
Integer hiringApproveStepsSeq;
if (basicInfo == null) {
responseVO.setHiringBasicInfoId(requestVO.getHiringBasicInfoId());
responseVO.setCommonResult(new CommonResult(false, ZHBErrorConfig.getErrorInfo("830025")));
return;
} else {
// 获取下一步的序号
hiringApproveStepsSeq = this.getNextStepSeq(basicInfo.getApproveStatus());
}
BeanPropertyValueEqualsPredicate predicate = new BeanPropertyValueEqualsPredicate("stepSeq", hiringApproveStepsSeq);
List<MdPractitionerHiringApproveSteps> steps = (List<MdPractitionerHiringApproveSteps>) CollectionUtils.select(hiringApproveStepsList, predicate);
System.out.println("看看审批操作中处理后的步骤是不是每次都只有一个");
System.out.println(steps);
if (steps.size() != 1){
if (steps.size() != 1) {
responseVO.setHiringBasicInfoId(requestVO.getHiringBasicInfoId());
responseVO.setCommonResult(new CommonResult(false, ZHBErrorConfig.getErrorInfo("830025")));
return;
}
AclPractitionerHiringApproveRecords records = new AclPractitionerHiringApproveRecords();
MdPractitionerHiringApproveSteps step = steps.get(0);
records.setHiringBasicInfoId(requestVO.getHiringBasicInfoId());
records.setHiringBasicInfoId(basicInfoId);
records.setApproveStepId(step.getId().toString());
records.setApproveStepName(step.getStepName());
records.setApprovingPractitionerId(loginPractitionerId);
......@@ -231,7 +254,13 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
records.setUpdatedAt(new Date());
records.setUpdatedBy(loginPractitionerId);
aclPractitionerHiringApproveRecordsDalService.save(records);
if (CommonUtil.isNullOrZero(requestVO.getApprovingStatus())){
// 更新basicInfo表审批状态
AclPractitionerHiringBasicInfo updateObj = new AclPractitionerHiringBasicInfo();
updateObj.setId(basicInfoId);
updateObj.setApproveStatus(step.getStepSeq().toString());
basicInfoMapper.updateByPrimaryKeySelective(updateObj);
if (CommonUtil.isNullOrZero(requestVO.getApprovingStatus())) {
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return;
}
......@@ -240,32 +269,63 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
MdPractitionerHiringApproveSteps lastStep = hiringApproveStepsList.get(hiringApproveStepsList.size() - 1);
Long lastStepId = lastStep.getId();
//这是最后一个步骤
if (id.equals(lastStepId)){
if (id.equals(lastStepId)) {
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return;
}
//下一个步骤
MdPractitionerHiringApproveSteps nextStop = new MdPractitionerHiringApproveSteps();
for (int i = 0;i< hiringApproveStepsList.size();i++){
MdPractitionerHiringApproveSteps nextStep = new MdPractitionerHiringApproveSteps();
for (int i = 0; i < hiringApproveStepsList.size(); i++) {
MdPractitionerHiringApproveSteps stop = hiringApproveStepsList.get(i);
Long stopId = stop.getId();
if (id.equals(stopId)){
nextStop = hiringApproveStepsList.get(i+1);
if (id.equals(stopId)) {
nextStep = hiringApproveStepsList.get(i + 1);
break;
}
}
String appointedApprovePractitioners = nextStop.getAppointedApprovePractitioners();
List<String> hiringApproveMobileNos = new ArrayList<>(Arrays.asList(appointedApprovePractitioners.split(",")));
//不是他
if (!hiringApproveMobileNos.contains(mobileNo)) {
boolean flag = this.isHasNextStep(loginPractitionerId, mobileNo, nextStep);
if (!flag) {
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return;
}
requestVO.setHiringApproveStepsSeq(nextStop.getStepSeq());
saveRecords(loginPractitionerId,mobileNo,hiringApproveStepsList,requestVO,responseVO);
requestVO.setHiringApproveStepsSeq(nextStep.getStepSeq());
saveRecords(loginPractitionerId, mobileNo, hiringApproveStepsList, requestVO, responseVO);
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
}
private Integer getNextStepSeq(String approveStatus) {
switch (approveStatus) {
case "-2" :
return Integer.valueOf("1");
case "1" :
return Integer.valueOf("2");
case "2" :
return Integer.valueOf("3");
case "3" :
return Integer.valueOf("4");
case "4" :
return Integer.valueOf("5");
}
return null;
}
private boolean isHasNextStep(Long loginPractitionerId, String mobileNo, MdPractitionerHiringApproveSteps nextStep) {
// 先判断是否是AGMS中审批的人员
String appointedApprovePractitioners = nextStep.getAppointedApprovePractitioners();
List<String> hiringApproveMobileNos = new ArrayList<>(Arrays.asList(appointedApprovePractitioners.split(",")));
if (hiringApproveMobileNos.contains(mobileNo)) {
return true;
}
// 不是AGMS审批人;只有既是辅导人又是团队长才有下一步
int approvalIdentity = practitionerHiringDalService.queryApprovalIdentity(loginPractitionerId);
if (approvalIdentity == 0) {
return true;
}
return false;
}
private void updatePractitionerInfo(Long hiringBasicInfoId,Long loginId) {
//更新经纪人系类表
//ag_acl_practitioner
......
......@@ -9,6 +9,7 @@ import com.yd.dal.entity.meta.MdPractitionerHiringApproveSteps;
import com.yd.dal.entity.practitioner.hiring.*;
import com.yd.dal.mapper.customer.*;
import com.yd.dal.service.customer.AclPractitionerHiringApproveRecordsDALService;
import com.yd.dal.service.meta.MdPractitionerHiringApproveStepsDALService;
import com.yd.dal.service.practitioner.PractitionerHiringDALService;
import com.yd.rmi.ali.oss.service.OssService;
import com.yd.rmi.cache.SystemConfigService;
......
......@@ -70,7 +70,7 @@ public interface AgmsHiringMapper {
@Param("name")Long name
);
Page<PractitionerHiringListInfo> queryUnhandledList(@Param("approveStatus")Integer approveStatus,
Page<PractitionerHiringListInfo> queryUnhandledList(@Param("approveStatus")String approveStatus,
@Param("list")List<String> canAprroveGrades,
@Param("branchId")Long branchId,
@Param("deptId")Long deptId,
......
......@@ -122,8 +122,9 @@ public class AgmsHiringDALServiceImpl implements AgmsHiringDALService {
List<String> canAprroveGrades = new ArrayList<>();
canAprroveGrades.addAll(Arrays.asList(canAprroveGrade.split(",")));
String approveStatus = CommonUtil.getApproveStatusByStepSeq(stepSeq);
List<PractitionerHiringListInfo> resultList =
agmsHiringMapper.queryUnhandledList(stepSeq - 1, canAprroveGrades,
agmsHiringMapper.queryUnhandledList(approveStatus, canAprroveGrades,
requestVO.getBranchId(),
requestVO.getDeptId(),
requestVO.getSubsystemId(),
......
......@@ -87,4 +87,11 @@ public interface PractitionerHiringDALService {
* @return
*/
List<HiringListInfo> queryUnhandledList(Long practitionerId);
/**
* 查询审批身份 0.既是辅导人又是团队长 1.辅导人 2.团队长
* @param practitionerId
* @return
*/
int queryApprovalIdentity(Long practitionerId);
}
package com.yd.dal.service.practitioner.impl;
import com.yd.api.practitioner.vo.hiring.PractitionerHiringContractTerms;
import com.yd.dal.entity.agms.hiring.PractitionerHiringListInfo;
import com.yd.dal.entity.customer.AclPractitioner;
import com.yd.dal.entity.customer.CustomerFileUpload;
import com.yd.dal.entity.customer.practitioner.PractitionerInfo;
import com.yd.dal.entity.meta.MdPractitionerHiringApproveSteps;
import com.yd.dal.entity.practitioner.hiring.*;
import com.yd.dal.mapper.agms.AgmsHiringMapper;
import com.yd.dal.mapper.customer.AclPractitionerHiringMembershipMapper;
import com.yd.dal.mapper.customer.AclPractitionerMapper;
import com.yd.dal.mapper.practitioner.PractitionerHiringMapper;
import com.yd.dal.service.customer.AclFileUploadDALService;
import com.yd.dal.service.customer.AclPractitionerDALService;
import com.yd.dal.service.meta.MdPractitionerHiringApproveStepsDALService;
import com.yd.dal.service.practitioner.PractitionerHiringDALService;
import com.yd.util.CommonUtil;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author xxy
......@@ -29,6 +41,12 @@ public class PractitionerHiringDALServiceImpl implements PractitionerHiringDALSe
private AclFileUploadDALService aclFileUploadDALService;
@Autowired
private AclPractitionerHiringMembershipMapper membershipMapper;
@Autowired
private MdPractitionerHiringApproveStepsDALService mdPractitionerHiringApproveStepsDalService;
@Autowired
private AclPractitionerMapper aclPractitionerMapper;
@Autowired
private AgmsHiringMapper agmsHiringMapper;
@Override
public List<HiringListInfo> findHiringList(Long practitionerId, Long approvingStatus) {
......@@ -91,8 +109,51 @@ public class PractitionerHiringDALServiceImpl implements PractitionerHiringDALSe
return practitionerHiringMapper.queryHandledList(practitionerId, approvingStatus);
}
/**
* 需求需要AGMS用户也能在ydLife中审批,
* 所以在响应报文一致的情况下,需要合并两个查询接口的结果集
*/
@Override
public List<HiringListInfo> queryUnhandledList(Long practitionerId) {
List<HiringListInfo> resultList = new ArrayList<>();
AclPractitioner practitioner = aclPractitionerMapper.selectByPrimaryKey(practitionerId);
// AGMS接口查询逻辑的数据
List<HiringListInfo> agmsDataList = this.queryAGMSHiringinfoList(practitioner.getMobileNo());
System.out.println("------------------------------AGMS接口查询逻辑的数据--------------------------");
System.out.println(agmsDataList);
List<HiringListInfo> ydLifeDataList = this.queryYdLifeHiringinfoList(practitionerId);
System.out.println("-----------------------------ydLife接口查询逻辑的数据-------------------------");
System.out.println(ydLifeDataList);
resultList.addAll(agmsDataList);
resultList.addAll(ydLifeDataList);
resultList = this.unrepeatedObjList(ydLifeDataList);
System.out.println("去重后的数据");
System.out.println(resultList);
return resultList;
}
private List<HiringListInfo> unrepeatedObjList(List<HiringListInfo> list) {
List<Long> names = new ArrayList<>();//用来临时存储元素的id
List<HiringListInfo> resultList = list.stream().filter(// 过滤去重
v -> {
boolean flag = !names.contains(v.getHiringBasicInfoId());
names.add(v.getHiringBasicInfoId());
return flag;
}
).collect(Collectors.toList());
return resultList;
}
private List<HiringListInfo> queryYdLifeHiringinfoList(Long practitionerId) {
// 查询审批身份 0.既是辅导人又是团队长 1.辅导人 2.团队长
int approvalIdentity = this.queryApprovalIdentity(practitionerId);
......@@ -110,7 +171,51 @@ public class PractitionerHiringDALServiceImpl implements PractitionerHiringDALSe
return resultList;
}
private int queryApprovalIdentity(Long practitionerId) {
private List<HiringListInfo> queryAGMSHiringinfoList(String practitionerMobileNo) {
// 结果集
List<PractitionerHiringListInfo> dataList = new ArrayList<>();
List<MdPractitionerHiringApproveSteps> ownSteps = mdPractitionerHiringApproveStepsDalService.findByAppointedApprovePractitioners(practitionerMobileNo);
// 根据当前用户拥有的审批步骤查询每一步能够审批的数据
String stepName;
Integer stepSeq;
String canAprroveGrade;
for (MdPractitionerHiringApproveSteps step : ownSteps) {
stepName = step.getStepName();
stepSeq = step.getStepSeq();
canAprroveGrade = step.getCanAprroveGrade();
List<String> canAprroveGrades = new ArrayList<>();
canAprroveGrades.addAll(Arrays.asList(canAprroveGrade.split(",")));
String approveStatus = CommonUtil.getApproveStatusByStepSeq(stepSeq);
List<PractitionerHiringListInfo> resultList =
agmsHiringMapper.queryUnhandledList(approveStatus, canAprroveGrades,
null,
null,
null,
null
);
if (CollectionUtils.isNotEmpty(resultList)) {
dataList.addAll(resultList);
}
if ("公司老板".equals(stepName)) {
List<PractitionerHiringListInfo> s2List = agmsHiringMapper.queryS2List();
dataList.addAll(s2List);
}
}
List<HiringListInfo> list = new ArrayList<>();
for (PractitionerHiringListInfo item : dataList) {
HiringListInfo hiringInfo = new HiringListInfo();
BeanUtils.copyProperties(hiringInfo, item);
list.add(hiringInfo);
}
return list;
}
@Override
public int queryApprovalIdentity(Long practitionerId) {
// 审批身份 0.既是辅导人又是团队长 1.辅导人 2.团队长
int isMentor = membershipMapper.isMentor(practitionerId);
int isSystemOwner = membershipMapper.isSystemOwner(practitionerId);
......
......@@ -1503,4 +1503,20 @@ public class CommonUtil {
return sumDay;
}
public static String getApproveStatusByStepSeq(Integer stepSeq){
switch (stepSeq) {
case 1 :
return "-2";
case 2 :
return "1";
case 3 :
return "2";
case 4 :
return "3";
case 5 :
return "4";
}
return null;
}
}
......@@ -211,15 +211,6 @@
where t.approving_practitioner_id = #{practitionerId,jdbcType=BIGINT}
and t.approving_status = #{approvingStatus,jdbcType=BIGINT}
)
and (m.mentor_practitioner_id = #{practitionerId,jdbcType=BIGINT} or
m.subsystem_owner_id = #{practitionerId,jdbcType=BIGINT})
and m.md_drop_option_id != (select id
from ag_md_drop_options
where drop_option_code = 'S2'
and drop_master_id = (select id
from ag_md_drop_master
where scenario_code = 'practitioner_level'))
</select>
<select id="queryMentorUnhandledList" resultMap="HiringListInfo">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment