|  |  | @ -21,32 +21,37 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
			
		
	
		
			
				
					|  |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.constant.FieldConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.constant.NumConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.exception.RenException; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.page.PageData; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.ConvertUtils; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.Result; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.constant.ProjectConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dao.ProjectProcessDao; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dao.ProjectStaffDao; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.CustomerAgencyDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.ProjectProcessDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.ProcessListFormDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.ReturnListFromDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.StaffsInAgencyFromDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.*; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.AgencyDeptGridResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.ProcesslistResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.ReturnListResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.StaffInfoResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.entity.ProjectEntity; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.entity.ProjectProcessEntity; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.entity.ProjectStaffEntity; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.feign.EpmetUserFeignClient; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.feign.GovOrgFeignClient; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.redis.ProjectProcessRedis; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.service.ProjectProcessService; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.service.ProjectService; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.service.ProjectStaffService; | 
			
		
	
		
			
				
					|  |  |  | 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 java.util.*; | 
			
		
	
		
			
				
					|  |  |  | import java.util.concurrent.atomic.AtomicReference; | 
			
		
	
		
			
				
					|  |  |  | import java.util.stream.Collectors; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | /** | 
			
		
	
	
		
			
				
					|  |  | @ -68,6 +73,10 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao | 
			
		
	
		
			
				
					|  |  |  |     private EpmetUserFeignClient epmetUserFeignClient; | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private ProjectService projectService; | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private ProjectProcessDao projectProcessDao; | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private ProjectStaffService projectStaffService; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |     public PageData<ProjectProcessDTO> page(Map<String, Object> params) { | 
			
		
	
	
		
			
				
					|  |  | @ -158,4 +167,82 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao | 
			
		
	
		
			
				
					|  |  |  |         return resultList; | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * @param formDTO | 
			
		
	
		
			
				
					|  |  |  |      * @return | 
			
		
	
		
			
				
					|  |  |  |      * @Author sun | 
			
		
	
		
			
				
					|  |  |  |      * @Description 项目跟踪-转其他部门 | 
			
		
	
		
			
				
					|  |  |  |      **/ | 
			
		
	
		
			
				
					|  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |     @Transactional(rollbackFor = Exception.class) | 
			
		
	
		
			
				
					|  |  |  |     public void transfer(TransferFormDTO formDTO) { | 
			
		
	
		
			
				
					|  |  |  |         //1:更新项目人员关联表数据状态为已处理
 | 
			
		
	
		
			
				
					|  |  |  |         ProjectStaffEntity staffEntity = projectStaffDao.selectById(formDTO.getProjectStaffId()); | 
			
		
	
		
			
				
					|  |  |  |         if (null == staffEntity) { | 
			
		
	
		
			
				
					|  |  |  |             throw new RenException(ProjectConstant.SELECT_PROJECTSTAFF_EXCEPTION); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         staffEntity.setId(formDTO.getProjectStaffId()); | 
			
		
	
		
			
				
					|  |  |  |         staffEntity.setIsHandle(ProjectConstant.HANDLE); | 
			
		
	
		
			
				
					|  |  |  |         if (projectStaffDao.updateById(staffEntity) < NumConstant.ONE) { | 
			
		
	
		
			
				
					|  |  |  |             throw new RenException(ProjectConstant.UPDATE_PROJECTSTAFF_EXCEPTION); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         //2:项目处理进展列表新增数据
 | 
			
		
	
		
			
				
					|  |  |  |         ProjectProcessEntity processEntity = ConvertUtils.sourceToTarget(formDTO, ProjectProcessEntity.class); | 
			
		
	
		
			
				
					|  |  |  |         processEntity.setDepartmentName(staffEntity.getDepartmentName()); | 
			
		
	
		
			
				
					|  |  |  |         processEntity.setStaffId(staffEntity.getStaffId()); | 
			
		
	
		
			
				
					|  |  |  |         processEntity.setOperation(ProjectConstant.OPERATION_TRANSFER); | 
			
		
	
		
			
				
					|  |  |  |         processEntity.setOperationName(ProjectConstant.OPERATION_TRANSFER_NAME); | 
			
		
	
		
			
				
					|  |  |  |         projectProcessDao.insert(processEntity); | 
			
		
	
		
			
				
					|  |  |  |         //3:项目人员关联表新增部门流转数据
 | 
			
		
	
		
			
				
					|  |  |  |         List<TickStaffFormDTO> staffList = formDTO.getStaffList(); | 
			
		
	
		
			
				
					|  |  |  |         if (null == staffList || staffList.size() < NumConstant.ONE) { | 
			
		
	
		
			
				
					|  |  |  |             throw new RenException(ProjectConstant.DATe_EXCEPTION); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         //3.1:调用gov-org服务,获取所有勾选人员对应的组织信息、部门信息、网格信息用于对处理部门和ORG_ID_PATH字段的赋值
 | 
			
		
	
		
			
				
					|  |  |  |         List<String> agencyIdList = staffList.stream().map(TickStaffFormDTO::getAgencyId).collect(Collectors.toList()); | 
			
		
	
		
			
				
					|  |  |  |         agencyIdList = new ArrayList<String>(new LinkedHashSet<>(agencyIdList)); | 
			
		
	
		
			
				
					|  |  |  |         List<String> deptIdList = staffList.stream().map(TickStaffFormDTO::getDepartmentId).collect(Collectors.toList()); | 
			
		
	
		
			
				
					|  |  |  |         deptIdList = new ArrayList<String>(new LinkedHashSet<>(deptIdList)); | 
			
		
	
		
			
				
					|  |  |  |         List<String> gridIdList = staffList.stream().map(TickStaffFormDTO::getGridId).collect(Collectors.toList()); | 
			
		
	
		
			
				
					|  |  |  |         gridIdList = new ArrayList<String>(new LinkedHashSet<>(gridIdList)); | 
			
		
	
		
			
				
					|  |  |  |         AgencyDeptGridFormDTO agencyDeptGridFormDTO = new AgencyDeptGridFormDTO(); | 
			
		
	
		
			
				
					|  |  |  |         agencyDeptGridFormDTO.setAgencyIdList(agencyIdList); | 
			
		
	
		
			
				
					|  |  |  |         agencyDeptGridFormDTO.setDeptIdList(deptIdList); | 
			
		
	
		
			
				
					|  |  |  |         agencyDeptGridFormDTO.setGridIdList(gridIdList); | 
			
		
	
		
			
				
					|  |  |  |         Result<AgencyDeptGridResultDTO> resultDTO = govOrgFeignClient.getAgencyDeptGridList(agencyDeptGridFormDTO); | 
			
		
	
		
			
				
					|  |  |  |         AgencyDeptGridResultDTO agencyDeptGrid = resultDTO.getData(); | 
			
		
	
		
			
				
					|  |  |  |         //3.2:批量新增项目人员关联表数据
 | 
			
		
	
		
			
				
					|  |  |  |         List<ProjectStaffEntity> entityList = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         staffList.forEach(ts->{ | 
			
		
	
		
			
				
					|  |  |  |             ProjectStaffEntity entity = ConvertUtils.sourceToTarget(ts, ProjectStaffEntity.class); | 
			
		
	
		
			
				
					|  |  |  |             entity.setOrgId(ts.getAgencyId()); | 
			
		
	
		
			
				
					|  |  |  |             entity.setProjectId(formDTO.getProjectId()); | 
			
		
	
		
			
				
					|  |  |  |             entity.setProcessId(processEntity.getId()); | 
			
		
	
		
			
				
					|  |  |  |             entity.setIsHandle(ProjectConstant.UNHANDLED); | 
			
		
	
		
			
				
					|  |  |  |             agencyDeptGrid.getAgencyList().forEach(agency->{ | 
			
		
	
		
			
				
					|  |  |  |                 if (ts.getAgencyId().equals(agency.getId())) { | 
			
		
	
		
			
				
					|  |  |  |                     entity.setCustomerId(agency.getCustomerId()); | 
			
		
	
		
			
				
					|  |  |  |                     entity.setOrgIdPath(agency.getPids()+":"+agency.getId()); | 
			
		
	
		
			
				
					|  |  |  |                     entity.setDepartmentName(agency.getOrganizationName()); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             }); | 
			
		
	
		
			
				
					|  |  |  |             if (StringUtils.isNotBlank(ts.getDepartmentId())) { | 
			
		
	
		
			
				
					|  |  |  |                 agencyDeptGrid.getDeptList().forEach(dept -> { | 
			
		
	
		
			
				
					|  |  |  |                     if (ts.getDepartmentId().equals(dept.getId())) { | 
			
		
	
		
			
				
					|  |  |  |                         entity.setDepartmentName(entity.getDepartmentName() + "-" + dept.getDepartmentName()); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 }); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             if (StringUtils.isNotBlank(ts.getGridId())) { | 
			
		
	
		
			
				
					|  |  |  |                 agencyDeptGrid.getGridList().forEach(grid -> { | 
			
		
	
		
			
				
					|  |  |  |                     if (ts.getGridId().equals(grid.getId())) { | 
			
		
	
		
			
				
					|  |  |  |                         entity.setDepartmentName(entity.getDepartmentName() + "-" + grid.getGridName()); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 }); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             entityList.add(entity); | 
			
		
	
		
			
				
					|  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  |         projectStaffService.insertBatch(entityList); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | } |