From ba456af1b30483b690cc25057a633ea51e767817 Mon Sep 17 00:00:00 2001 From: chenwei Date: Fri, 19 Jul 2024 18:03:39 +0800 Subject: [PATCH] 修改每日资金汇总逻辑 --- backend/chkpower/src/main/java/com/hotent/chkpower/controller/WDailyFundsController.java | 40 +++++++++++++++++++++++++++++++++++----- backend/chkpower/src/main/java/com/hotent/chkpower/dao/WDailyFundsDao.java | 16 ++++++++++++++-- backend/chkpower/src/main/java/com/hotent/chkpower/dao/WOrgInfoDao.java | 9 +++++++++ backend/chkpower/src/main/java/com/hotent/chkpower/manager/WDailyFundsManager.java | 9 ++++++++- backend/chkpower/src/main/java/com/hotent/chkpower/manager/impl/WAfterScriptManagerImpl.java | 1 - backend/chkpower/src/main/java/com/hotent/chkpower/manager/impl/WDailyFundsManagerImpl.java | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------- backend/chkpower/src/main/java/com/hotent/chkpower/model/WOrgInfo.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ backend/chkpower/src/main/resources/mapper/WDailyFundsMapper.xml | 142 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------- backend/chkpower/src/main/resources/mapper/WOrgInfoMapper.xml | 12 ++++++++++++ 9 files changed, 323 insertions(+), 108 deletions(-) create mode 100644 backend/chkpower/src/main/java/com/hotent/chkpower/dao/WOrgInfoDao.java create mode 100644 backend/chkpower/src/main/java/com/hotent/chkpower/model/WOrgInfo.java create mode 100644 backend/chkpower/src/main/resources/mapper/WOrgInfoMapper.xml diff --git a/backend/chkpower/src/main/java/com/hotent/chkpower/controller/WDailyFundsController.java b/backend/chkpower/src/main/java/com/hotent/chkpower/controller/WDailyFundsController.java index b5edb6a..cfaad64 100644 --- a/backend/chkpower/src/main/java/com/hotent/chkpower/controller/WDailyFundsController.java +++ b/backend/chkpower/src/main/java/com/hotent/chkpower/controller/WDailyFundsController.java @@ -27,6 +27,10 @@ import java.io.OutputStream; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.URLEncoder; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -75,13 +79,19 @@ public class WDailyFundsController extends BaseControllerok().message(msg); } - @PostMapping(value = "/updateInsp") - public CommonResult updateInsp(@RequestBody WDailyFundsInspDto wDailyFundsInspDto) throws Exception { - baseService.updateInsp(wDailyFundsInspDto); - return CommonResult.ok().message("成功"); - } +// @PostMapping(value = "/updateInsp") +// public CommonResult updateInsp(@RequestBody WDailyFundsInspDto wDailyFundsInspDto) throws Exception { +// baseService.updateInsp(wDailyFundsInspDto); +// return CommonResult.ok().message("成功"); +// } + /** + * 批量复核 + * @param wDailyFundsInspDto + * @return + * @throws Exception + */ @PostMapping(value = "/updateInsps") public CommonResult updateInsps(@RequestBody WDailyFundsInspDto wDailyFundsInspDto) throws Exception { baseService.updateInsps(wDailyFundsInspDto.getwDailyFundsList()); @@ -90,6 +100,18 @@ public class WDailyFundsController extends BaseController updateInspsByDate(@RequestBody Map params) throws Exception { + baseService.updateInspsByDate(convertStringToLocalDateTime(params.get("fDate"))); + return CommonResult.ok().message("成功"); + } + + /** * 按日期查询复核列表 * * @param date @@ -307,5 +329,13 @@ public class WDailyFundsController extends BaseController { void insertInitWDailyFunds(@Param("fDate") LocalDateTime fDate); + void updateInitWDailyFundByOrgsDate( + @Param("wCurrentList") List> wCurrentList, + @Param("fDate") LocalDateTime fDate, + @Param("fUpdateBy") String fUpdateBy, + @Param("fUpdateId") String fUpdateId, + @Param("fUpdateTime") LocalDateTime fUpdateTime + ); - Integer selectWDailyFundsCount(@Param("fDate") LocalDateTime fDate); + void updateInitWDailyFundByDate(@Param("fDate") LocalDateTime fDate); - List selectWDailyFundsNews(@Param("wCurrentList") List> wCurrentList, @Param("fDate") LocalDateTime fDate); + + +// Integer selectWDailyFundsCount(@Param("fDate") LocalDateTime fDate); + + +// List selectWDailyFundsNews(@Param("wCurrentList") List> wCurrentList, @Param("fDate") LocalDateTime fDate); // List> getDailyFundsByDateList(@Param("fOrgType") String fOrgType, @Param("fDate") String fDate); diff --git a/backend/chkpower/src/main/java/com/hotent/chkpower/dao/WOrgInfoDao.java b/backend/chkpower/src/main/java/com/hotent/chkpower/dao/WOrgInfoDao.java new file mode 100644 index 0000000..0d4dc64 --- /dev/null +++ b/backend/chkpower/src/main/java/com/hotent/chkpower/dao/WOrgInfoDao.java @@ -0,0 +1,9 @@ +package com.hotent.chkpower.dao; + +import com.hotent.chkpower.model.WOrgInfo; +import org.apache.ibatis.annotations.Param; + +public interface WOrgInfoDao { + WOrgInfo selectOrgInfoByOrgid(@Param("fOrgId") String fOrgId); + +} diff --git a/backend/chkpower/src/main/java/com/hotent/chkpower/manager/WDailyFundsManager.java b/backend/chkpower/src/main/java/com/hotent/chkpower/manager/WDailyFundsManager.java index ddd5951..58516bd 100644 --- a/backend/chkpower/src/main/java/com/hotent/chkpower/manager/WDailyFundsManager.java +++ b/backend/chkpower/src/main/java/com/hotent/chkpower/manager/WDailyFundsManager.java @@ -35,7 +35,7 @@ public interface WDailyFundsManager extends BaseManager { void editWDailyFunds(List> wCurrentList, LocalDateTime date); - void updateInsp(WDailyFundsInspDto wDailyFundsInspDto); +// void updateInsp(WDailyFundsInspDto wDailyFundsInspDto); List getDailyFundsByDateList(String orgType, String date); @@ -49,4 +49,11 @@ public interface WDailyFundsManager extends BaseManager { void updateInsps( List wDailyFunds); + /** + * 更新知道日期汇总表 + * @param fDate + */ + void updateInspsByDate(LocalDateTime fDate); + + } diff --git a/backend/chkpower/src/main/java/com/hotent/chkpower/manager/impl/WAfterScriptManagerImpl.java b/backend/chkpower/src/main/java/com/hotent/chkpower/manager/impl/WAfterScriptManagerImpl.java index b387308..2e6bcd0 100644 --- a/backend/chkpower/src/main/java/com/hotent/chkpower/manager/impl/WAfterScriptManagerImpl.java +++ b/backend/chkpower/src/main/java/com/hotent/chkpower/manager/impl/WAfterScriptManagerImpl.java @@ -75,7 +75,6 @@ public class WAfterScriptManagerImpl implements WAfterScriptManager { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate date = LocalDate.parse(datePart, formatter); LocalDateTime dateTime = LocalDateTime.of(date, LocalTime.MIDNIGHT); - System.out.println("LocalDateTime with default time: " + dateTime); return dateTime; } } diff --git a/backend/chkpower/src/main/java/com/hotent/chkpower/manager/impl/WDailyFundsManagerImpl.java b/backend/chkpower/src/main/java/com/hotent/chkpower/manager/impl/WDailyFundsManagerImpl.java index 7010b09..c4eb3ad 100644 --- a/backend/chkpower/src/main/java/com/hotent/chkpower/manager/impl/WDailyFundsManagerImpl.java +++ b/backend/chkpower/src/main/java/com/hotent/chkpower/manager/impl/WDailyFundsManagerImpl.java @@ -2,7 +2,10 @@ package com.hotent.chkpower.manager.impl; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.hotent.base.util.BeanUtils; +import com.hotent.base.util.StringUtil; import com.hotent.chkpower.dao.WFinanceDao; +import com.hotent.chkpower.dao.WOrgInfoDao; import com.hotent.chkpower.manager.WCurrentReportManager; import com.hotent.chkpower.manager.WFinanceManager; import com.hotent.chkpower.model.WDailyFunds; @@ -11,15 +14,14 @@ import com.hotent.chkpower.manager.WDailyFundsManager; import com.hotent.base.manager.impl.BaseManagerImpl; import com.hotent.chkpower.model.WFinance; import com.hotent.chkpower.dto.WDailyFundsInspDto; +import com.hotent.chkpower.model.WOrgInfo; import com.hotent.runtime.script.ScriptImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.LocalDateTime; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; +import java.util.*; /** @@ -39,6 +41,8 @@ public class WDailyFundsManagerImpl extends BaseManagerImpl> wCurrentList, LocalDateTime fDate) { - if (wCurrentList == null || wCurrentList.size() == 0) {return;} - //验证 + public void editWDailyFunds(List> wCurrentList, LocalDateTime fDate) { + if (wCurrentList == null || wCurrentList.size() == 0) { + return; + } + //验证 日期是否产生记录 verifyInitWDailyFunds(fDate); - List data = baseMapper.selectWDailyFundsNews(wCurrentList, fDate); - if (data != null && data.size() > 0){ - for (WDailyFunds wDailyFunds : data) { - LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate(); - //昨日余额 - wrapper.set(WDailyFunds::getFYesterdayAccountBalance, wDailyFunds.getFYesterdayAccountBalance()); - //今日余额 - wrapper.set(WDailyFunds::getFTodayAccountBalance, wDailyFunds.getFTodayAccountBalance()); - //余额差额 - wrapper.set(WDailyFunds::getFAccountBalanceDifference, wDailyFunds.getFAccountBalanceDifference()); - //今日净现金流 - wrapper.set(WDailyFunds::getFTodayNetCashFlow, wDailyFunds.getFTodayNetCashFlow()); - //今日被冻结金额 - wrapper.set(WDailyFunds::getFTodayFreezeAmount, wDailyFunds.getFTodayFreezeAmount()); - //今日冻结上限 - wrapper.set(WDailyFunds::getFTodayFreezing, wDailyFunds.getFTodayFreezing()); - - //更新时间 - wrapper.set(WDailyFunds::getFUpdateTime, LocalDateTime.now()); - //更新人 - wrapper.set(WDailyFunds::getFUpdateBy, scriptImpl.getCurrentUserName()); - //更新人id - wrapper.set(WDailyFunds::getFUpdateId, scriptImpl.getCurrentUserId()); - - //复核状态 - wrapper.set(WDailyFunds::getFInspStatusName, "待复核"); - //复核时间 - wrapper.set(WDailyFunds::getFInspTime, null); - //复核备注 - wrapper.set(WDailyFunds::getFInspNotes, null); - //条件 - wrapper.eq(WDailyFunds::getId, wDailyFunds.getId()); - baseMapper.update(null,wrapper); - } - } + //验证 公司是否产生汇总 + verifyInitWDailyFundOrgs(wCurrentList, fDate); + //批量修改 + baseMapper.updateInitWDailyFundByOrgsDate(wCurrentList, fDate,scriptImpl.getCurrentUserName(),scriptImpl.getCurrentUserId(),LocalDateTime.now()); } - @Transactional - @Override - public void updateInsp(WDailyFundsInspDto wDailyFundsInspDto) { - List wDailyFunds = wDailyFundsInspDto.getwDailyFundsList(); - if (wDailyFunds == null || wDailyFunds.size() == 0) {return;} - for (WDailyFunds wDailyFund : wDailyFunds) { - baseMapper.update(null,Wrappers.lambdaUpdate() - .set(WDailyFunds::getFUpdateBy, scriptImpl.getCurrentUserName()) - .set(WDailyFunds::getFUpdateId, scriptImpl.getCurrentUserId()) - .set(WDailyFunds::getFInspStatusName, wDailyFundsInspDto.getfInspStatusName()) - .set(WDailyFunds::getFInspTime, LocalDateTime.now()) - .set(WDailyFunds::getFInspNotes, wDailyFundsInspDto.getfInspNotes()) - .eq(WDailyFunds::getId, wDailyFund.getId()) - ); - - - WFinance wFinance = new WFinance(); - wFinance.setFUpdateBy(scriptImpl.getCurrentUserName()); - wFinance.setFUpdateId(scriptImpl.getCurrentUserId()); - wFinance.setFInspStatusName(wDailyFundsInspDto.getfInspStatusName()); - wFinance.setFInspTime(LocalDateTime.now()); - wFinance.setFInspNotes(wDailyFundsInspDto.getfInspNotes()); - wFinance.setFDate(wDailyFund.getFDate()); - wFinance.setFOrgId(wDailyFund.getFOrgId()); - wFinanceDao.updateInsp(wFinance); - wCurrentReportManager.updateInsp(wDailyFund.getFDate(),wDailyFund.getFOrgId(),wDailyFundsInspDto.getfInspStatusName(),wDailyFundsInspDto.getfInspNotes()); + //验证 公司是否产生汇总 + private void verifyInitWDailyFundOrgs(List> wCurrentList, LocalDateTime fDate) { + for (Map map : wCurrentList) { + if (map.containsKey("F_org_id") && map.get("F_org_id")!=null && StringUtil.isNotEmpty(map.get("F_org_id").toString())) { + WOrgInfo wOrgInfo = wOrgInfoDao.selectOrgInfoByOrgid(map.get("F_org_id").toString()); + if (BeanUtils.isNotEmpty(wOrgInfo)) { + List wDailyFunds = baseMapper.selectList(Wrappers.lambdaQuery().eq(WDailyFunds::getFOrgId, map.get("F_org_id")).eq(WDailyFunds::getFDate, fDate)); + if (wDailyFunds == null || wDailyFunds.size() == 0) { + WDailyFunds wDailyFunds_add = new WDailyFunds(); + wDailyFunds_add.setFDate(fDate); + wDailyFunds_add.setFOrgId(wOrgInfo.getfOrgId()); + wDailyFunds_add.setFOrgName(wOrgInfo.getfOrgName()); + wDailyFunds_add.setFOrgType(wOrgInfo.getfOrgType()); + wDailyFunds_add.setFInspStatusName("待复核"); + wDailyFunds_add.setFCreateBy(scriptImpl.getCurrentUserName()); + wDailyFunds_add.setFCreateId(scriptImpl.getCurrentUserId()); + wDailyFunds_add.setFCreateTime(LocalDateTime.now()); + baseMapper.insert(wDailyFunds_add); + } + } + } } } +// @Transactional +// @Override +// public void updateInsp(WDailyFundsInspDto wDailyFundsInspDto) { +// List wDailyFunds = wDailyFundsInspDto.getwDailyFundsList(); +// if (wDailyFunds == null || wDailyFunds.size() == 0) { +// return; +// } +// for (WDailyFunds wDailyFund : wDailyFunds) { +// baseMapper.update(null, Wrappers.lambdaUpdate() +// .set(WDailyFunds::getFUpdateBy, scriptImpl.getCurrentUserName()) +// .set(WDailyFunds::getFUpdateId, scriptImpl.getCurrentUserId()) +// .set(WDailyFunds::getFInspStatusName, wDailyFundsInspDto.getfInspStatusName()) +// .set(WDailyFunds::getFInspTime, LocalDateTime.now()) +// .set(WDailyFunds::getFInspNotes, wDailyFundsInspDto.getfInspNotes()) +// .eq(WDailyFunds::getId, wDailyFund.getId()) +// ); +// +// +// WFinance wFinance = new WFinance(); +// wFinance.setFUpdateBy(scriptImpl.getCurrentUserName()); +// wFinance.setFUpdateId(scriptImpl.getCurrentUserId()); +// wFinance.setFInspStatusName(wDailyFundsInspDto.getfInspStatusName()); +// wFinance.setFInspTime(LocalDateTime.now()); +// wFinance.setFInspNotes(wDailyFundsInspDto.getfInspNotes()); +// wFinance.setFDate(wDailyFund.getFDate()); +// wFinance.setFOrgId(wDailyFund.getFOrgId()); +// wFinanceDao.updateInsp(wFinance); +// wCurrentReportManager.updateInsp(wDailyFund.getFDate(), wDailyFund.getFOrgId(), wDailyFundsInspDto.getfInspStatusName(), wDailyFundsInspDto.getfInspNotes()); +// } +// } + @Override public List getDailyFundsByDateList(String orgType, String date) { List wDailyFunds = baseMapper.selectList(Wrappers.lambdaQuery() @@ -138,9 +139,11 @@ public class WDailyFundsManagerImpl extends BaseManagerImpllambdaQuery().eq(WDailyFunds::getFDate, fDate)); if (count == null || count == 0) { baseMapper.insertInitWDailyFunds(fDate); } @@ -150,7 +153,7 @@ public class WDailyFundsManagerImpl extends BaseManagerImpl wDailyFunds) { for (WDailyFunds wDailyFund : wDailyFunds) { - baseMapper.update(null,Wrappers.lambdaUpdate() + baseMapper.update(null, Wrappers.lambdaUpdate() .set(WDailyFunds::getFUpdateBy, scriptImpl.getCurrentUserName()) .set(WDailyFunds::getFUpdateId, scriptImpl.getCurrentUserId()) .set(WDailyFunds::getFInspStatusName, wDailyFund.getFInspStatusName()) @@ -168,8 +171,17 @@ public class WDailyFundsManagerImpl extends BaseManagerImpl INSERT into w_daily_funds(ID_,F_date,F_org_id,F_org_name,F_org_type,F_order_no,F_insp_status_name) - SELECT REPLACE(UUID(), '-', '') as ID_,DATE_FORMAT(#{fDate,jdbcType=TIMESTAMP}, '%Y-%m-%d 00:00:00') as F_date,org.ID_ as F_org_id,org.NAME_ as F_org_name,orgParams.VALUE_ as F_org_type,org.ORDER_NO_ as F_order_no,'待复核' as F_insp_status_name + SELECT REPLACE(UUID(), '-', '') as ID_,#{fDate,jdbcType=TIMESTAMP} as F_date,org.ID_ as F_org_id,org.NAME_ as F_org_name,orgParams.VALUE_ as F_org_type,org.ORDER_NO_ as F_order_no,'待复核' as F_insp_status_name FROM uc_org org JOIN uc_org_params orgParams on orgParams.ORG_ID_= org.ID_ WHERE orgParams.VALUE_ !='' and orgParams.VALUE_ IS NOT NULL - - - + + + + UPDATE w_daily_funds funds SET + F_yesterday_account_balance =( + SELECT SUM(c.F_account_balance) + FROM w_current c + WHERE F_date =(SELECT DATE_SUB(funds.F_date, INTERVAL 1 DAY)) + AND c.F_org_id = funds.F_org_id + ), + F_today_account_balance =( + SELECT SUM(c.F_account_balance) + FROM w_current c + WHERE c.F_date =funds.F_date + AND c.F_org_id = funds.F_org_id + ), + F_today_net_cash_flow= ( + SELECT SUM(c.F_total_net_cash_flow) * 10000 + FROM w_finance c + WHERE c.F_date = funds.F_date + AND c.F_org_id = funds.F_org_id + ), + F_today_freeze_amount=( + SELECT SUM(c.F_freeze_amount) + FROM w_current c + WHERE c.F_date = funds.F_date + AND c.F_org_id = funds.F_org_id + ), + F_today_freezing=( + SELECT SUM(c.F_freezing) + FROM w_current c + WHERE c.F_date = funds.F_date + AND c.F_org_id = funds.F_org_id + ), + F_account_balance_difference = (IFNULL(funds.F_today_account_balance,0)- IFNULL(funds.F_yesterday_account_balance,0)) + WHERE funds.F_date = #{fDate,jdbcType=TIMESTAMP} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/chkpower/src/main/resources/mapper/WOrgInfoMapper.xml b/backend/chkpower/src/main/resources/mapper/WOrgInfoMapper.xml new file mode 100644 index 0000000..4b5c8d7 --- /dev/null +++ b/backend/chkpower/src/main/resources/mapper/WOrgInfoMapper.xml @@ -0,0 +1,12 @@ + + + + + + -- libgit2 0.21.2