This commit is contained in:
Lx 2025-09-25 15:56:35 +08:00
parent 174eff8028
commit f4bbc51fdd
10 changed files with 115 additions and 43 deletions

View File

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.rescue.core.controller.BaseController;
import cn.iocoder.yudao.module.rescue.core.page.TableDataInfo; import cn.iocoder.yudao.module.rescue.core.page.TableDataInfo;
import cn.iocoder.yudao.module.rescue.domain.*; import cn.iocoder.yudao.module.rescue.domain.*;
import cn.iocoder.yudao.module.rescue.service.*; import cn.iocoder.yudao.module.rescue.service.*;
import cn.iocoder.yudao.module.rescue.vo.SetMoneyVO;
import cn.iocoder.yudao.util.RedisCache; import cn.iocoder.yudao.util.RedisCache;
import cn.iocoder.yudao.module.rescue.core.text.HttpStatus; import cn.iocoder.yudao.module.rescue.core.text.HttpStatus;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
@ -173,15 +174,8 @@ public class RescueDriverController extends BaseController {
//设置应收金额 //设置应收金额
@PostMapping("/setOrderMoneyNew") @PostMapping("/setOrderMoneyNew")
public CommonResult setOrderMoneyNew(@RequestParam("rescueId") String rescueId, public CommonResult setOrderMoneyNew(@RequestBody SetMoneyVO setMoneyVO) throws Exception {
@RequestParam("setMoney") Double setMoney, rescueDriverInfoService.setOrderMoneyNew(setMoneyVO);
@RequestParam("autoRemark") String autoRemark,
@RequestParam(name = "images" ,required = false) String images,
@RequestParam(name = "remark" ,required = false) String remark,
@RequestParam(name = "payType", required = false) String payType,
@RequestParam(name = "orderSigningPersonId" ,required = false) Long orderSigningPersonId,
@RequestParam(name = "orderSigningPersonName" ,required = false) String orderSigningPersonName) throws Exception {
rescueDriverInfoService.setOrderMoneyNew(Long.parseLong(rescueId), setMoney, remark, autoRemark, images, orderSigningPersonId, orderSigningPersonName, payType);
return success("成功"); return success("成功");
} }

View File

@ -121,6 +121,7 @@ public class RescueCarInfo extends TenantBaseDO {
/** /**
* 司机id * 司机id
*/ */
private String driverId; @TableField(exist = false)
private Long driverId;
} }

View File

@ -422,6 +422,12 @@ public class RescueInfo extends TenantBaseDO
@TableField(exist = false) @TableField(exist = false)
private String confirmPaymentPersonRemark; private String confirmPaymentPersonRemark;
@TableField(exist = false)
private String paymentName;
@TableField(exist = false)
private Date paymentTime;
/** /**
* 调度等级 * 调度等级
*/ */

View File

@ -201,6 +201,7 @@ public class RescueOrderInfo extends TenantBaseDO
/** 其他费用备注 */ /** 其他费用备注 */
private String otherFeeRemark; private String otherFeeRemark;
/** 调度设置的拖车费用 */ /** 调度设置的拖车费用 */
private Long dispatchTowingFee; private Long dispatchTowingFee;

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.rescue.service;
import cn.iocoder.yudao.module.rescue.domain.*; import cn.iocoder.yudao.module.rescue.domain.*;
import cn.iocoder.yudao.module.rescue.vo.SetMoneyVO;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -48,7 +49,7 @@ public interface IRescueDriverInfoService extends IService<RescueDriverInfo>
void uploadDetailByDriver(RescueInfoDetail rescueInfoDetail) throws Exception; void uploadDetailByDriver(RescueInfoDetail rescueInfoDetail) throws Exception;
void uploadDispatchDetailByDriver(RescueInfoDispatchDetail rescueInfoDispatchDetail) throws Exception; void uploadDispatchDetailByDriver(RescueInfoDispatchDetail rescueInfoDispatchDetail) throws Exception;
void setOrderMoney(Long rescueId,Double setMoney) throws Exception; void setOrderMoney(Long rescueId,Double setMoney) throws Exception;
void setOrderMoneyNew(Long rescueId,Double setMoney,String remark,String autoRemark,String images,Long orderSigningPersonId,String orderSigningPersonName,String payType) throws Exception; void setOrderMoneyNew(SetMoneyVO setMoneyVO) throws Exception;
void endRescue(Long rescueId) throws Exception; void endRescue(Long rescueId) throws Exception;
void addRefuelRecord(RescueRefuelRecord rescueRefuelRecord) throws Exception; void addRefuelRecord(RescueRefuelRecord rescueRefuelRecord) throws Exception;
IPage<RescueRefuelRecord> listRefuelRecord(RescueRefuelRecord rescueRefuelRecord, Page<RescueRefuelRecord> page); IPage<RescueRefuelRecord> listRefuelRecord(RescueRefuelRecord rescueRefuelRecord, Page<RescueRefuelRecord> page);

View File

@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.CoordinateUtil; import cn.hutool.core.util.CoordinateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.custom.entity.CarMain; import cn.iocoder.yudao.module.custom.entity.CarMain;
import cn.iocoder.yudao.module.custom.entity.CustomerMain; import cn.iocoder.yudao.module.custom.entity.CustomerMain;
import cn.iocoder.yudao.module.custom.service.CustomerCarService; import cn.iocoder.yudao.module.custom.service.CustomerCarService;
@ -15,6 +16,7 @@ import cn.iocoder.yudao.module.partner.service.IPartnerCustomerInfoService;
import cn.iocoder.yudao.module.rescue.domain.*; import cn.iocoder.yudao.module.rescue.domain.*;
import cn.iocoder.yudao.module.rescue.mapper.RescueDriverInfoMapper; import cn.iocoder.yudao.module.rescue.mapper.RescueDriverInfoMapper;
import cn.iocoder.yudao.module.rescue.utils.RedissonDelayQueue; import cn.iocoder.yudao.module.rescue.utils.RedissonDelayQueue;
import cn.iocoder.yudao.module.rescue.vo.SetMoneyVO;
import cn.iocoder.yudao.module.shop.entity.ShopUserCar; import cn.iocoder.yudao.module.shop.entity.ShopUserCar;
import cn.iocoder.yudao.module.system.api.dict.DictDataApi; import cn.iocoder.yudao.module.system.api.dict.DictDataApi;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
@ -96,6 +98,9 @@ public class RescueDriverInfoServiceImpl extends ServiceImpl<RescueDriverInfoMap
@Resource @Resource
private IRescueDriverCarRelationService rescueDriverCarRelationService; private IRescueDriverCarRelationService rescueDriverCarRelationService;
@Resource
private AdminUserApi userApi;
public static String Redis_Driver_Key = "Rescue:Driver:"; public static String Redis_Driver_Key = "Rescue:Driver:";
public static String Redis_Driver_Position_Key = "DriverPosition:"; public static String Redis_Driver_Position_Key = "DriverPosition:";
public static Map<String, Object> driverInfoMap = new HashMap<>(); public static Map<String, Object> driverInfoMap = new HashMap<>();
@ -136,7 +141,7 @@ public class RescueDriverInfoServiceImpl extends ServiceImpl<RescueDriverInfoMap
//已完成 //已完成
LambdaQueryWrapper<RescueInfo> queryWrapper2 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<RescueInfo> queryWrapper2 = new LambdaQueryWrapper<>();
queryWrapper2.eq(RescueInfo::getDriverId, driverId).and(item -> { queryWrapper2.eq(RescueInfo::getDriverId, driverId).and(item -> {
item.eq(RescueInfo::getRescueStatus, "5").or().eq(RescueInfo::getRescueStatus, "6"); item.eq(RescueInfo::getRescueStatus, "4").or().eq(RescueInfo::getRescueStatus, "5").or().eq(RescueInfo::getRescueStatus, "6");
}); });
long count2 = rescueInfoService.count(queryWrapper2); long count2 = rescueInfoService.count(queryWrapper2);
driverInfo.setWcNum(count2); driverInfo.setWcNum(count2);
@ -754,33 +759,50 @@ public class RescueDriverInfoServiceImpl extends ServiceImpl<RescueDriverInfoMap
} }
@Override @Override
public void setOrderMoneyNew(Long rescueId, Double setMoney, String remark, String autoRemark, String images, Long orderSigningPersonId, String orderSigningPersonName, String payType) throws Exception { public void setOrderMoneyNew(SetMoneyVO setMoneyVO) throws Exception {
Double temp = setMoney * 100; Long userId = SecurityFrameworkUtils.getLoginUserId();
AdminUserRespDTO loginUser = userApi.getUser(userId);
Double temp = setMoneyVO.getSetMoney() * 100;
long setMoneyRes = temp.longValue(); long setMoneyRes = temp.longValue();
LambdaQueryWrapper<RescueOrderInfo> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<RescueOrderInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(RescueOrderInfo::getRescueInfoId, rescueId); queryWrapper.eq(RescueOrderInfo::getRescueInfoId, setMoneyVO.getRescueId());
RescueOrderInfo one = rescueOrderInfoService.getOne(queryWrapper); RescueOrderInfo one = rescueOrderInfoService.getOne(queryWrapper);
if (Integer.parseInt(one.getOrderStatus()) > 1) { if (Integer.parseInt(one.getOrderStatus()) > 1) {
throw new Exception("订单已完结不可更改"); throw new Exception("订单已完结不可更改");
} }
one.setSetMoney(setMoneyRes); one.setSetMoney(setMoneyRes);
if (orderSigningPersonId != null) { if (setMoneyVO.getOrderSigningPersonId() != null) {
one.setOrderSigningPersonId(orderSigningPersonId); one.setOrderSigningPersonId(setMoneyVO.getOrderSigningPersonId());
} }
if (orderSigningPersonName != null) { if (setMoneyVO.getOrderSigningPersonName() != null) {
one.setOrderSigningPersonName(orderSigningPersonName); one.setOrderSigningPersonName(setMoneyVO.getOrderSigningPersonName());
} }
if (payType != null) { if (setMoneyVO.getPayType() != null) {
one.setPayType(payType); one.setPayType(setMoneyVO.getPayType());
} }
one.setPaymentId(userId);
if(loginUser != null){
one.setPaymentName(loginUser.getNickname());
}
one.setPaymentTime(new Date());
one.setOrderStatus("1"); one.setOrderStatus("1");
if(setMoneyVO.getTowingFee() != null){
one.setTowingFee(setMoneyVO.getTowingFee().longValue());
}
if(setMoneyVO.getCraneFee() != null){
one.setCraneFee(setMoneyVO.getCraneFee().longValue());
}
if(setMoneyVO.getOtherFee() != null){
one.setOtherFee(setMoneyVO.getOtherFee().longValue());
}
one.setOtherFeeRemark(setMoneyVO.getOtherFeeRemark());
rescueOrderInfoService.updateById(one); rescueOrderInfoService.updateById(one);
RescueInfoDetail rescueInfoDetail = new RescueInfoDetail(); RescueInfoDetail rescueInfoDetail = new RescueInfoDetail();
rescueInfoDetail.setRescueInfoId(rescueId); rescueInfoDetail.setRescueInfoId(setMoneyVO.getRescueId());
rescueInfoDetail.setTitle("费用核算"); rescueInfoDetail.setTitle("费用核算");
rescueInfoDetail.setAutoRemark("司机核算救援费用为" + setMoney + "元, " + autoRemark); rescueInfoDetail.setAutoRemark("司机核算救援费用为" + setMoneyVO.getSetMoney() + "元, " + setMoneyVO.getAutoRemark());
rescueInfoDetail.setRemark(remark); rescueInfoDetail.setRemark(setMoneyVO.getRemark());
rescueInfoDetail.setImages(images); rescueInfoDetail.setImages(setMoneyVO.getImages());
detailService.save(rescueInfoDetail); detailService.save(rescueInfoDetail);
RescueOrderDetail rescueOrderDetail = new RescueOrderDetail(); RescueOrderDetail rescueOrderDetail = new RescueOrderDetail();
rescueOrderDetail.setRecordTime(new Date()); rescueOrderDetail.setRecordTime(new Date());

View File

@ -1149,11 +1149,11 @@ public class RescueInfoServiceImpl extends ServiceImpl<RescueInfoMapper, RescueI
// 判断是否存在订单rescueOrderInfo信息如果存在需要修改订单状态 // 判断是否存在订单rescueOrderInfo信息如果存在需要修改订单状态
RescueOrderInfo rescueOrderInfo = rescueOrderInfoService.selectRescueOrderInfoByRescueInfoId(id); /*RescueOrderInfo rescueOrderInfo = rescueOrderInfoService.selectRescueOrderInfoByRescueInfoId(id);
if(rescueOrderInfo != null){ if(rescueOrderInfo != null){
rescueOrderInfo.setOrderStatus("5"); rescueOrderInfo.setOrderStatus("5");
rescueOrderInfoService.updateById(rescueOrderInfo); rescueOrderInfoService.updateById(rescueOrderInfo);
} }*/
// 流程中增加撤销信息 // 流程中增加撤销信息
detailService.save(rescueInfoDetail); detailService.save(rescueInfoDetail);

View File

@ -0,0 +1,44 @@
package cn.iocoder.yudao.module.rescue.vo;
import lombok.Data;
import org.springframework.web.bind.annotation.RequestParam;
@Data
public class SetMoneyVO {
/** 救援工单id */
private Long rescueId;
/** 司机设置的金额 */
private Double setMoney;
/** 流程中的备注 */
private String remark;
/** 流程中的备注 */
private String autoRemark;
/** 流程中的图片 */
private String images;
/** 支付方式 */
private String payType;
/** 挂账负责人id */
private Long orderSigningPersonId;
/** 挂账负责人姓名 */
private String orderSigningPersonName;
/** 司机设置的拖车费 */
private Double towingFee;
/** 司机设置的吊车费 */
private Double craneFee;
/** 司机设置的其他费用 */
private Double otherFee;
/** 司机设置的其他费用备注 */
private String otherFeeRemark;
}

View File

@ -136,7 +136,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and ri.rescue_status = #{map.rescueStatus} and ri.rescue_status = #{map.rescueStatus}
</if> </if>
<if test="map.rescueStatus == '5'.toString()"> <if test="map.rescueStatus == '5'.toString()">
and (ri.rescue_status = '5' or ri.rescue_status = '6') and (ri.rescue_status = '4' or ri.rescue_status = '5' or ri.rescue_status = '6')
</if> </if>
<if test="map.connectionName != null and map.connectionName != ''"> <if test="map.connectionName != null and map.connectionName != ''">
and (ri.connection_name like concat('%', #{map.connectionName}, '%') and (ri.connection_name like concat('%', #{map.connectionName}, '%')

View File

@ -14,9 +14,11 @@
roi.order_signing_charge_id AS orderSigningChargeId, roi.order_signing_charge_id AS orderSigningChargeId,
roi.order_signing_charge_name AS orderSigningChargeName, roi.order_signing_charge_name AS orderSigningChargeName,
roi.validation_real_name AS orderSigningRealName, roi.validation_real_name AS orderSigningRealName,
roi.payment_name AS paymentName,
roi.payment_time AS paymentTime,
roi.order_signing_remark AS orderSigningRemark roi.order_signing_remark AS orderSigningRemark
FROM rescue_info ri FROM rescue_info ri
left join rescue_order_info roi on roi.rescue_info_id = ri.id left join rescue_order_info roi on roi.rescue_info_id = ri.id and roi.deleted = '0'
<where> <where>
1 = 1 1 = 1
and ri.deleted = '0' AND ri.is_revoke = '0' and ri.deleted = '0' AND ri.is_revoke = '0'
@ -93,9 +95,11 @@
roi.order_signing_person_name AS orderSigningPersonName, roi.order_signing_person_name AS orderSigningPersonName,
roi.order_signing_charge_id AS orderSigningChargeId, roi.order_signing_charge_id AS orderSigningChargeId,
roi.order_signing_charge_name AS orderSigningChargeName, roi.order_signing_charge_name AS orderSigningChargeName,
roi.payment_name AS paymentName,
roi.payment_time AS paymentTime,
roi.validation_real_name AS orderSigningRealName roi.validation_real_name AS orderSigningRealName
FROM rescue_info ri FROM rescue_info ri
left join rescue_order_info roi on roi.rescue_info_id = ri.id left join rescue_order_info roi on roi.rescue_info_id = ri.id and roi.deleted = '0'
<where> <where>
1 = 1 1 = 1
and ri.deleted = '0' AND ri.is_revoke = '0' and ri.deleted = '0' AND ri.is_revoke = '0'
@ -784,15 +788,15 @@
or connection_phone = #{connectionPhone} or connection_phone = #{connectionPhone}
</select> </select>
<select id="getRescueStatisticsByAdmin" resultType="java.util.Map"> <select id="getRescueStatisticsByAdmin" resultType="java.util.Map">
SELECT IFNULL(sum(ri.rescue_status = '2' or ri.rescue_status = '3' or ri.rescue_status = '4'), 0) as jyzNum, SELECT IFNULL(sum(ri.rescue_status = '3' or ri.rescue_status = '4'), 0) as jyzNum,
IFNULL(sum(roi.order_status = '1'), 0) as dzfNum, IFNULL(sum(roi.order_status = '1'), 0) as dzfNum,
IFNULL(sum(ri.rescue_status = '6'), 0) as dqcNum, IFNULL(sum(ri.rescue_status = '6'), 0) as dqcNum,
IFNULL(sum(ri.rescue_status <![CDATA[>=]]> '5'), 0) as ywcNum, IFNULL(sum(ri.rescue_status <![CDATA[>=]]> '5'), 0) as ywcNum,
IFNULL(sum(ri.is_wei_xiu = '1'), 0) as zwxNum, IFNULL(sum(ri.is_wei_xiu = '1'), 0) as zwxNum,
IFNULL(count(roi.id), 0) as yjdNum, IFNULL(count(ri.id), 0) as yjdNum,
IFNULL(sum(roi.set_money), 0) as yingskNum, IFNULL(sum(roi.set_money), 0) as yingskNum,
IFNULL(sum(roi.pay_money), 0) as yiskNum, IFNULL(sum(CASE WHEN roi.if_confirm_pay = '1' THEN roi.pay_money ELSE 0 END), 0) as yiskNum,
IFNULL(sum(CASE WHEN roi.order_status = '1' THEN roi.set_money ELSE 0 END), 0) as dskNum IFNULL(sum(CASE WHEN roi.if_confirm_pay = '0' THEN roi.set_money ELSE 0 END), 0) as dskNum
FROM rescue_info ri FROM rescue_info ri
left join rescue_order_info roi on roi.rescue_info_id = ri.id AND roi.deleted = 0 left join rescue_order_info roi on roi.rescue_info_id = ri.id AND roi.deleted = 0
where 1 = 1 AND ri.deleted = 0 AND ri.is_revoke = 0 where 1 = 1 AND ri.deleted = 0 AND ri.is_revoke = 0
@ -803,23 +807,22 @@
</foreach> </foreach>
</if> </if>
<if test="map.startTimeStr!=null and map.startTimeStr!='' "> <if test="map.startTimeStr!=null and map.startTimeStr!='' ">
AND roi.create_time &gt;= #{map.startTimeStr} AND ri.create_time &gt;= #{map.startTimeStr}
</if> </if>
<if test="map.endTimeStr!=null and map.endTimeStr!='' "> <if test="map.endTimeStr!=null and map.endTimeStr!='' ">
AND roi.create_time &lt;= #{map.endTimeStr} AND ri.create_time &lt;= #{map.endTimeStr}
</if> </if>
</select> </select>
<select id="getRescueStatisticsBySecondDispatcher" resultType="java.util.Map"> <select id="getRescueStatisticsBySecondDispatcher" resultType="java.util.Map">
SELECT IFNULL(sum(ri.rescue_status = '2' or ri.rescue_status = '3' or ri.rescue_status = '4'), 0) as jyzNum, SELECT IFNULL(sum(ri.rescue_status = '3' or ri.rescue_status = '4'), 0) as jyzNum,
IFNULL(sum(roi.order_status = '1'), 0) as dzfNum, IFNULL(sum(roi.order_status = '1'), 0) as dzfNum,
IFNULL(sum(ri.rescue_status = '6'), 0) as dqcNum, IFNULL(sum(ri.rescue_status = '6'), 0) as dqcNum,
IFNULL(sum(ri.rescue_status <![CDATA[>=]]> '5'), 0) as ywcNum, IFNULL(sum(ri.rescue_status <![CDATA[>=]]> '5'), 0) as ywcNum,
IFNULL(sum(ri.is_wei_xiu = '1'), 0) as zwxNum, IFNULL(sum(ri.is_wei_xiu = '1'), 0) as zwxNum,
IFNULL(count(roi.id), 0) as yjdNum, IFNULL(count(ri.id), 0) as yjdNum,
IFNULL(sum(roi.set_money), 0) as yingskNum, IFNULL(sum(CASE WHEN roi.if_confirm_pay = '1' THEN roi.pay_money ELSE 0 END), 0) as yiskNum,
IFNULL(sum(roi.pay_money), 0) as yiskNum, IFNULL(sum(CASE WHEN roi.if_confirm_pay = '0' THEN roi.set_money ELSE 0 END), 0) as dskNum
IFNULL(sum(CASE WHEN roi.order_status = '1' THEN roi.set_money ELSE 0 END), 0) as dskNum
FROM rescue_info ri FROM rescue_info ri
left join rescue_order_info roi on roi.rescue_info_id = ri.id AND roi.deleted = 0 left join rescue_order_info roi on roi.rescue_info_id = ri.id AND roi.deleted = 0
where 1 = 1 AND ri.deleted = 0 AND ri.is_revoke = 0 where 1 = 1 AND ri.deleted = 0 AND ri.is_revoke = 0
@ -831,10 +834,10 @@
</foreach> </foreach>
</if> </if>
<if test="map.startTimeStr!=null and map.startTimeStr!='' "> <if test="map.startTimeStr!=null and map.startTimeStr!='' ">
AND roi.create_time &gt;= #{map.startTimeStr} AND ri.create_time &gt;= #{map.startTimeStr}
</if> </if>
<if test="map.endTimeStr!=null and map.endTimeStr!='' "> <if test="map.endTimeStr!=null and map.endTimeStr!='' ">
AND roi.create_time &lt;= #{map.endTimeStr} AND ri.create_time &lt;= #{map.endTimeStr}
</if> </if>
</select> </select>
<delete id="deleteOtherInfo1"> <delete id="deleteOtherInfo1">