diff --git a/src/main/java/com/quinn/common/wx/AccExpendDTO.java b/src/main/java/com/quinn/common/wx/AccExpendDTO.java new file mode 100644 index 0000000..0776c6a --- /dev/null +++ b/src/main/java/com/quinn/common/wx/AccExpendDTO.java @@ -0,0 +1,35 @@ +package com.quinn.common.wx; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author limqsh + * @since 2023-02-07 + */ +@Data +public class AccExpendDTO implements Serializable { + + private Integer expendId; + + @ApiModelProperty(value = "金额") + private Double money; + + private String moneyName; + + private String moneyIcon; + + private Double progress; +} diff --git a/src/main/java/com/quinn/common/wx/DayLine.java b/src/main/java/com/quinn/common/wx/DayLine.java new file mode 100644 index 0000000..d5b643f --- /dev/null +++ b/src/main/java/com/quinn/common/wx/DayLine.java @@ -0,0 +1,12 @@ +package com.quinn.common.wx; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class DayLine implements Serializable { + private String month; + private AccBillType accBillType; + private Double money; +} diff --git a/src/main/java/com/quinn/common/wx/SearchExpend.java b/src/main/java/com/quinn/common/wx/SearchExpend.java new file mode 100644 index 0000000..20a8156 --- /dev/null +++ b/src/main/java/com/quinn/common/wx/SearchExpend.java @@ -0,0 +1,11 @@ +package com.quinn.common.wx; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class SearchExpend implements Serializable { + private Integer expendId; + private String rangeDate; +} diff --git a/src/main/java/com/quinn/controller/wx/WxBillController.java b/src/main/java/com/quinn/controller/wx/WxBillController.java index 972eb05..2973577 100644 --- a/src/main/java/com/quinn/controller/wx/WxBillController.java +++ b/src/main/java/com/quinn/controller/wx/WxBillController.java @@ -1,10 +1,7 @@ package com.quinn.controller.wx; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.quinn.common.wx.AccBillDTO; -import com.quinn.common.wx.AccBillType; -import com.quinn.common.wx.BillMonthDTO; -import com.quinn.common.wx.ListBillByAccount; +import com.quinn.common.wx.*; import com.quinn.dto.res.ResponseDTO; import com.quinn.pojo.AccBill; import com.quinn.pojo.AccSetting; @@ -53,6 +50,43 @@ public class WxBillController extends BaseWxController{ return ResponseDTO.ok().setData(accBills); } + @PostMapping("user/bills/group/detail") + public ResponseDTO groupDetail(HttpServletRequest request, SearchExpend searchExpend){ + Map result = new HashMap(); + List accBills = accBillService.groupDetailList(getLoginUserId(request),searchExpend.getExpendId(),searchExpend.getRangeDate()); + double sumMoney = 0; + for (AccBillDTO accBill : accBills) { + sumMoney = sumMoney + accBill.getMoney(); + } + result.put("sumMoney",sumMoney); + result.put("billList",accBills); + return ResponseDTO.ok().setData(result); + } + + @PostMapping("user/bills/group/list") + public ResponseDTO groupList(HttpServletRequest request,String rangeDate){ + List accBills = accBillService.groupList(getLoginUserId(request),rangeDate); + return ResponseDTO.ok().setData(accBills); + } + + @PostMapping("user/bills/line/chart") + public ResponseDTO lineChart(HttpServletRequest request,String rangeDate){ + Map result = accBillService.lineChart(getLoginUserId(request),rangeDate); + return ResponseDTO.ok().setData(result); + } + + @PostMapping("user/bills/expend/order") + public ResponseDTO getExpendOrderBills(HttpServletRequest request,String rangeDate){ + List accBills = accBillService.listExpendBillOrder(getLoginUserId(request),rangeDate); + return ResponseDTO.ok().setData(accBills); + } + + @PostMapping("user/bills/income/order") + public ResponseDTO getIncomeOrderBills(HttpServletRequest request,String rangeDate){ + List accBills = accBillService.listIncomeBillOrder(getLoginUserId(request),rangeDate); + return ResponseDTO.ok().setData(accBills); + } + @PostMapping("user/bills/month") public ResponseDTO getMonthBills(HttpServletRequest request,String rangeDate){ BillMonthDTO billMonthDTO = new BillMonthDTO(); diff --git a/src/main/java/com/quinn/mapper/AccBillMapper.java b/src/main/java/com/quinn/mapper/AccBillMapper.java index c2789bb..067e8f1 100644 --- a/src/main/java/com/quinn/mapper/AccBillMapper.java +++ b/src/main/java/com/quinn/mapper/AccBillMapper.java @@ -1,6 +1,8 @@ package com.quinn.mapper; import com.quinn.common.wx.AccBillDTO; +import com.quinn.common.wx.AccExpendDTO; +import com.quinn.common.wx.DayLine; import com.quinn.pojo.AccBill; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,4 +29,10 @@ public interface AccBillMapper extends BaseMapper { List listIncomeBillOrder(String userId, String startDate, String endDate); List listExpendBillOrder(String userId, String startDate, String endDate); + + List groupDetailList(String userId, Integer expendId, String startDate, String endDate); + + List groupList(String userId, String startDate, String endDate); + + List lineChartDay(String loginUserId, String rangeDate); } diff --git a/src/main/java/com/quinn/mapper/xml/AccBillMapper.xml b/src/main/java/com/quinn/mapper/xml/AccBillMapper.xml index ee08fbe..7a11284 100644 --- a/src/main/java/com/quinn/mapper/xml/AccBillMapper.xml +++ b/src/main/java/com/quinn/mapper/xml/AccBillMapper.xml @@ -74,4 +74,28 @@ from qn_acc_bill a where a.id = #{sid} + + + + + + diff --git a/src/main/java/com/quinn/service/AccBillService.java b/src/main/java/com/quinn/service/AccBillService.java index d72c56e..183c814 100644 --- a/src/main/java/com/quinn/service/AccBillService.java +++ b/src/main/java/com/quinn/service/AccBillService.java @@ -1,11 +1,13 @@ package com.quinn.service; import com.quinn.common.wx.AccBillDTO; +import com.quinn.common.wx.AccExpendDTO; import com.quinn.pojo.AccBill; import com.baomidou.mybatisplus.extension.service.IService; import java.util.Date; import java.util.List; +import java.util.Map; /** *

@@ -22,4 +24,10 @@ public interface AccBillService extends IService { List listIncomeBillOrder(String userId,String rangeDate); List listExpendBillOrder(String userId,String rangeDate); AccBillDTO getAccBill(Integer sid); + + List groupDetailList(String userId, Integer expendId, String rangeDate); + + List groupList(String userId, String rangeDate); + + Map lineChart(String loginUserId, String rangeDate); } diff --git a/src/main/java/com/quinn/service/impl/AccBillServiceImpl.java b/src/main/java/com/quinn/service/impl/AccBillServiceImpl.java index 9725cf6..781bf86 100644 --- a/src/main/java/com/quinn/service/impl/AccBillServiceImpl.java +++ b/src/main/java/com/quinn/service/impl/AccBillServiceImpl.java @@ -1,16 +1,19 @@ package com.quinn.service.impl; -import com.quinn.common.wx.AccBillDTO; +import com.quinn.common.wx.*; import com.quinn.pojo.AccBill; import com.quinn.mapper.AccBillMapper; import com.quinn.service.AccBillService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.quinn.utils.QuinnUtils; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** *

@@ -63,4 +66,48 @@ public class AccBillServiceImpl extends ServiceImpl impl public AccBillDTO getAccBill(Integer sid) { return accBillMapper.getAccBill(sid); } + + @Override + public List groupDetailList(String userId, Integer expendId, String rangeDate) { + String startDate = rangeDate + "-01"; + String endDate = rangeDate + "-31"; + return accBillMapper.groupDetailList(userId,expendId,startDate,endDate); + } + + @Override + public List groupList(String userId, String rangeDate) { + String startDate = rangeDate + "-01"; + String endDate = rangeDate + "-31"; + List accExpendDTOS = accBillMapper.groupList(userId, startDate, endDate); + double sumMoney = 0; + for (AccExpendDTO e : accExpendDTOS) { + sumMoney = sumMoney + e.getMoney(); + } + for (AccExpendDTO d : accExpendDTOS) { + double progress = 0; + try{ + progress = d.getMoney() / sumMoney; + progress = Math.floor(progress * 10000) / 100; + }catch (Exception e){ + // do nothing + } + d.setProgress(progress); + } + return accExpendDTOS; + } + + @Override + public Map lineChart(String loginUserId, String rangeDate) { + String startDate = rangeDate + "-01"; + String endDate = rangeDate + "-31"; + List dayLines = accBillMapper.lineChartDay(loginUserId, rangeDate); + if (!CollectionUtils.isEmpty(dayLines)){ + Map expends = dayLines.stream().filter(x -> AccBillType.EXPEND.equals(x.getAccBillType())).collect(Collectors.toMap(DayLine::getMonth, DayLine::getMoney, (k1, k2) -> k1)); + Map incomes = dayLines.stream().filter(x -> AccBillType.INCOME.equals(x.getAccBillType())).collect(Collectors.toMap(DayLine::getMonth, DayLine::getMoney, (k1, k2) -> k1)); + Map transfers = dayLines.stream().filter(x -> AccBillType.TRANSFER.equals(x.getAccBillType())).collect(Collectors.toMap(DayLine::getMonth, DayLine::getMoney, (k1, k2) -> k1)); + Map repayments = dayLines.stream().filter(x -> AccBillType.REPAYMENT.equals(x.getAccBillType())).collect(Collectors.toMap(DayLine::getMonth, DayLine::getMoney, (k1, k2) -> k1)); + } + List eachDay = QuinnUtils.getEachDay(rangeDate); + return null; + } } diff --git a/src/main/java/com/quinn/utils/QuinnUtils.java b/src/main/java/com/quinn/utils/QuinnUtils.java index c54a27c..f991309 100644 --- a/src/main/java/com/quinn/utils/QuinnUtils.java +++ b/src/main/java/com/quinn/utils/QuinnUtils.java @@ -6,10 +6,7 @@ import org.slf4j.LoggerFactory; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.Random; -import java.util.UUID; +import java.util.*; public class QuinnUtils { @@ -19,6 +16,7 @@ public class QuinnUtils { private final static SimpleDateFormat sdfm = new SimpleDateFormat( "yyyyMMddHHmmss"); private final static SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMdd"); private final static SimpleDateFormat sdfv = new SimpleDateFormat( "yyyy-MM-dd"); + private final static SimpleDateFormat sdfMonth = new SimpleDateFormat( "yyyy-MM"); public static String getUuid(){ return UUID.randomUUID().toString().replaceAll("-",""); @@ -40,6 +38,61 @@ public class QuinnUtils { return sdfv.format(date); } + public static List getLatestMonth(String rangeDate){ + List result = new ArrayList<>(); + for (int i=0 ; i < 6; i++){ + Date date = new Date(); + try { + date = sdfMonth.parse(rangeDate); + } catch (ParseException e) { + // + } + date.setMonth(date.getMonth() + i - 5 ); + result.add(sdfMonth.format(date)); + } + return result; + } + + public static List getEachDay(String rangeDate){ + List result = new ArrayList<>(); + String mothText = rangeDate.substring(5); + String yearText = rangeDate.substring(0,4); + int month = Integer.parseInt(mothText); + int year = Integer.parseInt(yearText); + boolean isRunN = false; + if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){ + isRunN = true; + } + if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { + for (int i = 1; i <= 31; i++){ + if (i < 10){ + result.add(rangeDate + "-0" + i); + }else { + result.add(rangeDate + "-" + i); + } + } + } + if (month == 4 || month == 6 || month == 9 || month == 11){ + for (int i = 1; i <= 30; i++){ + if (i < 10){ + result.add(rangeDate + "-0" + i); + }else { + result.add(rangeDate + "-" + i); + } + } + } + if (month == 2){ + for (int i = 1; i <= (isRunN ? 29 : 28); i++){ + if (i < 10){ + result.add(rangeDate + "-0" + i); + }else { + result.add(rangeDate + "-" + i); + } + } + } + return result; + } + public static String getCode(){ int length = 6; //随机数