Commit 97ab5bc7 by huangjinxin

feat:创单全流程打通

fix:分单针对多个面优化
1 parent db9afa68
package com.dituhui.pea.util; package com.dituhui.pea.util;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import java.text.MessageFormat; import java.text.MessageFormat;
...@@ -493,6 +494,16 @@ public class DateUtil { ...@@ -493,6 +494,16 @@ public class DateUtil {
return MessageFormat.format("{}小时{}分{}秒", hours, minutes, second); 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 //CHECKSTYLE:ON
} }
...@@ -109,7 +109,7 @@ public class SaasUtils { ...@@ -109,7 +109,7 @@ public class SaasUtils {
/** /**
* 根据提供的地址信息,获取对应的片区图层 * 根据提供的地址信息,获取对应的片区图层
*/ */
public List<AdministrativeDistrictResp> getAdminDistrict(AdministrativeDistrictReq districtReq) { public AdministrativeDistrictResp getAdminDistrict(AdministrativeDistrictReq districtReq) {
String webResultStr = saasRemoteService.getAdminDistrict(ak, districtReq); String webResultStr = saasRemoteService.getAdminDistrict(ak, districtReq);
log.info("queryBlocksByXySingle返回结果: ===> {}", webResultStr); log.info("queryBlocksByXySingle返回结果: ===> {}", webResultStr);
SaasWebResult webResult = JSONObject.parseObject(webResultStr, SaasWebResult.class); SaasWebResult webResult = JSONObject.parseObject(webResultStr, SaasWebResult.class);
...@@ -117,8 +117,11 @@ public class SaasUtils { ...@@ -117,8 +117,11 @@ public class SaasUtils {
if (!webResult.getCode().equals("S001")) { if (!webResult.getCode().equals("S001")) {
return null; return null;
} }
List<AdministrativeDistrictResp> administrativeDistrictResp = JSONObject.parseObject(JSONObject.toJSONString(webResult.getResult()), List.class); List<AdministrativeDistrictResp> administrativeDistrictResp = JSONObject.parseArray(JSONObject.toJSONString(webResult.getResult()), AdministrativeDistrictResp.class);
return administrativeDistrictResp; if (CollectionUtils.isNotEmpty(administrativeDistrictResp)) {
return administrativeDistrictResp.get(0);
}
return null;
} }
......
...@@ -33,7 +33,7 @@ public class FendanController { ...@@ -33,7 +33,7 @@ public class FendanController {
} }
@RequestMapping(value = "getAdminDistrict", method = RequestMethod.POST) @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); return fendanService.getAdminDistrict(req);
} }
} }
...@@ -4,6 +4,7 @@ import com.dituhui.pea.common.BusinessException; ...@@ -4,6 +4,7 @@ import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dto.OrderCreateReqDTO; import com.dituhui.pea.order.dto.OrderCreateReqDTO;
import com.dituhui.pea.order.dto.CapacityOrderQueryDTO; 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.OrderCreateService;
import com.dituhui.pea.order.service.CapacityQueryService; import com.dituhui.pea.order.service.CapacityQueryService;
...@@ -22,7 +23,7 @@ public class OrderCreateController { ...@@ -22,7 +23,7 @@ public class OrderCreateController {
private CapacityQueryService capacityQueryService; private CapacityQueryService capacityQueryService;
@PostMapping("/order/service/create") @PostMapping("/order/service/create")
public Result<?> createOrder(@Validated @RequestBody OrderCreateReqDTO orderCreateReqDTO) { public Result<?> createOrder(@Validated @RequestBody OrderDTO.OrderCreateRequest orderCreateReqDTO) {
Result<?> res = null; Result<?> res = null;
try { try {
res = orderCreateService.createOrder(orderCreateReqDTO); res = orderCreateService.createOrder(orderCreateReqDTO);
......
...@@ -24,8 +24,11 @@ public interface MapBlockInfoDao extends JpaRepository<MapBlockInfoEntity, Integ ...@@ -24,8 +24,11 @@ public interface MapBlockInfoDao extends JpaRepository<MapBlockInfoEntity, Integ
List<MapBlockInfoEntity> findByAreaIdsIn(List<String> blockIds); 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 " + List<MapBlockInfoEntity> findByAreaIdsLike(String blockId);
"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, @Query(value = "select mbi.* from map_block_info mbi left join map_layer_customize_skill mlcs on mlcs.layer_id = mbi.layer_id " +
@Param("skill") String skill, @Param("blockIds") List<String> blockIds); "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> { ...@@ -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 " @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) + "WHERE ot.team_id = :teamId",nativeQuery = true)
OrgGroupEntity queryGroupByTeam(String teamId); OrgGroupEntity queryGroupByTeam(String teamId);
OrgGroupEntity getByCitycodeListLike(String citycodeList);
} }
package com.dituhui.pea.order.dto.param; package com.dituhui.pea.order.dto.param;
import com.dituhui.pea.util.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -101,6 +104,11 @@ public class OrderDTO { ...@@ -101,6 +104,11 @@ public class OrderDTO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date expectEnd; 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 { ...@@ -218,7 +218,7 @@ public class OrderInfoEntity {
* 是否超派,0否 1是,默认0 * 是否超派,0否 1是,默认0
*/ */
@Column(name = "transcend") @Column(name = "transcend")
private Integer transcend; private Integer transcend = 0;
/** /**
......
package com.dituhui.pea.order.enums; package com.dituhui.pea.order.enums;
public enum OrderStatus { public enum OrderStatus {
CREATE("创建订单"),
NORMAL("正常"), NORMAL("正常"),
CANCELED("已取消"), CANCELED("已取消"),
RESCHEDULED("已改约"), RESCHEDULED("已改约"),
......
...@@ -27,5 +27,5 @@ public interface FendanService { ...@@ -27,5 +27,5 @@ public interface FendanService {
*/ */
Result<List<OrgGroupInfo>> fendanToGroup(OrderDTO.OrderCreateRequest request); 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; ...@@ -19,12 +19,13 @@ package com.dituhui.pea.order.service;
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.dto.OrderCreateReqDTO; import com.dituhui.pea.order.dto.OrderCreateReqDTO;
import com.dituhui.pea.order.dto.param.OrderDTO;
public interface OrderCreateService { public interface OrderCreateService {
Result<?> initParameter(); Result<?> initParameter();
Result<?> createOrder(OrderCreateReqDTO orderCreateReqDTO) Result<?> createOrder(OrderDTO.OrderCreateRequest orderCreateReqDTO)
throws BusinessException; throws BusinessException;
} }
...@@ -153,18 +153,23 @@ public class FendanServiceImpl implements FendanService { ...@@ -153,18 +153,23 @@ public class FendanServiceImpl implements FendanService {
//2:根据服务范围匹配工作队 //2:根据服务范围匹配工作队
String peaBrand = fixBrand(request.getBrand()); String peaBrand = fixBrand(request.getBrand());
List<String> blockIds = blockInfos.stream().map(SaasUtils.BlockInfo::getBlockId).distinct().collect(Collectors.toList()); List<String> blockIds = blockInfos.stream().map(SaasUtils.BlockInfo::getBlockId).distinct().collect(Collectors.toList());
//区划所在范围并分配到具体技能的工作队 List<MapBlockInfoEntity> mapBlockInBlockIdsList = new ArrayList<>();
List<MapBlockInfoEntity> mapBlockInfoList = mapBlockInfoDao.listTeamIdByBrandAndSkillAndBlockIds(peaBrand, request.getProductType(), request.getServiceType(), blockIds);
//区划所在范围所有工作队 //区划所在范围所有工作队
List<MapBlockInfoEntity> mapBlockInBlockIdsList = mapBlockInfoDao.findByAreaIdsIn(blockIds); for (String blockId : blockIds) {
if (CollectionUtils.isEmpty(mapBlockInfoList) && CollectionUtils.isEmpty(mapBlockInBlockIdsList)) { 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); 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) { for (MapBlockInfoEntity mapBlockInfoEntity : mapBlockInBlockIdsList) {
if (mapBlockIdList.contains(mapBlockInfoEntity.getId())) { if (mapBlockAllList.contains(mapBlockInfoEntity.getId())) {
continue; mapBlockInfoList.add(mapBlockInfoEntity);
} }
if (mapBlockInfoEntity.getLayerId().equals(allLayerId)) { if (mapBlockInfoEntity.getLayerId().equals(allLayerId)) {
mapBlockInfoList.add(mapBlockInfoEntity); mapBlockInfoList.add(mapBlockInfoEntity);
...@@ -203,8 +208,9 @@ public class FendanServiceImpl implements FendanService { ...@@ -203,8 +208,9 @@ public class FendanServiceImpl implements FendanService {
} }
@Override @Override
public Result<List<AdministrativeDistrictResp>> getAdminDistrict(AdministrativeDistrictReq req) { public Result<AdministrativeDistrictResp> getAdminDistrict(AdministrativeDistrictReq req) {
return Result.success(saasUtils.getAdminDistrict(req)); AdministrativeDistrictResp adminDistrict = saasUtils.getAdminDistrict(req);
return Result.success(adminDistrict);
} }
......
...@@ -38,13 +38,17 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -38,13 +38,17 @@ public class OrderInfoServiceImpl implements OrderInfoService {
if (CollectionUtils.isEmpty(infoList)) { if (CollectionUtils.isEmpty(infoList)) {
return Result.success(null); 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()); .map(OrderInfoEntity::getMultipleOrders).distinct().collect(Collectors.toList());
if (CollectionUtils.isEmpty(multipleOrdersList)) { if (CollectionUtils.isEmpty(multipleOrdersList)) {
return Result.success(null); return Result.success(null);
} }
if (CollectionUtils.isNotEmpty(multipleOrdersList)) { //查看是否已存在一家多单id存在则返回
return Result.success(multipleOrdersList.get(0)); 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(); String uuid = UUIDUtil.getUuid();
for (OrderInfoEntity orderInfoEntity : infoList) { 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!