xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/vehicleConvoy/XpVehicleAnnualRecord.java
@@ -6,6 +6,7 @@ import java.time.LocalDateTime; import java.io.Serializable; import com.fasterxml.jackson.annotation.JsonFormat; import com.xiaopeng.common.core.web.domain.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -25,7 +26,7 @@ @Accessors(chain = true) @TableName("xp_vehicle_annual_record") @ApiModel(value="XpVehicleAnnualRecord对象", description="车辆年检信息修改记录") public class XpVehicleAnnualRecord implements Serializable { public class XpVehicleAnnualRecord extends BaseModel { private static final long serialVersionUID = 1L; xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpShiftController.java
@@ -43,15 +43,13 @@ @ApiOperation(value = "班次管理新增", tags = "管理后台-运维执行") @PostMapping("/api/v1/shift/add") public R<String> add(@RequestBody XpShift dto) { xpShiftService.save(dto); return R.ok(); return xpShiftService.add(dto); } @ApiOperation(value = "班次管理编辑", tags = "管理后台-运维执行") @PostMapping("/api/v1/shift/edit") public R<String> edit(@RequestBody XpShift dto) { xpShiftService.updateById(dto); return R.ok(); return xpShiftService.edit(dto); } @ApiOperation(value = "班次管理删除", tags = "管理后台-运维执行") xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpShiftService.java
@@ -2,6 +2,7 @@ import com.xiaopeng.api.model.maintenance.XpShift; import com.baomidou.mybatisplus.extension.service.IService; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.model.query.XpShiftQuery; @@ -31,4 +32,18 @@ * @return */ List<XpShift> queryList(); /** * 新增 * @param dto * @return */ R<String> add(XpShift dto); /** * 编辑 * @param dto * @return */ R<String> edit(XpShift dto); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpShiftServiceImpl.java
@@ -46,4 +46,46 @@ public List<XpShift> queryList() { return this.list(new LambdaQueryWrapper<XpShift>().eq(XpShift::getDeleted, 0)); } @Override public R<String> add(XpShift dto) { // 判断结束时间是否大于开始时间 格式为 HH:mm if (dto.getEndTime().compareTo(dto.getStartTime()) < 0) { return R.fail("结束时间不能小于开始时间"); } // 判断休息结束时间是否大于休息开始时间 格式为 HH:mm if (dto.getRestEndTime() != null && dto.getRestStartTime() != null && dto.getRestEndTime().compareTo(dto.getRestStartTime()) < 0) { return R.fail("休息结束时间不能小于休息开始时间"); } if (this.count(new LambdaQueryWrapper<XpShift>().eq(XpShift::getShiftName, dto.getShiftName())) > 0) { return R.fail("班次名称已存在"); } this.save(dto); return R.ok(); } @Override public R<String> edit(XpShift dto) { // 判断结束时间是否大于开始时间 格式为 HH:mm if (dto.getEndTime().compareTo(dto.getStartTime()) < 0) { return R.fail("结束时间不能小于开始时间"); } // 判断休息结束时间是否大于休息开始时间 格式为 HH:mm if (dto.getRestEndTime() != null && dto.getRestStartTime() != null && dto.getRestEndTime().compareTo(dto.getRestStartTime()) < 0) { return R.fail("休息结束时间不能小于休息开始时间"); } if (this.count(new LambdaQueryWrapper<XpShift>().eq(XpShift::getShiftName, dto.getShiftName()).ne(XpShift::getId, dto.getId())) > 0) { return R.fail("班次名称已存在"); } this.updateById(dto); return R.ok(); } } xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/config/MyLocaleResolver.java
@@ -26,6 +26,9 @@ } //如果请求不为空 //If the request is not empty. if (!StringUtils.hasLength(language)){ language = "1"; } if (language.equals("1")) { locale = new Locale("zh", "CN"); } else if (language.equals("2")) { xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
@@ -5,6 +5,8 @@ import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.ImportParams; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.hutool.core.io.resource.ClassPathResource; import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.xiaopeng.api.model.account.SysUser; @@ -26,6 +28,7 @@ import com.xiaopeng.operation.service.IXpWhitelistService; import io.swagger.annotations.*; import lombok.extern.slf4j.Slf4j; import org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -37,6 +40,7 @@ import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; @@ -56,7 +60,7 @@ @RestController @Api(tags = "邀请码管理") @Slf4j @RequestMapping("/api/v1/invitation") @RequestMapping("") public class XpInvitationCodeController { @Resource private IXpInvitationCodeService xpInvitationCodeService; @@ -64,7 +68,7 @@ private IXpWhitelistService xpWhitelistService; @ApiOperation(value = "邀请码管理分页列表",response = XpInvitationCode.class) @PostMapping("/pageList") @PostMapping("/api/v1/invitation/pageList") public R<PageInfo<XpInvitationCode>> pageList(@RequestBody InvitationPageListQuery query) { PageInfo<XpInvitationCode> pageList = xpInvitationCodeService.pageList(query); return R.ok(pageList); @@ -72,7 +76,7 @@ /** * 生成邀请码 */ @PutMapping("/add") @PutMapping("/api/v1/invitation/add") @ResponseBody @ApiOperation(value = "生成邀请码") @ApiImplicitParams({ @@ -85,7 +89,7 @@ /** * 解绑 */ @PutMapping("/unbind") @PutMapping("/api/v1/invitation/unbind") @ResponseBody @ApiOperation(value = "解绑") @ApiImplicitParams({ @@ -99,8 +103,8 @@ xpInvitationCodeService.update(xpInvitationCodeUpdateWrapper); return R.ok(); } @ApiOperation(value = "点位导入模板下载") @GetMapping("/import-template") @ApiOperation(value = "邀请码导入模板下载") @GetMapping("/api/v1/invitation/import-template") public void importTemplate() { List<InvitationCodeImportExcel> invitationCodeImportExcels = new ArrayList<>(); InvitationCodeImportExcel invitationCodeImportExcel = new InvitationCodeImportExcel(); @@ -108,14 +112,17 @@ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), InvitationCodeImportExcel.class, invitationCodeImportExcels); HttpServletResponse response = WebUtils.response(); ServletOutputStream outputStream = null; //1.获取excel模板 ClassPathResource classPathResource = new ClassPathResource("template/邀请码导入模板.xlsx"); TemplateExportParams params = new TemplateExportParams(classPathResource.getPath()); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); try { String fileName = URLEncoder.encode("邀请码导入模板.xlsx", "utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName); response.setHeader("content-Type", "application/vnd.ms-excel"); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Content-dispodition", "attachment;filename=" + fileName); outputStream = response.getOutputStream(); workbook.write(outputStream); } catch (IOException e) { e.printStackTrace(); System.out.println("邀请码导入模板下载失败!"); @@ -127,15 +134,12 @@ } } } @Log(title = "邀请码导入", businessType = BusinessType.IMPORT) @ApiOperation(value = "邀请码导入") @PostMapping("/importExcel") @PostMapping("/base/v1/invitation/importExcel") public R<String> importExcel(@RequestPart("file") MultipartFile file) { ImportParams params = new ImportParams(); // params.setTitleRows(1); // 标题行数 params.setHeadRows(1); //表头行数 InputStream inputStream = null; // List<CustomerImportFailedData> failedData = new ArrayList<>(); List<InvitationCodeImportExcel> invitationCodeImportExcels; try { inputStream = file.getInputStream(); @@ -204,7 +208,7 @@ return R.ok(); } @ApiOperation(value = "邀请码导出") @PostMapping(value = "/exportExcel") @PostMapping(value = "/api/v1/invitation/exportExcel") public void exportExcel(@RequestBody InvitationPageListQuery query) { List<XpInvitationCode> list = xpInvitationCodeService.exportList(query); List<XpInvitationCodeExportExcel> xpWhitelistExportExcels = new ArrayList<>(); @@ -245,7 +249,7 @@ /** * 批量删除 */ @GetMapping("/deleteByIds") @GetMapping("/api/v1/invitation/deleteByIds") @ResponseBody @ApiOperation(value = "批量删除") public R deleteByIds(String ids){ xp-robotaxi-operation-boot/src/main/resources/template/邀请码导入模板.xlsxBinary files differ
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/config/MyLocaleResolver.java
@@ -24,6 +24,9 @@ if (StringUtils.isEmpty(language)) { locale = Locale.getDefault(); } if (!StringUtils.hasLength(language)){ language = "1"; } //如果请求不为空 //If the request is not empty. if (language.equals("1")) { xp-robotaxi-vehicle-convoy-boot/pom.xml
@@ -119,6 +119,26 @@ <version>1.33</version> </dependency> <!-- easypoi --> <!-- Apache POI 核心依赖 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.2.3</version> </dependency> <!-- Apache POI OOXML 支持(用于 .xlsx 文件) --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.3</version> </dependency> <!-- Apache POI XMLBeans(可选,用于复杂 XML 处理) --> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>5.1.1</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -116,7 +116,9 @@ XpVehicle xpVehicle = xpVehicleService.getById(id); // 获取车队 XpFleetVehicle xpFleetVehicle = vehicleService.getOne(new LambdaQueryWrapper<XpFleetVehicle>().eq(XpFleetVehicle::getVehicleId, xpVehicle.getId())); xpVehicle.setFleetId(xpFleetVehicle.getFleetId()); if (Objects.nonNull(xpFleetVehicle)) { xpVehicle.setFleetId(xpFleetVehicle.getFleetId()); } return R.ok(xpVehicle); } /** @@ -208,7 +210,39 @@ public R<PageInfo<XpVehicle>> vehiclePageList(@RequestBody VehiclePageQuery query) { return R.ok(xpVehicleService.vehiclePageList(query)); } /** * 导出在库车辆列表 * * @param query 查询参数 */ @ApiOperation(value = "下载导入模板", tags = {"管理后台-车辆管理-在库车辆管理"}) @PostMapping("/api/v1/vehicle/importTemplate") public void importTemplate() { // 1. 查询导出数据 Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), XpVehicleExportExcel.class, new ArrayList<>()); // 4. 输出到响应流 HttpServletResponse response = WebUtils.response(); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); ServletOutputStream outputStream = null; try { String fileName = URLEncoder.encode("在库车辆导入模板.xls", "utf-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName); outputStream = response.getOutputStream(); workbook.write(outputStream); } catch (IOException e) { log.error("下载在库车辆导入模板失败", e); } finally { try { if (outputStream != null) { outputStream.close(); } } catch (IOException e) { log.error("关闭输出流失败", e); } } } /** * 导入车辆 * @@ -320,7 +354,7 @@ * @param id * @return */ @ApiOperation(value = "删除在库车辆") @ApiOperation(value = "删除在库车辆",tags = {"管理后台-车辆管理-在库车辆管理"}) @DeleteMapping("/api/v1/vehicle/delete/{id}") public R<?> delete(@ApiParam(name = "id", value = "车辆ID") @PathVariable Long id) { xpVehicleService.removeById(id); xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/VehiclePageQuery.java
@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode; import java.time.LocalDate; import java.time.LocalDateTime; /** * 在库车辆管理分页查询参数 @@ -32,10 +33,10 @@ private Integer status; @ApiModelProperty(value = "开始时间") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate startTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private LocalDateTime startTime; @ApiModelProperty(value = "结束时间") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate endTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private LocalDateTime endTime; }