Commit 97ab5bc7 by huangjinxin

feat:创单全流程打通

fix:分单针对多个面优化
1 parent db9afa68
package com.dituhui.pea.util;
import lombok.experimental.UtilityClass;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.util.Assert;
import java.text.MessageFormat;
......@@ -493,6 +494,16 @@ public class DateUtil {
return MessageFormat.format("{}小时{}分{}秒", hours, minutes, second);
}
}
/**
* 获取小时
*
* @param date
* @return
*/
public static Integer getHour(Date date) {
return DateUtils.toCalendar(date).get(Calendar.HOUR_OF_DAY);
}
//CHECKSTYLE:ON
}
......@@ -109,7 +109,7 @@ public class SaasUtils {
/**
* 根据提供的地址信息,获取对应的片区图层
*/
public List<AdministrativeDistrictResp> getAdminDistrict(AdministrativeDistrictReq districtReq) {
public AdministrativeDistrictResp getAdminDistrict(AdministrativeDistrictReq districtReq) {
String webResultStr = saasRemoteService.getAdminDistrict(ak, districtReq);
log.info("queryBlocksByXySingle返回结果: ===> {}", webResultStr);
SaasWebResult webResult = JSONObject.parseObject(webResultStr, SaasWebResult.class);
......@@ -117,8 +117,11 @@ public class SaasUtils {
if (!webResult.getCode().equals("S001")) {
return null;
}
List<AdministrativeDistrictResp> administrativeDistrictResp = JSONObject.parseObject(JSONObject.toJSONString(webResult.getResult()), List.class);
return administrativeDistrictResp;
List<AdministrativeDistrictResp> administrativeDistrictResp = JSONObject.parseArray(JSONObject.toJSONString(webResult.getResult()), AdministrativeDistrictResp.class);
if (CollectionUtils.isNotEmpty(administrativeDistrictResp)) {
return administrativeDistrictResp.get(0);
}
return null;
}
......
......@@ -33,7 +33,7 @@ public class FendanController {
}
@RequestMapping(value = "getAdminDistrict", method = RequestMethod.POST)
public Result<List<AdministrativeDistrictResp>> getAdminDistrict(@RequestBody AdministrativeDistrictReq req) {
public Result<AdministrativeDistrictResp> getAdminDistrict(@RequestBody AdministrativeDistrictReq req) {
return fendanService.getAdminDistrict(req);
}
}
......@@ -4,6 +4,7 @@ import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dto.OrderCreateReqDTO;
import com.dituhui.pea.order.dto.CapacityOrderQueryDTO;
import com.dituhui.pea.order.dto.param.OrderDTO;
import com.dituhui.pea.order.service.OrderCreateService;
import com.dituhui.pea.order.service.CapacityQueryService;
......@@ -22,7 +23,7 @@ public class OrderCreateController {
private CapacityQueryService capacityQueryService;
@PostMapping("/order/service/create")
public Result<?> createOrder(@Validated @RequestBody OrderCreateReqDTO orderCreateReqDTO) {
public Result<?> createOrder(@Validated @RequestBody OrderDTO.OrderCreateRequest orderCreateReqDTO) {
Result<?> res = null;
try {
res = orderCreateService.createOrder(orderCreateReqDTO);
......
......@@ -24,8 +24,11 @@ public interface MapBlockInfoDao extends JpaRepository<MapBlockInfoEntity, Integ
List<MapBlockInfoEntity> findByAreaIdsIn(List<String> blockIds);
@Query(value = "select mbi.* from map_block_info mbi left join skill_info si on mbi.layer_id = si.layer_id left join map_layer_customize mlc on mlc.layer_id = mbi.layer_id " +
"where si.brand = :brand and si.`type` = :productType and si.skill = :skill and mbi.area_ids in ( :blockIds ) order by mlc.priority ", nativeQuery = true)
List<MapBlockInfoEntity> listTeamIdByBrandAndSkillAndBlockIds(@Param("brand") String brand, @Param("productType") String productType,
@Param("skill") String skill, @Param("blockIds") List<String> blockIds);
List<MapBlockInfoEntity> findByAreaIdsLike(String blockId);
@Query(value = "select mbi.* from map_block_info mbi left join map_layer_customize_skill mlcs on mlcs.layer_id = mbi.layer_id " +
"left join map_layer_customize mlc on mlc.layer_id = mbi.layer_id left join skill_info si on si.skill_code = mlcs.skill_code " +
"where si.brand = :brand and si.`type` = :productType and si.skill = :skill order by mlc.priority ", nativeQuery = true)
List<MapBlockInfoEntity> listTeamIdByBrandAndSkill(@Param("brand") String brand, @Param("productType") String productType,
@Param("skill") String skill);
}
......@@ -41,4 +41,6 @@ public interface OrgGroupDao extends JpaRepository<OrgGroupEntity, Integer> {
@Query(value = "SELECT og.* FROM org_group og left join org_team ot ON ot.group_id = og.group_id "
+ "WHERE ot.team_id = :teamId",nativeQuery = true)
OrgGroupEntity queryGroupByTeam(String teamId);
OrgGroupEntity getByCitycodeListLike(String citycodeList);
}
package com.dituhui.pea.order.dto.param;
import com.dituhui.pea.util.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
......@@ -101,6 +104,11 @@ public class OrderDTO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date expectEnd;
public static void main(String[] args) {
Date date = new Date();
int hour = DateUtils.toCalendar(date).get(Calendar.HOUR_OF_DAY);
System.out.println("当前小时为:" + hour);
}
/**
* 预约描述时间(全天/上午/下午)
*/
......
......@@ -218,7 +218,7 @@ public class OrderInfoEntity {
* 是否超派,0否 1是,默认0
*/
@Column(name = "transcend")
private Integer transcend;
private Integer transcend = 0;
/**
......
package com.dituhui.pea.order.enums;
public enum OrderStatus {
CREATE("创建订单"),
NORMAL("正常"),
CANCELED("已取消"),
RESCHEDULED("已改约"),
......
......@@ -27,5 +27,5 @@ public interface FendanService {
*/
Result<List<OrgGroupInfo>> fendanToGroup(OrderDTO.OrderCreateRequest request);
Result<List<AdministrativeDistrictResp>> getAdminDistrict(AdministrativeDistrictReq req);
Result<AdministrativeDistrictResp> getAdminDistrict(AdministrativeDistrictReq req);
}
......@@ -19,12 +19,13 @@ package com.dituhui.pea.order.service;
import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dto.OrderCreateReqDTO;
import com.dituhui.pea.order.dto.param.OrderDTO;
public interface OrderCreateService {
Result<?> initParameter();
Result<?> createOrder(OrderCreateReqDTO orderCreateReqDTO)
Result<?> createOrder(OrderDTO.OrderCreateRequest orderCreateReqDTO)
throws BusinessException;
}
......@@ -153,18 +153,23 @@ public class FendanServiceImpl implements FendanService {
//2:根据服务范围匹配工作队
String peaBrand = fixBrand(request.getBrand());
List<String> blockIds = blockInfos.stream().map(SaasUtils.BlockInfo::getBlockId).distinct().collect(Collectors.toList());
//区划所在范围并分配到具体技能的工作队
List<MapBlockInfoEntity> mapBlockInfoList = mapBlockInfoDao.listTeamIdByBrandAndSkillAndBlockIds(peaBrand, request.getProductType(), request.getServiceType(), blockIds);
List<MapBlockInfoEntity> mapBlockInBlockIdsList = new ArrayList<>();
//区划所在范围所有工作队
List<MapBlockInfoEntity> mapBlockInBlockIdsList = mapBlockInfoDao.findByAreaIdsIn(blockIds);
if (CollectionUtils.isEmpty(mapBlockInfoList) && CollectionUtils.isEmpty(mapBlockInBlockIdsList)) {
for (String blockId : blockIds) {
List<MapBlockInfoEntity> mapBlockInfoEntities = mapBlockInfoDao.findByAreaIdsLike(blockId);
mapBlockInBlockIdsList.addAll(mapBlockInfoEntities);
}
//区划所在范围并分配到具体技能的工作队
List<MapBlockInfoEntity> mapBlockSkillList = mapBlockInfoDao.listTeamIdByBrandAndSkill(peaBrand, request.getProductType(), request.getServiceType());
if (CollectionUtils.isEmpty(mapBlockSkillList) && CollectionUtils.isEmpty(mapBlockInBlockIdsList)) {
return Result.failed(StatusCodeEnum.FENDAN_TEAM_UNMATCHED);
}
List<Integer> mapBlockIdList = mapBlockInfoList.stream().map(MapBlockInfoEntity::getId).distinct().collect(Collectors.toList());
//筛选漏选工作队(处理全技能图层)
List<Integer> mapBlockAllList = mapBlockSkillList.stream().map(MapBlockInfoEntity::getId).distinct().collect(Collectors.toList());
//筛选漏选工作队(处理全技能图层)和查出多余图层
List<MapBlockInfoEntity> mapBlockInfoList = new ArrayList<>();
for (MapBlockInfoEntity mapBlockInfoEntity : mapBlockInBlockIdsList) {
if (mapBlockIdList.contains(mapBlockInfoEntity.getId())) {
continue;
if (mapBlockAllList.contains(mapBlockInfoEntity.getId())) {
mapBlockInfoList.add(mapBlockInfoEntity);
}
if (mapBlockInfoEntity.getLayerId().equals(allLayerId)) {
mapBlockInfoList.add(mapBlockInfoEntity);
......@@ -203,8 +208,9 @@ public class FendanServiceImpl implements FendanService {
}
@Override
public Result<List<AdministrativeDistrictResp>> getAdminDistrict(AdministrativeDistrictReq req) {
return Result.success(saasUtils.getAdminDistrict(req));
public Result<AdministrativeDistrictResp> getAdminDistrict(AdministrativeDistrictReq req) {
AdministrativeDistrictResp adminDistrict = saasUtils.getAdminDistrict(req);
return Result.success(adminDistrict);
}
......
......@@ -38,13 +38,17 @@ public class OrderInfoServiceImpl implements OrderInfoService {
if (CollectionUtils.isEmpty(infoList)) {
return Result.success(null);
}
List<String> multipleOrdersList = infoList.stream().filter(e -> StringUtils.isNotEmpty(e.getMultipleOrders()) && !e.getOrderId().equals(orderId))
//排除自己
List<String> multipleOrdersList = infoList.stream().filter(e -> !e.getOrderId().equals(orderId))
.map(OrderInfoEntity::getMultipleOrders).distinct().collect(Collectors.toList());
if (CollectionUtils.isEmpty(multipleOrdersList)) {
return Result.success(null);
}
if (CollectionUtils.isNotEmpty(multipleOrdersList)) {
return Result.success(multipleOrdersList.get(0));
//查看是否已存在一家多单id存在则返回
List<String> multipleOrdersFilterList = infoList.stream().filter(e -> StringUtils.isNotEmpty(e.getMultipleOrders()))
.map(OrderInfoEntity::getMultipleOrders).distinct().collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(multipleOrdersFilterList)) {
return Result.success(multipleOrdersFilterList.get(0));
}
String uuid = UUIDUtil.getUuid();
for (OrderInfoEntity orderInfoEntity : infoList) {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!