添加预约车功能及列表查询

This commit is contained in:
mashuai 2024-11-23 17:15:01 +08:00
parent 8555949ed7
commit 16c608f99e
9 changed files with 159 additions and 61 deletions

View File

@ -45,23 +45,8 @@ public class BookCarController extends BaseController {
*/
@ApiOperation(value = "查询预约车订单详情")
@GetMapping("/getBookCarDetails")
public TableDataInfo getBookCarDetails(BookCarInfoDto devInfo) {
startPage();
List<BookCarDetailDto> list = bookCarService.getBookCarDetails(devInfo);
return getDataTable(list);
public AjaxResult getBookCarDetails(BookCarInfoDto devInfo) {
return bookCarService.getBookCarDetails(devInfo);
}
/**
* 修改租期
*/
@ApiOperation(value = "修改租期")
@PostMapping("/updaterentDay")
public AjaxResult updaterentDay(@RequestBody BookCarDetailDto bookCarDetailDto) {
Integer i = bookCarService.updaterentDay(bookCarDetailDto);
if (i > 0) {
return AjaxResult.success("修改成功");
} else {
return AjaxResult.error("修改失败");
}
}
}

View File

@ -19,6 +19,8 @@ public class BookCarInfoDto {
@ApiModelProperty(value = "订单id")
private Integer bookId;
private String maId;
@ApiModelProperty(value = "订单编号")
private String bookCode;

View File

@ -0,0 +1,28 @@
package com.bonus.material.book.domain;
import com.bonus.material.device.domain.vo.DevInfoVo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author ma_sh
* @create 2024/11/23 16:17
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BookCarVo {
/**
* 企业信息
*/
private CompanyPersonPhoneKey companyPersonPhoneKey;
/**
* 设备信息
*/
private List<DevInfoVo> devInfoVoList;
}

View File

@ -0,0 +1,20 @@
package com.bonus.material.book.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 企业信息复合键
* @Author ma_sh
* @create 2024/11/23 16:10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CompanyPersonPhoneKey {
private String companyName;
private String person;
private String personPhone;
}

View File

@ -4,7 +4,9 @@ import com.bonus.material.book.domain.BookCarDetailDto;
import com.bonus.material.book.domain.BookCarInfoDto;
import com.bonus.material.device.domain.vo.DevInfoVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
@ -13,10 +15,14 @@ import java.util.List;
*/
@Mapper
public interface BookCarMapper {
Integer addBookCarInfo(BookCarInfoDto bookCarInfoDto);
Integer addBookCarDetail(BookCarDetailDto bookCarDetailDto);
List<BookCarDetailDto> getBookCarDetails(BookCarInfoDto devInfo);
/**
* 添加预约车详情
* @param bookCarInfoDto
* @return
*/
Integer addBookCarDetail(BookCarInfoDto bookCarInfoDto);
List<DevInfoVo> getBookCarDetails(BookCarInfoDto devInfo);
Integer updaterentDay(BookCarDetailDto bookCarDetailDto);
}

View File

@ -1,6 +1,6 @@
package com.bonus.material.book.service;
import com.bonus.material.book.domain.BookCarDetailDto;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.book.domain.BookCarInfoDto;
import com.bonus.material.device.domain.vo.DevInfoVo;
@ -11,9 +11,19 @@ import java.util.List;
* @Date2024/11/22 - 16:53
*/
public interface BookCarService {
/**
* 添加预约车
* @param bookCarInfoDto
* @return
*/
Integer addBookCar(BookCarInfoDto bookCarInfoDto);
List<BookCarDetailDto> getBookCarDetails(BookCarInfoDto devInfo);
/**
* 获取预约车详情
* @param devInfo
* @return
*/
AjaxResult getBookCarDetails(BookCarInfoDto devInfo);
Integer updaterentDay(BookCarDetailDto bookCarDetailDto);
}

View File

@ -1,16 +1,29 @@
package com.bonus.material.book.service.impl;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.bonus.common.biz.domain.BmFileInfo;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.StringUtils;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.book.domain.BookCarDetailDto;
import com.bonus.material.book.domain.BookCarInfoDto;
import com.bonus.material.book.domain.BookCarVo;
import com.bonus.material.book.domain.CompanyPersonPhoneKey;
import com.bonus.material.book.mapper.BookCarMapper;
import com.bonus.material.book.service.BookCarService;
import com.bonus.material.device.domain.vo.DevInfoVo;
import com.bonus.material.device.mapper.BmFileInfoMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Authorliang.chao
@ -21,29 +34,54 @@ public class BookCarServiceImpl implements BookCarService {
@Resource
private BookCarMapper bookCarMapper;
@Resource
private BmFileInfoMapper bmFileInfoMapper;
@Override
@Transactional
@Transactional(rollbackFor = Exception.class)
public Integer addBookCar(BookCarInfoDto bookCarInfoDto) {
Long userid = SecurityUtils.getLoginUser().getUserid();
bookCarInfoDto.setCreater(userid.toString());
Integer i = bookCarMapper.addBookCarInfo(bookCarInfoDto);
if (i > 0) {
List<BookCarDetailDto> detailList = bookCarInfoDto.getDetailList();
for (BookCarDetailDto bookCarDetailDto : detailList) {
bookCarDetailDto.setCreater(userid.toString());
bookCarMapper.addBookCarDetail(bookCarDetailDto);
}
}
return i;
return bookCarMapper.addBookCarDetail(bookCarInfoDto);
}
@Override
public List<BookCarDetailDto> getBookCarDetails(BookCarInfoDto bookCarInfoDto) {
return bookCarMapper.getBookCarDetails(bookCarInfoDto);
public AjaxResult getBookCarDetails(BookCarInfoDto bookCarInfoDto) {
List<BookCarVo> list = new ArrayList<>();
List<DevInfoVo> bookCarDetails = bookCarMapper.getBookCarDetails(bookCarInfoDto);
// 如果 bookCarDetails 不为空处理文件信息
if (CollectionUtils.isNotEmpty(bookCarDetails)) {
// 为每个 DevInfoVo 设置文件信息
for (DevInfoVo bookCarDetail : bookCarDetails) {
BmFileInfo bmFileInfo = new BmFileInfo();
bmFileInfo.setModelId(bookCarDetail.getMaId());
bmFileInfo.setTaskType(17);
List<BmFileInfo> fileList = bmFileInfoMapper.selectBmFileInfoList(bmFileInfo);
bookCarDetail.setBmFileInfoList(fileList);
}
// 根据 companyName, person, personPhone 进行分组
Map<CompanyPersonPhoneKey, List<DevInfoVo>> groupedByKey = bookCarDetails.stream()
.collect(Collectors.groupingBy(bookCarDetail -> new CompanyPersonPhoneKey(
bookCarDetail.getCompanyName(),
bookCarDetail.getPerson(),
bookCarDetail.getPersonPhone()
)));
// 遍历分组创建每个分组的 BookCarVo 对象并设置相关信息
for (Map.Entry<CompanyPersonPhoneKey, List<DevInfoVo>> entry : groupedByKey.entrySet()) {
CompanyPersonPhoneKey key = entry.getKey();
List<DevInfoVo> groupedList = entry.getValue();
// 创建新的 BookCarVo 对象
BookCarVo carVo = new BookCarVo();
carVo.setCompanyPersonPhoneKey(key);
carVo.setDevInfoVoList(groupedList);
// 将当前分组的 BookCarVo 添加到 list
list.add(carVo);
}
}
// 返回最终结果
return AjaxResult.success(list);
}
@Override
public Integer updaterentDay(BookCarDetailDto bookCarDetailDto) {
return bookCarMapper.updaterentDay(bookCarDetailDto);
}
}

View File

@ -4,29 +4,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.material.book.mapper.BookCarMapper">
<insert id="addBookCarInfo">
insert into book_car_info(book_code, order_time, cost, supplier, order_status, order_user, phone_number, order_company, creater, create_time)
values(#{bookCode},#{orderTime},#{cost},#{supplier},#{orderStatus},#{orderUser},#{phoneNumber},#{orderCompany},#{creater},now())
<insert id="addBookCarDetail">
insert into book_car_detail(ma_id, order_status, order_company, creater, create_time)
values(#{maId}, 0, #{orderCompany}, #{creater}, now())
</insert>
<insert id="addBookCarDetail">
insert into book_car_detail(book_id, type_id, lease_type, lease_price, rent_day, days, num, costs, creater, create_time)
values(#{bookId},#{typeId},#{leaseType},#{leasePrice},#{rentDay},#{days},#{num},#{costs},#{creater},now())
</insert>
<update id="updaterentDay">
update book_car_detail set rent_day = #{rentDay} where id = #{id}
</update>
<select id="getBookCarDetails" resultType="com.bonus.material.book.domain.BookCarDetailDto">
<select id="getBookCarDetails" resultType="com.bonus.material.device.domain.vo.DevInfoVo">
SELECT
bcd.*,
mt.type_code,
mt.model_code,
mt.type_name
FROM
book_car_detail bcd
LEFT JOIN ma_type mt ON bcd.type_id = mt.type_id
WHERE
bcd.type_id = #{bookId}
d.ma_id as maId,
d.code as code,
d.device_name as deviceName,
d.device_weight as deviceWeight,
d.type_id as typeId,
d.ma_status as maStatus,
d.brand as brand,
d.model_name as modelName,
mt.type_name as typeName,
d.production_date as productionDate,
d.working_hours as workingHours,
d.serial_number as serialNumber,
d.day_lease_price as dayLeasePrice,
d.person as person,
d.person_phone as personPhone,
c.company_name as companyName,
c.company_id as companyId,
c.operate_address as operateAddress,
d.create_time as createTime
FROM ma_dev_info d
LEFT JOIN bm_company_info c ON d.own_co = c.company_id
LEFT JOIN book_car_detail bcd ON d.ma_id = bcd.ma_id
LEFT JOIN ma_type mt ON d.type_id = mt.type_id and mt.del_flag = '0'
where d.is_active = '1' and bcd.order_status = '0'
</select>
</mapper>

View File

@ -213,6 +213,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
d.day_lease_price as dayLeasePrice,
d.person as person,
d.person_phone as personPhone,
c.company_id as companyId,
c.company_name as companyName,
mt3.type_id as thirdId,
mt3.type_name as thirdName,