xuhy
2025-04-23 3061eb22795185ab14925e1f38f4a4b34f51025f
大屏接口
8个文件已修改
2个文件已添加
312 ■■■■■ 已修改文件
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/controller/AnalysisOrderDataController.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/controller/AnalysisRecycleDataController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/mapper/AnalysisRecycleDataMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/model/AnalysisOrderData.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/model/query/OrderDataQuery.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/model/vo/RecycleLargeVO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/service/AnalysisRecycleDataService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/service/impl/AnalysisRecycleDataServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/AnalysisRecycleDataMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java
@@ -6,6 +6,7 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
@@ -154,4 +155,70 @@
        ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
        return Date.from(zdt.toInstant());
    }
    /**
     * localdatetime转为字符串
     *
     * @param time localdatetime
     * @return 字符串
     */
    public static String localDateTimeToString(LocalDateTime time) {
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        return df.format(time);
    }
    /**
     * Date转为LocalDateTime
     *
     * @param date 日期
     * @return LocalDateTime
     */
    public static LocalDateTime dateToLocalDateTime(Date date) {
        Instant instant = date.toInstant();
        ZoneId zoneId = ZoneId.systemDefault();
        return instant.atZone(zoneId).toLocalDateTime();
    }
    /**
     * localdate转为字符串
     *
     * @param time localdate
     * @return 字符串
     */
    public static String localDateToString(LocalDate time) {
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return df.format(time);
    }
    /**
     * 字符串转为localdate
     *
     * @param time localdate
     * @return 字符串
     */
    public static LocalDate stringToLocalDate(String time) {
        return LocalDate.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
    }
    /**
     * 字符串转为localdate
     *
     * @param time localdate
     * @return 字符串
     */
    public static LocalDateTime stringToLocalDateTime(String time) {
        return LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    }
    /**
     * LocalDateTime转Date
     *
     * @param dateTime 日期
     * @return Date
     */
    public static Date localDateTimeToDate(LocalDateTime dateTime) {
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zdt = dateTime.atZone(zoneId);
        return Date.from(zdt.toInstant());
    }
}
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/controller/AnalysisOrderDataController.java
@@ -1,9 +1,26 @@
package com.ruoyi.admin.large.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.admin.large.base.BasePage;
import com.ruoyi.admin.large.model.AnalysisOrderData;
import com.ruoyi.admin.large.model.query.OrderDataQuery;
import com.ruoyi.admin.large.service.analysisOrderDataService;
import com.ruoyi.admin.large.service.AnalysisOrderDataService;
import com.ruoyi.admin.service.SysUserService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.service.TokenService;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * <p>
@@ -17,6 +34,67 @@
@RestController
@RequestMapping("/analysis-order-data")
public class AnalysisOrderDataController {
    private final AnalysisOrderDataService analysisOrderDataService;
    private final TokenService tokenService;
    private final SysUserService sysUserService;
    @Autowired
    public AnalysisOrderDataController(AnalysisOrderDataService analysisOrderDataService, TokenService tokenService, SysUserService sysUserService) {
        this.analysisOrderDataService = analysisOrderDataService;
        this.tokenService = tokenService;
        this.sysUserService = sysUserService;
    }
    /**
     * 查询上门回收订单列表
     */
    @ApiOperation( value = "查询上门回收订单列表")
    @PostMapping(value = "/pageList")
    public R<Page<AnalysisOrderData>> pageList(@RequestBody OrderDataQuery orderDataQuery) {
        Page<AnalysisOrderData> page = analysisOrderDataService.lambdaQuery()
                .like(StringUtils.isNotBlank(orderDataQuery.getOrderChannel()), AnalysisOrderData::getOrderChannel, orderDataQuery.getOrderChannel())
                .like(StringUtils.isNotBlank(orderDataQuery.getOrderNum()), AnalysisOrderData::getOrderNum, orderDataQuery.getOrderNum())
                .like(StringUtils.isNotBlank(orderDataQuery.getCity()), AnalysisOrderData::getCity, orderDataQuery.getCity())
                .like(StringUtils.isNotBlank(orderDataQuery.getOrderCategory()), AnalysisOrderData::getOrderCategory, orderDataQuery.getOrderCategory())
                .like(StringUtils.isNotBlank(orderDataQuery.getUserName()), AnalysisOrderData::getUserName, orderDataQuery.getUserName())
                .like(StringUtils.isNotBlank(orderDataQuery.getRecyclePerson()), AnalysisOrderData::getRecyclePerson, orderDataQuery.getRecyclePerson())
                .eq(Objects.nonNull(orderDataQuery.getState()), AnalysisOrderData::getState, orderDataQuery.getState())
                .orderByDesc(AnalysisOrderData::getOrderDate)
                .page(Page.of(orderDataQuery.getPageNum(), orderDataQuery.getPageSize()));
        return R.ok(page);
    }
    /**
     * 查询上门回收订单列表
     */
    @ApiOperation( value = "查询上门回收订单列表-大屏")
    @GetMapping(value = "/list")
    public R<List<AnalysisOrderData>> list() {
        String startTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " 00:00:00";
        String endTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " 23:59:59";
        List<AnalysisOrderData> list = analysisOrderDataService.list(Wrappers.lambdaQuery(AnalysisOrderData.class)
                .between(AnalysisOrderData::getOrderDate, startTime, endTime)
                .orderByDesc(AnalysisOrderData::getOrderDate));
        return R.ok(list);
    }
    /**
     * 修改上门回收订单
     */
    @ApiOperation( value = "修改上门回收订单")
    @PostMapping(value = "/update")
    public R<Boolean> update(@RequestBody AnalysisOrderData dto) {
        return R.ok(analysisOrderDataService.updateById(dto));
    }
    /**
     * 删除上门回收订单
     */
    @ApiOperation( value = "删除上门回收订单")
    @DeleteMapping(value = "/deleteById")
    public R<Boolean> deleteById(@RequestParam("id") Integer id) {
        return R.ok(analysisOrderDataService.removeById(id));
    }
}
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/controller/AnalysisRecycleDataController.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.admin.entity.SysUser;
import com.ruoyi.admin.large.model.AnalysisRecycleData;
import com.ruoyi.admin.large.model.vo.RecycleLargeVO;
import com.ruoyi.admin.large.service.AnalysisRecycleDataService;
import com.ruoyi.admin.service.SysUserService;
import com.ruoyi.common.core.domain.R;
@@ -18,6 +19,7 @@
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
@@ -58,6 +60,16 @@
    }
    /**
     * 查询回收数据分析大屏
     */
    @ApiOperation( value = "查询回收数据分析-大屏")
    @GetMapping(value = "/recycleLarge")
    public R<Map<String,Long>> recycleLarge(@RequestParam(value = "analysisType",required = false) Integer analysisType) {
        Map<String,Long> map = analysisRecycleDataService.recycleLarge(analysisType);
        return R.ok(map);
    }
    /**
     * 添加回收数据分析管理
     */
    @ApiOperation( value = "添加回收数据分析")
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/mapper/AnalysisRecycleDataMapper.java
@@ -2,7 +2,12 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.admin.large.model.AnalysisRecycleData;
import com.ruoyi.admin.large.model.vo.RecycleLargeVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
 * <p>
@@ -15,4 +20,19 @@
@Mapper
public interface AnalysisRecycleDataMapper extends BaseMapper<AnalysisRecycleData> {
    /**
     * 查询回收数据
     * @param startTime
     * @param endTime
     * @return
     */
    List<RecycleLargeVO> recycleLargeYear(@Param("startTime") String startTime, @Param("endTime")String endTime);
    /**
     * 查询回收数据
     * @param startTime
     * @param endTime
     * @return
     */
    List<RecycleLargeVO> recycleLargeMonth(@Param("startTime") String startTime, @Param("endTime")String endTime);
}
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/model/AnalysisOrderData.java
@@ -1,5 +1,6 @@
package com.ruoyi.admin.large.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@@ -27,7 +28,7 @@
    private static final long serialVersionUID = 1L;
    @TableId("id")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty(value = "订单渠道")
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/model/query/OrderDataQuery.java
New file
@@ -0,0 +1,32 @@
package com.ruoyi.admin.large.model.query;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.admin.large.base.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "上门回收订单查询query")
public class OrderDataQuery extends BasePage {
    @ApiModelProperty(value = "订单渠道")
    private String orderChannel;
    @ApiModelProperty(value = "订单编号")
    private String orderNum;
    @ApiModelProperty(value = "城市")
    private String city;
    @ApiModelProperty(value = "品类")
    private String orderCategory;
    @ApiModelProperty(value = "用户姓名")
    private String userName;
    @ApiModelProperty(value = "回收员")
    private String recyclePerson;
    @ApiModelProperty(value = "状态")
    private Integer state;
}
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/model/vo/RecycleLargeVO.java
New file
@@ -0,0 +1,18 @@
package com.ruoyi.admin.large.model.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel(value = "回收数据大屏统计年月VO")
public class RecycleLargeVO implements Serializable {
    @ApiModelProperty(value = "年份/月份")
    private Integer timeStr;
    @ApiModelProperty(value = "订单数")
    private Integer orderCount;
}
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/service/AnalysisRecycleDataService.java
@@ -2,6 +2,10 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.admin.large.model.AnalysisRecycleData;
import com.ruoyi.admin.large.model.vo.RecycleLargeVO;
import java.util.List;
import java.util.Map;
/**
 * <p>
@@ -13,4 +17,11 @@
 */
public interface AnalysisRecycleDataService extends IService<AnalysisRecycleData> {
    /**
     * 回收数据分析-大屏
     * @param analysisType
     * @return
     */
    Map<String,Long> recycleLarge(Integer analysisType);
}
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/service/impl/AnalysisRecycleDataServiceImpl.java
@@ -1,10 +1,22 @@
package com.ruoyi.admin.large.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.admin.large.mapper.AnalysisRecycleDataMapper;
import com.ruoyi.admin.large.model.AnalysisRecycleData;
import com.ruoyi.admin.large.model.vo.RecycleLargeVO;
import com.ruoyi.admin.large.service.AnalysisRecycleDataService;
import com.ruoyi.common.core.utils.DateUtils;
import io.swagger.models.auth.In;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
@@ -17,4 +29,53 @@
@Service
public class AnalysisRecycleDataServiceImpl extends ServiceImpl<AnalysisRecycleDataMapper, AnalysisRecycleData> implements AnalysisRecycleDataService {
    @Override
    public Map<String,Long> recycleLarge(Integer analysisType) {
        Map<String,Long> map = new HashMap<>();
        if (analysisType == 1) {
            // 年份
            int year = LocalDateTime.now().getYear();
            long count = this.count(Wrappers.lambdaQuery(AnalysisRecycleData.class).eq(AnalysisRecycleData::getAnalysisValue, year));
            map.put(String.valueOf(year),count);
            year = LocalDateTime.now().minusYears(1).getYear();
            count = this.count(Wrappers.lambdaQuery(AnalysisRecycleData.class).eq(AnalysisRecycleData::getAnalysisValue, year));
            map.put(String.valueOf(year),count);
            year = LocalDateTime.now().minusYears(2).getYear();
            count = this.count(Wrappers.lambdaQuery(AnalysisRecycleData.class).eq(AnalysisRecycleData::getAnalysisValue, year));
            map.put(String.valueOf(year),count);
            year = LocalDateTime.now().minusYears(3).getYear();
            count = this.count(Wrappers.lambdaQuery(AnalysisRecycleData.class).eq(AnalysisRecycleData::getAnalysisValue, year));
            map.put(String.valueOf(year),count);
            year = LocalDateTime.now().minusYears(4).getYear();
            count = this.count(Wrappers.lambdaQuery(AnalysisRecycleData.class).eq(AnalysisRecycleData::getAnalysisValue, year));
            map.put(String.valueOf(year),count);
            year = LocalDateTime.now().minusYears(5).getYear();
            count = this.count(Wrappers.lambdaQuery(AnalysisRecycleData.class).eq(AnalysisRecycleData::getAnalysisValue, year));
            map.put(String.valueOf(year),count);
            return map;
        } else{
            // 月份
            String month = new SimpleDateFormat("yyyy-MM").format(new Date());
            long count = this.count(Wrappers.lambdaQuery(AnalysisRecycleData.class).eq(AnalysisRecycleData::getAnalysisValue, month));
            map.put(month,count);
            month = new SimpleDateFormat("yyyy-MM").format(DateUtils.localDateTimeToDate(LocalDateTime.now().minusMonths(1)));
            count = this.count(Wrappers.lambdaQuery(AnalysisRecycleData.class).eq(AnalysisRecycleData::getAnalysisValue, month));
            map.put(month,count);
            month = new SimpleDateFormat("yyyy-MM").format(DateUtils.localDateTimeToDate(LocalDateTime.now().minusMonths(2)));
            count = this.count(Wrappers.lambdaQuery(AnalysisRecycleData.class).eq(AnalysisRecycleData::getAnalysisValue, month));
            map.put(month,count);
            month = new SimpleDateFormat("yyyy-MM").format(DateUtils.localDateTimeToDate(LocalDateTime.now().minusMonths(3)));
            count = this.count(Wrappers.lambdaQuery(AnalysisRecycleData.class).eq(AnalysisRecycleData::getAnalysisValue, month));
            map.put(month,count);
            month = new SimpleDateFormat("yyyy-MM").format(DateUtils.localDateTimeToDate(LocalDateTime.now().minusMonths(4)));
            count = this.count(Wrappers.lambdaQuery(AnalysisRecycleData.class).eq(AnalysisRecycleData::getAnalysisValue, month));
            map.put(month,count);
            month = new SimpleDateFormat("yyyy-MM").format(DateUtils.localDateTimeToDate(LocalDateTime.now().minusMonths(5)));
            count = this.count(Wrappers.lambdaQuery(AnalysisRecycleData.class).eq(AnalysisRecycleData::getAnalysisValue, month));
            map.put(month,count);
            return map;
        }
    }
}
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/AnalysisRecycleDataMapper.xml
@@ -17,5 +17,11 @@
    <sql id="Base_Column_List">
        id, analysis_value, order_count, analysis_type, create_time, operator_name, update_time
    </sql>
    <select id="recycleLargeYear" resultType="com.ruoyi.admin.large.model.vo.RecycleLargeVO">
    </select>
    <select id="recycleLargeMonth" resultType="com.ruoyi.admin.large.model.vo.RecycleLargeVO">
    </select>
</mapper>