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/controller/OrderController.java
@@ -327,8 +327,8 @@ order.setServerName(masterWorker.getRealName()); order.setServerPhone(masterWorker.getPhone()); order.setAcceptTime(new Date()); // 待上门 order.setState(Constants.ONE); // 待上门 2.0 改为待预约 order.setState(7); } else { // 待派单状态 order.setState(Constants.ZERO); ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/large/controller/AnalysisOrderDataController.java
@@ -1,9 +1,24 @@ 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.model.AnalysisOrderData; import com.ruoyi.admin.large.model.query.OrderDataQuery; 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 +32,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> ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/RecoveryServeController.java
@@ -73,7 +73,7 @@ List<RecoveryClassify> serveList = recoveryClassifyService.lambdaQuery() .eq(RecoveryClassify::getIsDelete, 0) .eq(RecoveryClassify::getSupClassify, serveType) .orderByDesc(RecoveryClassify::getSort) .orderByAsc(RecoveryClassify::getSort) .orderByDesc(RecoveryClassify::getCreateTime).list(); List<UserServeTypeVO> list = new ArrayList<>(); for (RecoveryClassify classify : serveList) {