Commit 0dccca58 by 丁伟峰

Merge branch 'feature-dingwf-0715' into develop

2 parents 1114efed 3a58ffb9
package com.dituhui.pea.order.controller;
import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dto.*;
import com.dituhui.pea.order.service.BusinessTeamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/pea-order")
public class BusinessController {
@Autowired
private BusinessTeamService businessTeamService;
@GetMapping("/business/team/list")
public Result<?> getTeamList(@Validated BusinessTeamsDTO.Request reqDTO) {
Result<?> res = null;
try {
res = businessTeamService.getTeams(reqDTO);
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
@GetMapping("/business/warehouse/list")
public Result<?> getWarehouses(@Validated BusinessWarehousesDTO.Request reqDTO) {
Result<?> res = null;
try {
res = businessTeamService.getWarehouses(reqDTO);
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
@PostMapping("/business/team/add")
public Result<?> addTeam(@Validated BusinessTeamAddDTO.Request reqDTO) {
Result<?> res = null;
try {
res = businessTeamService.addTeam(reqDTO);
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
@GetMapping("/business/team/detail")
public Result<?> getTeamDetail(@Validated BusinessTeamDetailDTO.Request reqDTO) {
Result<?> res = null;
try {
res = businessTeamService.getTeamDetail(reqDTO);
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
@PostMapping("/business/team/update")
public Result<?> updateTeamBase(@Validated BusinessTeamUpdateDTO.Request reqDTO) {
Result<?> res = null;
try {
res = businessTeamService.updateTeamBase(reqDTO);
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
@GetMapping("/business/team/delete")
public Result<?> deleteTeamBase(@Validated BusinessTeamDeleteDTO.Request reqDTO) {
Result<?> res = null;
try {
res = businessTeamService.deleteTeam(reqDTO);
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
@GetMapping("/business/team/scheduling/init")
public Result<?> initScheduling(@Validated BusinessTeamConfigInitDTO.Request reqDTO) {
Result<?> res = null;
try {
res = businessTeamService.getSchedulingInit(reqDTO);
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
@GetMapping("/business/team/scheduling/submit")
public Result<?> updateSchedulingConfig(@Validated BusinessTeamConfigSubmitDTO.Request reqDTO) {
Result<?> res = null;
try {
res = businessTeamService.updateSchedulingConfig(reqDTO);
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
}
package com.dituhui.pea.order.dao;
import com.dituhui.pea.order.entity.OrgTeamEntity;
import org.hibernate.annotations.Where;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
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);
......@@ -16,5 +16,7 @@ public interface OrgTeamDao extends JpaRepository<OrgTeamEntity, Integer> {
List<OrgTeamEntity> findAllByGroupId(String groupId);
Page<OrgTeamEntity> findAllByGroupId(String groupId, Pageable pageable);
OrgTeamEntity getByTeamId(String teamId);
}
......@@ -13,5 +13,7 @@ import java.util.List;
@Where(clause = "status = 1")
public interface OrgTeamEngineerDao extends JpaRepository<OrgTeamEngineerEntity, Integer> {
List<OrgTeamEngineerEntity> findAllByTeamIdIn(Collection<String> teamIds);
List<OrgTeamEngineerEntity> findAllByTeamId(String teamId);
List<OrgTeamEngineerEntity> findAllByTeamIdIn(List<String> teamIds);
}
package com.dituhui.pea.order.dao;
import com.dituhui.pea.order.entity.OrgWarehouseInfoEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface WarehouseInfoDao extends JpaRepository<OrgWarehouseInfoEntity, Long> {
List<OrgWarehouseInfoEntity> getAllByGroupId(String groupId);
}
package com.dituhui.pea.order.dto;
import java.util.List;
public class BusinessTeamAddDTO {
@lombok.Data
public static class Request {
/**
* 工程师codes
*/
private List<String> engineerCodes;
/**
* 分站Id
*/
private String groupId;
/**
* 工作队名称
*/
private String teamName;
/**
* 配件仓Id
*/
private String warehouseId;
/**
* 开放工作日
*/
private List<String> workdays;
}
}
package com.dituhui.pea.order.dto;
import java.util.List;
public class BusinessTeamConfigInitDTO {
@lombok.Data
public static class Request {
}
@lombok.Data
public static class Result {
/**
* 次日预排班间隔
*/
private String nextScheduleInterval;
/**
* 当日预排班间隔
*/
private String todayScheduleInterval;
/**
* 最优策略
*/
private List<LabelValueDTO> schedulingStrategy;
/**
* 网点指派策略
*/
private List<LabelValueDTO> assignStrategy;
/**
* 交通方式
*/
private List<LabelValueDTO> transportMode;
}
}
package com.dituhui.pea.order.dto;
public class BusinessTeamConfigSubmitDTO {
@lombok.Data
public static class Request {
/**
* 网点指派策略
*/
private String assiginStrategy;
/**
* cutoff时间
*/
private String cutoffTime;
/**
* 次日预排班间隔
*/
private String nextScheduleInterval;
/**
* 最优策略
*/
private String scheduleStrategy;
/**
* 工作队Id
*/
private String teamId;
/**
* 当日预排班间隔
*/
private String todayScheduleInterval;
/**
* 交通方式
*/
private String transportMode;
/**
* 下班时间
*/
private String workOff;
/**
* 上班时间
*/
private String workOn;
}
}
package com.dituhui.pea.order.dto;
import java.util.List;
public class BusinessTeamDeleteDTO {
@lombok.Data
public static class Request {
/**
* 工作队Id
*/
private String teamId;
}
}
package com.dituhui.pea.order.dto;
import java.util.List;
public class BusinessTeamDetailDTO {
@lombok.Data
public static class Request {
private String teamId;
}
@lombok.Data
public static class Result {
private String capacity;
private Engineer[] engineers;
private ScheduleConfig scheduleConfig;
private String teamId;
private String teamName;
private String warehouseId;
private List<String> workdays;
}
@lombok.Data
public static class Engineer {
private String engineerCode;
private String engineerName;
}
/**
* 排班配置
*/
@lombok.Data
public static class ScheduleConfig {
/**
* 网点指派策略
*/
private String assiginStrategy;
/**
* cutoff时间
*/
private String cutoffTime;
/**
* 次日预排班间隔
*/
private String nextScheduleInterval;
/**
* 最优策略
*/
private String scheduleStrategy;
/**
* 当日预排班间隔
*/
private String todayScheduleInterval;
/**
* 交通方式
*/
private String transportMode;
/**
* 下班时间
*/
private String workOff;
/**
* 上班时间
*/
private String workOn;
}
}
package com.dituhui.pea.order.dto;
import java.util.List;
public class BusinessTeamUpdateDTO {
/**
* Request
*/
@lombok.Data
public static class Request {
/**
* 工程师codes
*/
private List<String> engineerCodes;
/**
* 分站Id
*/
private String groupId;
/**
* 工作队Id
*/
private String teamId;
/**
* 工作队名称
*/
private String teamName;
/**
* 配件仓Id
*/
private String warehouseId;
/**
* 开放工作日
*/
private List<String> workdays;
}
}
package com.dituhui.pea.order.dto;
import lombok.experimental.Accessors;
import java.util.List;
import static com.dituhui.pea.order.config.OrderConfig.DEFAULT_PAGE_SIZE;
public class BusinessTeamsDTO {
@lombok.Data
public static class Request {
private String levelType;
private String levelValue;
private Integer size = DEFAULT_PAGE_SIZE;
private Integer page = 1;
}
@lombok.Data
@Accessors(chain = true)
public static class Result {
/**
* 列表
*/
private List<Content> content;
/**
* 当前页码
*/
private String pageCurrent;
/**
* 总页数
*/
private String pages;
/**
* 每业条数
*/
private String pageSize;
/**
* 总条数
*/
private String total;
}
@lombok.Data
@Accessors(chain = true)
public static class Content {
/**
* 剩余容量
*/
private String capacityRest;
/**
* 已占容量
*/
private String capacityUse;
/**
* 工程师
*/
private String engineers;
/**
* 当前单数
*/
private String ordersNum;
/**
* 人数/分钟数
*/
private String peopleMinute;
/**
* 工作队编号
*/
private String teamId;
/**
* 工作队名称
*/
private String teamName;
/**
* 配件仓
*/
private String warehouseName;
/**
* 开放工作日
*/
private String workdays;
}
}
package com.dituhui.pea.order.dto;
import lombok.experimental.Accessors;
import java.util.List;
public class BusinessWarehousesDTO {
@lombok.Data
public static class Request {
private String groupId;
}
@lombok.Data
@Accessors(chain = true)
public static class Result {
private List<Content> content;
}
@lombok.Data
@Accessors(chain = true)
public static class Content {
/**
* 配件仓Id
*/
private String warehouseId;
/**
* 配件仓名称
*/
private String warehouseName;
}
}
package com.dituhui.pea.order.dto;
import java.util.List;
public class EngineerCalendarDTO {
@lombok.Data
public static class Request {
private String date;
/**
* 姓名,工号
*/
private String key;
private String levelType;
private String levelValue;
}
@lombok.Data
public static class Result {
private List<Engineer> engineers;
}
@lombok.Data
public static class Engineer {
private List<Calendar> calendar;
private String engineerCode;
private String name;
}
@lombok.Data
public static class Calendar {
private List<Content> content;
private String date;
private String week;
}
@lombok.Data
public static class Content {
private String title;
private String type;
private String value;
}
}
package com.dituhui.pea.order.entity;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.time.LocalDateTime;
@Data
@Entity
@Table(name="org_warehouse_info")
public class OrgWarehouseInfoEntity {
private static final long serialVersionUID = 1L;
@Id
private Integer id;
/**
* 配件仓id
*/
private String warehouseId;
/**
* 配件仓名称
*/
private String warehouseName;
/**
* 归属分站
*/
private String groupId;
/**
* 所在城市id
*/
private String cityCode;
/**
* 配件仓
*/
private String address;
/**
* 办公地址经度
*/
private String x;
/**
* 办公地址纬度
*/
private String y;
/**
* 配件到达时间
*/
private String arriveTime;
/**
* 配件到达时间
*/
private String cutoffTime;
/**
* 类型(1分部仓-可分发,2小组仓-快递柜)
*/
private int kind;
/**
* 管理员姓名
*/
private String managerName;
/**
* 管理员手机号码
*/
private String namagerPhone;
/**
* 备注
*/
private String memo;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package com.dituhui.pea.order.service;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dto.*;
public interface BusinessTeamService {
Result<?> getTeams(BusinessTeamsDTO.Request req);
Result<?> getWarehouses(BusinessWarehousesDTO.Request req);
Result<?> addTeam(BusinessTeamAddDTO.Request req);
Result<?> updateTeamBase(BusinessTeamUpdateDTO.Request req);
Result<?> getTeamDetail(BusinessTeamDetailDTO.Request req);
Result<?> deleteTeam(BusinessTeamDeleteDTO.Request req);
Result<?> getSchedulingInit(BusinessTeamConfigInitDTO.Request req);
Result<?> updateSchedulingConfig(BusinessTeamConfigSubmitDTO.Request req);
}
package com.dituhui.pea.order.service.impl;
import cn.hutool.core.date.Week;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dao.*;
import com.dituhui.pea.order.dto.*;
import com.dituhui.pea.order.entity.OrgTeamEngineerEntity;
import com.dituhui.pea.order.entity.OrgTeamEntity;
import com.dituhui.pea.order.entity.OrgWarehouseInfoEntity;
import com.dituhui.pea.order.service.BusinessTeamService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Service
@Slf4j
public class BusinessTeamServiceImpl implements BusinessTeamService {
@Autowired
private OrgTeamDao orgTeamDao;
@Autowired
private WarehouseInfoDao warehouseInfoDao;
@Autowired
private OrgTeamEngineerDao orgTeamEngineerDao;
@Autowired
private EngineerInfoDao engineerInfoDao;
@Autowired
private CapacityTeamStatDao capacityTeamStatDao;
@Override
public Result<?> getTeams(BusinessTeamsDTO.Request req) {
List<BusinessTeamsDTO.Content> contens = new ArrayList<>();
Pageable pageable = PageRequest.of(req.getPage() - 1, req.getSize());
Page<OrgTeamEntity> teams = orgTeamDao.findAllByGroupId(req.getLevelValue(), pageable);
List<String> teamIds = teams.stream().map(OrgTeamEntity::getTeamId).collect(Collectors.toList());
for (OrgTeamEntity e:teams){
String engineers = orgTeamEngineerDao.findAllByTeamId(e.getTeamId()).stream().map(e2->{
return engineerInfoDao.getByEngineerCode(e2.getEngineerCode()).getName();
}).collect(Collectors.toList()).toString();
BusinessTeamsDTO.Content content = new BusinessTeamsDTO.Content();
content.setTeamId(e.getTeamId()).setTeamName(e.getTeamName());
content.setWorkdays(getWorkdaysChinese(e.getWorkdays()).toString());
content.setEngineers(engineers);
// todo 工作队容量
}
return Result.success(new BusinessTeamsDTO.Result().setContent(contens));
}
private List<String> getWorkdaysChinese(String workDays){
// 将 1,2,3 转换为 周一、周二、周三
return Arrays.stream(workDays.split(",")).map(e->{
return Week.valueOf(e).toChinese("周");
}).collect(Collectors.toList());
}
@Override
public Result<?> getWarehouses(BusinessWarehousesDTO.Request req) {
List<OrgWarehouseInfoEntity> warehouseInfoEntityList = warehouseInfoDao.getAllByGroupId(req.getGroupId());
List<BusinessWarehousesDTO.Content> contents = warehouseInfoEntityList.stream().map(entity -> {
BusinessWarehousesDTO.Content dto = new BusinessWarehousesDTO.Content();
dto.setWarehouseId(entity.getWarehouseId());
dto.setWarehouseName(entity.getWarehouseName());
// 手工赋值其他字段
return dto;
}).collect(Collectors.toList());
return Result.success(new BusinessWarehousesDTO.Result().setContent(contents));
}
@Override
public Result<?> addTeam(BusinessTeamAddDTO.Request req) {
return null;
}
@Override
public Result<?> updateTeamBase(BusinessTeamUpdateDTO.Request req) {
return null;
}
@Override
public Result<?> getTeamDetail(BusinessTeamDetailDTO.Request req) {
return null;
}
@Override
public Result<?> deleteTeam(BusinessTeamDeleteDTO.Request req) {
return null;
}
@Override
public Result<?> getSchedulingInit(BusinessTeamConfigInitDTO.Request req) {
return null;
}
@Override
public Result<?> updateSchedulingConfig(BusinessTeamConfigSubmitDTO.Request req) {
return null;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!