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

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 = "查询预约车订单详情") @ApiOperation(value = "查询预约车订单详情")
@GetMapping("/getBookCarDetails") @GetMapping("/getBookCarDetails")
public TableDataInfo getBookCarDetails(BookCarInfoDto devInfo) { public AjaxResult getBookCarDetails(BookCarInfoDto devInfo) {
startPage(); return bookCarService.getBookCarDetails(devInfo);
List<BookCarDetailDto> list = bookCarService.getBookCarDetails(devInfo);
return getDataTable(list);
} }
/**
* 修改租期
*/
@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") @ApiModelProperty(value = "订单id")
private Integer bookId; private Integer bookId;
private String maId;
@ApiModelProperty(value = "订单编号") @ApiModelProperty(value = "订单编号")
private String bookCode; 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.book.domain.BookCarInfoDto;
import com.bonus.material.device.domain.vo.DevInfoVo; import com.bonus.material.device.domain.vo.DevInfoVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -13,10 +15,14 @@ import java.util.List;
*/ */
@Mapper @Mapper
public interface BookCarMapper { 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; 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.book.domain.BookCarInfoDto;
import com.bonus.material.device.domain.vo.DevInfoVo; import com.bonus.material.device.domain.vo.DevInfoVo;
@ -11,9 +11,19 @@ import java.util.List;
* @Date2024/11/22 - 16:53 * @Date2024/11/22 - 16:53
*/ */
public interface BookCarService { public interface BookCarService {
/**
* 添加预约车
* @param bookCarInfoDto
* @return
*/
Integer addBookCar(BookCarInfoDto bookCarInfoDto); 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; 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.common.security.utils.SecurityUtils;
import com.bonus.material.book.domain.BookCarDetailDto; import com.bonus.material.book.domain.BookCarDetailDto;
import com.bonus.material.book.domain.BookCarInfoDto; 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.mapper.BookCarMapper;
import com.bonus.material.book.service.BookCarService; import com.bonus.material.book.service.BookCarService;
import com.bonus.material.device.domain.vo.DevInfoVo; import com.bonus.material.device.domain.vo.DevInfoVo;
import com.bonus.material.device.mapper.BmFileInfoMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @Authorliang.chao * @Authorliang.chao
@ -21,29 +34,54 @@ public class BookCarServiceImpl implements BookCarService {
@Resource @Resource
private BookCarMapper bookCarMapper; private BookCarMapper bookCarMapper;
@Resource
private BmFileInfoMapper bmFileInfoMapper;
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public Integer addBookCar(BookCarInfoDto bookCarInfoDto) { public Integer addBookCar(BookCarInfoDto bookCarInfoDto) {
Long userid = SecurityUtils.getLoginUser().getUserid(); Long userid = SecurityUtils.getLoginUser().getUserid();
bookCarInfoDto.setCreater(userid.toString()); bookCarInfoDto.setCreater(userid.toString());
Integer i = bookCarMapper.addBookCarInfo(bookCarInfoDto); return bookCarMapper.addBookCarDetail(bookCarInfoDto);
if (i > 0) { }
List<BookCarDetailDto> detailList = bookCarInfoDto.getDetailList();
for (BookCarDetailDto bookCarDetailDto : detailList) { @Override
bookCarDetailDto.setCreater(userid.toString()); public AjaxResult getBookCarDetails(BookCarInfoDto bookCarInfoDto) {
bookCarMapper.addBookCarDetail(bookCarDetailDto); 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 i; // 返回最终结果
return AjaxResult.success(list);
} }
@Override
public List<BookCarDetailDto> getBookCarDetails(BookCarInfoDto bookCarInfoDto) {
return bookCarMapper.getBookCarDetails(bookCarInfoDto);
}
@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"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.material.book.mapper.BookCarMapper"> <mapper namespace="com.bonus.material.book.mapper.BookCarMapper">
<insert id="addBookCarInfo"> <insert id="addBookCarDetail">
insert into book_car_info(book_code, order_time, cost, supplier, order_status, order_user, phone_number, order_company, creater, create_time) insert into book_car_detail(ma_id, order_status, order_company, creater, create_time)
values(#{bookCode},#{orderTime},#{cost},#{supplier},#{orderStatus},#{orderUser},#{phoneNumber},#{orderCompany},#{creater},now()) values(#{maId}, 0, #{orderCompany}, #{creater}, now())
</insert> </insert>
<insert id="addBookCarDetail"> <select id="getBookCarDetails" resultType="com.bonus.material.device.domain.vo.DevInfoVo">
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 SELECT
bcd.*, d.ma_id as maId,
mt.type_code, d.code as code,
mt.model_code, d.device_name as deviceName,
mt.type_name d.device_weight as deviceWeight,
FROM d.type_id as typeId,
book_car_detail bcd d.ma_status as maStatus,
LEFT JOIN ma_type mt ON bcd.type_id = mt.type_id d.brand as brand,
WHERE d.model_name as modelName,
bcd.type_id = #{bookId} 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> </select>
</mapper> </mapper>

View File

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