|  |  | @ -22,30 +22,39 @@ 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.exception.EpmetErrorCode; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.exception.ErrorCode; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.exception.RenException; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.constant.NumConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.page.PageData; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.security.dto.TokenDto; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.ConvertUtils; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.Result; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dao.CustomerGridDao; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dao.CustomerStaffGridDao; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.*; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.*; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.AddGridResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.CustomerGridByUserIdResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.CustomerGridForStrangerResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.GridDetailResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.*; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.CustomerGridDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.CustomerStaffGridDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.StaffGridListDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.CommonAgencyIdFormDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.CustomerGridFormDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.ListCustomerGridFormDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.entity.CustomerGridEntity; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.feign.EpmetUserFeignClient; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.redis.CustomerGridRedis; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.service.CustomerGridService; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.service.CustomerStaffGridService; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.util.ModuleConstant; | 
			
		
	
		
			
				
					|  |  |  | import lombok.extern.slf4j.Slf4j; | 
			
		
	
		
			
				
					|  |  |  | import org.apache.commons.lang3.StringUtils; | 
			
		
	
		
			
				
					|  |  |  | import org.slf4j.Logger; | 
			
		
	
		
			
				
					|  |  |  | import org.slf4j.LoggerFactory; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.stereotype.Service; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | import java.util.*; | 
			
		
	
		
			
				
					|  |  |  | import java.util.stream.Collectors; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | /** | 
			
		
	
		
			
				
					|  |  |  |  * 客户网格表 | 
			
		
	
	
		
			
				
					|  |  | @ -54,12 +63,18 @@ import java.util.*; | 
			
		
	
		
			
				
					|  |  |  |  * @since v1.0.0 2020-03-16 | 
			
		
	
		
			
				
					|  |  |  |  */ | 
			
		
	
		
			
				
					|  |  |  | @Service | 
			
		
	
		
			
				
					|  |  |  | @Slf4j | 
			
		
	
		
			
				
					|  |  |  | public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, CustomerGridEntity> implements CustomerGridService { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     private static final Logger logger = LoggerFactory.getLogger(CustomerGridServiceImpl.class); | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private CustomerGridRedis customerGridRedis; | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private EpmetUserFeignClient epmetUserFeignClient; | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private CustomerStaffGridService customerStaffGridService; | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private CustomerStaffGridDao customerStaffGridDao; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |     public PageData<CustomerGridDTO> page(Map<String, Object> params) { | 
			
		
	
	
		
			
				
					|  |  | @ -242,4 +257,163 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu | 
			
		
	
		
			
				
					|  |  |  |         return new Result(); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * @Description 查找指定机构下的网格列表,按照创建时间倒叙取前十个 | 
			
		
	
		
			
				
					|  |  |  |      * @Param CommonAgencyIdFormDTO | 
			
		
	
		
			
				
					|  |  |  |      * @return Result<GridListInfoResultDTO> | 
			
		
	
		
			
				
					|  |  |  |      * @Author wangc | 
			
		
	
		
			
				
					|  |  |  |      * @Date 2020.04.23 14:45 | 
			
		
	
		
			
				
					|  |  |  |      **/ | 
			
		
	
		
			
				
					|  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |     public Result<GridListInfoResultDTO> getGridListByAgency(CommonAgencyIdFormDTO agencyFormDTO) { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //1.查当前机构下网格总数
 | 
			
		
	
		
			
				
					|  |  |  |         int gridCount = baseDao.selectGridCountByAgencyId(agencyFormDTO.getAgencyId()); | 
			
		
	
		
			
				
					|  |  |  |         //2.查当前机构下每个网格的详情,按照创建时间倒叙取前十个
 | 
			
		
	
		
			
				
					|  |  |  |         List<GridBaseInfoResultDTO> gridList = baseDao.selectGridListByAgencyId(agencyFormDTO.getAgencyId(), NumConstant.TEN); | 
			
		
	
		
			
				
					|  |  |  |         //3.封装结果
 | 
			
		
	
		
			
				
					|  |  |  |         GridListInfoResultDTO resultData = new GridListInfoResultDTO(gridCount,gridList); | 
			
		
	
		
			
				
					|  |  |  |         return new Result<GridListInfoResultDTO>().ok(resultData); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * @Description 查找指定机构下的全部网格列表 | 
			
		
	
		
			
				
					|  |  |  |      * @Param CommonAgencyIdFormDTO -> agencyId | 
			
		
	
		
			
				
					|  |  |  |      * @return Result<List<GridBaseInfoResultDTO>> | 
			
		
	
		
			
				
					|  |  |  |      * @Author wangc | 
			
		
	
		
			
				
					|  |  |  |      * @Date 2020.04.24 17:16 | 
			
		
	
		
			
				
					|  |  |  |      **/ | 
			
		
	
		
			
				
					|  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |     public Result<List<GridBaseInfoResultDTO>> getAllGridsByAgency(CommonAgencyIdFormDTO agencyFormDTO) { | 
			
		
	
		
			
				
					|  |  |  |         return new Result<List<GridBaseInfoResultDTO>>().ok(baseDao.selectGridListByAgencyId(agencyFormDTO.getAgencyId(),null)); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * @Description 移除网格工作人员 | 
			
		
	
		
			
				
					|  |  |  |      * @Param CommonGridStaffInfoFormDTO | 
			
		
	
		
			
				
					|  |  |  |      * @return Result | 
			
		
	
		
			
				
					|  |  |  |      * @Author wangc | 
			
		
	
		
			
				
					|  |  |  |      * @Date 2020.04.26 09:48 | 
			
		
	
		
			
				
					|  |  |  |      **/ | 
			
		
	
		
			
				
					|  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |     public Result removeGridStaff(CommonGridStaffInfoFormDTO staffInfoFormDTO) { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         Result<CustomerGridEntity> authResult = authenticateManager(staffInfoFormDTO.getGridId(),staffInfoFormDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |         if(authResult.success()){ | 
			
		
	
		
			
				
					|  |  |  |             //3.移除操作
 | 
			
		
	
		
			
				
					|  |  |  |             //3.1 人员剔除
 | 
			
		
	
		
			
				
					|  |  |  |             CustomerStaffGridDTO staff = new CustomerStaffGridDTO(); | 
			
		
	
		
			
				
					|  |  |  |             staff.setUserId(staffInfoFormDTO.getStaffId()); | 
			
		
	
		
			
				
					|  |  |  |             staff.setGridId(staffInfoFormDTO.getGridId()); | 
			
		
	
		
			
				
					|  |  |  |             staff.setUpdatedBy(staffInfoFormDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |             staff.setDelFlag(NumConstant.ONE); | 
			
		
	
		
			
				
					|  |  |  |             customerStaffGridService.update(staff); | 
			
		
	
		
			
				
					|  |  |  |             //3.2 人数减一
 | 
			
		
	
		
			
				
					|  |  |  |             CustomerGridDTO grid = new CustomerGridDTO(); | 
			
		
	
		
			
				
					|  |  |  |             grid.setId(authResult.getData().getId()); | 
			
		
	
		
			
				
					|  |  |  |             grid.setUpdatedBy(staffInfoFormDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |             grid.setTotalUser(authResult.getData().getTotalUser() == null || authResult.getData().getTotalUser() <= 0 | 
			
		
	
		
			
				
					|  |  |  |                     ? 0 : (authResult.getData().getTotalUser() - 1)); | 
			
		
	
		
			
				
					|  |  |  |             update(grid); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         return new Result().error(); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * @Description 批量添加网格工作人员 | 
			
		
	
		
			
				
					|  |  |  |      * @Param CommonGridStaffListFromDTO | 
			
		
	
		
			
				
					|  |  |  |      * @return Result | 
			
		
	
		
			
				
					|  |  |  |      * @Author wangc | 
			
		
	
		
			
				
					|  |  |  |      * @Date 2020.04.26 09:50 | 
			
		
	
		
			
				
					|  |  |  |      **/ | 
			
		
	
		
			
				
					|  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |     public Result addGridStaffs(CommonGridStaffListFromDTO staffListFormDTO) { | 
			
		
	
		
			
				
					|  |  |  |         //1.校验管理员权限
 | 
			
		
	
		
			
				
					|  |  |  |         Result<CustomerGridEntity> authResult = authenticateManager(staffListFormDTO.getGridId(),staffListFormDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |         if(authResult.success()){ | 
			
		
	
		
			
				
					|  |  |  |             //2.校验人员重复信息,剔除重复人员
 | 
			
		
	
		
			
				
					|  |  |  |             Set<String> existedStaffIds = | 
			
		
	
		
			
				
					|  |  |  |             customerStaffGridDao.distinctGridStaffs(staffListFormDTO.getSelectedList(),staffListFormDTO.getGridId()); | 
			
		
	
		
			
				
					|  |  |  |             Set<String> staffIds = new HashSet<>(staffListFormDTO.getSelectedList()); | 
			
		
	
		
			
				
					|  |  |  |             staffIds.removeAll(existedStaffIds); | 
			
		
	
		
			
				
					|  |  |  |             //3.校验人员是否被禁用
 | 
			
		
	
		
			
				
					|  |  |  |             Result<List<CommonStaffInfoResultDTO>> staffsFeignResult = | 
			
		
	
		
			
				
					|  |  |  |             epmetUserFeignClient.enableStaffMsgList(new CommonUserIdListFormDTO( | 
			
		
	
		
			
				
					|  |  |  |                     new ArrayList<>(staffIds), | 
			
		
	
		
			
				
					|  |  |  |                     authResult.getData().getCustomerId() | 
			
		
	
		
			
				
					|  |  |  |             )); | 
			
		
	
		
			
				
					|  |  |  |             if(staffsFeignResult.success() && null != staffsFeignResult.getData() && staffsFeignResult.getData().size() > 0){ | 
			
		
	
		
			
				
					|  |  |  |                 //4.添加
 | 
			
		
	
		
			
				
					|  |  |  |                 List<String> validStaffIds = | 
			
		
	
		
			
				
					|  |  |  |                         staffsFeignResult.getData() | 
			
		
	
		
			
				
					|  |  |  |                                 .stream() | 
			
		
	
		
			
				
					|  |  |  |                                 .map(CommonStaffInfoResultDTO::getStaffId) | 
			
		
	
		
			
				
					|  |  |  |                                 .collect(Collectors.toList()); | 
			
		
	
		
			
				
					|  |  |  |                 List<CustomerStaffGridDTO> staffs2Insert = new LinkedList<>(); | 
			
		
	
		
			
				
					|  |  |  |                 for(String id : validStaffIds){ | 
			
		
	
		
			
				
					|  |  |  |                     CustomerStaffGridDTO staff2Insert = new CustomerStaffGridDTO(); | 
			
		
	
		
			
				
					|  |  |  |                     staff2Insert.setUserId(id); | 
			
		
	
		
			
				
					|  |  |  |                     staff2Insert.setGridId(staffListFormDTO.getGridId()); | 
			
		
	
		
			
				
					|  |  |  |                     staff2Insert.setCustomerId(authResult.getData().getCustomerId()); | 
			
		
	
		
			
				
					|  |  |  |                     staff2Insert.setCreatedBy(staffListFormDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |                     staff2Insert.setUpdatedBy(staffListFormDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |                     staffs2Insert.add(staff2Insert); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 //4.1 批量新增网格工作人员
 | 
			
		
	
		
			
				
					|  |  |  |                 customerStaffGridDao.insertBatch(staffs2Insert); | 
			
		
	
		
			
				
					|  |  |  |                 CustomerGridDTO grid2Update = new CustomerGridDTO(); | 
			
		
	
		
			
				
					|  |  |  |                 grid2Update.setId(staffListFormDTO.getGridId()); | 
			
		
	
		
			
				
					|  |  |  |                 grid2Update.setUpdatedBy(staffListFormDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |                 grid2Update.setTotalUser( | 
			
		
	
		
			
				
					|  |  |  |                        null == authResult.getData().getTotalUser() ? | 
			
		
	
		
			
				
					|  |  |  |                                validStaffIds.size() : authResult.getData().getTotalUser() + validStaffIds.size() | 
			
		
	
		
			
				
					|  |  |  |                 ); | 
			
		
	
		
			
				
					|  |  |  |                 //4.2 更新网格人数
 | 
			
		
	
		
			
				
					|  |  |  |                 update(grid2Update); | 
			
		
	
		
			
				
					|  |  |  |                 return new Result(); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         return new Result().error(); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * @Description 对管理员身份进行权鉴 | 
			
		
	
		
			
				
					|  |  |  |      * @Param | 
			
		
	
		
			
				
					|  |  |  |      * @return | 
			
		
	
		
			
				
					|  |  |  |      * @Author wangc | 
			
		
	
		
			
				
					|  |  |  |      * @Date 2020.04.26 13:44 | 
			
		
	
		
			
				
					|  |  |  |      **/ | 
			
		
	
		
			
				
					|  |  |  |     private Result<CustomerGridEntity> authenticateManager(String gridId,String userId){ | 
			
		
	
		
			
				
					|  |  |  |         //1.查询网格相关信息
 | 
			
		
	
		
			
				
					|  |  |  |         CustomerGridEntity gridMsg = | 
			
		
	
		
			
				
					|  |  |  |                 baseDao.selectById(gridId); | 
			
		
	
		
			
				
					|  |  |  |         //2.校验权限
 | 
			
		
	
		
			
				
					|  |  |  |         if(null != gridMsg && StringUtils.isNotBlank(gridMsg.getId()) && StringUtils.equals(gridMsg.getDelFlag(),NumConstant.ZERO_STR)){ | 
			
		
	
		
			
				
					|  |  |  |             CommonUserFormDTO userParam = new CommonUserFormDTO(); | 
			
		
	
		
			
				
					|  |  |  |             userParam.setCustomerId(gridMsg.getCustomerId()); | 
			
		
	
		
			
				
					|  |  |  |             userParam.setUserId(userId); | 
			
		
	
		
			
				
					|  |  |  |             Result<StaffRolesResultDTO> staffFeignResult = | 
			
		
	
		
			
				
					|  |  |  |                     epmetUserFeignClient.getCustomerStaffRoles(userParam); | 
			
		
	
		
			
				
					|  |  |  |             StaffRolesResultDTO resultData = staffFeignResult.getData(); | 
			
		
	
		
			
				
					|  |  |  |             if(staffFeignResult.success() && null != resultData && StringUtils.isNotBlank(resultData.getStaffId())){ | 
			
		
	
		
			
				
					|  |  |  |                 if(null != resultData.getRoleList() | 
			
		
	
		
			
				
					|  |  |  |                         && StringUtils.equals(ModuleConstant.ENABLE,resultData.getEnableFlag()) | 
			
		
	
		
			
				
					|  |  |  |                         && resultData.getRoleList().size() > 0 | 
			
		
	
		
			
				
					|  |  |  |                         && resultData.getRoleList().contains(ModuleConstant.MANAGER)){ | 
			
		
	
		
			
				
					|  |  |  |                         return new Result<CustomerGridEntity>().ok(gridMsg); | 
			
		
	
		
			
				
					|  |  |  |                 }else{ | 
			
		
	
		
			
				
					|  |  |  |                     log.error(ModuleConstant.NO_AUTH_OR_DISABLE); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             }else{ | 
			
		
	
		
			
				
					|  |  |  |                 log.error(ModuleConstant.STAFF_INFO_NOT_FOUND); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         }else{ | 
			
		
	
		
			
				
					|  |  |  |             log.error(ModuleConstant.GRID_INFO_NOT_FOUND); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         return new Result<CustomerGridEntity>().error(); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | 
 |