Commit 5007399f by chamberone

Merge branch 'develop' of https://zhangguoping@gitlab.dituhui.com/bsh/project/pr…

…oject.git into develop
2 parents b6e902ad 1eec3c49
......@@ -10,7 +10,7 @@ import java.util.Map;
*/
public class OrderReschedulingReason {
public static Map<String, List<String>> ReschedulingReasonMap = new HashMap<>() {
public final static Map<String, List<String>> ReschedulingReasonMap = new HashMap<>() {
{
put("服务设备/工具相关", new ArrayList<>() {
{
......@@ -25,7 +25,6 @@ public class OrderReschedulingReason {
add("加单服务,没有所需配件");
add("缺少可用的安装类附件");
add("缺少可用的清洁类产品");
add("缺少可用的清洁类产品");
add("缺少可用的消耗品(生料带、鞋套等)");
add("缺少服务所需纸质工单");
}
......
......@@ -4,6 +4,7 @@ import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.enums.StatusCodeEnum;
import com.dituhui.pea.order.common.jackson.DateUtil;
import com.dituhui.pea.order.common.jackson.JsonUtil;
import com.dituhui.pea.order.dao.TableCodeCheckDao;
import com.dituhui.pea.order.dto.param.BaseDistance;
import com.dituhui.pea.order.dto.param.BaseDistanceParam;
......@@ -62,6 +63,7 @@ public class PeaApiController {
private final TableCodeCheckDao tableCodeCheckDao;
private static final String stage = "{\"orderId\": \"X10001\", \"engineerCode\": \"E12005\", \"engineerName\": \"祝枝山\", \"engineerCodeAssist\": \"E12446\", \"engineerNameAssist\": \"李晓阳\", \"planVisitTime\": \"2023-07-27 12:00:00\", \"realtimeInfo\": {\"engineerLocation\": {\"latitude\": 31.349701, \"longitude\": 120.675945, \"address\": \"江苏省苏州市苏州工业园区和顺路\", \"name\": \"和顺大酒店\"}, \"estimate\": {\"distance\": 2300, \"arriveTime\": \"2023-07-27 12:12:00\"}}}";
/**
* 3.1GET 查询技术员日历
*
......@@ -196,7 +198,11 @@ public class PeaApiController {
*/
@GetMapping("/order/stage/query")
public Result<OrderDTO.StageResult> orderStage(@NotBlank @RequestParam("orderId") String orderId) {
return Result.success(orderCreateService.orderStage(orderId));
OrderDTO.StageResult stageResult = JsonUtil.parse(stage, OrderDTO.StageResult.class).get();
stageResult.setOrderId(orderId);
return Result.success(stageResult);
// return Result.success(orderCreateService.orderStage(orderId));
}
/**
......
......@@ -7,7 +7,6 @@ import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.List;
......@@ -36,4 +35,12 @@ public interface OrgTeamEngineerDao extends JpaRepository<OrgTeamEngineerEntity,
void updateStatusByEngineerCodes(String teamId, List<String> engineerCodes, int status);
List<OrgTeamEngineerEntity> findByEngineerCode(String engineerCode);
/**
* 移除工作队下的所有人员关联关系
*
* @param teamId 工作队
* @return 影响行数
*/
Integer deleteByTeamId(String teamId);
}
package com.dituhui.pea.order.dto;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.util.List;
public class BusinessTeamAddDTO {
......@@ -17,6 +20,8 @@ public class BusinessTeamAddDTO {
/**
* 工作队名称
*/
@NotBlank(message = "工作队名称不能为空")
@Length(min = 1, max = 100, message = "工作队名称长度限制100字符内")
private String teamName;
/**
* 配件仓Id
......
package com.dituhui.pea.order.dto;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.util.List;
public class BusinessTeamUpdateDTO {
......@@ -24,6 +27,8 @@ public class BusinessTeamUpdateDTO {
/**
* 工作队名称
*/
@NotBlank(message = "工作队名称不能为空")
@Length(min = 1, max = 100, message = "工作队名称长度限制100字符内")
private String teamName;
/**
* 配件仓Id
......
package com.dituhui.pea.order.enums;
public enum OrderPeaTagsEnum {
// 特殊时段, 一家多台, 当日加单, 紧急
special("特殊时段"),
cutoff("当日加单"),
multipleOrders("一家多台"),
urgent("紧急");
private String tag;
OrderPeaTagsEnum(String tag) {
this.tag = tag;
}
public String getTag() {
return tag;
}
}
......@@ -40,9 +40,7 @@ import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
......@@ -210,18 +208,31 @@ public class BusinessTeamServiceImpl implements BusinessTeamService {
orgTeamDao.save(entity);
// 技术员列表
if (req.getEngineerCodes() != null && !req.getEngineerCodes().isEmpty()) {
updateTeamEngineers(entity, req.getEngineerCodes());
List<String> engineerCodes = req.getEngineerCodes();
if (engineerCodes != null && !engineerCodes.isEmpty()) {
final String targetTeamId = String.valueOf(entity.getTeamId());
List<String> targetTeamWorkDayOfWeek = List.of(entity.getWorkdays().split(","));
judgeTeam(engineerCodes, targetTeamId, targetTeamWorkDayOfWeek);
//移除原有关系映射
orgTeamEngineerDao.deleteByTeamId(targetTeamId);
//新增新的关系映射
List<OrgTeamEngineerEntity> newRelation = engineerCodes.stream().map(t -> {
OrgTeamEngineerEntity relation = new OrgTeamEngineerEntity();
relation.setTeamId(targetTeamId);
relation.setEngineerCode(t);
relation.setCreateTime(LocalDateTime.now());
relation.setUpdateTime(LocalDateTime.now());
relation.setStatus(1);
return relation;
}).collect(Collectors.toList());
orgTeamEngineerDao.saveAll(newRelation);
}
return Result.success(null);
}
public void updateTeamEngineers(OrgTeamEntity targetTeam, List<String> engineerCodes) {
// 获取现有的工作队和技术员之间的所有关系
final String targetTeamId = String.valueOf(targetTeam.getTeamId());
List<String> targetTeamWorkDayOfWeek = List.of(targetTeam.getWorkdays().split(","));
List<OrgTeamEngineerEntity> existingRelations = orgTeamEngineerDao.findAllByTeamId(targetTeamId);
private void judgeTeam(List<String> engineerCodes, String targetTeamId, List<String> targetTeamWorkDayOfWeek) {
// 查询工程师在其它工作队的工作时间以及当前工作队的工作时间
final String message = "工号为{0}的工程师在{1}工作队的周{2}已有工作日安排";
List<String> warnMessage = new ArrayList<>();
......@@ -247,48 +258,6 @@ public class BusinessTeamServiceImpl implements BusinessTeamService {
if (!CollectionUtils.isEmpty(warnMessage)) {
throw new BusinessException(StringUtils.join(warnMessage, ";"));
}
// 构建新的关系映射
Map<String, OrgTeamEngineerEntity> newRelationsMap = new HashMap<>();
for (String engineerCode : engineerCodes) {
OrgTeamEngineerEntity relation = new OrgTeamEngineerEntity();
relation.setTeamId(targetTeamId);
relation.setEngineerCode(engineerCode);
relation.setCreateTime(LocalDateTime.now());
relation.setUpdateTime(LocalDateTime.now());
relation.setStatus(1);
newRelationsMap.put(engineerCode, relation);
}
// 遍历现有的关系列表,更新关系的最后时间和状态
for (OrgTeamEngineerEntity relation : existingRelations) {
String engineerCode = relation.getEngineerCode();
if (newRelationsMap.containsKey(engineerCode)) {
OrgTeamEngineerEntity newRelation = newRelationsMap.get(engineerCode);
newRelation.setId(relation.getId());
newRelation.setUpdateTime(LocalDateTime.now());
newRelationsMap.put(engineerCode, newRelation);
} else {
// 新的关系不再,设置为0(删除)
relation.setStatus(0);
orgTeamEngineerDao.save(relation);
}
}
// 遍历新的关系映射,创建新的关系
for (OrgTeamEngineerEntity newRelation : newRelationsMap.values()) {
if (!existingRelations.contains(newRelation)) {
// 检查是否存在,已经存在的,只需要set status=1就可以了
OrgTeamEngineerEntity exist = orgTeamEngineerDao.findByTeamIdAndEngineerCode(newRelation.getTeamId(),
newRelation.getEngineerCode());
if (null != exist && exist.getId() != null) {
exist.setStatus(1);
orgTeamEngineerDao.save(exist);
} else {
orgTeamEngineerDao.save(newRelation);
}
}
}
}
@Override
......
package com.dituhui.pea.order.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.enums.StatusCodeEnum;
......@@ -11,10 +12,8 @@ import com.dituhui.pea.order.dto.DispatchEngineerOrderListResp;
import com.dituhui.pea.order.dto.DispatchOrderListReq;
import com.dituhui.pea.order.dto.DispatchOrderListResp;
import com.dituhui.pea.order.entity.*;
import com.dituhui.pea.order.enums.AppointmentMethodEnum;
import com.dituhui.pea.order.enums.OrderFlowEnum;
import com.dituhui.pea.order.enums.OrderGroupEnum;
import com.dituhui.pea.order.enums.OrderStatusEnum;
import com.dituhui.pea.order.enums.*;
import com.dituhui.pea.order.service.CommonService;
import com.dituhui.pea.order.service.DispatchService;
import com.dituhui.pea.order.utils.CommonUtil;
import lombok.extern.slf4j.Slf4j;
......@@ -67,6 +66,9 @@ public class DispatchServiceImpl implements DispatchService {
@Autowired
private OrgTeamEngineerDao orgTeamEngineerDao;
@Autowired
private CommonService commonService;
@Transactional
@Override
public Result<?> getDispatchOrderList(DispatchOrderListReq reqDTO) {
......@@ -308,37 +310,11 @@ public class DispatchServiceImpl implements DispatchService {
entity.setOrgBranchId(byTeamId.getBranchId());
entity.setOrgClusterId(byTeamId.getClusterId());
orderInfoDao.save(entity);
//记录流程
commonService.addOrderEvent(entity.getOrderId(), "", "BEAN", "BEAN", OrderEventEnum.reassignment.getEvent(),
String.format(OrderEventEnum.reassignment.getMsg(), engineer.getName() + "-" + (ObjectUtil.isNotNull(byTeamId) ? byTeamId.getTeamName() : "")),
"", LocalDateTime.now());
}
//
// // 已经指派的订单
// List<OrderInfoEntity> engineerOrders = orderInfoDao.findByDtAndEngineerCode(localDate, engineerCode);
// engineerOrders.sort(Comparator.comparing(OrderInfoEntity::getPlanStartTime)); // 按照planStartTime排序
// List<OrderInfoEntity> orderAppointments = engineerOrders.stream()
// .filter(o -> o.getOrderStatus().equals("NORMAL"))
// .collect(Collectors.toList()); // 过滤,只有NORMAL订单才需要处理,取消订单不需要处理
//
// // TODO,临时处理方案,后续调用派单引擎处理
// OrderRequestScheduler scheduler = new OrderRequestScheduler();
// List<LineSegment> results = scheduler.scheduler(orders, orderAppointments);
// for (LineSegment r : results) {
// String orderId = r.id;
// LocalDateTime planStartTime = scheduler.linePoint2DateTime(r.start, date);
// LocalDateTime planEndTime = scheduler.linePoint2DateTime(r.end, date);
//
// CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
// CriteriaUpdate<OrderInfoEntity> update = criteriaBuilder.createCriteriaUpdate(OrderInfoEntity.class);
// Root<OrderInfoEntity> root = update.from(OrderInfoEntity.class);
// update.set(root.get("planStartTime"), planStartTime);
// update.set(root.get("planEndTime"), planEndTime);
// update.set(root.get("appointmentStatus"), OrderFlowEnum.CONFIRM.name());
// update.set(root.get("appointmentMethod"), "MANUAL");
// update.set(root.get("engineerCode"), engineerCode);
// update.where(
// criteriaBuilder.equal(root.get("orderId"), orderId),
// criteriaBuilder.equal(root.get("dt"), localDate)
// );
// entityManager.createQuery(update).executeUpdate();
// }
return Result.success(null);
}
......
......@@ -9,20 +9,11 @@ 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.CapacityQueryDTO;
import com.dituhui.pea.order.dto.param.Location;
import com.dituhui.pea.order.dto.param.OrderDTO;
import com.dituhui.pea.order.dto.param.OrgTeamInfo;
import com.dituhui.pea.order.entity.*;
import com.dituhui.pea.order.enums.AppointmentMethodEnum;
import com.dituhui.pea.order.enums.OrderFlowEnum;
import com.dituhui.pea.order.enums.OrderStatusEnum;
import com.dituhui.pea.order.enums.ServiceStatusEnum;
import com.dituhui.pea.order.enums.*;
import com.dituhui.pea.order.service.*;
import com.dituhui.pea.order.utils.CommonUtil;
import com.dituhui.pea.pojo.saas.req.AdministrativeDistrictReq;
import com.dituhui.pea.pojo.saas.resp.AdministrativeDistrictResp;
import com.dituhui.pea.util.DateUtil;
import com.dituhui.pea.order.utils.OrderUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -35,7 +26,6 @@ import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
......@@ -170,7 +160,7 @@ public class OrderAssignImpl implements OrderAssign {
}
OrgTeamEntity byTeamId = orgTeamDao.getByTeamId(orgTeamEngineers.get(0).getTeamId());
if (entity != null && !entity.getAppointmentStatus().equals("NOT_ASSIGNED") && entity.getEngineerCode().equals(req.getEngineerCode())) {
if (entity != null && !entity.getAppointmentStatus().equals("NOT_ASSIGNED") && StringUtils.isNotBlank(entity.getEngineerCode()) && entity.getEngineerCode().equals(req.getEngineerCode())) {
throw new BusinessException(String.format("订单已指派个技术员[%s], 不必重复指派给同一个技术员", engineer.getName()));
}
......@@ -190,28 +180,28 @@ public class OrderAssignImpl implements OrderAssign {
// entity.setEngineerCode(engineer.getEngineerCode());
// orderInfoDao.save(order);
// 工单变更登记
commonService.addOrderEvent(req.getOrderId(), "", "PEA-WEB", req.getOperator(), OrderStatusEnum.ASSIGN.getDescription(), OrderStatusEnum.ASSIGN.getDescription(), "");
commonService.addOrderEvent(entity.getOrderId(), "", "BEAN", "BEAN", OrderEventEnum.reassignment.getEvent(),
String.format(OrderEventEnum.reassignment.getMsg(), engineer.getName() + "-" + (ObjectUtil.isNotNull(byTeamId) ? byTeamId.getTeamName() : "")),
"", LocalDateTime.now());
return Result.success(null);
}
@Override
@Transactional
public Result<?> orderRevokeAssign(String orderId) throws BusinessException {
// 放回工单池
OrderInfoEntity order = orderInfoDao.getByOrderId(orderId);
if (order == null) {
throw new BusinessException("订单不存在");
return Result.failed("订单不存在");
}
// 更新order_request表为未指派
order.setAppointmentStatus(OrderFlowEnum.INIT.name());
entityManager.merge(order);
// 操作员ID TODO-用户系统
// 登记事件
commonService.addOrderEvent(orderId, "", "PEA-WEB", "123", "放回工单池", "放回工单池", "");
order.setServiceStatus(OrderFlowEnum.INIT.name());
order = OrderUtil.handleErrorOrder(order);
orderInfoDao.save(order);
commonService.addOrderEvent(orderId, "", "PEA", "PEA", OrderEventEnum.backOrderPool.getEvent(), OrderEventEnum.backOrderPool.getMsg(), "");
return Result.success(null);
}
......
......@@ -51,10 +51,7 @@ import com.dituhui.pea.order.entity.OrgBranchEntity;
import com.dituhui.pea.order.entity.OrgTeamEngineerEntity;
import com.dituhui.pea.order.entity.OrgTeamEntity;
import com.dituhui.pea.order.entity.SkillInfoEntity;
import com.dituhui.pea.order.enums.AppointmentMethodEnum;
import com.dituhui.pea.order.enums.OrderEventEnum;
import com.dituhui.pea.order.enums.OrderFlowEnum;
import com.dituhui.pea.order.enums.OrderStatusEnum;
import com.dituhui.pea.order.enums.*;
import com.dituhui.pea.order.service.CommonService;
import com.dituhui.pea.order.service.FendanService;
import com.dituhui.pea.order.service.MsgService;
......@@ -307,6 +304,19 @@ public class OrderCreateServiceImpl implements OrderCreateService {
entity.setCity(adminDistrict.getResult().getSubNames().getCity());
entity.setCounty(adminDistrict.getResult().getSubNames().getCounty());
}
List<String> tags = req.getOrderTags();
// 处理技能和标签
entity.setTakeTime(skillInfoEntity.getTakeTime());
String joinTags = CollectionUtils.isEmpty(req.getOrderTags()) ? "" : String.join(",", req.getOrderTags());
entity.setBeanTags(joinTags);
entity.setIsMultiple(joinTags.contains("重物搬运") ? 1 : 0);
entity.setBeanPriority(req.getPriority());
if (req.getPriority().equals("1") && !DateUtil.judgeTimeIsToday(entity.getExpectTimeBegin())) {
entity.setAppointmentMethod(AppointmentMethodEnum.AUTO_NOW.name());
tags.add(OrderPeaTagsEnum.urgent.getTag());
//发送通知分部消息
// sendMsg(entity.getOrgBranchId(), orderId, entity.getExpectTimeBegin().toLocalDate());
}
// 处理指派工程师
entity.setIsAppointEngineer(req.getIsAppointEngineer());
......@@ -353,11 +363,11 @@ public class OrderCreateServiceImpl implements OrderCreateService {
entity.setOrgClusterId(branchEntity.getClusterId());
entity.setOrgBranchId(branchEntity.getBranchId());
entity.setAppointmentMethod(AppointmentMethodEnum.MANUAL.name());
//发送通知分部消息
sendMsg(branchEntity.getBranchId(), orderId, entity.getExpectTimeBegin().toLocalDate());
Integer cutoff = CommonUtil.isCutoff(entity.getExpectTimeBegin(), null);
entity.setIsCutoff(cutoff);
//发送通知分部消息
sendMsg(branchEntity.getBranchId(), orderId, entity.getExpectTimeBegin().toLocalDate(), tags, cutoff, 0);
} else {
// 根据分单工作队,填写clusterId/branchId/groupId/teamId等
OrgTeamInfo teamInfo = fendanResult.getResult();
......@@ -384,7 +394,7 @@ public class OrderCreateServiceImpl implements OrderCreateService {
entity.setAppointmentMethod(AppointmentMethodEnum.MANUAL.name());
entity.setAppointmentStatus(OrderFlowEnum.INIT.name());
//发送通知分部消息
sendMsg(teamInfo.getBranchId(), orderId, entity.getExpectTimeBegin().toLocalDate());
sendMsg(teamInfo.getBranchId(), orderId, entity.getExpectTimeBegin().toLocalDate(), tags, cutoff, special);
}
}
}
......@@ -417,18 +427,6 @@ public class OrderCreateServiceImpl implements OrderCreateService {
entity.setBeanSubStatus("");
entity.setWorkshop(false);
// 处理技能和标签
entity.setTakeTime(skillInfoEntity.getTakeTime());
String joinTags = CollectionUtils.isEmpty(req.getOrderTags()) ? "" : String.join(",", req.getOrderTags());
entity.setBeanTags(joinTags);
entity.setIsMultiple(joinTags.contains("重物搬运") ? 1 : 0);
entity.setBeanPriority(req.getPriority());
if (req.getPriority().equals("1") && !DateUtil.judgeTimeIsToday(entity.getExpectTimeBegin())) {
entity.setAppointmentMethod(AppointmentMethodEnum.AUTO_NOW.name());
//发送通知分部消息
// sendMsg(entity.getOrgBranchId(), orderId, entity.getExpectTimeBegin().toLocalDate());
}
//一家多单
Result<String> addMultipleOrders = orderInfoService.addMultipleOrders(entity.getDt(), location.getAddressId(), orderId);
entity.setMultipleOrders(addMultipleOrders.getResult());
......@@ -443,12 +441,18 @@ public class OrderCreateServiceImpl implements OrderCreateService {
return Result.success(null);
}
private void sendMsg(String branchId, String orderId, LocalDate toLocalDate) {
private void sendMsg(String branchId, String orderId, LocalDate toLocalDate, List<String> tags, Integer cutoff, Integer special) {
if (cutoff == 1) {
tags.add(OrderPeaTagsEnum.cutoff.getTag());
}
if (special == 1) {
tags.add(OrderPeaTagsEnum.special.getTag());
}
MsgDTO msgDTO = new MsgDTO();
msgDTO.setBranchId(branchId);
msgDTO.setType(0);
msgDTO.setOrderIds(orderId);
msgDTO.setContent("有1条预约日期在" + toLocalDate + "的工单需人工外理");
msgDTO.setContent(String.format("有1条预约日期在%s的工单需人工外理,标签是(%s),单号:%S", toLocalDate, String.join(",", tags), orderId));
msgService.add(msgDTO);
}
......@@ -458,6 +462,7 @@ public class OrderCreateServiceImpl implements OrderCreateService {
.map(EngineerInfoEntity::getEngineerCode).collect(Collectors.toList());
List<String> matchEngineerCodes = engineerSkillDao.findAllByBrandAndTypeAndSkillAndEngineerCodeIn(thisOrderEntity.getBrand(), thisOrderEntity.getType(), thisOrderEntity.getSkill(), engineerCodes).stream()
.map(EngineerSkillEntity::getEngineerCode).collect(Collectors.toList());
String assignEngineerCode = null;
OrderAssignCheck.Result checkResult = null;
log.info("=== 准备调用指派,候选的技术员列表: {}", matchEngineerCodes);
......
......@@ -13,12 +13,10 @@ import com.dituhui.pea.order.dto.MsgDTO;
import com.dituhui.pea.order.dto.OrderReschedule;
import com.dituhui.pea.order.dto.param.*;
import com.dituhui.pea.order.entity.*;
import com.dituhui.pea.order.enums.AppointmentMethodEnum;
import com.dituhui.pea.order.enums.BeanServiceFlowEnum;
import com.dituhui.pea.order.enums.OrderStatusEnum;
import com.dituhui.pea.order.enums.ServiceStatusEnum;
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.saas.req.AdministrativeDistrictReq;
import com.dituhui.pea.pojo.saas.resp.AdministrativeDistrictResp;
import com.dituhui.pea.util.DateUtil;
......@@ -32,8 +30,6 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
......@@ -157,7 +153,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
}
orderInfoDao.save(orderInfo);
//记录流程
commonService.addOrderEvent(request.getOrderId(), "", "BEAN", "BEAN", OrderStatusEnum.NORMAL.getDescription(), request.getStage(), "", LocalDateTimeUtil.of(request.getHappen()));
// commonService.addOrderEvent(request.getOrderId(), "", "BEAN", "BEAN", OrderStatusEnum.NORMAL.getDescription(), request.getStage(), "", LocalDateTimeUtil.of(request.getHappen()));
} else if (request.getOrderStatus().equalsIgnoreCase(OrderStatusEnum.CANCELED.getCode())) {
orderInfo.setServiceStatus(BeanServiceFlowEnum.CANCELED.getStatus());
orderInfo.setOrderStatus(OrderStatusEnum.CANCELED.getCode());
......@@ -170,9 +166,21 @@ public class OrderInfoServiceImpl implements OrderInfoService {
if (!deleteMultipleOrders.getCode().equals(ResultEnum.SUCCESS.getCode())) {
throw new BusinessException("改约日期失败");
}
OrgGroupEntity orgGroupEntity = null;
if (StringUtils.isNotBlank(orderInfo.getOrgGroupId())) {
orgGroupEntity = orgGroupDao.getByGroupId(orderInfo.getOrgGroupId());
}
OrgTeamEntity orgTeamEntity = null;
if (StringUtils.isNotBlank(orderInfo.getOrgTeamId())) {
orgTeamEntity = orgTeamDao.getByTeamId(orderInfo.getOrgTeamId());
}
String engineerName = orderInfo.getEngineerName();
orderInfoDao.save(orderInfo);
//记录流程
commonService.addOrderEvent(request.getOrderId(), "", "BEAN", "BEAN", OrderStatusEnum.CANCELED.getDescription(), request.getStage(), "", LocalDateTimeUtil.of(request.getHappen()));
commonService.addOrderEvent(request.getOrderId(), "", "BEAN", "BEAN", OrderEventEnum.cancel.getEvent(),
String.format(OrderEventEnum.cancel.getMsg(), engineerName + "-" + (ObjectUtil.isNotNull(orgTeamEntity) ? orgTeamEntity.getTeamName() : "")),
"", LocalDateTimeUtil.of(request.getHappen()));
} else if (request.getOrderStatus().equalsIgnoreCase(OrderStatusEnum.RESCHEDULED.getCode())) {
//组装改约接口
OrderReschedule reschedule = new OrderReschedule();
......@@ -189,6 +197,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
if (StringUtils.isNotBlank(request.getDescription())) {
reschedule.setDescription(request.getDescription());
}
reschedule.setOperator("BEAN");
return this.orderReschedule(reschedule);
}
......@@ -222,9 +231,19 @@ public class OrderInfoServiceImpl implements OrderInfoService {
order.setExpectTimeDesc(req.getExpectDesc());
order.setOrderStatus(OrderStatusEnum.RESCHEDULED.getCode());
boolean skillUpdate = false;
if (CollectionUtils.isEmpty(req.getOrderTags())) {
OrgGroupEntity orgGroupEntity = null;
if (StringUtils.isNotBlank(order.getOrgGroupId())) {
orgGroupEntity = orgGroupDao.getByGroupId(order.getOrgGroupId());
}
OrgTeamEntity orgTeamEntity = null;
if (StringUtils.isNotBlank(order.getOrgTeamId())) {
orgTeamEntity = orgTeamDao.getByTeamId(order.getOrgTeamId());
}
String engineerName = order.getEngineerName();
//处理标签
if (CollectionUtils.isNotEmpty(req.getOrderTags())) {
if (StringUtils.isBlank(order.getBeanTags())) {
String joinTags = CollectionUtils.isEmpty(req.getOrderTags()) ? "" : String.join(",", req.getOrderTags());
String joinTags = String.join(",", req.getOrderTags());
order.setBeanTags(joinTags);
order.setIsMultiple(joinTags.contains("重物搬运") ? 1 : 0);
} else {
......@@ -293,13 +312,10 @@ public class OrderInfoServiceImpl implements OrderInfoService {
// 当天单变更技能直接人工指派
if (isToday && skillUpdate) {
if (order.getIsAppointEngineer() != 1) {
order.setOrgTeamId(null);
order.setOrgGroupId(null);
order.setEngineerPhone(null);
order.setEngineerName(null);
order.setEngineerCode(null);
order.setEngineerPhone(null);
order = OrderUtil.handleErrorOrder(order);
teamId = null;
order.setAppointmentMethod(AppointmentMethodEnum.MANUAL.name());
order.setAppointmentStatus(OrderFlowEnum.INIT.name());
sendMsg(order.getOrgBranchId(), order.getOrderId(), req.getExpectBegin());
}
} else {
......@@ -331,12 +347,12 @@ public class OrderInfoServiceImpl implements OrderInfoService {
SkillInfoEntity skillInfo = skillInfoDao.getByBrandAndTypeAndSkill(order.getBrand(), order.getType(), order.getSkill());
if (ObjectUtil.isNull(capacity) || capacity.getStatus() != 1 || capacity.getMaxDuration() > skillInfo.getTakeTime()) {
order.setTranscend(1);
order.setOrgGroupId(null);
order.setOrgTeamId(null);
order.setEngineerCode(null);
order = OrderUtil.handleErrorOrder(order);
clusterId = order.getOrgClusterId();
branchId = order.getOrgBranchId();
teamId = null;
order.setAppointmentMethod(AppointmentMethodEnum.MANUAL.name());
order.setAppointmentStatus(OrderFlowEnum.INIT.name());
sendMsg(order.getOrgBranchId(), order.getOrderId(), req.getExpectBegin());
}
}
......@@ -349,12 +365,10 @@ public class OrderInfoServiceImpl implements OrderInfoService {
} else if (isToday && !isBelong) {
// b.未派人-改约到当天
// i.人工指派
order.setOrgTeamId(null);
order.setOrgGroupId(null);
order.setEngineerPhone(null);
order.setEngineerName(null);
order.setEngineerCode(null);
order = OrderUtil.handleErrorOrder(order);
teamId = null;
order.setAppointmentMethod(AppointmentMethodEnum.MANUAL.name());
order.setAppointmentStatus(OrderFlowEnum.INIT.name());
sendMsg(order.getOrgBranchId(), order.getOrderId(), req.getExpectBegin());
}
}
......@@ -368,8 +382,9 @@ public class OrderInfoServiceImpl implements OrderInfoService {
// 处理特殊时间,cutoff
Integer special = 0;
Integer cutoff = 0;
OrgTeamEntity teamInfo = null;
if (StringUtils.isNotBlank(teamId)) {
OrgTeamEntity teamInfo = orgTeamDao.getByTeamId(teamId);
teamInfo = orgTeamDao.getByTeamId(teamId);
special = CommonUtil.isSpecial(order.getExpectTimeBegin().toLocalTime(),
order.getExpectTimeEnd().toLocalTime(), teamInfo.getWorkOn(), teamInfo.getWorkOff());
cutoff = CommonUtil.isCutoff(order.getExpectTimeBegin(), teamInfo.getWorkOff());
......@@ -382,11 +397,18 @@ public class OrderInfoServiceImpl implements OrderInfoService {
order.setOrgBranchId(branchId);
orderInfoDao.save(order);
// 登记事件
commonService.addOrderEvent(req.getOrderId(), "", "PEA", req.getOperator(), OrderStatusEnum.RESCHEDULED.getDescription(), OrderStatusEnum.RESCHEDULED.getDescription(), "");
commonService.addOrderEvent(req.getOrderId(), "", req.getOperator(), req.getOperator(), OrderEventEnum.recontracting.getEvent(),
String.format(OrderEventEnum.recontracting.getMsg(), engineerName + "-" + (ObjectUtil.isNotNull(orgTeamEntity) ? orgTeamEntity.getTeamName() : ""),
ObjectUtil.isNotNull(orgGroupEntity) ? orgGroupEntity.getGroupName() : "", req.getExpectBegin(), req.getReschedulingReason()), "");
return Result.success(null);
}
/**
* 改约原因
*
* @return
*/
@Override
public Result<?> orderReschedulingReason() {
return Result.success(OrderReschedulingReason.ReschedulingReasonMap);
......@@ -426,6 +448,9 @@ public class OrderInfoServiceImpl implements OrderInfoService {
if (fendanResult.getCode().equals(StatusCodeEnum.FENDAN_IS_TRANSCEND.getCode())) {
order.setTranscend(1);
}
order = OrderUtil.handleErrorOrder(order);
order.setAppointmentMethod(AppointmentMethodEnum.MANUAL.name());
order.setAppointmentStatus(OrderFlowEnum.INIT.name());
OrgBranchEntity branchEntity = orgBranchDao.findByCitycodeListLike("%" + adminDistrict.getResult().getSubNames().getCity() + "%");
sendMsg(branchEntity.getBranchId(), order.getOrderId(), req.getExpectBegin());
} else {
......
package com.dituhui.pea.order.utils;
import com.dituhui.pea.order.entity.OrderInfoEntity;
public class OrderUtil {
/**
* 分单,超派,特殊时间等处理工单指派工程师,网点等数据
*
* @param order
* @return
*/
public static OrderInfoEntity handleErrorOrder(OrderInfoEntity order) {
order.setOrgTeamId(null);
order.setOrgGroupId(null);
order.setEngineerPhone(null);
order.setEngineerName(null);
order.setEngineerCode(null);
return order;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!