(笔记)当界面需求较少时直接在DTO类中写逻辑,省去service层

2024-06-04 08:36

本文主要是介绍(笔记)当界面需求较少时直接在DTO类中写逻辑,省去service层,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 需求:开发月度报表、总报表、折线图

像这种,就简单加三个查询,我个人认为可以直接省去service层代码,只使用controller层和mapper层即可。虽说三层架构的初衷也是为了解耦,但是这种只有查询的代码完全可以省去中间两个文件。

/*** @Description 采购组织、负责人查询实体类* @Author jink* @Date 2024/5/9 16:31*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class OrgDTO {//采购部门private String departname;//接受到前端的时间数组private String[] time;//起始时间private String begin;//结束时间private String end;//负责人private String user;//1:月份查询 0:其他private Short flag;

以上是基础的字段,现在需求,根据报表的结构分为三种不同的情况:

1:月度表,默认查询近一年的数据,如果有查询条件则按照查询条件,以月份维度进行查询

2:总表,按照月为单位查询,查起始月份1号至终点月份31号

3:折线图,默认查询近十二个月,以日期维度进行查询

由于我是全栈,所以前后端都是我做(╯︿╰),为了省力气,我直接用的同一个时间范围查询器,虽然在前端我已经将回传的格式转换为yyyy-MM格式,但是由于后端的查询逻辑需要的格式都不相同,例如因为月度表由于需要以yyyy.MM格式在前端展示,因此在分组时我就已经将时间format成了yyyy.MM的格式了,因此查询需要yyyy.mm的格式,但是其他两个又不需要这样的操作,因此做了不同的判断。话不多说,直接贴代码,此文章仅作为一种省力气的不规范模式进行编写,不建议参考,但是这又何尝不是工厂模式的体现。

/*** @Description 采购组织、负责人查询实体类* @Author jink* @Date 2024/5/9 16:31*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class OrgDTO {//采购部门private String departname;//接受到前端的时间数组private String[] time;//起始时间private String begin;//结束时间private String end;//负责人private String user;//1:月份查询 0:其他private Short flag;//统一时间查询的格式为:yyyy.MMprivate final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy.MM");public String getBegin() {try {switch (this.flag) {case 0: {if (this.time.length > 0 && this.time[0] != null) {return this.time[0].split("-")[0] + "." + this.time[0].split("-")[1];} else {return LocalDate.now().minusMonths(12).toString().split("-")[0] + "." + LocalDate.now().minusMonths(12).toString().split("-")[1];}}case 1: {if (this.time.length > 0 && this.time[0] != null) {return time[0];} else {return LocalDate.now().minusMonths(12).toString().split("-")[0] + "." + LocalDate.now().minusMonths(12).toString().split("-")[1] + ".01";}}case 2: {if (this.time.length > 0 && this.time[0] != null) {return time[0];}}}return begin;} catch (Exception e) {return begin;}}public String getEnd() {try {switch (this.flag) {case 0: {if (this.time.length > 0 && this.time[1] != null) {return this.time[1].split("-")[0] + "." + this.time[1].split("-")[1];} else {return LocalDate.now().toString().split("-")[0] + "." + LocalDate.now().toString().split("-")[1];}}case 1: {if (this.time.length > 0 && this.time[1] != null) {return time[1];} else {return LocalDate.now().toString().split("-")[0] + "." + LocalDate.now().toString().split("-")[1] + ".31";}}case 2: {if (this.time.length > 0 && this.time[1] != null) {return time[1];}}}return end;} catch (Exception e) {return end;}}
}

这篇关于(笔记)当界面需求较少时直接在DTO类中写逻辑,省去service层的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1029581

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象