wlzboy
5 天以前 fe33646ee6e2d1e57f2b51812e94983a0e9efb04
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleMileageStatsController.java
@@ -4,6 +4,8 @@
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -29,6 +31,8 @@
@RestController
@RequestMapping("/system/mileageStats")
public class VehicleMileageStatsController extends BaseController {
    private static final Logger logger = LoggerFactory.getLogger(VehicleMileageStatsController.class);
    
    @Autowired
    private IVehicleMileageStatsService vehicleMileageStatsService;
@@ -103,15 +107,23 @@
    @PostMapping("/calculate")
    public AjaxResult calculate(Long vehicleId, String statDate) {
        try {
            if (statDate == null || statDate.trim().isEmpty()) {
                return error("统计日期不能为空");
            }
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse(statDate);
            sdf.setLenient(false); // 严格解析日期
            Date date = sdf.parse(statDate.trim());
            logger.info("---> 手动计算车辆里程汇总,车辆ID: {}, 日期: {}", vehicleId, date);
            VehicleMileageStats stats = vehicleMileageStatsService.calculateAndSaveMileageStats(vehicleId, date);
            // 修复String到Date转换问题,添加更好的错误处理
            if (stats != null) {
                return success("里程统计计算成功", stats);
                return AjaxResult.success("里程统计计算成功", stats);
            } else {
                return error("该车辆在指定日期无GPS数据");
            }
        } catch (Exception e) {
            logger.error("里程统计计算失败 - 车辆ID: {}, 日期: {}", vehicleId, statDate, e);
            return error("里程统计计算失败:" + e.getMessage());
        }
    }
@@ -124,11 +136,18 @@
    @PostMapping("/batchCalculate")
    public AjaxResult batchCalculate(String statDate) {
        try {
            if (statDate == null || statDate.trim().isEmpty()) {
                return error("统计日期不能为空");
            }
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse(statDate);
            sdf.setLenient(false); // 严格解析日期
            Date date = sdf.parse(statDate.trim());
            int count = vehicleMileageStatsService.batchCalculateMileageStats(date);
            return success("批量里程统计完成,成功统计 " + count + " 辆车");
        } catch (Exception e) {
            logger.error("批量里程统计失败 - 日期: {}", statDate, e);
            return error("批量里程统计失败:" + e.getMessage());
        }
    }