|
|
@ -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(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|