Commit 03f90606 by 刘鑫

Merge branch 'develop' of https://gitlab.dituhui.com/bsh/project/project into develop

2 parents 02449d49 e7743de8
...@@ -298,6 +298,8 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -298,6 +298,8 @@ public class DispatchServiceImpl implements DispatchService {
public Result<?> dispatchOrderConfirm(String engineerCode, String date, List<String> orderIds) throws BusinessException { public Result<?> dispatchOrderConfirm(String engineerCode, String date, List<String> orderIds) throws BusinessException {
// 派工台确认派单 // 派工台确认派单
LocalDate localDate = TimeUtils.IsoDate2LocalDate(date); LocalDate localDate = TimeUtils.IsoDate2LocalDate(date);
List<String> successList = new ArrayList<>();
List<String> errorList = new ArrayList<>();
EngineerInfoEntity engineer = engineerInfoDao.getByEngineerCode(engineerCode); EngineerInfoEntity engineer = engineerInfoDao.getByEngineerCode(engineerCode);
if (engineer == null) { if (engineer == null) {
...@@ -320,13 +322,12 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -320,13 +322,12 @@ public class DispatchServiceImpl implements DispatchService {
} }
SkillInfoEntity skill = skillInfoDao.getByBrandAndTypeAndSkill(CommonUtil.fixBrand(entity.getBrand()), entity.getType(), entity.getSkill()); SkillInfoEntity skill = skillInfoDao.getByBrandAndTypeAndSkill(CommonUtil.fixBrand(entity.getBrand()), entity.getType(), entity.getSkill());
List<OrderInfoEntity> engineerOrders = orderInfoDao.findByDtAndEngineerCode(localDate, engineer.getEngineerCode()); List<OrderInfoEntity> engineerOrders = orderInfoDao.findByDtAndEngineerCode(localDate, engineer.getEngineerCode());
if (CollectionUtils.isNotEmpty(engineerOrders)) { Result<OrderInfoEntity> entityResult = orderInfoService.insterEngineerOrders(engineerOrders, entity, skill, byTeamId, engineer);
Result<OrderInfoEntity> entityResult = orderInfoService.insterEngineerOrders(engineerOrders, entity, skill, byTeamId, engineer); if (!entityResult.getCode().equals(ResultEnum.SUCCESS.getCode())) {
if (!entityResult.getCode().equals(ResultEnum.SUCCESS.getCode())) { // return Result.failed("当前工程师无法预约合适时间");
return Result.failed("当前工程师无法预约合适时间"); errorList.add(entity.getOrderId());
}
entity = entityResult.getResult();
} }
entity = entityResult.getResult();
entity.setTakeTime(skill.getTakeTime()); entity.setTakeTime(skill.getTakeTime());
entity.setEngineerCode(engineer.getEngineerCode()); entity.setEngineerCode(engineer.getEngineerCode());
entity.setEngineerName(engineer.getName()); entity.setEngineerName(engineer.getName());
...@@ -341,8 +342,16 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -341,8 +342,16 @@ public class DispatchServiceImpl implements DispatchService {
commonService.addOrderEvent(entity.getOrderId(), "", "PEA", "PEA", OrderEventEnum.reassignment.getEvent(), commonService.addOrderEvent(entity.getOrderId(), "", "PEA", "PEA", OrderEventEnum.reassignment.getEvent(),
String.format(OrderEventEnum.reassignment.getMsg(), engineer.getName() + "-" + (ObjectUtil.isNotNull(byTeamId) ? byTeamId.getTeamName() : "")), String.format(OrderEventEnum.reassignment.getMsg(), engineer.getName() + "-" + (ObjectUtil.isNotNull(byTeamId) ? byTeamId.getTeamName() : "")),
"", LocalDateTime.now()); "", LocalDateTime.now());
successList.add(entity.getOrderId());
}
List<String> resultList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(successList)) {
resultList.add(String.format("%s订单指派(改派)成功", String.join(",", successList)));
}
if (CollectionUtils.isNotEmpty(errorList)) {
resultList.add(String.format("%s订单指派(改派)失败,当前工程师无法预约合适时间", String.join(",", errorList)));
} }
return Result.success(null); return Result.success(CollectionUtils.isNotEmpty(resultList) ? String.join(",", resultList) : null);
} }
@Override @Override
......
...@@ -164,13 +164,11 @@ public class OrderAssignImpl implements OrderAssign { ...@@ -164,13 +164,11 @@ public class OrderAssignImpl implements OrderAssign {
SkillInfoEntity skill = skillInfoDao.getByBrandAndTypeAndSkill(CommonUtil.fixBrand(entity.getBrand()), entity.getType(), entity.getSkill()); SkillInfoEntity skill = skillInfoDao.getByBrandAndTypeAndSkill(CommonUtil.fixBrand(entity.getBrand()), entity.getType(), entity.getSkill());
//判断工程师订单当日工单时间安排 //判断工程师订单当日工单时间安排
List<OrderInfoEntity> engineerOrders = orderInfoDao.findByDtAndEngineerCode(entity.getDt(), engineer.getEngineerCode()); List<OrderInfoEntity> engineerOrders = orderInfoDao.findByDtAndEngineerCode(entity.getDt(), engineer.getEngineerCode());
if (CollectionUtils.isNotEmpty(engineerOrders)) { Result<OrderInfoEntity> entityResult = orderInfoService.insterEngineerOrders(engineerOrders, entity, skill, byTeamId, engineer);
Result<OrderInfoEntity> entityResult = orderInfoService.insterEngineerOrders(engineerOrders, entity, skill, byTeamId, engineer); if (!entityResult.getCode().equals(ResultEnum.SUCCESS.getCode())) {
if (!entityResult.getCode().equals(ResultEnum.SUCCESS.getCode())) { return Result.failed("当前工程师工单已满");
return Result.failed("当前工程师工单已满");
}
entity = entityResult.getResult();
} }
entity = entityResult.getResult();
entity.setEngineerCode(engineer.getEngineerCode()); entity.setEngineerCode(engineer.getEngineerCode());
entity.setEngineerName(engineer.getName()); entity.setEngineerName(engineer.getName());
......
...@@ -359,7 +359,6 @@ public class OrderCreateServiceImpl implements OrderCreateService { ...@@ -359,7 +359,6 @@ public class OrderCreateServiceImpl implements OrderCreateService {
entity.setOrgBranchId(teamInfo.getBranchId()); entity.setOrgBranchId(teamInfo.getBranchId());
entity.setOrgGroupId(teamInfo.getGroupId()); entity.setOrgGroupId(teamInfo.getGroupId());
entity.setOrgTeamId(teamInfo.getTeamId()); entity.setOrgTeamId(teamInfo.getTeamId());
entity.setAppointmentStatus(OrderFlowEnum.PRE.name());
//特殊时间段 //特殊时间段
Integer special = CommonUtil.isSpecial(entity.getExpectTimeBegin().toLocalTime(), Integer special = CommonUtil.isSpecial(entity.getExpectTimeBegin().toLocalTime(),
entity.getExpectTimeEnd().toLocalTime(), teamInfo.getWorkOn(), teamInfo.getWorkOff()); entity.getExpectTimeEnd().toLocalTime(), teamInfo.getWorkOn(), teamInfo.getWorkOff());
...@@ -376,7 +375,6 @@ public class OrderCreateServiceImpl implements OrderCreateService { ...@@ -376,7 +375,6 @@ public class OrderCreateServiceImpl implements OrderCreateService {
entity.setIsCutoff(cutoff); entity.setIsCutoff(cutoff);
entity.setIsSpecialTime(special); entity.setIsSpecialTime(special);
entity.setAppointmentMethod(AppointmentMethodEnum.MANUAL.name()); entity.setAppointmentMethod(AppointmentMethodEnum.MANUAL.name());
entity.setAppointmentStatus(OrderFlowEnum.INIT.name());
//发送通知分部消息 //发送通知分部消息
sendMsg(teamInfo.getBranchId(), orderId, entity.getExpectTimeBegin().toLocalDate(), tags, cutoff, special); sendMsg(teamInfo.getBranchId(), orderId, entity.getExpectTimeBegin().toLocalDate(), tags, cutoff, special);
} }
......
...@@ -238,7 +238,9 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -238,7 +238,9 @@ public class OrderInfoServiceImpl implements OrderInfoService {
order.setDt(expectBegin.toLocalDate()); order.setDt(expectBegin.toLocalDate());
order.setExpectTimeBegin(expectBegin); order.setExpectTimeBegin(expectBegin);
order.setExpectTimeEnd(expectEnd); order.setExpectTimeEnd(expectEnd);
order.setExpectTimeDesc(req.getExpectDesc()); if (StringUtils.isNotBlank(req.getExpectDesc())) {
order.setExpectTimeDesc(req.getExpectDesc());
}
order.setTranscend(0); order.setTranscend(0);
order.setOrderStatus(OrderStatusEnum.RESCHEDULED.getCode()); order.setOrderStatus(OrderStatusEnum.RESCHEDULED.getCode());
order.setReschedulingReason(StringUtils.isNotBlank(req.getReschedulingReason()) ? req.getReschedulingReason() : order.getReschedulingReason()); order.setReschedulingReason(StringUtils.isNotBlank(req.getReschedulingReason()) ? req.getReschedulingReason() : order.getReschedulingReason());
...@@ -386,6 +388,14 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -386,6 +388,14 @@ public class OrderInfoServiceImpl implements OrderInfoService {
} }
} }
// 修改技能时处理工单耗时
if (skillUpdate) {
SkillInfoEntity skillInfoEntity = skillInfoDao.getByBrandAndTypeAndSkill(order.getBrand(), order.getType(), order.getSkill());
if (ObjectUtil.isNull(skillInfoEntity)) {
return Result.failed(StatusCodeEnum.ORDER_SKILL_NOT_EXISTS);
}
order.setTakeTime(skillInfoEntity.getTakeTime());
}
//处理一家多单 //处理一家多单
// order = handleMultipleOrders(order); // order = handleMultipleOrders(order);
...@@ -442,15 +452,26 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -442,15 +452,26 @@ public class OrderInfoServiceImpl implements OrderInfoService {
@Transactional @Transactional
@Override @Override
public Result<OrderInfoEntity> insterEngineerOrders(List<OrderInfoEntity> engineerOrders, OrderInfoEntity insertOrder, SkillInfoEntity skillInfo, OrgTeamEntity orgTeam, EngineerInfoEntity engineer) { public Result<OrderInfoEntity> insterEngineerOrders(List<OrderInfoEntity> engineerOrders, OrderInfoEntity insertOrder, SkillInfoEntity skillInfo, OrgTeamEntity orgTeam, EngineerInfoEntity engineer) {
int takeTime = skillInfo.getTakeTime(); // 没有单直接返回
// 获取客户期望时间段
LocalDateTime start = insertOrder.getExpectTimeBegin();
LocalDateTime end = insertOrder.getExpectTimeEnd();
// 获取团队工作起止时间 // 获取团队工作起止时间
String[] teamWorkStartTime = orgTeam.getWorkOn().split(":"); String[] teamWorkStartTime = orgTeam.getWorkOn().split(":");
String[] teamWorkEndTime = orgTeam.getWorkOff().split(":"); String[] teamWorkEndTime = orgTeam.getWorkOff().split(":");
LocalDateTime startTeam = insertOrder.getDt().atTime(Integer.parseInt(teamWorkStartTime[0]), Integer.parseInt(teamWorkStartTime[1]), 0); LocalDateTime startTeam = insertOrder.getDt().atTime(Integer.parseInt(teamWorkStartTime[0]), Integer.parseInt(teamWorkStartTime[1]), 0);
LocalDateTime endTeam = insertOrder.getDt().atTime(Integer.parseInt(teamWorkEndTime[0]), Integer.parseInt(teamWorkEndTime[1]), 0); LocalDateTime endTeam = insertOrder.getDt().atTime(Integer.parseInt(teamWorkEndTime[0]), Integer.parseInt(teamWorkEndTime[1]), 0);
// 获取客户期望时间段
LocalDateTime start = insertOrder.getExpectTimeBegin();
LocalDateTime end = insertOrder.getExpectTimeEnd();
if (CollectionUtils.isEmpty(engineerOrders)) {
// 特殊时间不插单
if (LocalDateTime.now().isBefore(startTeam) || LocalDateTime.now().isAfter(endTeam) || end.isAfter(endTeam) || end.isBefore(startTeam)) {
return Result.failed(insertOrder);
}
insertOrder.setTakeTime(skillInfo.getTakeTime());
insertOrder.setPlanStartTime(insertOrder.getExpectTimeBegin());
insertOrder.setPlanEndTime(insertOrder.getExpectTimeBegin().plusMinutes(skillInfo.getTakeTime()));
return Result.success(insertOrder);
}
int takeTime = skillInfo.getTakeTime();
// 计算最早派工和最晚派工时间 // 计算最早派工和最晚派工时间
LocalDateTime workStartTime = start.isAfter(startTeam) ? start : startTeam; LocalDateTime workStartTime = start.isAfter(startTeam) ? start : startTeam;
LocalDateTime workEndTime = end.isBefore(endTeam) ? end : endTeam; LocalDateTime workEndTime = end.isBefore(endTeam) ? end : endTeam;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!