Commit d0f2a375 by 丁伟峰

Merge remote-tracking branch 'origin/develop' into develop

2 parents 36fd1d7d 072e352b
......@@ -41,6 +41,7 @@ public class EngineerCenterPoiController {
result.setGroup(engineerBusinessService.getGroupInfo(engineerReq));
result.setWarehouse(engineerBusinessService.getWareHouse(result.getGroup().getWarehouseId()));
result.setBlocks(engineerBusinessService.getBlocks(engineerReq));
res = Result.success(result);
} catch (BusinessException e) {
return Result.failed(e.getMessage());
......
package com.dituhui.pea.order.dao;
import com.dituhui.pea.order.entity.EngineerSkillGroupEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
public interface EngineerSkillGroupDao extends JpaRepository<EngineerSkillGroupEntity, Integer> {
List<EngineerSkillGroupEntity> findByEngineerCode(String engineerCode);
List<EngineerSkillGroupEntity> findByEngineerCodeAndStatus(String engineerCode, boolean status);
List<EngineerSkillGroupEntity> findByEngineerCodeInAndStatus(List<String> engineerCodes, boolean status);
List<EngineerSkillGroupEntity> findBySkillGroupCode(String skillGroupCode);
List<EngineerSkillGroupEntity> findBySkillGroupCodeAndStatus(String skillGroupCode, boolean status);
}
......@@ -14,4 +14,6 @@ public interface MapBlockInfoDao extends JpaRepository<MapBlockInfoEntity, Integ
MapBlockInfoEntity findByBlockId(String blockId);
List<MapBlockInfoEntity> findByGroupId(String groupId);
}
......@@ -8,10 +8,13 @@ import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
@Repository
public interface OrderEventDao extends JpaRepository<OrderEventEntity, Integer> {
List<OrderEventEntity> findByOrderId(String orderId);
@Query("select a from OrderEventEntity a join OrderInfoEntity b on a.orderId=b.orderId where b.orgClusterId = :clusterId and DATE(a.createTime) = :date")
Page<OrderEventEntity> findAllByClusterId(String clusterId, Date date, Pageable pageable);
......
......@@ -10,6 +10,8 @@ import java.util.List;
public interface OrderInfoDao extends JpaRepository<OrderInfoEntity, Long> {
OrderInfoEntity getByOrderId(String orderId);
List<OrderInfoEntity> findByOrderId(String orderId);
List<OrderInfoEntity> findByDtAndEngineerCodeIn(LocalDate date, List<String> engineerCodes);
@Query("SELECT o.orderId, s.skillCategory as skillCaption FROM OrderInfoEntity o JOIN SkillInfoEntity s on o.brand=s.brand and o.type=s.type and o.skill=s.skill WHERE o.orderId = :orderId")
......
......@@ -28,7 +28,7 @@ public class EngineerBusinessDTO {
private Group group;
private WareHouse warehouse;
// @JsonIgnore
// private List<Blocks> blocks;
private List<Blocks> blocks;
}
......@@ -59,6 +59,14 @@ public class EngineerBusinessDTO {
private String location;
}
@lombok.Data
public static class Blocks {
private String blockId;
private String blockName;
private String blockData;
private String teamId;
}
@lombok.Data
public static class EngineerCenterUpdateReqDTO {
......
......@@ -12,4 +12,6 @@ public interface EngineerBusinessService {
EngineerBusinessDTO.WareHouse getWareHouse(String wareHouseId);
void updateEngineerCenter(EngineerBusinessDTO.EngineerCenterUpdateReqDTO centerReq );
List<EngineerBusinessDTO.Blocks> getBlocks(EngineerBusinessDTO.Request engineerReq);
}
package com.dituhui.pea.order.service.impl;
import com.dituhui.pea.order.dao.EngineerBusinessDao;
import com.dituhui.pea.order.dao.EngineerInfoDao;
import com.dituhui.pea.order.dao.OrgGroupDao;
import com.dituhui.pea.order.dao.WarehouseInfoDao;
import com.dituhui.pea.order.dao.*;
import com.dituhui.pea.order.dto.EngineerBusinessDTO;
import com.dituhui.pea.order.entity.*;
import com.dituhui.pea.order.service.EngineerBusinessService;
......@@ -37,6 +34,8 @@ public class EngineerBusinessServiceImpl implements EngineerBusinessService {
@Autowired
private WarehouseInfoDao warehouseInfoDao;
@Autowired
private MapBlockInfoDao mapBlockInfoDao;
@Autowired
private JdbcTemplate jdbcTemplate;
......@@ -115,4 +114,18 @@ public class EngineerBusinessServiceImpl implements EngineerBusinessService {
String[] xyArr = location.split(",");
engineerBusinessDao.updateEngineerCenter(centerReq.getAddress(), xyArr[0], xyArr[1], centerReq.getEngineerCode());
}
@Override
public List<EngineerBusinessDTO.Blocks> getBlocks(EngineerBusinessDTO.Request engineerReq) {
List<MapBlockInfoEntity> blockInfoList = mapBlockInfoDao.findByGroupId(engineerReq.getLevelValue());
return blockInfoList.stream().map(item -> {
EngineerBusinessDTO.Blocks block = new EngineerBusinessDTO.Blocks();
block.setBlockId(item.getBlockId());
block.setBlockName(item.getBlockName());
block.setBlockData(item.getAreaData());
block.setTeamId(item.getTeamId());
return block;
}).collect(Collectors.toList());
}
}
......@@ -23,32 +23,31 @@ import java.util.stream.Collectors;
public class OrderServiceDetailImpl implements OrderServiceDetail {
@Autowired
private OrderInfoMPDao orderInfoMPDao;
private OrderInfoDao orderInfoDao;
@Autowired
private EngineerInfoMPDao engineerInfoMPDao;
private EngineerInfoDao engineerInfoDao;
@Autowired
private OrderTimelineMPDao orderTimelineMPDao;
@Autowired
private OrderEventMPDao orderEventMPDao;
private OrderEventDao orderEventDao;
@Autowired
private OrgGroupMPDao orgGroupMPDao;
private OrgGroupDao orgGroupDao;
@Autowired
private EngineerSkillGroupMPDao engineerSkillGroupMPDao;
private EngineerSkillGroupDao engineerSkillGroupDao;
@Autowired
private SkillInfoMPDao skillInfoMPDao;
private SkillInfoDao skillInfoDao;
@Transactional
@Override
public Result<?> getOrderServiceDetail(String orderId) {
OrderInfo order = orderInfoMPDao.getByOrderId(orderId);
OrderInfoEntity order = orderInfoDao.getByOrderId(orderId);
List<KV> items = this.packOrderDetail(order);
......@@ -82,7 +81,7 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
public Result<?> getOrderServiceDynamics(String orderId) {
// 获取服务单动态
List<OrderEvent> events = this.queryOrderEvents(orderId);
List<OrderEventEntity> events = orderEventDao.findByOrderId(orderId);
// pack 动态items
List<OrderServiceDynamicsResp.Dynamics> dynamics = this.packOrderDynamics(events);
......@@ -101,7 +100,7 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
OrderAppointmentListResp res = new OrderAppointmentListResp();
// 查询预约单列表
List<OrderInfo> orders = orderInfoMPDao.selectByOrderId(orderId);
List<OrderInfoEntity> orders = orderInfoDao.findByOrderId(orderId);
if (orders.isEmpty()) {
// 没有指派单列表,返回
res.setOrderId(orderId);
......@@ -111,15 +110,15 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
// 获取工程师基础信息列表
Set<String> set = new HashSet<>();
orders.stream().map(OrderInfo::getEngineerCode).forEach(set::add);
orders.stream().map(OrderInfo::getEngineerCodeSub).forEach(set::add);
orders.stream().map(OrderInfoEntity::getEngineerCode).forEach(set::add);
orders.stream().map(OrderInfoEntity::getEngineerCodeSub).forEach(set::add);
List<String> engineerCodes = new ArrayList<>(set);
HashMap<String, EngineerInfo> egInfo = this.getEngineerInfos(engineerCodes);
HashMap<String, EngineerInfoEntity> egInfo = this.getEngineerInfos(engineerCodes);
// 获取groupIds 和 group信息
List<String> groupIds = egInfo.values().stream().map(EngineerInfo::getGroupId).collect(Collectors.toList());
HashMap<String, OrgGroup> groups = this.queryOrgGroups(groupIds);
List<String> groupIds = egInfo.values().stream().map(EngineerInfoEntity::getGroupId).collect(Collectors.toList());
HashMap<String, OrgGroupEntity> groups = this.queryOrgGroups(groupIds);
// 获取工程师技能列表<engineerCode, skills>
Map<String, String> egSkill = this.getEngineerSkills(engineerCodes);
......@@ -127,13 +126,13 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
// 获取subOrder订单timeline
Map<String, List<OrderTimeline>> timelines = this.getOrderTimelines(orderId);
Comparator<OrderInfo> dtDesc = Comparator.comparing(OrderInfo::getDt).reversed();
List<OrderInfo> results = orders.stream().sorted(dtDesc).collect(Collectors.toList());
Comparator<OrderInfoEntity> dtDesc = Comparator.comparing(OrderInfoEntity::getDt).reversed();
List<OrderInfoEntity> results = orders.stream().sorted(dtDesc).collect(Collectors.toList());
LocalDate lastDt = results.get(0).getDt(); //最新预约
List<OrderAppointmentListResp.OrderAppointment> items = new ArrayList<>();
for (OrderInfo o : results) {
EngineerInfo eg = egInfo.getOrDefault(o.getEngineerCode(), null);
for (OrderInfoEntity o : results) {
EngineerInfoEntity eg = egInfo.getOrDefault(o.getEngineerCode(), null);
if(eg == null) {
log.warn("未获得工程师{}基础信息, 订单:{}", o.getEngineerCode(), o.getOrderId());
continue;
......@@ -155,7 +154,7 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
OrderAppointmentListResp.OrderAppointment item = new OrderAppointmentListResp.OrderAppointment();
item.setTitle(title);
item.setEngineerCode(o.getEngineerCode());
item.setExpectTime(TimeUtils.IsoTimestamp2DateTime(o.getExpectTimeBegin()));
item.setExpectTime(TimeUtils.IsoLocalDateTime2String(o.getExpectTimeBegin()));
item.setTimelines(this.packOrderTimeline(timelines.getOrDefault(o.getSubId(), null)));
item.setItems(this.packEngineerItems(eg, skill, groups.get(eg.getGroupId())));
......@@ -173,7 +172,7 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
List<String> block = new ArrayList<>();
// 获取订单详情
OrderInfo order = orderInfoMPDao.getByOrderId(orderId);
OrderInfoEntity order = orderInfoDao.getByOrderId(orderId);
OrderTeamBlockResp res = new OrderTeamBlockResp();
res.setOrderId(orderId);
......@@ -183,37 +182,29 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
return Result.success(res);
}
private List<OrderEvent> queryOrderEvents(String orderId) {
LambdaQueryWrapper<OrderEvent> lqw = new LambdaQueryWrapper<>();
lqw.eq(OrderEvent::getOrderId, orderId);
return orderEventMPDao.selectList(lqw);
}
private HashMap<String, OrgGroup> queryOrgGroups(List<String> groupIds) {
HashMap<String, OrgGroup> map = new HashMap<>();
private HashMap<String, OrgGroupEntity> queryOrgGroups(List<String> groupIds) {
HashMap<String, OrgGroupEntity> map = new HashMap<>();
if (groupIds.isEmpty()) {
return map;
}
LambdaQueryWrapper<OrgGroup> lqw = new LambdaQueryWrapper<>();
lqw.in(OrgGroup::getGroupId, groupIds);
List<OrgGroup> records = orgGroupMPDao.selectList(lqw);
for (OrgGroup r : records) {
List<OrgGroupEntity> records = orgGroupDao.findByGroupIdIn(groupIds);
for (OrgGroupEntity r : records) {
map.put(r.getGroupId(), r);
}
return map;
}
private HashMap<String, EngineerInfo> getEngineerInfos(List<String> egCodes) {
private HashMap<String, EngineerInfoEntity> getEngineerInfos(List<String> egCodes) {
// 获取工程师信息列表
HashMap<String, EngineerInfo> map = new HashMap<>();
HashMap<String, EngineerInfoEntity> map = new HashMap<>();
if (egCodes.isEmpty()) {
return map;
}
LambdaQueryWrapper<EngineerInfo> lqw = new LambdaQueryWrapper<>();
lqw.in(EngineerInfo::getEngineerCode, egCodes);
List<EngineerInfo> rows = engineerInfoMPDao.selectList(lqw);
List<EngineerInfoEntity> rows = engineerInfoDao.findByEngineerCodeIn(egCodes);;
for (EngineerInfo row : rows) {
for (EngineerInfoEntity row : rows) {
map.put(row.getEngineerCode(), row);
}
return map;
......@@ -226,25 +217,22 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
if (egCodes.isEmpty()) {
return map;
}
LambdaQueryWrapper<EngineerSkillGroup> lqw = new LambdaQueryWrapper<>();
lqw.select(EngineerSkillGroup::getEngineerCode, EngineerSkillGroup::getSkillGroupCode);
lqw.in(EngineerSkillGroup::getEngineerCode, egCodes);
lqw.eq(EngineerSkillGroup::getStatus, 1);
List<EngineerSkillGroup> rows = engineerSkillGroupMPDao.selectList(lqw);
List<EngineerSkillGroupEntity> rows = engineerSkillGroupDao.findByEngineerCodeInAndStatus(egCodes, true);
// 根据engineerCode排序
Comparator<EngineerSkillGroup> cmp = Comparator.comparing(EngineerSkillGroup::getEngineerCode);
List<EngineerSkillGroup> sortedResults = rows.stream().sorted(cmp).collect(Collectors.toList());
Comparator<EngineerSkillGroupEntity> cmp = Comparator.comparing(EngineerSkillGroupEntity::getEngineerCode);
List<EngineerSkillGroupEntity> sortedResults = rows.stream().sorted(cmp).collect(Collectors.toList());
// 根据engineerCode分组
Map<String, List<EngineerSkillGroup>> results = sortedResults.stream().collect(Collectors.groupingBy(EngineerSkillGroup::getEngineerCode));
Map<String, List<EngineerSkillGroupEntity>> results = sortedResults.stream().collect(
Collectors.groupingBy(EngineerSkillGroupEntity::getEngineerCode));
// 获取所有技能
HashMap<String, String> skills = this.queryAllSkills();
for (Map.Entry<String, List<EngineerSkillGroup>> entry : results.entrySet()) {
for (Map.Entry<String, List<EngineerSkillGroupEntity>> entry : results.entrySet()) {
String engineerCode = entry.getKey();
List<String> engineerSkills = new ArrayList<>();
for (EngineerSkillGroup r : entry.getValue()) {
for (EngineerSkillGroupEntity r : entry.getValue()) {
String skill = skills.getOrDefault(r.getSkillGroupCode(), "");
if (skill.isEmpty()) {
continue;
......@@ -275,15 +263,15 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
private HashMap<String, String> queryAllSkills() {
HashMap<String, String> map = new HashMap<>();
List<SkillInfo> records = skillInfoMPDao.selectList(null);
List<SkillInfoEntity> records = skillInfoDao.findAll();
Comparator<SkillInfo> cmp = Comparator.comparing(SkillInfo::getSkillGroupCode);
List<SkillInfo> sortedResults = records.stream().sorted(cmp).collect(Collectors.toList());
Map<String, List<SkillInfo>> results = sortedResults.stream().collect(Collectors.groupingBy(SkillInfo::getSkillGroupCode));
for (Map.Entry<String, List<SkillInfo>> entry : results.entrySet()) {
Comparator<SkillInfoEntity> cmp = Comparator.comparing(SkillInfoEntity::getSkillGroupCode);
List<SkillInfoEntity> sortedResults = records.stream().sorted(cmp).collect(Collectors.toList());
Map<String, List<SkillInfoEntity>> results = sortedResults.stream().collect(Collectors.groupingBy(SkillInfoEntity::getSkillGroupCode));
for (Map.Entry<String, List<SkillInfoEntity>> entry : results.entrySet()) {
String skillGroupCode = entry.getKey();
HashSet<String> categories = new HashSet<>();
for (SkillInfo s : entry.getValue()) {
for (SkillInfoEntity s : entry.getValue()) {
categories.add(String.format("%s%s", s.getTypeCategory(), s.getSkillCategory()));
}
List<String> skills = new ArrayList<>(categories);
......@@ -292,7 +280,7 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
return map;
}
private List<KV> packEngineerItems(EngineerInfo eg, String skill, OrgGroup group) {
private List<KV> packEngineerItems(EngineerInfoEntity eg, String skill, OrgGroupEntity group) {
// 获取工程师信息
List<KV> items = new ArrayList<>();
......@@ -338,7 +326,7 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
return items;
}
private List<KV> packOrderDetail(OrderInfo order) {
private List<KV> packOrderDetail(OrderInfoEntity order) {
List<KV> items = new ArrayList<>();
items.add(this.packOrderItem("客户姓名", order.getName()));
items.add(this.packOrderItem("客户电话", order.getPhone()));
......@@ -347,26 +335,26 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
items.add(this.packOrderItem("设备", order.getType()));
items.add(this.packOrderItem("服务", order.getSkill()));
items.add(this.packOrderItem("故障描述", order.getFaultDescribe()));
items.add(this.packOrderItem("意向时间", TimeUtils.IsoTimestamp2DateTime(order.getExpectTimeBegin())));
items.add(this.packOrderItem("意向时间", TimeUtils.IsoLocalDateTime2String(order.getExpectTimeBegin())));
items.add(this.packOrderItem("时间要求", order.getExpectTimeDesc()));
items.add(this.packOrderItem("预约方式", order.getSource()));
items.add(this.packOrderItem("标签", order.getTags()));
items.add(this.packOrderItem("创建时间", TimeUtils.IsoTimestamp2DateTime(order.getCreateTime())));
items.add(this.packOrderItem("创建时间", TimeUtils.IsoLocalDateTime2String(order.getCreateTime())));
items.add(this.packOrderItem("备注", order.getApplyNote()));
return items;
}
private List<OrderServiceDynamicsResp.Dynamics> packOrderDynamics(List<OrderEvent> events) {
private List<OrderServiceDynamicsResp.Dynamics> packOrderDynamics(List<OrderEventEntity> events) {
List<OrderServiceDynamicsResp.Dynamics> dynamics = new ArrayList<>();
// 根据happen排序
Comparator<OrderEvent> happen = Comparator.comparing(OrderEvent::getHappen);
List<OrderEvent> results = events.stream().sorted(happen).collect(Collectors.toList());
for (OrderEvent o : results) {
Comparator<OrderEventEntity> happen = Comparator.comparing(OrderEventEntity::getHappen);
List<OrderEventEntity> results = events.stream().sorted(happen).collect(Collectors.toList());
for (OrderEventEntity o : results) {
OrderServiceDynamicsResp.Dynamics d = new OrderServiceDynamicsResp.Dynamics();
d.setTitle(o.getEvent());
d.setSubTitle(String.format("操作人: %s", o.getOperatorName()));
d.setTime(TimeUtils.IsoTimestamp2DateTime(o.getHappen()));
d.setTime(TimeUtils.IsoLocalDateTime2String(o.getHappen()));
d.setMemo(o.getMemo());
dynamics.add(d);
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!