Commit 6a51be14 by wangli

修改

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