From 8d835431a7a388bb66b17e63b8f1c81f275cc054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A3=E5=9C=A3=E5=8D=8E?= <752718920@qq.com> Date: Fri, 20 Oct 2023 19:36:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E4=B8=80=E6=AD=A5=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=B4=A6=E6=88=B7=E7=BB=9F=E8=AE=A1=E7=9A=84=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsh/erp/controller/AccountController.java | 14 +- .../datasource/mappers/AccountMapperEx.java | 14 +- .../erp/service/account/AccountService.java | 147 ++++-------------- .../resources/mapper_xml/AccountMapperEx.xml | 38 +++++ 4 files changed, 83 insertions(+), 130 deletions(-) diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountController.java index 723ae730..cbc2e759 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountController.java @@ -2,29 +2,22 @@ package com.jsh.erp.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.jsh.erp.constants.BusinessConstants; -import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.Account; import com.jsh.erp.datasource.vo.AccountVo4InOutList; import com.jsh.erp.datasource.vo.AccountVo4List; -import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.service.account.AccountService; import com.jsh.erp.service.systemConfig.SystemConfigService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.ErpInfo; -import com.jsh.erp.utils.StringUtil; -import com.jsh.erp.utils.Tools; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.Description; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -128,12 +121,11 @@ public class AccountController { for (AccountVo4InOutList aEx : dataList) { String type = aEx.getType().replace("其它", ""); aEx.setType(type); - String timeStr = aEx.getOperTime().toString(); - String endTime = timeStr; + String endTime = aEx.getOperTime(); BigDecimal balance = accountService.getAccountSum(accountId, null, endTime, forceFlag) .add(accountService.getAccountSumByHead(accountId, null, endTime, forceFlag)) - .add(accountService.getAccountSumByDetail(accountId, timeStr, "date", forceFlag)) - .add(accountService.getManyAccountSum(accountId, timeStr, "date", forceFlag)).add(initialAmount); + .add(accountService.getAccountSumByDetail(accountId, null, endTime, forceFlag)) + .add(accountService.getManyAccountSum(accountId, null, endTime, forceFlag)).add(initialAmount); aEx.setBalance(balance); aEx.setAccountId(accountId); dataArray.add(aEx); diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/AccountMapperEx.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/AccountMapperEx.java index d6620aa9..fd40594f 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/AccountMapperEx.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/AccountMapperEx.java @@ -1,7 +1,7 @@ package com.jsh.erp.datasource.mappers; import com.jsh.erp.datasource.entities.Account; -import com.jsh.erp.datasource.entities.AccountExample; +import com.jsh.erp.datasource.entities.DepotHead; import com.jsh.erp.datasource.vo.AccountVo4InOutList; import com.jsh.erp.datasource.vo.AccountVo4List; import org.apache.ibatis.annotations.Param; @@ -40,6 +40,18 @@ public interface AccountMapperEx { @Param("endTime") String endTime, @Param("forceFlag") Boolean forceFlag); + BigDecimal getAccountSumByDetail( + @Param("accountId") Long accountId, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("forceFlag") Boolean forceFlag); + + List getManyAccountSum( + @Param("accountId") Long accountId, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("forceFlag") Boolean forceFlag); + List findAccountInOutList( @Param("accountId") Long accountId, @Param("offset") Integer offset, diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/account/AccountService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/account/AccountService.java index ac930c61..c52cfcdd 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/account/AccountService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/account/AccountService.java @@ -16,7 +16,6 @@ import com.jsh.erp.utils.StringUtil; import com.jsh.erp.utils.Tools; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.request.RequestContextHolder; @@ -112,8 +111,8 @@ public class AccountService { DecimalFormat df = new DecimalFormat(".##"); BigDecimal thisMonthAmount = getAccountSum(al.getId(), bTime, eTime, forceFlag) .add(getAccountSumByHead(al.getId(), bTime, eTime, forceFlag)) - .add(getAccountSumByDetail(al.getId(), timeStr, "month", forceFlag)) - .add(getManyAccountSum(al.getId(), timeStr, "month", forceFlag)); + .add(getAccountSumByDetail(al.getId(), bTime, eTime, forceFlag)) + .add(getManyAccountSum(al.getId(), bTime, eTime, forceFlag)); String thisMonthAmountFmt = "0"; if ((thisMonthAmount.compareTo(BigDecimal.ZERO))!=0) { thisMonthAmountFmt = df.format(thisMonthAmount); @@ -121,8 +120,8 @@ public class AccountService { al.setThisMonthAmount(thisMonthAmountFmt); //本月发生额 BigDecimal currentAmount = getAccountSum(al.getId(), null, null, forceFlag) .add(getAccountSumByHead(al.getId(), null, null, forceFlag)) - .add(getAccountSumByDetail(al.getId(), "", "month", forceFlag)) - .add(getManyAccountSum(al.getId(), "", "month", forceFlag)) .add(al.getInitialAmount()) ; + .add(getAccountSumByDetail(al.getId(), null, null, forceFlag)) + .add(getManyAccountSum(al.getId(), null, null, forceFlag)).add(al.getInitialAmount()) ; al.setCurrentAmount(currentAmount); resList.add(al); } @@ -282,7 +281,7 @@ public class AccountService { * 单个账户的金额求和-入库和出库 * @return */ - public BigDecimal getAccountSum(Long accountId, String beginTime, String endTime, Boolean forceFlag) throws Exception{ + public BigDecimal getAccountSum(Long accountId, String beginTime, String endTime, Boolean forceFlag) { return accountMapperEx.getAccountSum(accountId, beginTime, endTime, forceFlag); } @@ -290,129 +289,41 @@ public class AccountService { * 单个账户的金额求和-收入、支出、转账的单据表头的合计 * @return */ - public BigDecimal getAccountSumByHead(Long accountId, String beginTime, String endTime, Boolean forceFlag) throws Exception{ + public BigDecimal getAccountSumByHead(Long accountId, String beginTime, String endTime, Boolean forceFlag) { return accountMapperEx.getAccountSumByHead(accountId, beginTime, endTime, forceFlag); } /** * 单个账户的金额求和-收款、付款、转账、收预付款的单据明细的合计 - * - * @param id * @return */ - public BigDecimal getAccountSumByDetail(Long id, String timeStr, String type, Boolean forceFlag)throws Exception { - BigDecimal accountSum =BigDecimal.ZERO ; - try { - AccountHeadExample example = new AccountHeadExample(); - AccountHeadExample.Criteria criteria = example.createCriteria(); - if (!timeStr.equals("")) { - if (type.equals("month")) { - Date bTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); - Date eTime = StringUtil.getDateByString(Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME, null); - criteria.andBillTimeGreaterThanOrEqualTo(bTime).andBillTimeLessThanOrEqualTo(eTime) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - } else if (type.equals("date")) { - Date mTime = StringUtil.getDateByString(timeStr, null); - criteria.andBillTimeLessThanOrEqualTo(mTime) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - } - } - List dataList=null; - try{ - if(forceFlag) { - criteria.andStatusEqualTo("1"); - } - dataList = accountHeadMapper.selectByExample(example); - }catch(Exception e){ - JshException.readFail(logger, e); - } - if (dataList != null) { - String ids = ""; - for (AccountHead accountHead : dataList) { - ids = ids + accountHead.getId() + ","; - } - if (!ids.equals("")) { - ids = ids.substring(0, ids.length() - 1); - } - AccountItemExample exampleAi = new AccountItemExample(); - if (!ids.equals("")) { - List idList = StringUtil.strToLongList(ids); - exampleAi.createCriteria().andAccountIdEqualTo(id).andHeaderIdIn(idList) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - List dataListOne = accountItemMapper.selectByExample(exampleAi); - if (dataListOne != null) { - for (AccountItem accountItem : dataListOne) { - if(accountItem.getEachAmount()!=null) { - accountSum = accountSum.add(accountItem.getEachAmount()); - } - } - } - } - } - } catch (DataAccessException e) { - logger.error(">>>>>>>>>查找进销存信息异常", e); - } catch (Exception e) { - logger.error(">>>>>>>>>异常信息:", e); - } - return accountSum; + public BigDecimal getAccountSumByDetail(Long accountId, String beginTime, String endTime, Boolean forceFlag) { + return accountMapperEx.getAccountSumByDetail(accountId, beginTime, endTime, forceFlag); } /** * 单个账户的金额求和-多账户的明细合计 - * - * @param id * @return */ - public BigDecimal getManyAccountSum(Long id, String timeStr, String type, Boolean forceFlag)throws Exception { + public BigDecimal getManyAccountSum(Long accountId, String beginTime, String endTime, Boolean forceFlag) { BigDecimal accountSum = BigDecimal.ZERO; - try { - DepotHeadExample example = new DepotHeadExample(); - DepotHeadExample.Criteria criteria = example.createCriteria(); - if (!timeStr.equals("")) { - if (type.equals("month")) { - Date bTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); - Date eTime = StringUtil.getDateByString(Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME, null); - criteria.andAccountIdListLike("%" +id.toString() + "%") - .andOperTimeGreaterThanOrEqualTo(bTime).andOperTimeLessThanOrEqualTo(eTime) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - } else if (type.equals("date")) { - Date mTime = StringUtil.getDateByString(timeStr, null); - criteria.andAccountIdListLike("%" +id.toString() + "%") - .andOperTimeLessThanOrEqualTo(mTime) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - } - } else { - example.createCriteria().andAccountIdListLike("%" +id.toString() + "%") - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - } - List dataList=null; - try{ - if(forceFlag) { - criteria.andStatusEqualTo("1"); - } - dataList = depotHeadMapper.selectByExample(example); - }catch(Exception e){ - JshException.readFail(logger, e); - } - if (dataList != null) { - for (DepotHead depotHead : dataList) { - String accountIdList = depotHead.getAccountIdList(); - String accountMoneyList = depotHead.getAccountMoneyList(); - if(StringUtil.isNotEmpty(accountIdList) && StringUtil.isNotEmpty(accountMoneyList)) { - String[] aList = accountIdList.split(","); - String[] amList = accountMoneyList.split(","); - for (int i = 0; i < aList.length; i++) { - if (aList[i].toString().equals(id.toString())) { - if(amList!=null && amList.length>0) { - accountSum = accountSum.add(new BigDecimal(amList[i])); - } + List dataList = accountMapperEx.getManyAccountSum(accountId, beginTime, endTime, forceFlag); + if (dataList != null) { + for (DepotHead depotHead : dataList) { + String accountIdList = depotHead.getAccountIdList(); + String accountMoneyList = depotHead.getAccountMoneyList(); + if(StringUtil.isNotEmpty(accountIdList) && StringUtil.isNotEmpty(accountMoneyList)) { + String[] aList = accountIdList.split(","); + String[] amList = accountMoneyList.split(","); + for (int i = 0; i < aList.length; i++) { + if (aList[i].equals(accountId.toString())) { + if(amList.length>0) { + accountSum = accountSum.add(new BigDecimal(amList[i])); } } } } } - } catch (DataAccessException e) { - logger.error(">>>>>>>>>查找信息异常", e); } return accountSum; } @@ -496,8 +407,8 @@ public class AccountService { DecimalFormat df = new DecimalFormat(".##"); BigDecimal thisMonthAmount = getAccountSum(al.getId(), bTime, eTime, forceFlag) .add(getAccountSumByHead(al.getId(), bTime, eTime, forceFlag)) - .add(getAccountSumByDetail(al.getId(), timeStr, "month", forceFlag)) - .add(getManyAccountSum(al.getId(), timeStr, "month", forceFlag)); + .add(getAccountSumByDetail(al.getId(), bTime, eTime, forceFlag)) + .add(getManyAccountSum(al.getId(), bTime, eTime, forceFlag)); String thisMonthAmountFmt = "0"; if ((thisMonthAmount.compareTo(BigDecimal.ZERO))!=0) { thisMonthAmountFmt = df.format(thisMonthAmount); @@ -505,8 +416,8 @@ public class AccountService { al.setThisMonthAmount(thisMonthAmountFmt); //本月发生额 BigDecimal currentAmount = getAccountSum(al.getId(), null, null, forceFlag) .add(getAccountSumByHead(al.getId(), null, null, forceFlag)) - .add(getAccountSumByDetail(al.getId(), "", "month", forceFlag)) - .add(getManyAccountSum(al.getId(), "", "month", forceFlag)) .add(al.getInitialAmount()) ; + .add(getAccountSumByDetail(al.getId(), null, null, forceFlag)) + .add(getManyAccountSum(al.getId(), null, null, forceFlag)).add(al.getInitialAmount()) ; al.setCurrentAmount(currentAmount); resList.add(al); } @@ -541,12 +452,12 @@ public class AccountService { for (Account a : list) { BigDecimal monthAmount = getAccountSum(a.getId(), bTime, eTime, forceFlag) .add(getAccountSumByHead(a.getId(), bTime, eTime, forceFlag)) - .add(getAccountSumByDetail(a.getId(), timeStr, "month", forceFlag)) - .add(getManyAccountSum(a.getId(), timeStr, "month", forceFlag)); + .add(getAccountSumByDetail(a.getId(), bTime, eTime, forceFlag)) + .add(getManyAccountSum(a.getId(), bTime, eTime, forceFlag)); BigDecimal currentAmount = getAccountSum(a.getId(), null, null, forceFlag) .add(getAccountSumByHead(a.getId(), null, null, forceFlag)) - .add(getAccountSumByDetail(a.getId(), "", "month", forceFlag)) - .add(getManyAccountSum(a.getId(), "", "month", forceFlag)).add(a.getInitialAmount()); + .add(getAccountSumByDetail(a.getId(), null, null, forceFlag)) + .add(getManyAccountSum(a.getId(), null, null, forceFlag)).add(a.getInitialAmount()); allMonthAmount = allMonthAmount.add(monthAmount); allCurrentAmount = allCurrentAmount.add(currentAmount); } diff --git a/jshERP-boot/src/main/resources/mapper_xml/AccountMapperEx.xml b/jshERP-boot/src/main/resources/mapper_xml/AccountMapperEx.xml index 6b8c4bbc..ff509649 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/AccountMapperEx.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/AccountMapperEx.xml @@ -110,6 +110,44 @@ and ifnull(ah.delete_flag,'0') !='1' + + + +