本文主要是介绍(笔记)当界面需求较少时直接在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层的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!