From 4fe312a482cdec3103e6a6903b8b911f1a3a4529 Mon Sep 17 00:00:00 2001 From: tianyongbao Date: Thu, 1 Aug 2024 18:54:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=A6=96=E9=A1=B5=E6=97=A5=E5=8E=86?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=96=B0=E5=A2=9E=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StatisticAnalysisController.java | 11 ++ .../invest/domain/vo/AccountCalendarVo.java | 25 ++++ .../mapper/StatisticAnalysisMapper.java | 10 ++ .../service/IStatisticAnalysisService.java | 4 + .../service/impl/StatisticAnalysisImpl.java | 133 ++++++++++++++++++ .../mapper/invest/StatisticAnalysisMapper.xml | 38 ++++- 6 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/domain/vo/AccountCalendarVo.java diff --git a/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/controller/StatisticAnalysisController.java b/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/controller/StatisticAnalysisController.java index 3f0dac0..244c3c7 100644 --- a/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/controller/StatisticAnalysisController.java +++ b/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/controller/StatisticAnalysisController.java @@ -3,6 +3,7 @@ package com.ruoyi.invest.controller; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.invest.domain.dto.AnalysisDto; +import com.ruoyi.invest.domain.vo.AccountCalendarVo; import com.ruoyi.invest.service.IStatisticAnalysisService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -11,6 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; import java.util.Map; /** @@ -25,6 +27,15 @@ public class StatisticAnalysisController extends BaseController { @Autowired private IStatisticAnalysisService iStatisticAnalysisService; + + + @ApiOperation("首页-日历数据信息") + @GetMapping("/getAccountCalendarInfo") + public AjaxResult getAccountCalendarInfo(AnalysisDto analysisDto){ + List list = iStatisticAnalysisService.getAccountCalendarInfo(analysisDto); + return AjaxResult.success(list); + } + @ApiOperation("账户总览-POS机信息") @GetMapping("/getPosAccountsInfo") public Map getPosAccountsInfo(){ diff --git a/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/domain/vo/AccountCalendarVo.java b/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/domain/vo/AccountCalendarVo.java new file mode 100644 index 0000000..f70436f --- /dev/null +++ b/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/domain/vo/AccountCalendarVo.java @@ -0,0 +1,25 @@ +package com.ruoyi.invest.domain.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * 记账账户Vo对象 accounts + * + * @author tianyongbao + * @date 2024-08-01 + */ +@ApiModel("首页日历Vo对象") +@Data +public class AccountCalendarVo +{ + + private String title; + + private int type; + + private String start; + + private String color; + +} diff --git a/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/mapper/StatisticAnalysisMapper.java b/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/mapper/StatisticAnalysisMapper.java index 054612d..1ad31f6 100644 --- a/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/mapper/StatisticAnalysisMapper.java +++ b/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/mapper/StatisticAnalysisMapper.java @@ -3,6 +3,7 @@ package com.ruoyi.invest.mapper; import com.ruoyi.common.datascope.annotation.DataScope; import com.ruoyi.invest.domain.dto.AccountsDealRecordDto; import com.ruoyi.invest.domain.dto.BankCardLendDto; +import com.ruoyi.invest.domain.vo.AccountCalendarVo; import com.ruoyi.invest.domain.vo.AccountsDealRecordVo; import com.ruoyi.invest.domain.vo.BankCardLendVo; import org.apache.ibatis.annotations.Mapper; @@ -38,4 +39,13 @@ public interface StatisticAnalysisMapper { */ @DataScope(businessAlias = "a") public List selectDailyExpensesList(AccountsDealRecordDto accountsDealRecordDto); + + /** + * 查询日常支出 + * + * @param accountsDealRecordDto + * @return 收支集合 + */ + @DataScope(businessAlias = "a") + public List selectDailyExpensesByDate(AccountsDealRecordDto accountsDealRecordDto); } diff --git a/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/service/IStatisticAnalysisService.java b/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/service/IStatisticAnalysisService.java index 093c97e..8584205 100644 --- a/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/service/IStatisticAnalysisService.java +++ b/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/service/IStatisticAnalysisService.java @@ -1,14 +1,18 @@ package com.ruoyi.invest.service; import com.ruoyi.invest.domain.dto.AnalysisDto; +import com.ruoyi.invest.domain.vo.AccountCalendarVo; import com.ruoyi.invest.domain.vo.CreditReportAnalysisVO; +import java.util.List; import java.util.Map; /** * @author 22077662 */ public interface IStatisticAnalysisService { + public List getAccountCalendarInfo(AnalysisDto analysisDto); + public Map getPosAccountsInfo(); public Map getCreditAccountsInfo(); diff --git a/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/service/impl/StatisticAnalysisImpl.java b/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/service/impl/StatisticAnalysisImpl.java index 66614a2..29bdaf8 100644 --- a/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/service/impl/StatisticAnalysisImpl.java +++ b/ruoyi-modules/intc-invest/src/main/java/com/ruoyi/invest/service/impl/StatisticAnalysisImpl.java @@ -2577,4 +2577,137 @@ public class StatisticAnalysisImpl implements IStatisticAnalysisService { return map; } + + + @Override + public List getAccountCalendarInfo (AnalysisDto analysisDto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置日期格式 + List list =new ArrayList<>(); + BankCardLendDto bankCardLendDto=new BankCardLendDto(); + bankCardLendDto.setType("2"); + bankCardLendDto.setStatus("1"); + List bankCardVoList=bankCardLendMapper.selectBankCardLendList(bankCardLendDto); + for (BankCardLendVo bankCard : bankCardVoList) { + String nameCode=bankCard.getName()+"("+ StringUtils.getLastNumberChars(4,bankCard.getCode()+")"); + + String payDateStr = analysisDto.getStartTime().split("-")[0] + "-" +analysisDto.getStartTime().split("-")[1] + "-" + String.format("%02d", bankCard.getPayDate()); + AccountCalendarVo payDate = new AccountCalendarVo(); + payDate.setStart(payDateStr); + payDate.setTitle(nameCode+ "还款日"); + payDate.setType(2); + payDate.setColor("red"); + list.add(payDate); + //周视图,月份不相同,下个月的也加入数据 + if(!analysisDto.getStartTime().split("-")[1].equals(analysisDto.getEndTime().split("-")[1])&&analysisDto.getType().equals("2")){ + String nextPayDateStr = analysisDto.getStartTime().split("-")[0] + "-" +analysisDto.getEndTime().split("-")[1] + "-" + String.format("%02d", bankCard.getPayDate()); + AccountCalendarVo nextPayDate = new AccountCalendarVo(); + nextPayDate.setStart(nextPayDateStr); + nextPayDate.setTitle(nameCode+ "还款日"); + nextPayDate.setType(2); + nextPayDate.setColor("red"); + list.add(nextPayDate); + } + } + CreditCardBillDto creditCardBillDto =new CreditCardBillDto(); + creditCardBillDto.setStartMonth(analysisDto.getStartTime().split("-")[0] + "-" + analysisDto.getStartTime().split("-")[1]); + creditCardBillDto.setEndMonth(analysisDto.getEndTime().split("-")[0] + "-" + analysisDto.getEndTime().split("-")[1]); + List creditCardBillList=creditCardBillMapper.selectCreditCardBillList(creditCardBillDto); + //修改名称加卡号 + for (CreditCardBillVo creditCardBill : creditCardBillList) { + String nameCode=creditCardBill.getBankName()+"("+ StringUtils.getLastNumberChars(4,creditCardBill.getBankCode()+")"); + if(creditCardBill.getBankName()!=null){ + String billDateStr = sdf.format(creditCardBill.getBillDate()); + AccountCalendarVo billDate = new AccountCalendarVo(); + billDate.setStart(billDateStr); + billDate.setTitle(nameCode+ "账单:"+creditCardBill.getBillAmount()); + billDate.setType(1); + billDate.setColor("green"); + list.add(billDate); + } + } + + InstallmentHistoryDetailDto detailDto=new InstallmentHistoryDetailDto(); + detailDto.setStartDate(analysisDto.getStartTime()); + detailDto.setEndDate(analysisDto.getEndTime()); + detailDto.setType("3"); + List detailList=installmentHistoryDetailMapper.selectInstallmentHistoryDetailList(detailDto); + for (InstallmentHistoryDetailVo detail : detailList) { + + if(detail.getBankCardLendName()!=null){ + String billDateStr = sdf.format(detail.getRepaymentDate()); + AccountCalendarVo historyDetail = new AccountCalendarVo(); + historyDetail.setStart(billDateStr); + if(detail.getPostingState().equals("0")){ + historyDetail.setTitle(detail.getBankCardLendName()+ "贷款待还:"+detail.getCurrentAmount()); + historyDetail.setType(3); + historyDetail.setColor("orange"); + } + else { + historyDetail.setTitle(detail.getBankCardLendName()+ "贷款已还:"+detail.getCurrentAmount()); + historyDetail.setType(4); + historyDetail.setColor("blue"); + } + + list.add(historyDetail); + } + } + //日常支出统计 + AccountsDealRecordDto dto=new AccountsDealRecordDto(); + //获取数据 + dto.setEndTime(analysisDto.getEndTime()); + dto.setStartTime(analysisDto.getStartTime()); + List dailyExpensesList=statisticAnalysisMapper.selectDailyExpensesByDate(dto); + list.addAll(dailyExpensesList); + + AccountsDealRecordDto dealDto=new AccountsDealRecordDto(); + //获取数据 + dealDto.setEndTime(analysisDto.getEndTime()); + dealDto.setStartTime(analysisDto.getStartTime()); + dealDto.setType("5"); + dealDto.setDealCategory("2"); + List accountsDealRecordVoList=accountsDealRecordMapper.selectAccountsDealRecordList(dealDto); + //日列表 + List staticsTimeList=new ArrayList<>(); + for (AccountsDealRecordVo vo:accountsDealRecordVoList + ) { + String dayString=sdf.format(vo.getCreateTime()); + + if(!staticsTimeList.contains(dayString)){ + staticsTimeList.add(dayString); + } + } + for (String staticsTime :staticsTimeList + ) { + double investAmount=0; + for (AccountsDealRecordVo vo:accountsDealRecordVoList + ) { + String dayString=sdf.format(vo.getCreateTime()); + + if(staticsTime.equals(dayString)){ + if(vo.getDealType().equals("1")){ + if(vo.getDealCategory().equals("2")){ + investAmount+=vo.getAmount(); + } + + } + if(vo.getDealType().equals("2")){ + if(vo.getDealCategory().equals("2")){ + investAmount-=vo.getAmount(); + } + } + + } + } + AccountCalendarVo billDate = new AccountCalendarVo(); + billDate.setStart(staticsTime); + billDate.setTitle("投资收益:"+investAmount); + billDate.setType(6); + billDate.setColor("purple"); + list.add(billDate); + + } + Collections.sort(list, Comparator.comparing(AccountCalendarVo::getType).reversed()); + + return list; + } } diff --git a/ruoyi-modules/intc-invest/src/main/resources/mapper/invest/StatisticAnalysisMapper.xml b/ruoyi-modules/intc-invest/src/main/resources/mapper/invest/StatisticAnalysisMapper.xml index e2e2dd9..70984d2 100644 --- a/ruoyi-modules/intc-invest/src/main/resources/mapper/invest/StatisticAnalysisMapper.xml +++ b/ruoyi-modules/intc-invest/src/main/resources/mapper/invest/StatisticAnalysisMapper.xml @@ -159,7 +159,8 @@ from accounts_deal_record a - a.deal_category = '1' + a.del_flag='0' + and a.deal_category = '1' and #{endTime}>=to_char(a.create_time, 'yyyy-MM-dd') @@ -175,4 +176,39 @@ a.child_category order by sum(a.amount) desc + + + + + + + + + \ No newline at end of file