Commit a4e18180 by huangjinxin

fix:工程师不限制搜索相关

1 parent 83fd6e55
......@@ -173,6 +173,15 @@ public interface IUser {
* @return
*/
@RequestMapping(value = "/pea-user/orgs", method = RequestMethod.GET)
Result<List<OrgInfo>> orgs(String userId);
Result<List<OrgInfo>> orgs(@RequestParam("userId") String userId);
/**
* 获取用户组织
*
* @param userId 查询条件
* @return
*/
@RequestMapping(value = "/pea-user/orgsNoName", method = RequestMethod.GET)
Result<List<OrgInfo>> orgsNoName(@RequestParam("userId") String userId);
}
......@@ -6,6 +6,7 @@ import com.dituhui.pea.order.common.TimeUtils;
import com.dituhui.pea.order.dto.OrderAssignReq;
import com.dituhui.pea.order.dto.OrderReschedule;
import com.dituhui.pea.order.dto.OrderRevokeAssign;
import com.dituhui.pea.order.dto.param.RecommendEngineersReq;
import com.dituhui.pea.order.service.OrderAssign;
import com.dituhui.pea.order.service.OrderInfoService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -27,14 +28,12 @@ public class OrderAssignController {
private OrderInfoService orderInfoService;
@GetMapping("/order/assign/recommend/engineers")
public Result<?> getOrderAssignRecommendEngineers(
@RequestParam String orderId, @RequestParam(required = false) String key,
@RequestParam(required = false) String distance, @RequestParam(required = false) String recommend) {
public Result<?> getOrderAssignRecommendEngineers(RecommendEngineersReq req) {
//服务单指派-推荐技术员列表
Result<?> res = null;
try {
res = orderAssign.getOrderAssignRecommendEngineers(orderId, key, distance, recommend);
res = orderAssign.getOrderAssignRecommendEngineers(req);
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
......
......@@ -45,6 +45,12 @@ public interface OrgTeamDao extends JpaRepository<OrgTeamEntity, Integer>, JpaSp
public List<OrgTeamEntity> findByTeamIdIn(List<String> ids);
public List<OrgTeamEntity> findByClusterIdIn(List<String> ids);
public List<OrgTeamEntity> findByBranchIdIn(List<String> ids);
public List<OrgTeamEntity> findByGroupIdIn(List<String> ids);
/**
* 获取工程师所在的工作队
*
......
package com.dituhui.pea.order.dto.param;
import lombok.Data;
@Data
public class RecommendEngineersReq {
private String orderId;
private String key;
private String distance;
private String recommend;
private String userId;
}
......@@ -3,6 +3,7 @@ package com.dituhui.pea.order.service;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dto.OrderAssignReq;
import com.dituhui.pea.order.dto.OrderReschedule;
import com.dituhui.pea.order.dto.param.RecommendEngineersReq;
import org.bouncycastle.asn1.cms.TimeStampAndCRL;
import java.sql.Timestamp;
......@@ -12,7 +13,7 @@ import java.time.LocalDateTime;
public interface OrderAssign {
// 服务单指派-推荐技术员列表
Result<?> getOrderAssignRecommendEngineers(String orderId, String key, String distance, String recommend);
Result<?> getOrderAssignRecommendEngineers(RecommendEngineersReq req);
// 服务单指派-指派提交
Result<?> orderAssign(OrderAssignReq req);
......
......@@ -9,11 +9,14 @@ import com.dituhui.pea.order.common.OrderAssignCheck;
import com.dituhui.pea.order.common.TimeUtils;
import com.dituhui.pea.order.dao.*;
import com.dituhui.pea.order.dto.*;
import com.dituhui.pea.order.dto.param.RecommendEngineersReq;
import com.dituhui.pea.order.entity.*;
import com.dituhui.pea.order.enums.*;
import com.dituhui.pea.order.service.*;
import com.dituhui.pea.order.utils.CommonUtil;
import com.dituhui.pea.order.utils.OrderUtil;
import com.dituhui.pea.pojo.user.OrgInfo;
import com.dituhui.pea.user.IUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -79,24 +82,27 @@ public class OrderAssignImpl implements OrderAssign {
@Autowired
private CapacityQueryService capacityQueryService;
@Autowired
private IUser userService;
@Transactional
@Override
public Result<?> getOrderAssignRecommendEngineers(String orderId, String key, String distance, String recommend) {
public Result<?> getOrderAssignRecommendEngineers(RecommendEngineersReq req) {
// 服务单指派-推荐技术员列表
OrderInfoEntity order = orderInfoDao.getByOrderId(orderId);
OrderInfoEntity order = orderInfoDao.getByOrderId(req.getOrderId());
if (order == null) {
throw new BusinessException("订单不存在");
}
String date = TimeUtils.IsoLocalDate2String(order.getDt());
// 获取符合筛选条件的技术员
List<String> engineerCodes = this.searchEngineerCodes(order, distance, key, recommend);
List<String> engineerCodes = this.searchEngineerCodes(order, req.getDistance(), req.getKey(), req.getRecommend(), req.getUserId());
List<EngineerInfoEntity> engineers = engineerInfoDao.findByEngineerCodeIn(engineerCodes);
List<OrderAssignRecommendResp.Engineer> items = new ArrayList<>();
for (EngineerInfoEntity engineer : engineers) {
OrderAssignCheck.Result result = orderAssignCheck.orderAssignCheck(orderId, order.getDt(), engineer.getEngineerCode());
OrderAssignCheck.Result result = orderAssignCheck.orderAssignCheck(req.getOrderId(), order.getDt(), engineer.getEngineerCode());
log.info("指派检查结果:{}", result);
if (result.getIndex() < 0) {
continue;
......@@ -248,8 +254,8 @@ public class OrderAssignImpl implements OrderAssign {
return order;
}
private List<String> searchEngineerCodes(OrderInfoEntity order, String distance, String key, String recommend) {
Set<String> engineerCodes1 = this.searchEngineerByRecommend(order, recommend);
private List<String> searchEngineerCodes(OrderInfoEntity order, String distance, String key, String recommend, String userId) {
Set<String> engineerCodes1 = this.searchEngineerByRecommend(order, recommend, userId);
if (engineerCodes1.isEmpty()) {
log.info("recommend:{}筛选条件未找到技术员", recommend);
return new ArrayList<>();
......@@ -295,27 +301,48 @@ public class OrderAssignImpl implements OrderAssign {
return new ArrayList<>(engineerCodes1);
}
private Set<String> searchEngineerByRecommend(OrderInfoEntity order, String recommend) {
private Set<String> searchEngineerByRecommend(OrderInfoEntity order, String recommend, String userId) {
if (StringUtils.isNotEmpty(recommend) && recommend.equals("team")) {
return orgTeamEngineerDao.findAllByTeamId(order.getOrgTeamId()).stream().map(
OrgTeamEngineerEntity::getEngineerCode).collect(Collectors.toSet());
}
String levelType;
String levelValue;
String levelType = null;
String levelValue = null;
List<OrgTeamEntity> teams = new ArrayList<>();
if (StringUtils.isEmpty(recommend) || recommend.equals("branch")) {
levelType = "branch";
levelValue = order.getOrgBranchId();
} else if (recommend.equals("group")) {
levelType = "group";
levelValue = order.getOrgGroupId();
} else if (recommend.equals("all")) {
levelType = "cluster";
levelValue = order.getOrgClusterId();
} else if (recommend.equals("all") && StringUtils.isNotBlank(userId)) {
Result<List<OrgInfo>> listResult = userService.orgsNoName(userId);
if (CollectionUtils.isEmpty(listResult.getResult())) {
return new HashSet<>();
}
List<OrgInfo> orgInfos = listResult.getResult();
Integer orgLevel = orgInfos.get(0).getOrgLevel();
List<String> collect = orgInfos.stream().map(OrgInfo::getId).collect(Collectors.toList());
switch (orgLevel) {
case -1:
teams = orgTeamDao.findAll();
break;
case 0:
teams = orgTeamDao.findByClusterIdIn(collect);
break;
case 1:
teams = orgTeamDao.findByBranchIdIn(collect);
break;
case 2:
teams = orgTeamDao.findByGroupIdIn(collect);
break;
}
List<String> groupIds = teams.stream().map(OrgTeamEntity::getGroupId).collect(Collectors.toList());
return engineerInfoDao.findByGroupIdIn(groupIds).stream().map(EngineerInfoEntity::getEngineerCode).collect(Collectors.toSet());
} else {
return new HashSet<>();
}
List<OrgTeamEntity> teams = new ArrayList<>();
if (levelType.equals("cluster")) {
teams = orgTeamDao.findAllByClusterId(levelValue);
} else if (levelType.equals("branch")) {
......
......@@ -166,4 +166,11 @@ public class UserController implements IUser {
return Result.success(orgInfos);
}
@Override
public Result<List<OrgInfo>> orgsNoName(String userId) {
List<OrgInfo> orgInfos = userService.orgsNoName(userId);
return Result.success(orgInfos);
}
}
......@@ -887,4 +887,32 @@ public class UserService {
});
return orgInfos;
}
public List<OrgInfo> orgsNoName(String userId) {
List<OrgInfo> orgInfos = new ArrayList<>();
// 获取角色
List<UserRoleEntity> userRoles = userRoleDao.findByUserId(userId);
if (CollectionUtils.isEmpty(userRoles)) {
return null;
}
List<String> ids = userRoles.stream().map(r -> r.getRoleId()).collect(Collectors.toList());
if (ids.contains(Globals.SUPER_ADMIN_ID)) {
OrgInfo orgInfo = new OrgInfo();
orgInfo.setId("admin");
orgInfo.setOrgLevel(-1);
orgInfos.add(orgInfo);
return orgInfos;
}
List<UserOrgEntity> byUserId = userOrgDao.findByUserId(userId);
if (CollectionUtils.isEmpty(byUserId)) {
return orgInfos;
}
byUserId.forEach(e -> {
OrgInfo orgInfo = new OrgInfo();
orgInfo.setId(e.getId());
orgInfo.setOrgLevel(e.getOrgLevel());
orgInfos.add(orgInfo);
});
return orgInfos;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!