Commit 2c47bfb5 by 丁伟峰

Merge branch 'feat-dingwf-mvp616' into develop

# Conflicts:
#	project-order/src/main/java/com/alibaba/cloud/integration/order/controller/OrderCreateController.java
2 parents d68a5b6a 7a8173ae
Showing with 1224 additions and 244 deletions
...@@ -19,19 +19,14 @@ package com.alibaba.cloud.integration.order.controller; ...@@ -19,19 +19,14 @@ package com.alibaba.cloud.integration.order.controller;
import com.alibaba.cloud.integration.common.BusinessException; import com.alibaba.cloud.integration.common.BusinessException;
import com.alibaba.cloud.integration.common.Result; import com.alibaba.cloud.integration.common.Result;
import com.alibaba.cloud.integration.order.dto.OrderCreateReqDTO; import com.alibaba.cloud.integration.order.dto.OrderCreateReqDTO;
import com.alibaba.cloud.integration.order.dto.TimeRangeReqDTO; import com.alibaba.cloud.integration.order.dto.CapacityQueryReqDTO;
import com.alibaba.cloud.integration.order.service.OrderService; import com.alibaba.cloud.integration.order.service.OrderService;
import com.alibaba.cloud.integration.order.service.ProductService; import com.alibaba.cloud.integration.order.service.CapacityQueryService;
import com.alibaba.cloud.integration.order.service.TimeRangeService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
/**
* @author TrevorLink
*/
@RestController @RestController
public class OrderCreateController { public class OrderCreateController {
...@@ -39,10 +34,7 @@ public class OrderCreateController { ...@@ -39,10 +34,7 @@ public class OrderCreateController {
private OrderService orderService; private OrderService orderService;
@Autowired @Autowired
private ProductService productService; private CapacityQueryService capacityQueryService;
@Autowired
private TimeRangeService timeRangeService;
@PostMapping("/order/service/create") @PostMapping("/order/service/create")
public Result<?> createOrder(@Validated @RequestBody OrderCreateReqDTO orderCreateReqDTO) { public Result<?> createOrder(@Validated @RequestBody OrderCreateReqDTO orderCreateReqDTO) {
...@@ -59,27 +51,21 @@ public class OrderCreateController { ...@@ -59,27 +51,21 @@ public class OrderCreateController {
public Result<?> getParameter() { public Result<?> getParameter() {
Result<?> res = null; Result<?> res = null;
try { try {
res = productService.getProductCategoryList(); res = orderService.initParameter();
} catch (BusinessException e) { } catch (BusinessException e) {
return Result.failed(e.getMessage()); return Result.failed(e.getMessage());
} }
return res; return res;
} }
@PostMapping("/order/service/timerange") @PostMapping("/order/service/capacity/query")
public Result<?> getTimerange(@Validated @RequestBody TimeRangeReqDTO timeRangeReqDTO) { public Result<?> capacityQuery(@Validated @RequestBody CapacityQueryReqDTO capacityQueryReqDTO) {
Result<?> res = null; Result<?> res = null;
try { try {
res = timeRangeService.getTimeRangeData(timeRangeReqDTO); res = capacityQueryService.getOneCapacityData(capacityQueryReqDTO);
} catch (BusinessException e) { } catch (BusinessException e) {
return Result.failed(e.getMessage()); return Result.failed(e.getMessage());
} }
return res; return res;
} }
@GetMapping("/test")
public Result<?> test(@RequestParam(value = "param", required = false) String param) {
System.out.println("test ok");
return Result.success("test ok");
}
} }
package com.alibaba.cloud.integration.order.controller;
import com.alibaba.cloud.integration.common.BusinessException;
import com.alibaba.cloud.integration.common.Result;
import com.alibaba.cloud.integration.order.dto.LevelReqDTO;
import com.alibaba.cloud.integration.order.service.OrganizationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class OrganizationController {
@Autowired
OrganizationService organizationService;
@GetMapping("/organization/tree")
public Result<?> organizationTree(LevelReqDTO reqDTO) {
Result<?> res = null;
try {
res = organizationService.getOrganizationTree(reqDTO.getLevelType(), reqDTO.getLevelValue());
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
@GetMapping("/organization/team/list")
public Result<?> getTeams(LevelReqDTO reqDTO) {
Result<?> res = null;
try {
res = organizationService.getTeamsByLevel(reqDTO.getLevelType(), reqDTO.getLevelValue());
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
@GetMapping("/organization/engineer/list")
public Result<?> getTeamsEngineers(@RequestParam String[] teamIds) {
Result<?> res = null;
try {
res = organizationService.getEngineersByTeams(teamIds);
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
}
package com.alibaba.cloud.integration.order.dao; package com.alibaba.cloud.integration.order.dao;
import com.alibaba.cloud.integration.order.entity.CapacityTeamStatEntity; import com.alibaba.cloud.integration.order.entity.CapacityTeamStatEntity;
import org.hibernate.annotations.Where;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@Repository
public interface CapacityTeamStatDao extends JpaRepository<CapacityTeamStatEntity, Long> { public interface CapacityTeamStatDao extends JpaRepository<CapacityTeamStatEntity, Long> {
List<CapacityTeamStatEntity> findAllByTeamIdAndSkillTagAndWorkdayBetween(String teamId, String skill, String beginDate, String endDate); List<CapacityTeamStatEntity> findAllByTeamIdAndLayerAndWorkdayBetween(String teamId, String layer, String beginDate, String endDate);
} }
package com.alibaba.cloud.integration.order.dao;
import com.alibaba.cloud.integration.order.entity.EngineerInfoEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface EngineerInfoDao extends JpaRepository {
EngineerInfoEntity getByEngineerCode(String engineerCode);
}
package com.alibaba.cloud.integration.order.dao;
import com.alibaba.cloud.integration.order.entity.MapBlockInfoEntity;
import org.hibernate.annotations.Where;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@Repository
@Where(clause = "status = 1")
public interface MapBlockInfoDao extends JpaRepository<MapBlockInfoEntity, Integer> {
@Query("select s.teamId from MapBlockInfoEntity s where s.blockId = :blockId and s.layer = :layer")
String getTeamidByBlockidAndLayer(String blockId, String layer);
}
...@@ -3,5 +3,5 @@ package com.alibaba.cloud.integration.order.dao; ...@@ -3,5 +3,5 @@ package com.alibaba.cloud.integration.order.dao;
import com.alibaba.cloud.integration.order.entity.OrderRequestEntity; import com.alibaba.cloud.integration.order.entity.OrderRequestEntity;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
public interface OrderReqeustDao extends JpaRepository <OrderRequestEntity, Long> { public interface OrderRequestDao extends JpaRepository <OrderRequestEntity, Long> {
} }
package com.alibaba.cloud.integration.order.dao;
import com.alibaba.cloud.integration.order.entity.OrgBranchEntity;
import com.alibaba.cloud.integration.order.entity.OrgClusterEntity;
import org.hibernate.annotations.Where;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Where(clause = "status = 1")
public interface OrgBranchDao extends JpaRepository<OrgBranchEntity, Integer> {
List<OrgBranchEntity> findAllByClusterId(String clusterId);
OrgBranchEntity getByBranchId(String branchId);
}
package com.alibaba.cloud.integration.order.dao;
import com.alibaba.cloud.integration.order.entity.OrgClusterEntity;
import org.hibernate.annotations.Where;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Where(clause = "status = 1")
public interface OrgClusterDao extends JpaRepository <OrgClusterEntity, Integer> {
OrgClusterEntity getByClusterId(String clusterId);
}
package com.alibaba.cloud.integration.order.dao;
import com.alibaba.cloud.integration.order.entity.OrgGroupEntity;
import org.hibernate.annotations.Where;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Where(clause = "status = 1")
public interface OrgGroupDao extends JpaRepository<OrgGroupEntity, Integer> {
List<OrgGroupEntity> findAllByBranchId(String branchId);
OrgGroupEntity getByGroupId(String groupId);
}
package com.alibaba.cloud.integration.order.dao;
import com.alibaba.cloud.integration.order.entity.OrgTeamEntity;
import org.hibernate.annotations.Where;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Where(clause = "status = 1")
public interface OrgTeamDao extends JpaRepository<OrgTeamEntity, Integer> {
List<OrgTeamEntity> findAllByClusterId(String clusterId);
List<OrgTeamEntity> findAllByBranchId(String branchId);
List<OrgTeamEntity> findAllByGroupId(String groupId);
}
package com.alibaba.cloud.integration.order.dao;
import com.alibaba.cloud.integration.order.entity.OrgTeamEngineerEntity;
import org.hibernate.annotations.Where;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Where(clause = "status = 1")
public interface OrgTeamEngineerDao {
List<OrgTeamEngineerEntity> findAllByTeamidIn(String[] teamIds);
}
...@@ -2,6 +2,12 @@ package com.alibaba.cloud.integration.order.dao; ...@@ -2,6 +2,12 @@ package com.alibaba.cloud.integration.order.dao;
import com.alibaba.cloud.integration.order.entity.ProductCategoryEntity; import com.alibaba.cloud.integration.order.entity.ProductCategoryEntity;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
public interface ProductCategoryDao extends JpaRepository<ProductCategoryEntity, Long> { public interface ProductCategoryDao extends JpaRepository<ProductCategoryEntity, Long> {
ProductCategoryEntity getProductCategoryEntityByBrandAndTypeAndSkill(String brand, String type, String skill);
@Query("select p.layer from ProductCategoryEntity p where p.brand = :brand and p.type = :type and p.skill = :skill")
String getLayerByBrandAndTypeAndSkill(String brand, String type, String skill);
} }
package com.alibaba.cloud.integration.order.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class BrandDTO {
private String label;
private String value;
private List<KeyValueDTO> categories;
}
package com.alibaba.cloud.integration.order.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class CalendarDTO {
private String week;
private String date;
private List<TimeDTO> times;
}
...@@ -3,9 +3,12 @@ package com.alibaba.cloud.integration.order.dto; ...@@ -3,9 +3,12 @@ package com.alibaba.cloud.integration.order.dto;
import lombok.Data; import lombok.Data;
@Data @Data
public class TimeRangeReqDTO { public class CapacityQueryReqDTO {
private String location; private String location;
private String categoryId; private String address;
private String brand;
private String type;
private String skill;
private String beginDate; private String beginDate;
private String endDate; private String endDate;
} }
package com.alibaba.cloud.integration.order.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class CapacityQueryRespDTO {
private String beginDate;
private String endDate;
private String remark;
private List<LegendDTO> legend;
private List<CalendarDTO> calendar;
@Data
@Accessors(chain = true)
public static class LegendDTO {
private int type;
private String memo;
}
@Data
@Accessors(chain = true)
public static class CalendarDTO {
private String week;
private String date;
private List<TimeDTO> times;
}
@Data
@Accessors(chain = true)
public static class TimeDTO {
private String text;
private String begin;
private String end;
private int type;
}
}
...@@ -5,7 +5,7 @@ import lombok.experimental.Accessors; ...@@ -5,7 +5,7 @@ import lombok.experimental.Accessors;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class LegendDTO { public class LevelReqDTO {
private int type; private String levelType;
private String memo; private String levelValue;
} }
...@@ -9,7 +9,8 @@ public class OrderCreateReqDTO { ...@@ -9,7 +9,8 @@ public class OrderCreateReqDTO {
private String address; private String address;
private LocationDTO location; private LocationDTO location;
private String brand; private String brand;
private String catalogId; private String type;
private String skill;
private String faultDescribe; private String faultDescribe;
private String expectBegin; private String expectBegin;
private String expectEnd; private String expectEnd;
......
package com.alibaba.cloud.integration.order.dto;
import lombok.experimental.Accessors;
import org.checkerframework.checker.units.qual.Acceleration;
import java.util.List;
@lombok.Data
@Accessors(chain = true)
public class OrganizationEngineersRespDTO {
private List<?> engineers;
@lombok.Data
public static class Engineer {
/**
* 技术员id
*/
private String engineerCode;
/**
* 技术员姓名
*/
private String engineerName;
/**
* 所属团队Id
*/
private String teamId;
public Engineer(){
}
public Engineer(String teamId, String engineerCode, String engineerName){
this.teamId = teamId;
this.engineerCode = engineerCode;
this.engineerName = engineerName;
}
}
}
package com.alibaba.cloud.integration.order.dto;
import lombok.experimental.Accessors;
import java.util.List;
@lombok.Data
@Accessors(chain = true)
public class OrganizationTeamsRespDTO {
private List<?> teams;
@lombok.Data
@Accessors(chain = true)
public static class Team {
/**
* 所属的分部ID
*/
private String branchId;
/**
* 所属的大区ID
*/
private String clusterId;
/**
* 所属的分站ID
*/
private String groupId;
/**
* 工作队ID
*/
private String teamId;
/**
* 工作队名称
*/
private String teamName;
/**
* 工作队类型,1-系统默认工作队名称 2-自定义工作队
*/
private long teamType;
}
}
package com.alibaba.cloud.integration.order.dto;
@lombok.Data
public class OrganizationTreeReqDTO {
private String levelType;
private String levelId;
}
package com.alibaba.cloud.integration.order.dto;
import lombok.experimental.Accessors;
import java.util.List;
@lombok.Data
@Accessors(chain = true)
public class OrganizationTreeRespDTO {
private List<?> clusters;
@lombok.Data
@Accessors(chain = true)
public static class Cluster {
/**
* 下级
*/
private List<?> children;
/**
* 大区ID
*/
private String id;
/**
* 大区名称
*/
private String title;
/**
* 类型
*/
private String type;
}
/**
* Branch
*/
@lombok.Data
@Accessors(chain = true)
public static class Branch {
/**
* 下级
*/
private List<?> children;
/**
* 分部ID
*/
private String id;
/**
* 分部名称
*/
private String title;
/**
* 类型
*/
private String type;
}
/**
* Group
*/
@lombok.Data
@Accessors(chain = true)
public static class Group {
/**
* 分站ID
*/
private String id;
/**
* 分站名称
*/
private String title;
/**
* 类型
*/
private String type;
}
}
...@@ -8,7 +8,6 @@ import java.util.List; ...@@ -8,7 +8,6 @@ import java.util.List;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class ParameterRespDTO { public class ParameterRespDTO {
private List<BrandDTO> brands;
private List<KeyValueDTO> priorities; private List<KeyValueDTO> priorities;
private List<KeyValueDTO> standardTags; private List<KeyValueDTO> standardTags;
} }
package com.alibaba.cloud.integration.order.dto;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class TimeDTO {
private String text;
private String begin;
private String end;
private int type;
}
package com.alibaba.cloud.integration.order.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class TimeRangeRespDTO {
private String beginDate;
private String endDate;
private List<LegendDTO> legend;
private List<CalendarDTO> calendar;
}
...@@ -35,7 +35,7 @@ public class CapacityTeamStatEntity implements Serializable { ...@@ -35,7 +35,7 @@ public class CapacityTeamStatEntity implements Serializable {
private String teamId; private String teamId;
private String skillTag; private String layer;
private Integer engineerCount; private Integer engineerCount;
......
package com.alibaba.cloud.integration.order.entity;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
@Data
@Entity
@Table(name="engineer_info")
public class EngineerInfoEntity {
/**
* 工程师id
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
/**
* 工程师工号
*/
private String engineerCode;
/**
* 工程师姓名
*/
private String name;
/**
* 归属小组(分站、网点..)
*/
private String groupId;
/**
* 原cosmos id
*/
private String cosmosId;
/**
* 性别
*/
private String gender;
/**
* 出生年份
*/
private String birth;
/**
* 手机号码
*/
private String phone;
/**
* 地址
*/
private String address;
/**
* 类型(1全职 2兼职)
*/
private int kind;
/**
* 职级,c2,c1...
*/
private String grade;
/**
* 证书,如:低压电工证、燃气证
*/
private String credentials;
/**
* 交通工具,1电动车 2摩托车 3公交车 4自驾
*/
private int vehicle;
/**
* 摩托车、汽车的车牌号,便于计算限行
*/
private String vehicleNo;
/**
* bean帐号状态(0无效 1有效)
*/
private int beanStatus;
/**
* 技术员软标签 { 营销技能 :9, 沟通能力 :7}
*/
private String tags;
/**
* 备注
*/
private String memo;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
public EngineerInfoEntity() {}
}
package com.alibaba.cloud.integration.order.entity;
import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
@Entity
@Data
@Table(name="map_block_Info")
public class MapBlockInfoEntity {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
/**
* 主键
*/
private Integer id;
/**
* 区块id
*/
private String blockId;
/**
* 区块名称
*/
private String blockName;
/**
* 归属分部
*/
private String subsectionId;
/**
* 归属小组
*/
private String groupId;
/**
* 所在城市id
*/
private String cityCode;
/**
* 面数据
*/
private String areaData;
/**
* 类型(1自然行政片区,2自定义片区)
*/
private int kind;
/**
* 关联小队id
*/
private String teamId;
/**
* 图标标签,[基础图层,ggn] -- 与map_layer.layer 对应
*/
private String layer;
/**
* 状态(0无效 1有效)
*/
private int status;
/**
* 备注
*/
private String memo;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
public MapBlockInfoEntity() {}
}
...@@ -3,43 +3,51 @@ package com.alibaba.cloud.integration.order.entity; ...@@ -3,43 +3,51 @@ package com.alibaba.cloud.integration.order.entity;
import lombok.Data; import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
@Data
@Entity @Entity
@Table(name="layer_info") @Data
public class LayerInfoEntity implements Serializable { @Table(name = "org_branch")
private static final long serialVersionUID = 1L; public class OrgBranchEntity {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; private int id;
private String layerId;
private String layerName; private String branchId;
private String branchName;
private String clusterId;
private String subsectionId; private String address;
private String groupId;
private String cityCode; private String x;
private String areaDta;
private Integer kind; private String y;
private String teamId;
private String tags; private String citycodeList;
private int kind;
private String layerId;
private Integer status;
private String memo; private String memo;
private Date createTime; private Date createTime;
private Date updateTime;
private Date updateTime;
public OrgBranchEntity() {}
} }
package com.alibaba.cloud.integration.order.entity;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
@Entity
@Data
@Table(name = "org_cluster")
public class OrgClusterEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String clusterId;
private String name;
private String citycodeList;
private String address;
private String cityName;
private int status;
private String updateUser;
private Date createTime;
private Date updateTime;
public OrgClusterEntity() {
}
}
package com.alibaba.cloud.integration.order.entity;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
@Entity
@Data
@Table(name = "org_group")
public class OrgGroupEntity {
/**
* id
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
/**
* 小组id
*/
private String groupId;
/**
* 小组名称
*/
private String groupName;
/**
* 归属大区
*/
private String clusterId;
/**
* 归属分部
*/
private String branchId;
/**
* 办公地址
*/
private String address;
/**
* 办公地址经度
*/
private String x;
/**
* 办公地址纬度
*/
private String y;
/**
* 小组所在城市code
*/
private String cityCode;
/**
* 类型(1分站,2外围,3小组,4网点,5自保点)
*/
private int kind;
/**
* 类型(1自有,2加盟)
*/
private int category;
/**
* 默认配件仓
*/
private int warehouseId;
/**
* 备注
*/
private String memo;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
public OrgGroupEntity() {}
}
package com.alibaba.cloud.integration.order.entity;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
@Entity
@Data
@Table(name = "org_team_engineer")
public class OrgTeamEngineerEntity {
private static final long serialVersionUID = 1L;
/**
* id
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
/**
* 工作队id
*/
private String teamId;
/**
* 工程师工号
*/
private String engineerCode;
/**
* 状态(0无效 1有效)
*/
private int status;
/**
* 备注
*/
private String memo;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
public OrgTeamEngineerEntity() {
}
}
package com.alibaba.cloud.integration.order.entity;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
@Entity
@Data
@Table(name = "org_team")
public class OrgTeamEntity {
/**
* id
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
/**
* 工作队id
*/
private String teamId;
/**
* 工作队名称
*/
private String teamName;
/**
* 类别:1 映射工作队 2自定义工作队
*/
private int teamType;
/**
* 归属大区
*/
private String clusterId;
/**
* 归属分部
*/
private String branchId;
/**
* 归属小组
*/
private String groupId;
/**
* 取件配件仓
*/
private String warehouseId;
/**
* 工作日,1表示星期一,2表示星期二
*/
private String workdays;
/**
* 备注
*/
private String memo;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
public OrgTeamEntity(){
}
}
...@@ -23,73 +23,61 @@ public class ProductCategoryEntity { ...@@ -23,73 +23,61 @@ public class ProductCategoryEntity {
/** /**
* 小组id * 小组id
*/ */
@Column(name="product_category_id")
private String productCategoryId; private String productCategoryId;
/** /**
* 品牌 * 品牌
*/ */
@Column(name="brand")
private String brand; private String brand;
/** /**
* 产品类别 * 产品类别
*/ */
@Column(name="type")
private String type; private String type;
/** /**
* 服务类型 * 服务类型
*/ */
@Column(name="skill")
private String skill; private String skill;
/** /**
* 所需工时(分钟) * 所需工时(分钟)
*/ */
@Column(name="take_time")
private Integer takeTime; private Integer takeTime;
/** /**
* 所需人数 * 所需人数
*/ */
@Column(name="take_engineer")
private Integer takeEngineer; private Integer takeEngineer;
/** /**
* 是否需要低压电工证 * 是否需要低压电工证
*/ */
@Column(name="low_electrician_cert")
private int lowElectricianCert; private int lowElectricianCert;
/** /**
* 是否需要燃气证 * 是否需要燃气证
*/ */
@Column(name="gas_cert")
private int gasCert; private int gasCert;
/** /**
* 图层标签 * 图层标签
*/ */
@Column(name="tag") private String layer;
private String tag;
/** /**
* 备注 * 备注
*/ */
@Column(name="memo")
private String memo; private String memo;
/** /**
* 创建时间 * 创建时间
*/ */
@Column(name="create_time")
private Date createTime; private Date createTime;
/** /**
* 更新时间 * 更新时间
*/ */
@Column(name="update_time")
private Date updateTime; private Date updateTime;
public ProductCategoryEntity() { public ProductCategoryEntity() {
......
package com.alibaba.cloud.integration.order.service;
import com.alibaba.cloud.integration.common.Result;
import com.alibaba.cloud.integration.order.dto.CapacityQueryReqDTO;
import com.fasterxml.jackson.core.JsonProcessingException;
public interface CapacityQueryService {
/**
* 单条容量查询
* @param capacityQueryReqDTO
* @return
* @throws JsonProcessingException
*/
Result<?> getOneCapacityData(CapacityQueryReqDTO capacityQueryReqDTO);
}
...@@ -25,6 +25,8 @@ import com.alibaba.cloud.integration.order.dto.OrderCreateReqDTO; ...@@ -25,6 +25,8 @@ import com.alibaba.cloud.integration.order.dto.OrderCreateReqDTO;
*/ */
public interface OrderService { public interface OrderService {
Result<?> initParameter();
Result<?> createOrder(OrderCreateReqDTO orderCreateReqDTO) Result<?> createOrder(OrderCreateReqDTO orderCreateReqDTO)
throws BusinessException; throws BusinessException;
......
package com.alibaba.cloud.integration.order.service;
import com.alibaba.cloud.integration.common.Result;
public interface OrganizationService {
Result<?> getOrganizationTree(String levelType, String levelId);
Result<?> getEngineersByTeams(String[] teamIds);
Result<?> getTeamsByLevel(String levelType, String levelValue);
}
package com.alibaba.cloud.integration.order.service;
import com.alibaba.cloud.integration.common.Result;
import com.alibaba.cloud.integration.order.dto.BrandDTO;
public interface ProductService {
Result<?> getProductCategoryList();
}
package com.alibaba.cloud.integration.order.service;
import com.alibaba.cloud.integration.common.Result;
import com.alibaba.cloud.integration.order.dto.TimeRangeReqDTO;
public interface TimeRangeService {
Result<?> getTimeRangeData(TimeRangeReqDTO timeRangeReqDTO);
}
...@@ -2,15 +2,21 @@ package com.alibaba.cloud.integration.order.service.impl; ...@@ -2,15 +2,21 @@ package com.alibaba.cloud.integration.order.service.impl;
import com.alibaba.cloud.integration.common.Result; import com.alibaba.cloud.integration.common.Result;
import com.alibaba.cloud.integration.order.dao.CapacityTeamStatDao; import com.alibaba.cloud.integration.order.dao.CapacityTeamStatDao;
import com.alibaba.cloud.integration.order.dto.CalendarDTO; import com.alibaba.cloud.integration.order.dao.MapBlockInfoDao;
import com.alibaba.cloud.integration.order.dto.TimeDTO; import com.alibaba.cloud.integration.order.dao.ProductCategoryDao;
import com.alibaba.cloud.integration.order.dto.TimeRangeReqDTO; import com.alibaba.cloud.integration.order.dto.CapacityQueryReqDTO;
import com.alibaba.cloud.integration.order.dto.TimeRangeRespDTO; import com.alibaba.cloud.integration.order.dto.CapacityQueryRespDTO;
import com.alibaba.cloud.integration.order.entity.CapacityTeamStatEntity; import com.alibaba.cloud.integration.order.entity.CapacityTeamStatEntity;
import com.alibaba.cloud.integration.order.service.TimeRangeService; import com.alibaba.cloud.integration.order.service.CapacityQueryService;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.time.DayOfWeek; import java.time.DayOfWeek;
import java.time.LocalDate; import java.time.LocalDate;
...@@ -20,22 +26,30 @@ import java.util.*; ...@@ -20,22 +26,30 @@ import java.util.*;
@Service @Service
@Slf4j @Slf4j
public class TimeRangeServiceImpl implements TimeRangeService { public class CapacityQueryServiceImpl implements CapacityQueryService {
private final String[] fullDay = {"08:00", "18:00"}; private final String[] fullDay = {"08:00", "18:00"};
@Autowired @Autowired
private CapacityTeamStatDao capacityTeamStatDao; private CapacityTeamStatDao capacityTeamStatDao;
@Autowired
private ProductCategoryDao productCategoryDao;
@Autowired
private MapBlockInfoDao mapBlockInfoDao;
@Override @Override
public Result<?> getTimeRangeData(TimeRangeReqDTO reqDTO) { public Result<?> getOneCapacityData(CapacityQueryReqDTO reqDTO) {
/* /*
location ==> [layer_info] ==> team ==> (+skill) ==> [capacity_team_stat] location ==> [layer_info] ==> team ==> (+skill) ==> [capacity_team_stat]
*/ */
String teamId = getTeamByLayer(reqDTO.getLocation()); String layer = productCategoryDao.getLayerByBrandAndTypeAndSkill(reqDTO.getBrand(), reqDTO.getType(), reqDTO.getSkill());
TimeRangeRespDTO timeRangeRespDTO = new TimeRangeRespDTO(); String teamId = getTeamByLayer(reqDTO.getLocation(), reqDTO.getAddress(), layer);
timeRangeRespDTO.setBeginDate(timeRangeRespDTO.getBeginDate()).setEndDate(reqDTO.getEndDate()); CapacityQueryRespDTO capacityQueryRespDTO = new CapacityQueryRespDTO();
timeRangeRespDTO.setCalendar(getTimeRangeByTeamSkill(teamId, reqDTO.getCategoryId(), reqDTO.getBeginDate(), reqDTO.getEndDate())); capacityQueryRespDTO.setBeginDate(capacityQueryRespDTO.getBeginDate()).setEndDate(reqDTO.getEndDate());
return Result.success(timeRangeRespDTO); capacityQueryRespDTO.setCalendar(getTimeRangeByTeamSkill(teamId, reqDTO.getSkill(), reqDTO.getBeginDate(), reqDTO.getEndDate()));
capacityQueryRespDTO.setRemark(String.format("%s-%s", teamId, layer));
return Result.success(capacityQueryRespDTO);
} }
/** /**
...@@ -45,10 +59,54 @@ public class TimeRangeServiceImpl implements TimeRangeService { ...@@ -45,10 +59,54 @@ public class TimeRangeServiceImpl implements TimeRangeService {
* @param location * @param location
* @return * @return
*/ */
private String getTeamByLayer(String location) { private String getTeamByLayer(String location, String address, String layer) {
// todo // todo 由于saas的分单接口尚未完成,目前仅仅是调用分单获取
// 创建RestTemplate实例
RestTemplate restTemplate = new RestTemplate();
// 设置请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// 构建请求参数
String url;
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("ak", "284c57cbabad4755a9c657885a8df3e2");
if (location != null && !location.isEmpty()) {
url = "https://pea-test.bshg.com.cn/v2/xyfendan";
params.add("coordinate", location);
} else {
url = "https://pea-test.bshg.com.cn/v2/fendan";
params.add("addresses", String.format("[{\"address\":\"%s\"}]", address));
}
params.add("need_district", "true");
params.add("need_layer", "true");
params.add("related_point_fields", "");
params.add("area_fields", "名称,唯一编号");
// 构建请求实体
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
// 发送POST请求
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
// 获取响应结果
String responseBody = responseEntity.getBody();
// 使用Jackson库解析JSON数据
ObjectMapper objectMapper = new ObjectMapper();
try {
JsonNode responseJson = objectMapper.readTree(responseBody);
// 获取areaResults[0]的值
JsonNode areaResult = responseJson.get("result").get(0).get("areaResults").get(0);
// 将areaResult转换为JSON字符串
// todo 分单接口其实也应该直接返回 图层
return mapBlockInfoDao.getTeamidByBlockidAndLayer(areaResult.get("field2").toString(), layer);
} catch (Exception e) {
return null; return null;
} }
}
private int getSpanType(int capLeft, int capTotal) { private int getSpanType(int capLeft, int capTotal) {
float ratio = (float) capLeft / capTotal; float ratio = (float) capLeft / capTotal;
...@@ -82,23 +140,23 @@ public class TimeRangeServiceImpl implements TimeRangeService { ...@@ -82,23 +140,23 @@ public class TimeRangeServiceImpl implements TimeRangeService {
* 根据工作队、技能,返回对应时间段内的容量 * 根据工作队、技能,返回对应时间段内的容量
* *
* @param teamId * @param teamId
* @param skill * @param layer
* @param beginDate * @param beginDate
* @param endDate * @param endDate
* @return * @return
*/ */
private List<CalendarDTO> getTimeRangeByTeamSkill(String teamId, String skill, String beginDate, String endDate) { private List<CapacityQueryRespDTO.CalendarDTO> getTimeRangeByTeamSkill(String teamId, String layer, String beginDate, String endDate) {
Map<String, CalendarDTO> dayMaps = new HashMap<>(); Map<String, CapacityQueryRespDTO.CalendarDTO> dayMaps = new HashMap<>();
List<CapacityTeamStatEntity> capacityTeamStatEntityList = capacityTeamStatDao.findAllByTeamIdAndSkillTagAndWorkdayBetween(teamId, skill, beginDate, endDate); List<CapacityTeamStatEntity> capacityTeamStatEntityList = capacityTeamStatDao.findAllByTeamIdAndLayerAndWorkdayBetween(teamId, layer, beginDate, endDate);
for (CapacityTeamStatEntity e : capacityTeamStatEntityList) { for (CapacityTeamStatEntity e : capacityTeamStatEntityList) {
TimeDTO timeDTO = new TimeDTO(); CapacityQueryRespDTO.TimeDTO timeDTO = new CapacityQueryRespDTO.TimeDTO();
timeDTO.setType(getSpanType(e.getCapLeft(), e.getCapTotal())); timeDTO.setType(getSpanType(e.getCapLeft(), e.getCapTotal()));
Object[] timeSpans = getTimeSpanInfo(e.getWorkday(), e.getTimeSpan(), e.getTimeSpanDetail()); Object[] timeSpans = getTimeSpanInfo(e.getWorkday(), e.getTimeSpan(), e.getTimeSpanDetail());
timeDTO.setText((String) timeSpans[0]); timeDTO.setText((String) timeSpans[0]);
timeDTO.setBegin((String) timeSpans[1]); timeDTO.setBegin((String) timeSpans[1]);
timeDTO.setEnd((String) timeSpans[2]); timeDTO.setEnd((String) timeSpans[2]);
if (!dayMaps.containsKey(e.getWorkday())) { if (!dayMaps.containsKey(e.getWorkday())) {
CalendarDTO calendarDTO = new CalendarDTO(); CapacityQueryRespDTO.CalendarDTO calendarDTO = new CapacityQueryRespDTO.CalendarDTO();
calendarDTO.setDate(e.getWorkday()); calendarDTO.setDate(e.getWorkday());
calendarDTO.setWeek(getWeekday(e.getWorkday())); calendarDTO.setWeek(getWeekday(e.getWorkday()));
dayMaps.put(e.getWorkday(), calendarDTO); dayMaps.put(e.getWorkday(), calendarDTO);
...@@ -114,4 +172,5 @@ public class TimeRangeServiceImpl implements TimeRangeService { ...@@ -114,4 +172,5 @@ public class TimeRangeServiceImpl implements TimeRangeService {
DayOfWeek weekday = date.getDayOfWeek(); DayOfWeek weekday = date.getDayOfWeek();
return String.format("周%s", weekday.getDisplayName(TextStyle.SHORT, Locale.CHINA)); return String.format("周%s", weekday.getDisplayName(TextStyle.SHORT, Locale.CHINA));
} }
} }
...@@ -17,30 +17,73 @@ ...@@ -17,30 +17,73 @@
package com.alibaba.cloud.integration.order.service.impl; package com.alibaba.cloud.integration.order.service.impl;
import com.alibaba.cloud.integration.common.Result; import com.alibaba.cloud.integration.common.Result;
import com.alibaba.cloud.integration.order.dao.OrderReqeustDao; import com.alibaba.cloud.integration.order.dao.OrderRequestDao;
import com.alibaba.cloud.integration.order.dao.OrderTagStrategyDao;
import com.alibaba.cloud.integration.order.dao.ProductCategoryDao;
import com.alibaba.cloud.integration.order.dto.KeyValueDTO;
import com.alibaba.cloud.integration.order.dto.LocationDTO; import com.alibaba.cloud.integration.order.dto.LocationDTO;
import com.alibaba.cloud.integration.order.dto.OrderCreateReqDTO; import com.alibaba.cloud.integration.order.dto.OrderCreateReqDTO;
import com.alibaba.cloud.integration.order.dto.ParameterRespDTO;
import com.alibaba.cloud.integration.order.entity.OrderRequestEntity; import com.alibaba.cloud.integration.order.entity.OrderRequestEntity;
import com.alibaba.cloud.integration.order.feign.AccountServiceFeignClient; import com.alibaba.cloud.integration.order.entity.ProductCategoryEntity;
import com.alibaba.cloud.integration.order.feign.StorageServiceFeignClient;
import com.alibaba.cloud.integration.order.mapper.OrderMapper;
import com.alibaba.cloud.integration.order.service.OrderService; import com.alibaba.cloud.integration.order.service.OrderService;
import io.seata.core.context.RootContext; import io.seata.core.context.RootContext;
import io.seata.spring.annotation.GlobalTransactional;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Slf4j @Slf4j
@Service @Service
public class OrderServiceImpl implements OrderService { public class OrderServiceImpl implements OrderService {
@Autowired @Autowired
private OrderReqeustDao orderReqeustDao; private OrderRequestDao orderRequestDao;
@Autowired
private OrderTagStrategyDao orderTagStrategyDao;
@Autowired
private ProductCategoryDao productCategoryDao;
private List<KeyValueDTO> getPriorities() {
List<KeyValueDTO> listPriorities = new ArrayList<>();
int prioritiesLevels = 10;
for (int i = 0; i <= prioritiesLevels; i++) {
String label;
if (i == 0) {
label = "最低";
} else if (i == prioritiesLevels) {
label = "最高";
} else {
label = String.format("优先级%d", i);
}
listPriorities.add(new KeyValueDTO().setLabel(label).setValue(String.valueOf(i)));
}
return listPriorities;
}
private List<KeyValueDTO> getStandardTags() {
List<KeyValueDTO> tagList = new ArrayList<>();
for (String tag : orderTagStrategyDao.getAllTags()) {
tagList.add(new KeyValueDTO().setLabel(tag).setValue(tag));
}
return tagList;
}
@Override
public Result<?> initParameter() {
ParameterRespDTO respDTO = new ParameterRespDTO();
respDTO.setPriorities(getPriorities()).setStandardTags(getStandardTags());
return Result.success(respDTO);
}
@Override @Override
@GlobalTransactional
public Result<?> createOrder(OrderCreateReqDTO req) { public Result<?> createOrder(OrderCreateReqDTO req) {
log.info("[createOrder] current XID: {}", RootContext.getXID()); log.info("[createOrder] current XID: {}", RootContext.getXID());
...@@ -49,7 +92,13 @@ public class OrderServiceImpl implements OrderService { ...@@ -49,7 +92,13 @@ public class OrderServiceImpl implements OrderService {
entity.setPhone(req.getPhone()); entity.setPhone(req.getPhone());
entity.setAddress(req.getAddress()); entity.setAddress(req.getAddress());
entity.setBrand(req.getBrand()); entity.setBrand(req.getBrand());
entity.setCategoryId(req.getCatalogId());
ProductCategoryEntity categoryEntity = productCategoryDao.getProductCategoryEntityByBrandAndTypeAndSkill(req.getBrand(), req.getType(), req.getSkill());
if (categoryEntity == null) {
throw new RuntimeException("产品代码不存在!");
}
String catalogId = categoryEntity.getProductCategoryId();
entity.setCategoryId(catalogId);
entity.setFaultDescribe(req.getFaultDescribe()); entity.setFaultDescribe(req.getFaultDescribe());
entity.setExpectTimeBegin(req.getExpectBegin()); entity.setExpectTimeBegin(req.getExpectBegin());
entity.setExpectTimeEnd(req.getExpectEnd()); entity.setExpectTimeEnd(req.getExpectEnd());
...@@ -59,7 +108,7 @@ public class OrderServiceImpl implements OrderService { ...@@ -59,7 +108,7 @@ public class OrderServiceImpl implements OrderService {
entity.setProvince(location.getProvince()); entity.setProvince(location.getProvince());
entity.setCity(location.getCity()); entity.setCity(location.getCity());
entity.setCounty(location.getCountry()); entity.setCounty(location.getCountry());
orderReqeustDao.save(entity);
// 根据orderTags, 解析保存到type、skill等字段 // 根据orderTags, 解析保存到type、skill等字段
String[] l = req.getLocation().getLocation().split(","); String[] l = req.getLocation().getLocation().split(",");
entity.setX(l[0]); entity.setX(l[0]);
...@@ -67,6 +116,7 @@ public class OrderServiceImpl implements OrderService { ...@@ -67,6 +116,7 @@ public class OrderServiceImpl implements OrderService {
// todo 服务单状态、预约状态等 // todo 服务单状态、预约状态等
entity.setStatus(""); entity.setStatus("");
entity.setAppointmentStatus(""); entity.setAppointmentStatus("");
orderRequestDao.save(entity);
return Result.success(null); return Result.success(null);
} }
} }
package com.alibaba.cloud.integration.order.service.impl;
import com.alibaba.cloud.integration.common.Result;
import com.alibaba.cloud.integration.order.dao.*;
import com.alibaba.cloud.integration.order.dto.OrganizationEngineersRespDTO;
import com.alibaba.cloud.integration.order.dto.OrganizationTeamsRespDTO;
import com.alibaba.cloud.integration.order.dto.OrganizationTreeRespDTO;
import com.alibaba.cloud.integration.order.entity.*;
import com.alibaba.cloud.integration.order.service.OrganizationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Service
@Slf4j
public class OrganizationServiceImpl implements OrganizationService {
@Autowired
OrgClusterDao orgClusterDao;
@Autowired
OrgBranchDao orgBranchDao;
@Autowired
OrgGroupDao orgGroupDao;
@Autowired
OrgTeamEngineerDao orgTeamEngineerDao;
@Autowired
EngineerInfoDao engineerInfoDao;
@Autowired
OrgTeamDao orgTeamDao;
@Override
public Result<?> getOrganizationTree(String levelType, String levelId) {
// 如果传递了精确的id,只返回对应的tree内容;如果没有传递,返回所有tree内容
if ("group".equals(levelType)) {
OrgGroupEntity orgGroupEntity = orgGroupDao.getByGroupId(levelId);
if (orgGroupEntity == null) {
return Result.failed("groupId对应的信息不存在");
}
List<?> groups = new ArrayList<>(Collections.singletonList(groupEntity2Dto(orgGroupEntity)));
OrgBranchEntity orgBranchEntity = orgBranchDao.getByBranchId(orgGroupEntity.getBranchId());
List<?> branchs = new ArrayList<>(Collections.singletonList(branchEntityh2Dto(orgBranchEntity).setChildren(groups)));
OrgClusterEntity orgClusterEntity = orgClusterDao.getByClusterId(orgGroupEntity.getClusterId());
List<?> clusters = new ArrayList<>(Collections.singletonList(clusterEntity2Dto(orgClusterEntity).setChildren(branchs)));
return Result.success(new OrganizationTreeRespDTO().setClusters(clusters));
} else if ("branch".equals(levelType)) {
OrgBranchEntity orgBranchEntity = orgBranchDao.getByBranchId(levelId);
if (orgBranchEntity == null) {
return Result.failed("分站信息不存在");
}
OrgClusterEntity orgClusterEntity = orgClusterDao.getByClusterId(orgBranchEntity.getClusterId());
List<?> groups = getChildByBranch(levelId);
List<?> branchs = new ArrayList<>(Collections.singletonList(branchEntityh2Dto(orgBranchEntity).setChildren(groups)));
List<?> clusters = new ArrayList<>(Collections.singletonList(clusterEntity2Dto(orgClusterEntity).setChildren(branchs)));
return Result.success(new OrganizationTreeRespDTO().setClusters(clusters));
} else if ("cluster".equals(levelType)) {
OrgClusterEntity orgClusterEntity = orgClusterDao.getByClusterId(levelId);
if (orgClusterEntity == null) {
return Result.failed("大区信息不存在");
}
List<?> branchs = getChildByCluster(levelId);
List<?> clusters = new ArrayList<>(Collections.singletonList(clusterEntity2Dto(orgClusterEntity).setChildren(branchs)));
return Result.success(new OrganizationTreeRespDTO().setClusters(clusters));
} else {
return Result.success(new OrganizationTreeRespDTO().setClusters(getTreeByRoot()));
}
}
@Override
public Result<?> getEngineersByTeams(String[] teamIds) {
List<OrganizationEngineersRespDTO.Engineer> engineers = new ArrayList<>();
for (OrgTeamEngineerEntity e : orgTeamEngineerDao.findAllByTeamidIn(teamIds)) {
EngineerInfoEntity engineerInfoEntity = engineerInfoDao.getByEngineerCode(e.getEngineerCode());
if (engineerInfoEntity == null) {
log.error("技术员信息不存在!engineer_code[%s]", e.getEngineerCode());
continue;
}
engineers.add(new OrganizationEngineersRespDTO.Engineer(e.getTeamId(), e.getEngineerCode(), engineerInfoEntity.getName()));
}
return Result.success(new OrganizationEngineersRespDTO().setEngineers(engineers));
}
@Override
public Result<?> getTeamsByLevel(String levelType, String levelValue) {
List<OrgTeamEntity> entities;
if ("cluster".equals(levelType)) {
entities = orgTeamDao.findAllByClusterId(levelValue);
} else if ("branch".equals(levelType)) {
entities = orgTeamDao.findAllByBranchId(levelValue);
} else if ("group".equals(levelType)) {
entities = orgTeamDao.findAllByGroupId(levelValue);
} else {
entities = orgTeamDao.findAll();
}
List<OrganizationTeamsRespDTO.Team> teams = new ArrayList<>();
for (OrgTeamEntity e : entities) {
teams.add(new OrganizationTeamsRespDTO.Team()
.setTeamType(e.getTeamType())
.setTeamId(e.getTeamId())
.setTeamName(e.getTeamName())
.setClusterId(e.getClusterId())
.setBranchId(e.getBranchId())
.setGroupId(e.getGroupId())
);
}
return Result.success(new OrganizationTeamsRespDTO().setTeams(teams));
}
private List<?> getTreeByRoot() {
List<OrganizationTreeRespDTO.Cluster> clusters = new ArrayList<>();
for (OrgClusterEntity c : orgClusterDao.findAll()) {
clusters.add(clusterEntity2Dto(c).setChildren(getChildByCluster(c.getClusterId())));
}
return clusters;
}
private List<?> getChildByCluster(String clusterId) {
List<OrganizationTreeRespDTO.Branch> branches = new ArrayList<>();
for (OrgBranchEntity b : orgBranchDao.findAllByClusterId(clusterId)) {
branches.add(branchEntityh2Dto(b).setChildren(getChildByBranch(b.getBranchId())));
}
return branches;
}
private List<?> getChildByBranch(String branchId) {
// 获取branch及下面的group
List<OrganizationTreeRespDTO.Group> groups = new ArrayList<>();
for (OrgGroupEntity g : orgGroupDao.findAllByBranchId(branchId)) {
groups.add(groupEntity2Dto(g));
}
return groups;
}
private OrganizationTreeRespDTO.Group groupEntity2Dto(OrgGroupEntity orgGroupEntity) {
return new OrganizationTreeRespDTO.Group()
.setType("group")
.setId(orgGroupEntity.getGroupId())
.setTitle(orgGroupEntity.getGroupName());
}
private OrganizationTreeRespDTO.Branch branchEntityh2Dto(OrgBranchEntity orgBranchEntity) {
return new OrganizationTreeRespDTO.Branch()
.setType("branch")
.setId(orgBranchEntity.getBranchId())
.setTitle(orgBranchEntity.getBranchName());
}
private OrganizationTreeRespDTO.Cluster clusterEntity2Dto(OrgClusterEntity orgClusterEntity) {
return new OrganizationTreeRespDTO.Cluster()
.setType("custer")
.setId(orgClusterEntity.getClusterId())
.setTitle(orgClusterEntity.getName());
}
}
package com.alibaba.cloud.integration.order.service.impl;
import com.alibaba.cloud.integration.common.Result;
import com.alibaba.cloud.integration.order.dao.OrderTagStrategyDao;
import com.alibaba.cloud.integration.order.dao.ProductCategoryDao;
import com.alibaba.cloud.integration.order.dto.BrandDTO;
import com.alibaba.cloud.integration.order.dto.KeyValueDTO;
import com.alibaba.cloud.integration.order.dto.ParameterRespDTO;
import com.alibaba.cloud.integration.order.entity.ProductCategoryEntity;
import com.alibaba.cloud.integration.order.service.ProductService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@Slf4j
public class ProductServiceImpl implements ProductService {
@Autowired
private ProductCategoryDao productCategoryDao;
@Autowired
private OrderTagStrategyDao orderTagStrategyDao;
private List<KeyValueDTO> getPriorities() {
List<KeyValueDTO> listPriorities = new ArrayList<>();
int prioritiesLevels = 10;
for (int i = 0; i <= prioritiesLevels; i++) {
String label;
if (i == 0) {
label = "最低";
} else if (i == prioritiesLevels) {
label = "最高";
} else {
label = String.format("优先级%d", i);
}
listPriorities.add(new KeyValueDTO().setLabel(label).setValue(String.valueOf(i)));
}
return listPriorities;
}
private List<KeyValueDTO> getStandardTags() {
List<KeyValueDTO> tagList = new ArrayList<>();
for (String tag : orderTagStrategyDao.getAllTags()) {
tagList.add(new KeyValueDTO().setLabel(tag).setValue(tag));
}
return tagList;
}
private List<BrandDTO> getBrands() {
Map<String, BrandDTO> brandMap = new HashMap<>();
for (ProductCategoryEntity e : productCategoryDao.findAll()) {
String brand = e.getBrand();
String text = String.format("%s-%s", e.getType(), e.getSkill());
KeyValueDTO categoryDto = new KeyValueDTO().setLabel(text).setValue(e.getProductCategoryId());
if (brandMap.containsKey(brand)) {
brandMap.get(brand).getCategories().add(categoryDto);
} else {
BrandDTO brandDTO = new BrandDTO().setLabel(brand).setValue(brand).setCategories(new ArrayList<>());
brandDTO.getCategories().add(categoryDto);
brandMap.put(brand, brandDTO);
}
}
return new ArrayList<>(brandMap.values());
}
@Override
public Result<?> getProductCategoryList() {
ParameterRespDTO parameterDTO =
new ParameterRespDTO().setBrands(getBrands()).setPriorities(getPriorities()).setStandardTags(getStandardTags());
return Result.success(parameterDTO);
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!