Commit 6a51be14 by wangli

修改

1 parent 2c8a9f36
......@@ -10,6 +10,7 @@ public interface EngineerSkillGroupDao extends JpaRepository<EngineerSkillGroupE
List<EngineerSkillGroupEntity> findByEngineerCode(String engineerCode);
List<EngineerSkillGroupEntity> findByEngineerCodeAndStatus(String engineerCode, boolean status);
List<EngineerSkillGroupEntity> findByEngineerCodeInAndStatus(List<String> engineerCodes, boolean status);
List<EngineerSkillGroupEntity> findByEngineerCodeInAndStatusIn(List<String> engineerCodes, List<Boolean> status);
List<EngineerSkillGroupEntity> findBySkillGroupCode(String skillGroupCode);
List<EngineerSkillGroupEntity> findBySkillGroupCodeAndStatus(String skillGroupCode, boolean status);
}
package com.dituhui.pea.order.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.common.ListUtils;
import com.dituhui.pea.order.common.TimeUtils;
import com.dituhui.pea.order.dao.*;
import com.dituhui.pea.order.dto.*;
import com.dituhui.pea.order.entity.*;
import com.dituhui.pea.order.dao.EngineerBusinessDao;
import com.dituhui.pea.order.dao.EngineerInfoDao;
import com.dituhui.pea.order.dao.EngineerSkillGroupDao;
import com.dituhui.pea.order.dao.OrgGroupDao;
import com.dituhui.pea.order.dto.EngineerBusinessListResp;
import com.dituhui.pea.order.dto.EngineerInfoListResp;
import com.dituhui.pea.order.dto.EngineerSkillListResp;
import com.dituhui.pea.order.entity.EngineerBusinessEntity;
import com.dituhui.pea.order.entity.EngineerInfoEntity;
import com.dituhui.pea.order.entity.EngineerSkillGroupEntity;
import com.dituhui.pea.order.entity.OrgGroupEntity;
import com.dituhui.pea.order.service.EngineerService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.data.domain.Page;
import org.springframework.util.StringUtils;
import javax.persistence.EntityManager;
......@@ -25,9 +31,6 @@ import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaUpdate;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.List;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDateTime;
......@@ -43,9 +46,6 @@ public class EngineerServiceImpl implements EngineerService {
private EngineerInfoDao engineerInfoDao;
@Autowired
private EngineerSkillGroupMPDao engineerSkillGroupMPDao;
@Autowired
private EngineerSkillGroupDao engineerSkillGroupDao;
@Autowired
......@@ -150,17 +150,22 @@ public class EngineerServiceImpl implements EngineerService {
}
// 更新categoryIds状态为1
wrapper.eq(EngineerSkillGroup::getEngineerCode, engineerCode);
wrapper.in(EngineerSkillGroup::getSkillGroupCode, skillGroupIds);
wrapper.set(EngineerSkillGroup::getStatus, 1);
int n = engineerSkillGroupMPDao.update(null, wrapper);
CriteriaBuilder cb1 = entityManager.getCriteriaBuilder();
CriteriaUpdate<EngineerSkillGroupEntity> update1 = cb.createCriteriaUpdate(EngineerSkillGroupEntity.class);
Root<EngineerSkillGroupEntity> root1 = update1.from(EngineerSkillGroupEntity.class);
update1.set(root1.get("status"), 1);
update1.where(
cb1.equal(root1.get("engineerCode"), engineerCode),
root1.get("skillGroupCode").in(skillGroupIds)
);
int n = entityManager.createQuery(update1).executeUpdate();
if (skillGroupIds.size() == n) {
// 更新记录条数等于提交记录条数
return null;
}
// 可能存在engineerSkill表不存在的记录,需要补充录入
List<Integer> statuses = new ArrayList<Integer>(Arrays.asList(1, 0));
List<Boolean> statuses = new ArrayList<Boolean>(Arrays.asList(true, false));
List<String> engineerCodes = new ArrayList<>(Collections.singletonList(engineerCode));
HashMap<String, List<String>> engineerSkills = this.queryEngineerSkills(engineerCodes, statuses);
......@@ -168,12 +173,12 @@ public class EngineerServiceImpl implements EngineerService {
Set<String> sDB = new HashSet<>(engineerSkills.getOrDefault(engineerCode, new ArrayList<>()));
sInput.removeAll(sDB);
for (String skillGroupId : sInput) {
EngineerSkillGroup e = new EngineerSkillGroup();
EngineerSkillGroupEntity e = new EngineerSkillGroupEntity();
e.setEngineerCode(engineerCode);
e.setSkillGroupCode(skillGroupId);
e.setDescription("");
e.setStatus(1);
engineerSkillGroupMPDao.insert(e);
e.setStatus(true);
entityManager.persist(e);
}
return null;
}
......@@ -241,11 +246,11 @@ public class EngineerServiceImpl implements EngineerService {
// 查询技术员所在的groupIds
List<OrgGroupEntity> groups = new ArrayList<>();
if(levelType.equals("cluster")){
if (levelType.equals("cluster")) {
groups = orgGroupDao.findAllByClusterId(levelValue);
} else if (levelType.equals("branch")){
} else if (levelType.equals("branch")) {
groups = orgGroupDao.findAllByBranchId(levelValue);
} else if (levelType.equals("group")){
} else if (levelType.equals("group")) {
groups = orgGroupDao.findAllByGroupId(levelValue);
}
List<String> groupIds = groups.stream().map(OrgGroupEntity::getGroupId).collect(Collectors.toList());
......@@ -290,29 +295,26 @@ public class EngineerServiceImpl implements EngineerService {
return map;
}
private HashMap<String, List<String>> queryEngineerSkills(List<String> engineerCodes, List<Integer> statuses) {
private HashMap<String, List<String>> queryEngineerSkills(List<String> engineerCodes, List<Boolean> statuses) {
// 获取engineerCode对应的技能表, HashMap<engineerCode, List<skillId>>
HashMap<String, List<String>> map = new HashMap<>();
if (engineerCodes.isEmpty()) {
return map;
}
LambdaQueryWrapper<EngineerSkillGroup> lqw = new LambdaQueryWrapper<>();
lqw.in(EngineerSkillGroup::getEngineerCode, engineerCodes);
lqw.in(EngineerSkillGroup::getStatus, statuses);
List<EngineerSkillGroup> records = engineerSkillGroupMPDao.selectList(lqw);
if(records == null || records.isEmpty()) {
List<EngineerSkillGroupEntity> records = engineerSkillGroupDao.findByEngineerCodeInAndStatusIn(engineerCodes, statuses);
if (ListUtils.isEmpty(records)) {
return map;
}
Comparator<EngineerSkillGroup> ec = Comparator.comparing(EngineerSkillGroup::getEngineerCode, String.CASE_INSENSITIVE_ORDER);
List<EngineerSkillGroup> results = records.stream().sorted(ec).collect(Collectors.toList());
Comparator<EngineerSkillGroupEntity> ec = Comparator.comparing(EngineerSkillGroupEntity::getEngineerCode, String.CASE_INSENSITIVE_ORDER);
List<EngineerSkillGroupEntity> results = records.stream().sorted(ec).collect(Collectors.toList());
// 根据engineerCode分组
Map<String, List<EngineerSkillGroup>> g = results.stream().collect(Collectors.groupingBy(EngineerSkillGroup::getEngineerCode));
Map<String, List<EngineerSkillGroupEntity>> g = results.stream().collect(Collectors.groupingBy(EngineerSkillGroupEntity::getEngineerCode));
for (String engineerCode : g.keySet()) {
// 技术员技能ID列表
List<String> skillGroupIds = g.get(engineerCode).stream().map(EngineerSkillGroup::getSkillGroupCode).collect(Collectors.toList());
List<String> skillGroupIds = g.get(engineerCode).stream().map(EngineerSkillGroupEntity::getSkillGroupCode).collect(Collectors.toList());
map.put(engineerCode, skillGroupIds);
}
return map;
......@@ -388,7 +390,7 @@ public class EngineerServiceImpl implements EngineerService {
List<String> engineerCodes = engineers.stream().map(EngineerInfoEntity::getEngineerCode).collect(Collectors.toList());
// 获取技术员的可用技能列表
List<Integer> statuses = Collections.singletonList(1);
List<Boolean> statuses = Collections.singletonList(true);
HashMap<String, List<String>> engineerSkillGroups = this.queryEngineerSkills(engineerCodes, statuses);
List<String> emptySkills = Collections.emptyList();
......@@ -421,7 +423,7 @@ public class EngineerServiceImpl implements EngineerService {
for (EngineerInfoEntity e : engineers) {
EngineerBusinessListResp.EngineerBusiness item = new EngineerBusinessListResp.EngineerBusiness();
EngineerBusinessEntity b = buss.getOrDefault(e.getEngineerCode(), null);
if(b == null){
if (b == null) {
// 若没有配置,则不返回, 由同步程序初始化
continue;
}
......@@ -482,7 +484,7 @@ public class EngineerServiceImpl implements EngineerService {
}
LocalDateTime dtBegin = LocalDateTime.of(LocalDateTime.now().toLocalDate(), tBegin);
LocalDateTime dtEnd;
if(r < 0) {
if (r < 0) {
dtEnd = LocalDateTime.of(LocalDateTime.now().toLocalDate(), tEnd);
} else {
dtEnd = LocalDateTime.of(LocalDateTime.now().plusDays(1).toLocalDate(), tEnd);
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!