新增上下班打卡功能、新增订单时填充直线距离

master
luojian 2024-12-23 17:28:40 +08:00
parent b4c22e5ed6
commit 7ba947a94b
25 changed files with 562 additions and 41 deletions

View File

@ -49,7 +49,7 @@ public class BizCarController extends BaseController
} }
/** /**
* *
*/ */
@PreAuthorize("@ss.hasPermi('biz:car:list')") @PreAuthorize("@ss.hasPermi('biz:car:list')")
@GetMapping("/list2") @GetMapping("/list2")
@ -113,4 +113,16 @@ public class BizCarController extends BaseController
{ {
return toAjax(bizCarService.deleteBizCarByIds(ids)); 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));
}
} }

View File

@ -3,18 +3,13 @@ package com.cpxt.web.controller.biz;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cpxt.biz.domain.BizCarState; import com.cpxt.biz.domain.BizCarState;
import com.cpxt.biz.service.IBizCarStateService; import com.cpxt.biz.service.IBizCarStateService;
import com.cpxt.common.constant.HttpStatus;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
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.annotation.Log;
import com.cpxt.common.core.controller.BaseController; import com.cpxt.common.core.controller.BaseController;
import com.cpxt.common.core.domain.AjaxResult; import com.cpxt.common.core.domain.AjaxResult;
@ -29,9 +24,8 @@ import com.cpxt.common.core.page.TableDataInfo;
* @date 2024-12-18 * @date 2024-12-18
*/ */
@RestController @RestController
@RequestMapping("/system/state") @RequestMapping("/biz/state")
public class BizCarStateController extends BaseController public class BizCarStateController extends BaseController {
{
@Autowired @Autowired
private IBizCarStateService bizCarStateService; private IBizCarStateService bizCarStateService;
@ -40,11 +34,34 @@ public class BizCarStateController extends BaseController
*/ */
@PreAuthorize("@ss.hasPermi('system:state:list')") @PreAuthorize("@ss.hasPermi('system:state:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(BizCarState bizCarState) public TableDataInfo list(BizCarState bizCarState,
{ @RequestParam(defaultValue = "1") int pageNum,
startPage(); @RequestParam(defaultValue = "10") int pageSize) {
List<BizCarState> list = bizCarStateService.selectBizCarStateList(bizCarState); Page<BizCarState> recordPage = bizCarStateService.selectBizCarStatePage(bizCarState, pageNum, pageSize);
return getDataTable(list); 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')") @PreAuthorize("@ss.hasPermi('system:state:export')")
@Log(title = "车辆实时状态", businessType = BusinessType.EXPORT) @Log(title = "车辆实时状态", businessType = BusinessType.EXPORT)
@PostMapping("/export") @PostMapping("/export")
public void export(HttpServletResponse response, BizCarState bizCarState) public void export(HttpServletResponse response, BizCarState bizCarState) {
{
List<BizCarState> list = bizCarStateService.selectBizCarStateList(bizCarState); List<BizCarState> list = bizCarStateService.selectBizCarStateList(bizCarState);
ExcelUtil<BizCarState> util = new ExcelUtil<BizCarState>(BizCarState.class); ExcelUtil<BizCarState> util = new ExcelUtil<BizCarState>(BizCarState.class);
util.exportExcel(response, list, "车辆实时状态数据"); util.exportExcel(response, list, "车辆实时状态数据");
@ -65,8 +81,7 @@ public class BizCarStateController extends BaseController
*/ */
@PreAuthorize("@ss.hasPermi('system:state:query')") @PreAuthorize("@ss.hasPermi('system:state:query')")
@GetMapping(value = "/{id}") @GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) public AjaxResult getInfo(@PathVariable("id") Long id) {
{
return success(bizCarStateService.selectBizCarStateById(id)); return success(bizCarStateService.selectBizCarStateById(id));
} }
@ -76,8 +91,7 @@ public class BizCarStateController extends BaseController
@PreAuthorize("@ss.hasPermi('system:state:add')") @PreAuthorize("@ss.hasPermi('system:state:add')")
@Log(title = "车辆实时状态", businessType = BusinessType.INSERT) @Log(title = "车辆实时状态", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public AjaxResult add(@RequestBody BizCarState bizCarState) public AjaxResult add(@RequestBody BizCarState bizCarState) {
{
return toAjax(bizCarStateService.insertBizCarState(bizCarState)); return toAjax(bizCarStateService.insertBizCarState(bizCarState));
} }
@ -87,8 +101,7 @@ public class BizCarStateController extends BaseController
@PreAuthorize("@ss.hasPermi('system:state:edit')") @PreAuthorize("@ss.hasPermi('system:state:edit')")
@Log(title = "车辆实时状态", businessType = BusinessType.UPDATE) @Log(title = "车辆实时状态", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping
public AjaxResult edit(@RequestBody BizCarState bizCarState) public AjaxResult edit(@RequestBody BizCarState bizCarState) {
{
return toAjax(bizCarStateService.updateBizCarState(bizCarState)); return toAjax(bizCarStateService.updateBizCarState(bizCarState));
} }
@ -97,9 +110,8 @@ public class BizCarStateController extends BaseController
*/ */
@PreAuthorize("@ss.hasPermi('system:state:remove')") @PreAuthorize("@ss.hasPermi('system:state:remove')")
@Log(title = "车辆实时状态", businessType = BusinessType.DELETE) @Log(title = "车辆实时状态", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) public AjaxResult remove(@PathVariable Long[] ids) {
{
return toAjax(bizCarStateService.deleteBizCarStateByIds(ids)); return toAjax(bizCarStateService.deleteBizCarStateByIds(ids));
} }
} }

View File

@ -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<BizDriverClock> 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<BizDriverClock> list = bizDriverClockService.selectBizDriverClockList(bizDriverClock);
ExcelUtil<BizDriverClock> util = new ExcelUtil<BizDriverClock>(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));
}
}

View File

@ -37,7 +37,6 @@ public class BizDriverController extends BaseController
/** /**
* *
*/ */
@PreAuthorize("@ss.hasPermi('biz:driver:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(BizDriver bizDriver) public TableDataInfo list(BizDriver bizDriver)
{ {
@ -49,7 +48,6 @@ public class BizDriverController extends BaseController
/** /**
* *
*/ */
@PreAuthorize("@ss.hasPermi('biz:driver:list')")
@GetMapping("/list2") @GetMapping("/list2")
public AjaxResult list2(BizDriver bizDriver) public AjaxResult list2(BizDriver bizDriver)
{ {
@ -72,7 +70,6 @@ public class BizDriverController extends BaseController
/** /**
* *
*/ */
@PreAuthorize("@ss.hasPermi('biz:driver:query')")
@GetMapping(value = "/{id}") @GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) public AjaxResult getInfo(@PathVariable("id") Long id)
{ {

View File

@ -67,7 +67,6 @@ public class BizOrderController extends BaseController {
/** /**
* - * -
*/ */
@PreAuthorize("@ss.hasPermi('biz:order:list')")
@GetMapping("/listByDriver") @GetMapping("/listByDriver")
public TableDataInfo list(String orderStatus, public TableDataInfo list(String orderStatus,
@RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "1") int pageNum,

View File

@ -2,6 +2,8 @@ package com.cpxt.web.controller.system;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import com.cpxt.common.annotation.Anonymous;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -62,6 +64,7 @@ public class SysLoginController
* @param loginBody * @param loginBody
* @return * @return
*/ */
@Anonymous
@PostMapping("/appLogin") @PostMapping("/appLogin")
public AjaxResult appLogin(@RequestBody LoginBody loginBody) public AjaxResult appLogin(@RequestBody LoginBody loginBody)
{ {

View File

@ -101,7 +101,7 @@ public class OrderTask {
String format = DateUtil.format(new Date(), "yyyyMMdd"); // 20241220 String format = DateUtil.format(new Date(), "yyyyMMdd"); // 20241220
String orderSn; String orderSn;
BizOrder order = orderTask.orderMapper.selectLastestOrder(); 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"; orderSn = "Y" + format + "1001";
}else { }else {
String sn = order.getOrderSn(); String sn = order.getOrderSn();

View File

@ -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;
}
}

View File

@ -87,4 +87,14 @@ public class BizDriver
/** 备注 */ /** 备注 */
private String remark; private String remark;
/** 当前车辆id */
private Long currentCarId;
/** 当前车辆车牌号 */
private String currentCarNo;
/** 在线状态 1 在线 0 离线 */
private Integer onlineStatus;
} }

View File

@ -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;
}

View File

@ -147,6 +147,10 @@ public class BizOrder
@Excel(name = "收件人公司名称") @Excel(name = "收件人公司名称")
private String receiverCompany; private String receiverCompany;
/** 直接距离 */
@Excel(name = "直接距离")
private Double lineDistance;
/** 物品类型 */ /** 物品类型 */
@Excel(name = "物品类型") @Excel(name = "物品类型")
private String goodsType; private String goodsType;

View File

@ -2,11 +2,11 @@ package com.cpxt.biz.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cpxt.biz.domain.BizCar; import com.cpxt.biz.domain.BizCar;
import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select; 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 * Mapper
@ -29,4 +29,7 @@ public interface BizCarMapper extends BaseMapper<BizCar>
@Select("select * from biz_car where car_no = #{carNo}") @Select("select * from biz_car where car_no = #{carNo}")
BizCar selectByCarNo(String carNo); BizCar selectByCarNo(String carNo);
@Select("select * from ${tableName} where gps_time >= #{startTime} and gps_time <= #{endTime}")
List<Map> selectBizTrackList(@Param("tableName") String tableName,@Param("startTime") String startTime,@Param("endTime") String endTime);
} }

View File

@ -16,4 +16,7 @@ public interface BizCarStateMapper extends BaseMapper<BizCarState>
{ {
@Select("select * from biz_car_state where vehicle_no = #{carNo}") @Select("select * from biz_car_state where vehicle_no = #{carNo}")
BizCarState selectByCarNo(String carNo); BizCarState selectByCarNo(String carNo);
@Select("select * from biz_car_state where car_id = ${carId}")
BizCarState selectBizCarStateByCarId(Long carId);
} }

View File

@ -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<BizDriverClock>
{
}

View File

@ -1,6 +1,7 @@
package com.cpxt.biz.service; package com.cpxt.biz.service;
import java.util.List; import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cpxt.biz.domain.BizCar; import com.cpxt.biz.domain.BizCar;
@ -63,4 +64,6 @@ public interface IBizCarService
Page<BizCar> selectBizCarPage(BizCar bizCar,int pageNum,int pageSize); Page<BizCar> selectBizCarPage(BizCar bizCar,int pageNum,int pageSize);
List<Map> selectBizTrackList(Long carId, String startTime, String endTime);
} }

View File

@ -1,5 +1,6 @@
package com.cpxt.biz.service; package com.cpxt.biz.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cpxt.biz.domain.BizCarState; import com.cpxt.biz.domain.BizCarState;
import java.util.List; import java.util.List;
@ -58,4 +59,8 @@ public interface IBizCarStateService
* @return * @return
*/ */
public int deleteBizCarStateById(Long id); public int deleteBizCarStateById(Long id);
Page<BizCarState> selectBizCarStatePage(BizCarState bizCarState, int pageNum, int pageSize);
BizCarState selectBizCarStateByCarId(Long carId);
} }

View File

@ -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<BizDriverClock> 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);
}

View File

@ -2,6 +2,7 @@ package com.cpxt.biz.service.impl;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.mapper.BizCarMapper;
import com.cpxt.biz.domain.BizCar; import com.cpxt.biz.domain.BizCar;
import com.cpxt.biz.service.IBizCarService; import com.cpxt.biz.service.IBizCarService;
import org.springframework.transaction.annotation.Transactional;
/** /**
* Service * Service
@ -92,6 +94,7 @@ public class BizCarServiceImpl implements IBizCarService
* @return * @return
*/ */
@Override @Override
@Transactional
public int insertBizCar(BizCar bizCar) public int insertBizCar(BizCar bizCar)
{ {
int i = bizCarMapper.insert(bizCar); int i = bizCarMapper.insert(bizCar);
@ -147,4 +150,10 @@ public class BizCarServiceImpl implements IBizCarService
updateWrapper.set("status","2"); //状态改为删除 updateWrapper.set("status","2"); //状态改为删除
return bizCarMapper.update(null,updateWrapper); return bizCarMapper.update(null,updateWrapper);
} }
@Override
public List<Map> selectBizTrackList(Long carId, String startTime, String endTime) {
String tableName = "track_" + carId;
return bizCarMapper.selectBizTrackList(tableName,startTime,endTime);
}
} }

View File

@ -3,7 +3,9 @@ package com.cpxt.biz.service.impl;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.domain.BizCarState;
import com.cpxt.biz.mapper.BizCarStateMapper; import com.cpxt.biz.mapper.BizCarStateMapper;
import com.cpxt.biz.service.IBizCarStateService; import com.cpxt.biz.service.IBizCarStateService;
@ -22,6 +24,32 @@ public class BizCarStateServiceImpl implements IBizCarStateService
@Autowired @Autowired
private BizCarStateMapper bizCarStateMapper; private BizCarStateMapper bizCarStateMapper;
/**
*
*
* @param bizCarState
* @return
*/
@Override
public Page<BizCarState> selectBizCarStatePage(BizCarState bizCarState,int pageNum, int pageSize)
{
LambdaQueryWrapper<BizCarState> queryWrapper = buildQueryWrapper(bizCarState);
return bizCarStateMapper.selectPage(new Page<>(pageNum,pageSize),queryWrapper);
}
@Override
public BizCarState selectBizCarStateByCarId(Long carId) {
return bizCarStateMapper.selectBizCarStateByCarId(carId);
}
private LambdaQueryWrapper<BizCarState> buildQueryWrapper(BizCarState bizCarState) {
LambdaQueryWrapper<BizCarState> 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 @Override
public List<BizCarState> selectBizCarStateList(BizCarState bizCarState) public List<BizCarState> selectBizCarStateList(BizCarState bizCarState)
{ {
LambdaQueryWrapper<BizCarState> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BizCarState> queryWrapper = buildQueryWrapper(bizCarState);
return bizCarStateMapper.selectList(queryWrapper); return bizCarStateMapper.selectList(queryWrapper);
} }

View File

@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
import com.cpxt.biz.mapper.BizCustomerRouteMapper; import com.cpxt.biz.mapper.BizCustomerRouteMapper;
import com.cpxt.biz.domain.BizCustomerRoute; import com.cpxt.biz.domain.BizCustomerRoute;
import com.cpxt.biz.service.IBizCustomerRouteService; import com.cpxt.biz.service.IBizCustomerRouteService;
import org.springframework.transaction.annotation.Transactional;
/** /**
* 线Service * 线Service
@ -70,6 +71,7 @@ public class BizCustomerRouteServiceImpl implements IBizCustomerRouteService
* @return * @return
*/ */
@Override @Override
@Transactional
public int insertBizCustomerRoute(BizCustomerRoute bizCustomerRoute) public int insertBizCustomerRoute(BizCustomerRoute bizCustomerRoute)
{ {
int insert = bizCustomerRouteMapper.insert(bizCustomerRoute); int insert = bizCustomerRouteMapper.insert(bizCustomerRoute);
@ -92,6 +94,7 @@ public class BizCustomerRouteServiceImpl implements IBizCustomerRouteService
* @return * @return
*/ */
@Override @Override
@Transactional
public int updateBizCustomerRoute(BizCustomerRoute bizCustomerRoute) public int updateBizCustomerRoute(BizCustomerRoute bizCustomerRoute)
{ {
// 修改完路线同步修改到路线和店铺的关联表 // 修改完路线同步修改到路线和店铺的关联表
@ -115,6 +118,7 @@ public class BizCustomerRouteServiceImpl implements IBizCustomerRouteService
* @return * @return
*/ */
@Override @Override
@Transactional
public int deleteBizCustomerRouteByIds(Long[] ids) public int deleteBizCustomerRouteByIds(Long[] ids)
{ {
// 同步删除路线和店铺的关联表 // 同步删除路线和店铺的关联表

View File

@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
import com.cpxt.biz.mapper.BizCustomerMapper; import com.cpxt.biz.mapper.BizCustomerMapper;
import com.cpxt.biz.domain.BizCustomer; import com.cpxt.biz.domain.BizCustomer;
import com.cpxt.biz.service.IBizCustomerService; import com.cpxt.biz.service.IBizCustomerService;
import org.springframework.transaction.annotation.Transactional;
/** /**
* Service * Service
@ -100,6 +101,7 @@ public class BizCustomerServiceImpl implements IBizCustomerService
* @return * @return
*/ */
@Override @Override
@Transactional
public int insertBizCustomer(BizCustomer bizCustomer) public int insertBizCustomer(BizCustomer bizCustomer)
{ {
Long parentId = sysDeptMapper.selectDeptIdByDeptName("外部单位"); Long parentId = sysDeptMapper.selectDeptIdByDeptName("外部单位");
@ -152,6 +154,7 @@ public class BizCustomerServiceImpl implements IBizCustomerService
* @return * @return
*/ */
@Override @Override
@Transactional
public int deleteBizCustomerByIds(Long[] ids) public int deleteBizCustomerByIds(Long[] ids)
{ {
// 删除客户对应的用户 // 删除客户对应的用户

View File

@ -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<BizDriverClock> selectBizDriverClockList(BizDriverClock bizDriverClock)
{
LambdaQueryWrapper<BizDriverClock> queryWrapper = new LambdaQueryWrapper<>();
return bizDriverClockMapper.selectList(queryWrapper);
}
/**
*
*
* @param bizDriverClock
* @return
*/
@Override
@Transactional
public int insertBizDriverClock(BizDriverClock bizDriverClock)
{
// 新增司机打卡记录时
// 1、同步修改订单表中订单司机是该司机并且状态为待取件和配送中的订单的车牌号为打卡车辆车牌号
LambdaQueryWrapper<BizOrder> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BizOrder::getDriverId,bizDriverClock.getDriverId());
queryWrapper.in(BizOrder::getOrderStatus, Arrays.asList("1","2"));
queryWrapper.eq(BizOrder::getStatus,1);
List<BizOrder> 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);
}
}

View File

@ -18,6 +18,7 @@ import org.springframework.stereotype.Service;
import com.cpxt.biz.mapper.BizDriverMapper; import com.cpxt.biz.mapper.BizDriverMapper;
import com.cpxt.biz.domain.BizDriver; import com.cpxt.biz.domain.BizDriver;
import com.cpxt.biz.service.IBizDriverService; import com.cpxt.biz.service.IBizDriverService;
import org.springframework.transaction.annotation.Transactional;
/** /**
* Service * Service
@ -93,6 +94,7 @@ public class BizDriverServiceImpl implements IBizDriverService
* @return * @return
*/ */
@Override @Override
@Transactional
public int insertBizDriver(BizDriver bizDriver) public int insertBizDriver(BizDriver bizDriver)
{ {
bizDriver.setDeptName(sysDeptMapper.selectDeptById(bizDriver.getDeptId()).getDeptName()); bizDriver.setDeptName(sysDeptMapper.selectDeptById(bizDriver.getDeptId()).getDeptName());
@ -138,6 +140,7 @@ public class BizDriverServiceImpl implements IBizDriverService
* @return * @return
*/ */
@Override @Override
@Transactional
public int deleteBizDriverByIds(Long[] ids) public int deleteBizDriverByIds(Long[] ids)
{ {
// 删除司机对应用户 // 删除司机对应用户

View File

@ -14,6 +14,7 @@ import com.cpxt.biz.domain.vo.BizOrderVo;
import com.cpxt.biz.domain.vo.BizOrderVoCustomer; import com.cpxt.biz.domain.vo.BizOrderVoCustomer;
import com.cpxt.biz.mapper.*; import com.cpxt.biz.mapper.*;
import com.cpxt.common.exception.ServiceException; import com.cpxt.common.exception.ServiceException;
import com.cpxt.common.utils.PositionUtil;
import com.cpxt.common.utils.SecurityUtils; import com.cpxt.common.utils.SecurityUtils;
import com.cpxt.common.utils.StringUtils; import com.cpxt.common.utils.StringUtils;
import org.slf4j.Logger; 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(carId)) bizOrder.setCarNo(bizCarMapper.selectById(carId).getCarNo());
if (ObjectUtil.isNotEmpty(driverId)) bizOrder.setDriverName(bizDriverMapper.selectById(driverId).getName()); if (ObjectUtil.isNotEmpty(driverId)) bizOrder.setDriverName(bizDriverMapper.selectById(driverId).getName());
if (ObjectUtil.isNotEmpty(copilotId)) bizOrder.setCopilotName(bizDriverMapper.selectById(copilotId).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); return bizOrderMapper.insert(bizOrder);
} }
@ -608,7 +615,7 @@ public class BizOrderServiceImpl implements IBizOrderService {
String format = DateUtil.format(new Date(), "yyyyMMdd"); // 20241220 String format = DateUtil.format(new Date(), "yyyyMMdd"); // 20241220
String orderSn; String orderSn;
BizOrder order = bizOrderMapper.selectLastestOrder(); BizOrder order = bizOrderMapper.selectLastestOrder();
if (order == null){ if (order == null || !order.getOrderSn().substring(1, 9).equals(format)){
orderSn = "Y" + format + "1001"; orderSn = "Y" + format + "1001";
}else { }else {
String sn = order.getOrderSn(); String sn = order.getOrderSn();

View File

@ -17,6 +17,7 @@ import com.cpxt.quartz.domain.SysJob;
import com.cpxt.quartz.mapper.SysJobMapper; import com.cpxt.quartz.mapper.SysJobMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/** /**
* Service * Service
@ -65,6 +66,7 @@ public class BizOrderTaskServiceImpl implements IBizOrderTaskService
* @return * @return
*/ */
@Override @Override
@Transactional
public int insertBizOrderTask(BizOrderTask bizOrderTask) public int insertBizOrderTask(BizOrderTask bizOrderTask)
{ {
String uuid = UUID.randomUUID().toString(); String uuid = UUID.randomUUID().toString();
@ -95,6 +97,7 @@ public class BizOrderTaskServiceImpl implements IBizOrderTaskService
* @return * @return
*/ */
@Override @Override
@Transactional
public int updateBizOrderTask(BizOrderTask bizOrderTask) public int updateBizOrderTask(BizOrderTask bizOrderTask)
{ {
// 同步修改订单任务 // 同步修改订单任务
@ -120,6 +123,7 @@ public class BizOrderTaskServiceImpl implements IBizOrderTaskService
* @return * @return
*/ */
@Override @Override
@Transactional
public int deleteBizOrderTaskByIds(Integer[] ids) public int deleteBizOrderTaskByIds(Integer[] ids)
{ {
// 同步删除job表中的任务 // 同步删除job表中的任务