Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
lulz1 2024-05-28 10:45:58 +08:00
commit 1e090f0825
13 changed files with 98 additions and 38 deletions

View File

@ -125,4 +125,10 @@ public class UserController {
} }
return Result.Success(SUCCESS, userDepartmentInfoList); return Result.Success(SUCCESS, userDepartmentInfoList);
} }
@ApiOperation("获取当前登录用户信息")
@PostMapping("/current")
public Result<User> currentUser() {
return Result.Success(SUCCESS, BaseContext.getCurrentUser());
}
} }

View File

@ -28,4 +28,6 @@ public interface JdbcOrderDetailRepository extends CrudRepository<OrderDetail, L
List<OrderDetail> findByCreateTimeBetweenAndProductType(LocalDateTime createTime, LocalDateTime createTime2, Integer productType); List<OrderDetail> findByCreateTimeBetweenAndProductType(LocalDateTime createTime, LocalDateTime createTime2, Integer productType);
List<OrderDetail> findByCreateTimeBetweenAndProductTypeAndOrderNoContaining(LocalDateTime createTime, LocalDateTime createTime2, Integer productType, String orderNo); List<OrderDetail> findByCreateTimeBetweenAndProductTypeAndOrderNoContaining(LocalDateTime createTime, LocalDateTime createTime2, Integer productType, String orderNo);
List<OrderDetail> findByUpdateTimeBetween(LocalDateTime createTime, LocalDateTime createTime2); List<OrderDetail> findByUpdateTimeBetween(LocalDateTime createTime, LocalDateTime createTime2);
List<OrderDetail> findAllByRouteIdIn(Collection<Long> routeIds);
} }

View File

@ -6,6 +6,7 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jdbc.repository.query.Query; import org.springframework.data.jdbc.repository.query.Query;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -52,4 +53,10 @@ select * from route_order r1 left join route_custom_extension_field r2 on r1.rou
List<RouteOrder> findByField(); List<RouteOrder> findByField();
List<RouteOrder> findByRouteOrderNoIn(Collection<String> routeOrderNo); List<RouteOrder> findByRouteOrderNoIn(Collection<String> routeOrderNo);
List<RouteOrder> findAllByApproveOrderNo_ActualOrderNoContaining(String approveOrderNo_actualOrderNo);
@Query("select od.order_no from route_order ro,order_detail od where ro.route_id=od.route_id and ro.actual_order_no like :actualOrderNo")
List<String> findByActualOrderNo(@Param("actualOrderNo") String actualOrderNo);
} }

View File

@ -14,9 +14,9 @@ public class ItineraryPageDto {
private Long routeId; private Long routeId;
//差旅订单单号 //差旅订单单号
private String routeOrderNo; private String routeOrderNo;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private LocalDateTime startTime; private LocalDateTime startTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private LocalDateTime endTime; private LocalDateTime endTime;
private String userId; private String userId;
private String userName; private String userName;
@ -25,18 +25,16 @@ public class ItineraryPageDto {
//申请说明 //申请说明
private String instructions; private String instructions;
private String actualOrderNo; private String actualOrderNo;
private List<ApprovalEvent> approveEvents; // private List<ApprovalEvent> approveEvents;
private String approvalStatus; private String approvalStatus;
private List<Leg> legItems;
//差旅订单总价值 //差旅订单总价值
private List<LocationRes> locationResList; private List<LocationRes> locationResList;
public String getApprovalStatus() { public String getApprovalStatus(List<ApprovalEvent> approveEvents) {
if (this.approveEvents != null && !this.approveEvents.isEmpty()) { if (approveEvents != null && !approveEvents.isEmpty()) {
ApprovalEvent lastApprovalEvent = getLastApprovalEvent(); ApprovalEvent lastApprovalEvent = getLastApprovalEvent(approveEvents);
if (lastApprovalEvent != null) { if (lastApprovalEvent != null) {
lastApprovalEvent.reloadStatus(); lastApprovalEvent.reloadStatus();
this.approvalStatus = lastApprovalEvent.getEventName(); this.approvalStatus = lastApprovalEvent.getEventName();
@ -44,7 +42,7 @@ public class ItineraryPageDto {
} }
return approvalStatus; return approvalStatus;
} }
private ApprovalEvent getLastApprovalEvent() { private ApprovalEvent getLastApprovalEvent(List<ApprovalEvent> approveEvents) {
return this.approveEvents.isEmpty() ? null : this.approveEvents.get(this.approveEvents.size() - 1); return approveEvents.isEmpty() ? null : approveEvents.get(approveEvents.size() - 1);
} }
} }

View File

@ -14,6 +14,6 @@ public class ConsumptionDetailQuery extends BaseQuery{
* 0-火车 1飞机 2酒店 3打车 * 0-火车 1飞机 2酒店 3打车
*/ */
private Integer productType; private Integer productType;
private String userName; private String userName="";
private String orderNo; private String actualOrderNo=""; //申请单号
} }

View File

@ -8,7 +8,7 @@ import java.util.List;
@Data @Data
public class ItineraryPageQuery extends BaseQuery { public class ItineraryPageQuery extends BaseQuery {
private String applicant;// 申请人 private String applicant="";// 申请人
private String actualOrderNo; //申请单号 private String actualOrderNo=""; //申请单号
private List<String> userIds=new ArrayList<>(); private List<String> userIds=new ArrayList<>();
} }

View File

@ -9,13 +9,13 @@ import java.util.List;
@Data @Data
public class OrderPageQuery extends BaseQuery { public class OrderPageQuery extends BaseQuery {
//订单号 //订单号
private String oderNo; private String oderNo="";
//申请单号 //申请单号
private String actualOrderNo; private String actualOrderNo="";
//出行人 //出行人
private String travelers; private String travelers="";
//预订人 //预订人
private String applicant; private String applicant="";
//开始日期 //开始日期
private String startTime; private String startTime;
//结束日期 //结束日期
@ -23,6 +23,6 @@ public class OrderPageQuery extends BaseQuery {
//产品类型 //产品类型
private String productType; private String productType;
//部门名称 //部门名称
private String deptName; private String deptName="";
private List<String> userIds=new ArrayList<>(); private List<String> userIds=new ArrayList<>();
} }

View File

@ -1,13 +1,20 @@
package com.chint.manage.mapper; package com.chint.manage.mapper;
import com.chint.domain.aggregates.order.CarOrderDetail; import com.chint.domain.aggregates.order.CarOrderDetail;
import com.chint.domain.aggregates.order.HotelOrderDetail;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface JdbcCarOrderDetailRepository extends CrudRepository<CarOrderDetail, Long> { public interface JdbcCarOrderDetailRepository extends CrudRepository<CarOrderDetail, Long> {
Page<CarOrderDetail> findAllByUserNameContainsAndOrderNoContaining(String userName, String orderNo, Pageable pageable); Page<CarOrderDetail> findAllByUserNameContainsAndOrderNoContaining(String userName, String orderNo, Pageable pageable);
Page<CarOrderDetail> findAllByUserNameContainsAndOrderNoIn(String userName, List<String> orderNo, Pageable pageable);
Page<CarOrderDetail> findAllByUserNameContains(String userName, Pageable pageable);
} }

View File

@ -1,13 +1,20 @@
package com.chint.manage.mapper; package com.chint.manage.mapper;
import com.chint.domain.aggregates.order.FlightOrderDetail; import com.chint.domain.aggregates.order.FlightOrderDetail;
import com.chint.domain.aggregates.order.TrainOrderDetail;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface JdbcFlightOrderDetailRepository extends CrudRepository<FlightOrderDetail, Long> { public interface JdbcFlightOrderDetailRepository extends CrudRepository<FlightOrderDetail, Long> {
Page<FlightOrderDetail> findAllByUserNameContainsAndOrderNoContaining(String userName, String orderNo, Pageable pageable); Page<FlightOrderDetail> findAllByUserNameContainsAndOrderNoContaining(String userName, String orderNo, Pageable pageable);
Page<FlightOrderDetail> findAllByUserNameContainsAndOrderNoIn(String userName, List<String> orderNo, Pageable pageable);
Page<FlightOrderDetail> findAllByUserNameContains(String userName, Pageable pageable);
} }

View File

@ -1,5 +1,6 @@
package com.chint.manage.mapper; package com.chint.manage.mapper;
import com.chint.domain.aggregates.order.FlightOrderDetail;
import com.chint.domain.aggregates.order.HotelOrderDetail; import com.chint.domain.aggregates.order.HotelOrderDetail;
import com.chint.domain.aggregates.order.order_record.OrderHotelRecord; import com.chint.domain.aggregates.order.order_record.OrderHotelRecord;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
@ -7,8 +8,14 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface JdbcHotelOrderDetailRepository extends CrudRepository<HotelOrderDetail, Long> { public interface JdbcHotelOrderDetailRepository extends CrudRepository<HotelOrderDetail, Long> {
Page<HotelOrderDetail> findAllByBookingNameContainsAndOrderNoContaining(String userName, String orderNo, Pageable pageable); Page<HotelOrderDetail> findAllByBookingNameContainsAndOrderNoContaining(String userName, String orderNo, Pageable pageable);
Page<HotelOrderDetail> findAllByBookingNameContainsAndOrderNoIn(String userName, List<String> orderNo, Pageable pageable);
Page<HotelOrderDetail> findAllByBookingNameContains(String userName, Pageable pageable);
} }

View File

@ -6,8 +6,14 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface JdbcTrainOrderDetailRepository extends CrudRepository<TrainOrderDetail, Long> { public interface JdbcTrainOrderDetailRepository extends CrudRepository<TrainOrderDetail, Long> {
Page<TrainOrderDetail> findAllByUserNameContainsAndOrderNoContaining(String userName, String orderNo, Pageable pageable); Page<TrainOrderDetail> findAllByUserNameContainsAndOrderNoContaining(String userName, String orderNo, Pageable pageable);
Page<TrainOrderDetail> findAllByUserNameContainsAndOrderNoIn(String userName, List<String> orderNo, Pageable pageable);
Page<TrainOrderDetail> findAllByUserNameContains(String userName, Pageable pageable);
} }

View File

@ -1,6 +1,8 @@
package com.chint.manage.mapper.impl; package com.chint.manage.mapper.impl;
import com.chint.domain.aggregates.order.*; import com.chint.domain.aggregates.order.*;
import com.chint.infrastructure.repository.jdbc.JdbcOrderDetailRepository;
import com.chint.infrastructure.repository.jdbc.JdbcRouteRepository;
import com.chint.infrastructure.util.PageResult; import com.chint.infrastructure.util.PageResult;
import com.chint.manage.entity.dto.ItineraryPageDto; import com.chint.manage.entity.dto.ItineraryPageDto;
import com.chint.manage.entity.query.ConsumptionDetailQuery; import com.chint.manage.entity.query.ConsumptionDetailQuery;
@ -41,6 +43,10 @@ public class JdbcConsumptionDetailRepositoryImpl implements JdbcConsumptionDetai
private JdbcHotelOrderDetailRepository jdbcHotelOrderDetailRepository; private JdbcHotelOrderDetailRepository jdbcHotelOrderDetailRepository;
@Autowired @Autowired
private JdbcFlightOrderDetailRepository jdbcFlightOrderDetailRepository; private JdbcFlightOrderDetailRepository jdbcFlightOrderDetailRepository;
@Autowired
private JdbcRouteRepository jdbcRouteRepository;
@Autowired
private JdbcOrderDetailRepository jdbcOrderDetailRepository;
@Override @Override
@ -54,6 +60,10 @@ public class JdbcConsumptionDetailRepositoryImpl implements JdbcConsumptionDetai
} }
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
//设置null
if (dto.getActualOrderNo().isEmpty()){
dto.setActualOrderNo(null);
}
params.put("actualOrderNo", dto.getActualOrderNo()); params.put("actualOrderNo", dto.getActualOrderNo());
params.put("userIds", dto.getUserIds()); params.put("userIds", dto.getUserIds());
PageRequest pageRequest = PageRequest PageRequest pageRequest = PageRequest
@ -71,20 +81,29 @@ public class JdbcConsumptionDetailRepositoryImpl implements JdbcConsumptionDetai
@Override @Override
public PageResult<? extends BaseExcel> pageConsumptionDetail(ConsumptionDetailQuery dto) { public PageResult<? extends BaseExcel> pageConsumptionDetail(ConsumptionDetailQuery dto) {
if (dto.getUserName()==null){
dto.setUserName("");
}
if (dto.getOrderNo()==null){
dto.setOrderNo("");
}
PageRequest pageRequest = PageRequest PageRequest pageRequest = PageRequest
.of(dto.getPageNum() - 1, dto.getPageSize(), Sort.by("id").descending()); .of(dto.getPageNum() - 1, dto.getPageSize(), Sort.by("id").descending());
Page<? extends BaseExcel> data=new PageImpl<>(Collections.emptyList()); Page<? extends BaseExcel> data=new PageImpl<>(Collections.emptyList());
//申请单查询
if (!dto.getActualOrderNo().isEmpty()){
List<String> orderNos=jdbcRouteRepository.findByActualOrderNo("%" + dto.getActualOrderNo() + "%");
if (orderNos.isEmpty()){
return new PageResult<BaseExcel>(0,new ArrayList<>());
}
switch (dto.getProductType()) { switch (dto.getProductType()) {
case LEG_TYPE_TRAIN -> data=getOrderTrainRecord(jdbcTrainOrderDetailRepository.findAllByUserNameContainsAndOrderNoContaining(dto.getUserName(),dto.getOrderNo(),pageRequest)); case LEG_TYPE_TRAIN -> data=getOrderTrainRecord(jdbcTrainOrderDetailRepository.findAllByUserNameContainsAndOrderNoIn(dto.getUserName(),orderNos,pageRequest));
case LEG_TYPE_AIRPLANE -> data=getOrderFlightRecord(jdbcFlightOrderDetailRepository.findAllByUserNameContainsAndOrderNoContaining(dto.getUserName(),dto.getOrderNo(),pageRequest)); case LEG_TYPE_AIRPLANE -> data=getOrderFlightRecord(jdbcFlightOrderDetailRepository.findAllByUserNameContainsAndOrderNoIn(dto.getUserName(),orderNos,pageRequest));
case LEG_TYPE_HOTEL -> data=getOrderHotelRecord(jdbcHotelOrderDetailRepository.findAllByBookingNameContainsAndOrderNoContaining(dto.getUserName(),dto.getOrderNo(),pageRequest)); case LEG_TYPE_HOTEL -> data=getOrderHotelRecord(jdbcHotelOrderDetailRepository.findAllByBookingNameContainsAndOrderNoIn(dto.getUserName(),orderNos,pageRequest));
case LEG_TYPE_TAXI -> data=getOrderCarRecord(jdbcCarOrderDetailRepository.findAllByUserNameContainsAndOrderNoContaining(dto.getUserName(),dto.getOrderNo(),pageRequest)); case LEG_TYPE_TAXI -> data=getOrderCarRecord(jdbcCarOrderDetailRepository.findAllByUserNameContainsAndOrderNoIn(dto.getUserName(),orderNos,pageRequest));
}
return PageResult.totalPageNum(data.getTotalElements(), data.getContent());
}
switch (dto.getProductType()) {
case LEG_TYPE_TRAIN -> data=getOrderTrainRecord(jdbcTrainOrderDetailRepository.findAllByUserNameContains(dto.getUserName(),pageRequest));
case LEG_TYPE_AIRPLANE -> data=getOrderFlightRecord(jdbcFlightOrderDetailRepository.findAllByUserNameContains(dto.getUserName(),pageRequest));
case LEG_TYPE_HOTEL -> data=getOrderHotelRecord(jdbcHotelOrderDetailRepository.findAllByBookingNameContains(dto.getUserName(),pageRequest));
case LEG_TYPE_TAXI -> data=getOrderCarRecord(jdbcCarOrderDetailRepository.findAllByUserNameContains(dto.getUserName(),pageRequest));
} }
return PageResult.totalPageNum(data.getTotalElements(), data.getContent()); return PageResult.totalPageNum(data.getTotalElements(), data.getContent());
} }

View File

@ -89,10 +89,13 @@ public class ManageServiceImpl implements ManageService {
@Override @Override
public PageResult<ItineraryPageDto> itineraryPageQuery(ItineraryPageQuery dto) { public PageResult<ItineraryPageDto> itineraryPageQuery(ItineraryPageQuery dto) {
List<User> users=jdbcUserRepository.findAllByNameContains(dto.getApplicant()); List<User> users=new ArrayList<>();
if (!dto.getApplicant().isEmpty()){
users=jdbcUserRepository.findAllByNameContains(dto.getApplicant());
if (users==null||users.isEmpty()){ if (users==null||users.isEmpty()){
return null; return null;
} }
}
dto.setUserIds(users.stream().map(User::getEmployeeNo).toList()); dto.setUserIds(users.stream().map(User::getEmployeeNo).toList());
Page<ItineraryPageDto> page= jdbcConsumptionDetailRepository.itineraryPageQueryByDto(dto); Page<ItineraryPageDto> page= jdbcConsumptionDetailRepository.itineraryPageQueryByDto(dto);
//处理信息 //处理信息
@ -105,11 +108,10 @@ public class ManageServiceImpl implements ManageService {
.stream() .stream()
.map(routeOrder -> { .map(routeOrder -> {
RouteOrder order=routeOrders.stream().filter(s->s.getRouteId().equals(routeOrder.getRouteId())).toList().get(0); RouteOrder order=routeOrders.stream().filter(s->s.getRouteId().equals(routeOrder.getRouteId())).toList().get(0);
routeOrder.setApproveEvents(order.getApproveEvents()); legDomainService.queryLocation(order.getLegItems());
routeOrder.setLegItems(order.getLegItems()); routeOrder.setApprovalStatus(routeOrder.getApprovalStatus(order.getApproveEvents()));
legDomainService.queryLocation(routeOrder.getLegItems());
User user = userRepository.findByUserEmployeeNo(routeOrder.getUserId()); User user = userRepository.findByUserEmployeeNo(routeOrder.getUserId());
return getRouteOrderPageRes(routeOrder, user); return getRouteOrderPageRes(routeOrder, user,order.getLegItems());
}) })
.toList(); .toList();
return PageResult.totalPageNum(page.getTotalElements(), orders); return PageResult.totalPageNum(page.getTotalElements(), orders);
@ -145,8 +147,7 @@ public class ManageServiceImpl implements ManageService {
return excelList; return excelList;
} }
private static ItineraryPageDto getRouteOrderPageRes(ItineraryPageDto res, User user) { private static ItineraryPageDto getRouteOrderPageRes(ItineraryPageDto res, User user,List<Leg> legItems) {
List<Leg> legItems=res.getLegItems();
List<LocationRes> locationRes = legItems List<LocationRes> locationRes = legItems
.stream() .stream()
.flatMap(leg -> Stream.of(leg.getOriginLocation(), leg.getDestinationLocation())) .flatMap(leg -> Stream.of(leg.getOriginLocation(), leg.getDestinationLocation()))