From 7ba947a94b0b9467ef92579483ef9b7001aa1f3e Mon Sep 17 00:00:00 2001 From: luojian <1327479187@qq.com> Date: Mon, 23 Dec 2024 17:28:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=8A=E4=B8=8B=E7=8F=AD?= =?UTF-8?q?=E6=89=93=E5=8D=A1=E5=8A=9F=E8=83=BD=E3=80=81=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=97=B6=E5=A1=AB=E5=85=85=E7=9B=B4=E7=BA=BF?= =?UTF-8?q?=E8=B7=9D=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/biz/BizCarController.java | 14 +- .../controller/biz/BizCarStateController.java | 68 ++++++---- .../biz/BizDriverClockController.java | 105 +++++++++++++++ .../controller/biz/BizDriverController.java | 3 - .../controller/biz/BizOrderController.java | 1 - .../controller/system/SysLoginController.java | 3 + .../java/com/cpxt/web/task/OrderTask.java | 2 +- .../com/cpxt/common/utils/PositionUtil.java | 39 ++++++ .../java/com/cpxt/biz/domain/BizDriver.java | 10 ++ .../com/cpxt/biz/domain/BizDriverClock.java | 64 +++++++++ .../java/com/cpxt/biz/domain/BizOrder.java | 4 + .../com/cpxt/biz/mapper/BizCarMapper.java | 11 +- .../cpxt/biz/mapper/BizCarStateMapper.java | 3 + .../cpxt/biz/mapper/BizDriverClockMapper.java | 17 +++ .../com/cpxt/biz/service/IBizCarService.java | 3 + .../cpxt/biz/service/IBizCarStateService.java | 5 + .../biz/service/IBizDriverClockService.java | 61 +++++++++ .../biz/service/impl/BizCarServiceImpl.java | 9 ++ .../service/impl/BizCarStateServiceImpl.java | 31 ++++- .../impl/BizCustomerRouteServiceImpl.java | 4 + .../service/impl/BizCustomerServiceImpl.java | 3 + .../impl/BizDriverClockServiceImpl.java | 127 ++++++++++++++++++ .../service/impl/BizDriverServiceImpl.java | 3 + .../biz/service/impl/BizOrderServiceImpl.java | 9 +- .../service/impl/BizOrderTaskServiceImpl.java | 4 + 25 files changed, 562 insertions(+), 41 deletions(-) create mode 100644 cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizDriverClockController.java create mode 100644 cpxt-common/src/main/java/com/cpxt/common/utils/PositionUtil.java create mode 100644 cpxt-system/src/main/java/com/cpxt/biz/domain/BizDriverClock.java create mode 100644 cpxt-system/src/main/java/com/cpxt/biz/mapper/BizDriverClockMapper.java create mode 100644 cpxt-system/src/main/java/com/cpxt/biz/service/IBizDriverClockService.java create mode 100644 cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizDriverClockServiceImpl.java diff --git a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizCarController.java b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizCarController.java index 6f038d9..4ee956f 100644 --- a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizCarController.java +++ b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizCarController.java @@ -49,7 +49,7 @@ public class BizCarController extends BaseController } /** - * 查询车辆列表(分页) + * 查询车辆列表(不分页) */ @PreAuthorize("@ss.hasPermi('biz:car:list')") @GetMapping("/list2") @@ -113,4 +113,16 @@ public class BizCarController extends BaseController { return toAjax(bizCarService.deleteBizCarByIds(ids)); } + + /** + * 查询车辆轨迹信息(不分页) + */ + @PreAuthorize("@ss.hasPermi('biz:car:list')") + @GetMapping("/track/list") + public AjaxResult trackList(@RequestParam Long carId, + @RequestParam String startTime, + @RequestParam String endTime) + { + return AjaxResult.success(bizCarService.selectBizTrackList(carId,startTime,endTime)); + } } diff --git a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizCarStateController.java b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizCarStateController.java index dab2266..84c6d1a 100644 --- a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizCarStateController.java +++ b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizCarStateController.java @@ -3,18 +3,13 @@ package com.cpxt.web.controller.biz; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cpxt.biz.domain.BizCarState; import com.cpxt.biz.service.IBizCarStateService; +import com.cpxt.common.constant.HttpStatus; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.cpxt.common.annotation.Log; import com.cpxt.common.core.controller.BaseController; import com.cpxt.common.core.domain.AjaxResult; @@ -24,14 +19,13 @@ import com.cpxt.common.core.page.TableDataInfo; /** * 车辆实时状态Controller - * + * * @author ruoyi * @date 2024-12-18 */ @RestController -@RequestMapping("/system/state") -public class BizCarStateController extends BaseController -{ +@RequestMapping("/biz/state") +public class BizCarStateController extends BaseController { @Autowired private IBizCarStateService bizCarStateService; @@ -40,11 +34,34 @@ public class BizCarStateController extends BaseController */ @PreAuthorize("@ss.hasPermi('system:state:list')") @GetMapping("/list") - public TableDataInfo list(BizCarState bizCarState) - { - startPage(); - List list = bizCarStateService.selectBizCarStateList(bizCarState); - return getDataTable(list); + public TableDataInfo list(BizCarState bizCarState, + @RequestParam(defaultValue = "1") int pageNum, + @RequestParam(defaultValue = "10") int pageSize) { + Page recordPage = bizCarStateService.selectBizCarStatePage(bizCarState, pageNum, pageSize); + TableDataInfo rspData = new TableDataInfo(); + rspData.setCode(HttpStatus.SUCCESS); + rspData.setMsg("查询成功"); + rspData.setRows(recordPage.getRecords()); + rspData.setTotal(recordPage.getTotal()); + return rspData; + } + + /** + * 查询车辆实时状态列表 + */ + @PreAuthorize("@ss.hasPermi('system:state:list')") + @GetMapping("/list2") + public AjaxResult list2(BizCarState bizCarState) { + return AjaxResult.success(bizCarStateService.selectBizCarStateList(bizCarState)); + } + + /** + * 查询车辆实时状态(根据车辆id) + */ + @PreAuthorize("@ss.hasPermi('system:state:list')") + @GetMapping("/listByCarId") + public AjaxResult listByCarId(BizCarState bizCarState) { + return AjaxResult.success(bizCarStateService.selectBizCarStateByCarId(bizCarState.getCarId())); } /** @@ -53,8 +70,7 @@ public class BizCarStateController extends BaseController @PreAuthorize("@ss.hasPermi('system:state:export')") @Log(title = "车辆实时状态", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, BizCarState bizCarState) - { + public void export(HttpServletResponse response, BizCarState bizCarState) { List list = bizCarStateService.selectBizCarStateList(bizCarState); ExcelUtil util = new ExcelUtil(BizCarState.class); util.exportExcel(response, list, "车辆实时状态数据"); @@ -65,8 +81,7 @@ public class BizCarStateController extends BaseController */ @PreAuthorize("@ss.hasPermi('system:state:query')") @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { + public AjaxResult getInfo(@PathVariable("id") Long id) { return success(bizCarStateService.selectBizCarStateById(id)); } @@ -76,8 +91,7 @@ public class BizCarStateController extends BaseController @PreAuthorize("@ss.hasPermi('system:state:add')") @Log(title = "车辆实时状态", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody BizCarState bizCarState) - { + public AjaxResult add(@RequestBody BizCarState bizCarState) { return toAjax(bizCarStateService.insertBizCarState(bizCarState)); } @@ -87,8 +101,7 @@ public class BizCarStateController extends BaseController @PreAuthorize("@ss.hasPermi('system:state:edit')") @Log(title = "车辆实时状态", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody BizCarState bizCarState) - { + public AjaxResult edit(@RequestBody BizCarState bizCarState) { return toAjax(bizCarStateService.updateBizCarState(bizCarState)); } @@ -97,9 +110,8 @@ public class BizCarStateController extends BaseController */ @PreAuthorize("@ss.hasPermi('system:state:remove')") @Log(title = "车辆实时状态", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(bizCarStateService.deleteBizCarStateByIds(ids)); } } diff --git a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizDriverClockController.java b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizDriverClockController.java new file mode 100644 index 0000000..372d400 --- /dev/null +++ b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizDriverClockController.java @@ -0,0 +1,105 @@ +package com.cpxt.web.controller.biz; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.cpxt.biz.domain.BizDriverClock; +import com.cpxt.biz.service.IBizDriverClockService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cpxt.common.annotation.Log; +import com.cpxt.common.core.controller.BaseController; +import com.cpxt.common.core.domain.AjaxResult; +import com.cpxt.common.enums.BusinessType; +import com.cpxt.common.utils.poi.ExcelUtil; +import com.cpxt.common.core.page.TableDataInfo; + +/** + * 司机打卡记录Controller + * + * @author ruoyi + * @date 2024-12-23 + */ +@RestController +@RequestMapping("/system/clock") +public class BizDriverClockController extends BaseController +{ + @Autowired + private IBizDriverClockService bizDriverClockService; + + /** + * 查询司机打卡记录列表 + */ + @PreAuthorize("@ss.hasPermi('system:clock:list')") + @GetMapping("/list") + public TableDataInfo list(BizDriverClock bizDriverClock) + { + startPage(); + List list = bizDriverClockService.selectBizDriverClockList(bizDriverClock); + return getDataTable(list); + } + + /** + * 导出司机打卡记录列表 + */ + @PreAuthorize("@ss.hasPermi('system:clock:export')") + @Log(title = "司机打卡记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, BizDriverClock bizDriverClock) + { + List list = bizDriverClockService.selectBizDriverClockList(bizDriverClock); + ExcelUtil util = new ExcelUtil(BizDriverClock.class); + util.exportExcel(response, list, "司机打卡记录数据"); + } + + /** + * 获取司机打卡记录详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:clock:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(bizDriverClockService.selectBizDriverClockById(id)); + } + + /** + * 新增司机打卡记录 + */ + @PreAuthorize("@ss.hasPermi('system:clock:add')") + @Log(title = "司机打卡记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody BizDriverClock bizDriverClock) + { + return toAjax(bizDriverClockService.insertBizDriverClock(bizDriverClock)); + } + + /** + * 修改司机打卡记录 + */ + @PreAuthorize("@ss.hasPermi('system:clock:edit')") + @Log(title = "司机打卡记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody BizDriverClock bizDriverClock) + { + return toAjax(bizDriverClockService.updateBizDriverClock(bizDriverClock)); + } + + /** + * 删除司机打卡记录 + */ + @PreAuthorize("@ss.hasPermi('system:clock:remove')") + @Log(title = "司机打卡记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(bizDriverClockService.deleteBizDriverClockByIds(ids)); + } +} diff --git a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizDriverController.java b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizDriverController.java index 120a3e9..1b6ee26 100644 --- a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizDriverController.java +++ b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizDriverController.java @@ -37,7 +37,6 @@ public class BizDriverController extends BaseController /** * 查询司机列表 */ - @PreAuthorize("@ss.hasPermi('biz:driver:list')") @GetMapping("/list") public TableDataInfo list(BizDriver bizDriver) { @@ -49,7 +48,6 @@ public class BizDriverController extends BaseController /** * 查询司机列表 */ - @PreAuthorize("@ss.hasPermi('biz:driver:list')") @GetMapping("/list2") public AjaxResult list2(BizDriver bizDriver) { @@ -72,7 +70,6 @@ public class BizDriverController extends BaseController /** * 获取司机详细信息 */ - @PreAuthorize("@ss.hasPermi('biz:driver:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { diff --git a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizOrderController.java b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizOrderController.java index 2faf16e..dbe2914 100644 --- a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizOrderController.java +++ b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizOrderController.java @@ -67,7 +67,6 @@ public class BizOrderController extends BaseController { /** * 查询订单列表(主驾司机或者副驾司机是当前用户 - 分页) */ - @PreAuthorize("@ss.hasPermi('biz:order:list')") @GetMapping("/listByDriver") public TableDataInfo list(String orderStatus, @RequestParam(defaultValue = "1") int pageNum, diff --git a/cpxt-admin/src/main/java/com/cpxt/web/controller/system/SysLoginController.java b/cpxt-admin/src/main/java/com/cpxt/web/controller/system/SysLoginController.java index afe678a..8ba0545 100644 --- a/cpxt-admin/src/main/java/com/cpxt/web/controller/system/SysLoginController.java +++ b/cpxt-admin/src/main/java/com/cpxt/web/controller/system/SysLoginController.java @@ -2,6 +2,8 @@ package com.cpxt.web.controller.system; import java.util.List; import java.util.Set; + +import com.cpxt.common.annotation.Anonymous; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -62,6 +64,7 @@ public class SysLoginController * @param loginBody 登录信息 * @return 结果 */ + @Anonymous @PostMapping("/appLogin") public AjaxResult appLogin(@RequestBody LoginBody loginBody) { diff --git a/cpxt-admin/src/main/java/com/cpxt/web/task/OrderTask.java b/cpxt-admin/src/main/java/com/cpxt/web/task/OrderTask.java index 5fb87ba..19226fc 100644 --- a/cpxt-admin/src/main/java/com/cpxt/web/task/OrderTask.java +++ b/cpxt-admin/src/main/java/com/cpxt/web/task/OrderTask.java @@ -101,7 +101,7 @@ public class OrderTask { String format = DateUtil.format(new Date(), "yyyyMMdd"); // 20241220 String orderSn; BizOrder order = orderTask.orderMapper.selectLastestOrder(); - if (order == null || !order.getOrderSn().substring(1, 8).equals(format)){ + if (order == null || !order.getOrderSn().substring(1, 9).equals(format)){ orderSn = "Y" + format + "1001"; }else { String sn = order.getOrderSn(); diff --git a/cpxt-common/src/main/java/com/cpxt/common/utils/PositionUtil.java b/cpxt-common/src/main/java/com/cpxt/common/utils/PositionUtil.java new file mode 100644 index 0000000..9fffe2f --- /dev/null +++ b/cpxt-common/src/main/java/com/cpxt/common/utils/PositionUtil.java @@ -0,0 +1,39 @@ +package com.cpxt.common.utils; + +/** + * 坐标位置相关util + */ +public class PositionUtil { + + /** + * 赤道半径(单位:米) + */ + private static final double EQUATOR_RADIUS = 6378137; + + /** + * 方法一:(反余弦计算方式) + * + * @param longitude1 第一个点的经度 + * @param latitude1 第一个点的纬度 + * @param longitude2 第二个点的经度 + * @param latitude2 第二个点的纬度 + * @return 返回距离,单位m + */ + public static double getDistance1(double longitude1, double latitude1, double longitude2, double latitude2) { + // 纬度 + double lat1 = Math.toRadians(latitude1); + double lat2 = Math.toRadians(latitude2); + // 经度 + double lon1 = Math.toRadians(longitude1); + double lon2 = Math.toRadians(longitude2); + // 纬度之差 + double a = lat1 - lat2; + // 经度之差 + double b = lon1 - lon2; + // 计算两点距离的公式 + double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(b / 2), 2))); + // 弧长乘赤道半径, 返回单位: 米 + s = s * EQUATOR_RADIUS; + return s; + } +} \ No newline at end of file diff --git a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizDriver.java b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizDriver.java index 2807cd1..47203fe 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizDriver.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizDriver.java @@ -87,4 +87,14 @@ public class BizDriver /** 备注 */ private String remark; + + /** 当前车辆id */ + private Long currentCarId; + + /** 当前车辆车牌号 */ + private String currentCarNo; + + /** 在线状态 1 在线 0 离线 */ + private Integer onlineStatus; + } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizDriverClock.java b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizDriverClock.java new file mode 100644 index 0000000..c9020d3 --- /dev/null +++ b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizDriverClock.java @@ -0,0 +1,64 @@ +package com.cpxt.biz.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.cpxt.common.annotation.Excel; +import com.cpxt.common.core.domain.BaseEntity; + +/** + * 司机打卡记录对象 biz_driver_clock + * + * @author ruoyi + * @date 2024-12-23 + */ +@Data +public class BizDriverClock +{ + private static final long serialVersionUID = 1L; + + /** ID */ + private Long id; + + /** 司机ID */ + @Excel(name = "司机ID") + private Long driverId; + + /** 打卡类型 上班 下班 */ + @Excel(name = "打卡类型 上班 下班") + private Integer clockType; + + /** 打卡时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "打卡时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date clockTime; + + /** 打卡车辆 */ + @Excel(name = "打卡车辆") + private Long clockCarId; + + /** 打卡车牌号 */ + @Excel(name = "打卡车牌号") + private String clockCarNo; + + /** 打卡照片 */ + @Excel(name = "打卡照片") + private String clockImg; + + /** 状态 */ + @Excel(name = "状态") + private Integer status; + + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** 更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** 备注 */ + private String remark; +} diff --git a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrder.java b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrder.java index 6ff5879..dcefc1f 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrder.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrder.java @@ -147,6 +147,10 @@ public class BizOrder @Excel(name = "收件人公司名称") private String receiverCompany; + /** 直接距离 */ + @Excel(name = "直接距离") + private Double lineDistance; + /** 物品类型 */ @Excel(name = "物品类型") private String goodsType; diff --git a/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizCarMapper.java b/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizCarMapper.java index ae089f7..de7c883 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizCarMapper.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizCarMapper.java @@ -2,11 +2,11 @@ package com.cpxt.biz.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.cpxt.biz.domain.BizCar; -import org.apache.ibatis.annotations.Insert; -import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.*; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.List; +import java.util.Map; /** * 车辆Mapper接口 @@ -29,4 +29,7 @@ public interface BizCarMapper extends BaseMapper @Select("select * from biz_car where car_no = #{carNo}") BizCar selectByCarNo(String carNo); + @Select("select * from ${tableName} where gps_time >= #{startTime} and gps_time <= #{endTime}") + List selectBizTrackList(@Param("tableName") String tableName,@Param("startTime") String startTime,@Param("endTime") String endTime); + } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizCarStateMapper.java b/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizCarStateMapper.java index a9a6bad..5ba1975 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizCarStateMapper.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizCarStateMapper.java @@ -16,4 +16,7 @@ public interface BizCarStateMapper extends BaseMapper { @Select("select * from biz_car_state where vehicle_no = #{carNo}") BizCarState selectByCarNo(String carNo); + + @Select("select * from biz_car_state where car_id = ${carId}") + BizCarState selectBizCarStateByCarId(Long carId); } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizDriverClockMapper.java b/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizDriverClockMapper.java new file mode 100644 index 0000000..eb95457 --- /dev/null +++ b/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizDriverClockMapper.java @@ -0,0 +1,17 @@ +package com.cpxt.biz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cpxt.biz.domain.BizDriverClock; +import org.apache.ibatis.annotations.Mapper; + +/** + * 司机打卡记录Mapper接口 + * + * @author ruoyi + * @date 2024-12-23 + */ +@Mapper +public interface BizDriverClockMapper extends BaseMapper +{ + +} diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/IBizCarService.java b/cpxt-system/src/main/java/com/cpxt/biz/service/IBizCarService.java index fba1cab..e4288df 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/IBizCarService.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/IBizCarService.java @@ -1,6 +1,7 @@ package com.cpxt.biz.service; import java.util.List; +import java.util.Map; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cpxt.biz.domain.BizCar; @@ -63,4 +64,6 @@ public interface IBizCarService Page selectBizCarPage(BizCar bizCar,int pageNum,int pageSize); + List selectBizTrackList(Long carId, String startTime, String endTime); + } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/IBizCarStateService.java b/cpxt-system/src/main/java/com/cpxt/biz/service/IBizCarStateService.java index 2fdc8dc..67827c2 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/IBizCarStateService.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/IBizCarStateService.java @@ -1,5 +1,6 @@ package com.cpxt.biz.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cpxt.biz.domain.BizCarState; import java.util.List; @@ -58,4 +59,8 @@ public interface IBizCarStateService * @return 结果 */ public int deleteBizCarStateById(Long id); + + Page selectBizCarStatePage(BizCarState bizCarState, int pageNum, int pageSize); + + BizCarState selectBizCarStateByCarId(Long carId); } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/IBizDriverClockService.java b/cpxt-system/src/main/java/com/cpxt/biz/service/IBizDriverClockService.java new file mode 100644 index 0000000..49ae6c2 --- /dev/null +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/IBizDriverClockService.java @@ -0,0 +1,61 @@ +package com.cpxt.biz.service; + +import com.cpxt.biz.domain.BizDriverClock; +import java.util.List; + +/** + * 司机打卡记录Service接口 + * + * @author ruoyi + * @date 2024-12-23 + */ +public interface IBizDriverClockService +{ + /** + * 查询司机打卡记录 + * + * @param id 司机打卡记录主键 + * @return 司机打卡记录 + */ + public BizDriverClock selectBizDriverClockById(Long id); + + /** + * 查询司机打卡记录列表 + * + * @param bizDriverClock 司机打卡记录 + * @return 司机打卡记录集合 + */ + public List selectBizDriverClockList(BizDriverClock bizDriverClock); + + /** + * 新增司机打卡记录 + * + * @param bizDriverClock 司机打卡记录 + * @return 结果 + */ + public int insertBizDriverClock(BizDriverClock bizDriverClock); + + /** + * 修改司机打卡记录 + * + * @param bizDriverClock 司机打卡记录 + * @return 结果 + */ + public int updateBizDriverClock(BizDriverClock bizDriverClock); + + /** + * 批量删除司机打卡记录 + * + * @param ids 需要删除的司机打卡记录主键集合 + * @return 结果 + */ + public int deleteBizDriverClockByIds(Long[] ids); + + /** + * 删除司机打卡记录信息 + * + * @param id 司机打卡记录主键 + * @return 结果 + */ + public int deleteBizDriverClockById(Long id); +} diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarServiceImpl.java index 562e343..0e6b7d0 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarServiceImpl.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarServiceImpl.java @@ -2,6 +2,7 @@ package com.cpxt.biz.service.impl; import java.util.Arrays; import java.util.List; +import java.util.Map; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -13,6 +14,7 @@ import org.springframework.stereotype.Service; import com.cpxt.biz.mapper.BizCarMapper; import com.cpxt.biz.domain.BizCar; import com.cpxt.biz.service.IBizCarService; +import org.springframework.transaction.annotation.Transactional; /** * 车辆Service业务层处理 @@ -92,6 +94,7 @@ public class BizCarServiceImpl implements IBizCarService * @return 结果 */ @Override + @Transactional public int insertBizCar(BizCar bizCar) { int i = bizCarMapper.insert(bizCar); @@ -147,4 +150,10 @@ public class BizCarServiceImpl implements IBizCarService updateWrapper.set("status","2"); //状态改为删除 return bizCarMapper.update(null,updateWrapper); } + + @Override + public List selectBizTrackList(Long carId, String startTime, String endTime) { + String tableName = "track_" + carId; + return bizCarMapper.selectBizTrackList(tableName,startTime,endTime); + } } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarStateServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarStateServiceImpl.java index 198b486..a32f671 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarStateServiceImpl.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarStateServiceImpl.java @@ -3,7 +3,9 @@ package com.cpxt.biz.service.impl; import java.util.Arrays; import java.util.List; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cpxt.biz.domain.BizCarState; import com.cpxt.biz.mapper.BizCarStateMapper; import com.cpxt.biz.service.IBizCarStateService; @@ -22,6 +24,32 @@ public class BizCarStateServiceImpl implements IBizCarStateService @Autowired private BizCarStateMapper bizCarStateMapper; + /** + * 查询车辆实时状态列表(分页) + * + * @param bizCarState 车辆实时状态 + * @return 车辆实时状态 + */ + @Override + public Page selectBizCarStatePage(BizCarState bizCarState,int pageNum, int pageSize) + { + LambdaQueryWrapper queryWrapper = buildQueryWrapper(bizCarState); + return bizCarStateMapper.selectPage(new Page<>(pageNum,pageSize),queryWrapper); + } + + @Override + public BizCarState selectBizCarStateByCarId(Long carId) { + return bizCarStateMapper.selectBizCarStateByCarId(carId); + } + + private LambdaQueryWrapper buildQueryWrapper(BizCarState bizCarState) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (ObjectUtil.isNotEmpty(bizCarState.getCarNo())){ + queryWrapper.eq(BizCarState::getCarNo, bizCarState.getCarNo()); + } + return queryWrapper; + } + /** * 查询车辆实时状态 * @@ -43,8 +71,7 @@ public class BizCarStateServiceImpl implements IBizCarStateService @Override public List selectBizCarStateList(BizCarState bizCarState) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - + LambdaQueryWrapper queryWrapper = buildQueryWrapper(bizCarState); return bizCarStateMapper.selectList(queryWrapper); } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCustomerRouteServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCustomerRouteServiceImpl.java index 7d7685e..5228608 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCustomerRouteServiceImpl.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCustomerRouteServiceImpl.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Service; import com.cpxt.biz.mapper.BizCustomerRouteMapper; import com.cpxt.biz.domain.BizCustomerRoute; import com.cpxt.biz.service.IBizCustomerRouteService; +import org.springframework.transaction.annotation.Transactional; /** * 路线Service业务层处理 @@ -70,6 +71,7 @@ public class BizCustomerRouteServiceImpl implements IBizCustomerRouteService * @return 结果 */ @Override + @Transactional public int insertBizCustomerRoute(BizCustomerRoute bizCustomerRoute) { int insert = bizCustomerRouteMapper.insert(bizCustomerRoute); @@ -92,6 +94,7 @@ public class BizCustomerRouteServiceImpl implements IBizCustomerRouteService * @return 结果 */ @Override + @Transactional public int updateBizCustomerRoute(BizCustomerRoute bizCustomerRoute) { // 修改完路线同步修改到路线和店铺的关联表 @@ -115,6 +118,7 @@ public class BizCustomerRouteServiceImpl implements IBizCustomerRouteService * @return 结果 */ @Override + @Transactional public int deleteBizCustomerRouteByIds(Long[] ids) { // 同步删除路线和店铺的关联表 diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCustomerServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCustomerServiceImpl.java index ae8fee2..fa3992e 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCustomerServiceImpl.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCustomerServiceImpl.java @@ -19,6 +19,7 @@ import org.springframework.stereotype.Service; import com.cpxt.biz.mapper.BizCustomerMapper; import com.cpxt.biz.domain.BizCustomer; import com.cpxt.biz.service.IBizCustomerService; +import org.springframework.transaction.annotation.Transactional; /** * 客户Service业务层处理 @@ -100,6 +101,7 @@ public class BizCustomerServiceImpl implements IBizCustomerService * @return 结果 */ @Override + @Transactional public int insertBizCustomer(BizCustomer bizCustomer) { Long parentId = sysDeptMapper.selectDeptIdByDeptName("外部单位"); @@ -152,6 +154,7 @@ public class BizCustomerServiceImpl implements IBizCustomerService * @return 结果 */ @Override + @Transactional public int deleteBizCustomerByIds(Long[] ids) { // 删除客户对应的用户 diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizDriverClockServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizDriverClockServiceImpl.java new file mode 100644 index 0000000..d87bf78 --- /dev/null +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizDriverClockServiceImpl.java @@ -0,0 +1,127 @@ +package com.cpxt.biz.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.cpxt.biz.domain.BizDriver; +import com.cpxt.biz.domain.BizDriverClock; +import com.cpxt.biz.domain.BizOrder; +import com.cpxt.biz.mapper.BizDriverClockMapper; +import com.cpxt.biz.mapper.BizDriverMapper; +import com.cpxt.biz.mapper.BizOrderMapper; +import com.cpxt.biz.service.IBizDriverClockService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; + +/** + * 司机打卡记录Service业务层处理 + * + * @author ruoyi + * @date 2024-12-23 + */ +@Service +public class BizDriverClockServiceImpl implements IBizDriverClockService +{ + @Autowired + private BizDriverClockMapper bizDriverClockMapper; + + @Autowired + private BizOrderMapper bizOrderMapper; + + @Autowired + private BizDriverMapper bizDriverMapper; + + /** + * 查询司机打卡记录 + * + * @param id 司机打卡记录主键 + * @return 司机打卡记录 + */ + @Override + public BizDriverClock selectBizDriverClockById(Long id) + { + return bizDriverClockMapper.selectById(id); + } + + /** + * 查询司机打卡记录列表 + * + * @param bizDriverClock 司机打卡记录 + * @return 司机打卡记录 + */ + @Override + public List selectBizDriverClockList(BizDriverClock bizDriverClock) + { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + return bizDriverClockMapper.selectList(queryWrapper); + } + + /** + * 新增司机打卡记录 + * + * @param bizDriverClock 司机打卡记录 + * @return 结果 + */ + @Override + @Transactional + public int insertBizDriverClock(BizDriverClock bizDriverClock) + { + // 新增司机打卡记录时 + // 1、同步修改订单表中订单司机是该司机并且状态为待取件和配送中的订单的车牌号为打卡车辆车牌号 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BizOrder::getDriverId,bizDriverClock.getDriverId()); + queryWrapper.in(BizOrder::getOrderStatus, Arrays.asList("1","2")); + queryWrapper.eq(BizOrder::getStatus,1); + List bizOrderList = bizOrderMapper.selectList(queryWrapper); + if (bizOrderList.size() > 0){ + for (BizOrder bizOrder : bizOrderList) { + bizOrder.setCarId(bizDriverClock.getClockCarId()); + bizOrder.setCarNo(bizDriverClock.getClockCarNo()); + bizOrderMapper.updateById(bizOrder); + } + } + // 2、上班打卡修改司机的状态为在线 下班打卡修改司机的状态为离线 + BizDriver bizDriver = bizDriverMapper.selectById(bizDriverClock.getDriverId()); + bizDriver.setOnlineStatus(bizDriverClock.getClockType()); + bizDriverMapper.updateById(bizDriver); + return bizDriverClockMapper.insert(bizDriverClock); + } + + /** + * 修改司机打卡记录 + * + * @param bizDriverClock 司机打卡记录 + * @return 结果 + */ + @Override + public int updateBizDriverClock(BizDriverClock bizDriverClock) + { + return bizDriverClockMapper.updateById(bizDriverClock); + } + + /** + * 批量删除司机打卡记录 + * + * @param ids 需要删除的司机打卡记录主键 + * @return 结果 + */ + @Override + public int deleteBizDriverClockByIds(Long[] ids) + { + return bizDriverClockMapper.deleteBatchIds(Arrays.asList(ids)); + } + + /** + * 删除司机打卡记录信息 + * + * @param id 司机打卡记录主键 + * @return 结果 + */ + @Override + public int deleteBizDriverClockById(Long id) + { + return bizDriverClockMapper.deleteById(id); + } +} diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizDriverServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizDriverServiceImpl.java index 672a399..df8cee1 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizDriverServiceImpl.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizDriverServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; import com.cpxt.biz.mapper.BizDriverMapper; import com.cpxt.biz.domain.BizDriver; import com.cpxt.biz.service.IBizDriverService; +import org.springframework.transaction.annotation.Transactional; /** * 司机Service业务层处理 @@ -93,6 +94,7 @@ public class BizDriverServiceImpl implements IBizDriverService * @return 结果 */ @Override + @Transactional public int insertBizDriver(BizDriver bizDriver) { bizDriver.setDeptName(sysDeptMapper.selectDeptById(bizDriver.getDeptId()).getDeptName()); @@ -138,6 +140,7 @@ public class BizDriverServiceImpl implements IBizDriverService * @return 结果 */ @Override + @Transactional public int deleteBizDriverByIds(Long[] ids) { // 删除司机对应用户 diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderServiceImpl.java index 6a2753e..bc86576 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderServiceImpl.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderServiceImpl.java @@ -14,6 +14,7 @@ import com.cpxt.biz.domain.vo.BizOrderVo; import com.cpxt.biz.domain.vo.BizOrderVoCustomer; import com.cpxt.biz.mapper.*; import com.cpxt.common.exception.ServiceException; +import com.cpxt.common.utils.PositionUtil; import com.cpxt.common.utils.SecurityUtils; import com.cpxt.common.utils.StringUtils; import org.slf4j.Logger; @@ -320,6 +321,12 @@ public class BizOrderServiceImpl implements IBizOrderService { if (ObjectUtil.isNotEmpty(carId)) bizOrder.setCarNo(bizCarMapper.selectById(carId).getCarNo()); if (ObjectUtil.isNotEmpty(driverId)) bizOrder.setDriverName(bizDriverMapper.selectById(driverId).getName()); if (ObjectUtil.isNotEmpty(copilotId)) bizOrder.setCopilotName(bizDriverMapper.selectById(copilotId).getName()); + + // 计算直线距离 + if (ObjectUtil.isNotEmpty(bizOrder.getSenderLng()) && ObjectUtil.isNotEmpty(bizOrder.getSenderLat()) && ObjectUtil.isNotEmpty(bizOrder.getReceiverLng()) && ObjectUtil.isNotEmpty(bizOrder.getReceiverLat())){ + double lineDistance = PositionUtil.getDistance1(bizOrder.getSenderLng().doubleValue(), bizOrder.getSenderLat().doubleValue(), bizOrder.getReceiverLng().doubleValue(), bizOrder.getReceiverLat().doubleValue()); + bizOrder.setLineDistance(lineDistance); + } return bizOrderMapper.insert(bizOrder); } @@ -608,7 +615,7 @@ public class BizOrderServiceImpl implements IBizOrderService { String format = DateUtil.format(new Date(), "yyyyMMdd"); // 20241220 String orderSn; BizOrder order = bizOrderMapper.selectLastestOrder(); - if (order == null){ + if (order == null || !order.getOrderSn().substring(1, 9).equals(format)){ orderSn = "Y" + format + "1001"; }else { String sn = order.getOrderSn(); diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderTaskServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderTaskServiceImpl.java index 4ad4027..4974675 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderTaskServiceImpl.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderTaskServiceImpl.java @@ -17,6 +17,7 @@ import com.cpxt.quartz.domain.SysJob; import com.cpxt.quartz.mapper.SysJobMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 订单任务Service业务层处理 @@ -65,6 +66,7 @@ public class BizOrderTaskServiceImpl implements IBizOrderTaskService * @return 结果 */ @Override + @Transactional public int insertBizOrderTask(BizOrderTask bizOrderTask) { String uuid = UUID.randomUUID().toString(); @@ -95,6 +97,7 @@ public class BizOrderTaskServiceImpl implements IBizOrderTaskService * @return 结果 */ @Override + @Transactional public int updateBizOrderTask(BizOrderTask bizOrderTask) { // 同步修改订单任务 @@ -120,6 +123,7 @@ public class BizOrderTaskServiceImpl implements IBizOrderTaskService * @return 结果 */ @Override + @Transactional public int deleteBizOrderTaskByIds(Integer[] ids) { // 同步删除job表中的任务