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 a80ca2dc..723ae730 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 @@ -12,6 +12,8 @@ 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; @@ -22,6 +24,7 @@ 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; @@ -126,8 +129,11 @@ public class AccountController { String type = aEx.getType().replace("其它", ""); aEx.setType(type); String timeStr = aEx.getOperTime().toString(); - BigDecimal balance = accountService.getAccountSum(accountId, timeStr, "date", forceFlag).add(accountService.getAccountSumByHead(accountId, timeStr, "date", forceFlag)) - .add(accountService.getAccountSumByDetail(accountId, timeStr, "date", forceFlag)).add(accountService.getManyAccountSum(accountId, timeStr, "date", forceFlag)).add(initialAmount); + String endTime = timeStr; + 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); 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 d6e12f34..d6620aa9 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 @@ -6,6 +6,7 @@ import com.jsh.erp.datasource.vo.AccountVo4InOutList; import com.jsh.erp.datasource.vo.AccountVo4List; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -27,6 +28,18 @@ public interface AccountMapperEx { @Param("serialNo") String serialNo, @Param("remark") String remark); + BigDecimal getAccountSum( + @Param("accountId") Long accountId, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("forceFlag") Boolean forceFlag); + + BigDecimal getAccountSumByHead( + @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, @@ -36,5 +49,4 @@ public interface AccountMapperEx { @Param("accountId") Long accountId); int batchDeleteAccountByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); - } \ No newline at end of file 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 2e555684..ac930c61 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 @@ -104,19 +104,25 @@ public class AccountService { try{ List list = accountMapperEx.selectByConditionAccount(name, serialNo, remark, offset, rows); String timeStr = Tools.getCurrentMonth(); + String bTime = Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME; + String eTime = Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME; Boolean forceFlag = systemConfigService.getForceApprovalFlag(); if (null != list) { for (AccountVo4List al : list) { DecimalFormat df = new DecimalFormat(".##"); - BigDecimal thisMonthAmount = getAccountSum(al.getId(), timeStr, "month", forceFlag).add(getAccountSumByHead(al.getId(), timeStr, "month", forceFlag)) - .add(getAccountSumByDetail(al.getId(), timeStr, "month", forceFlag)).add(getManyAccountSum(al.getId(), timeStr, "month", forceFlag)); + 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)); String thisMonthAmountFmt = "0"; if ((thisMonthAmount.compareTo(BigDecimal.ZERO))!=0) { thisMonthAmountFmt = df.format(thisMonthAmount); } al.setThisMonthAmount(thisMonthAmountFmt); //本月发生额 - BigDecimal currentAmount = getAccountSum(al.getId(), "", "month", forceFlag).add(getAccountSumByHead(al.getId(), "", "month", forceFlag)) - .add(getAccountSumByDetail(al.getId(), "", "month", forceFlag)).add(getManyAccountSum(al.getId(), "", "month", forceFlag)) .add(al.getInitialAmount()) ; + 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()) ; al.setCurrentAmount(currentAmount); resList.add(al); } @@ -274,101 +280,18 @@ public class AccountService { /** * 单个账户的金额求和-入库和出库 - * - * @param id * @return */ - public BigDecimal getAccountSum(Long id, String timeStr, String type, Boolean forceFlag) throws Exception{ - BigDecimal accountSum = BigDecimal.ZERO; - try { - DepotHeadExample example = new DepotHeadExample(); - DepotHeadExample.Criteria criteria = example.createCriteria(); - if (!timeStr.equals("")) { - Date bTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); - Date eTime = StringUtil.getDateByString(Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME, null); - Date mTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); - if (type.equals("month")) { - criteria.andAccountIdEqualTo(id).andPayTypeNotEqualTo("预付款") - .andOperTimeGreaterThanOrEqualTo(bTime).andOperTimeLessThanOrEqualTo(eTime) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - } else if (type.equals("date")) { - criteria.andAccountIdEqualTo(id).andPayTypeNotEqualTo("预付款") - .andOperTimeLessThanOrEqualTo(mTime).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - } - } else { - criteria.andAccountIdEqualTo(id).andPayTypeNotEqualTo("预付款") - .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) { - if(depotHead.getChangeAmount()!=null) { - accountSum = accountSum .add(depotHead.getChangeAmount()) ; - } - } - } - } catch (DataAccessException e) { - logger.error(">>>>>>>>>查找进销存信息异常", e); - } - return accountSum; + public BigDecimal getAccountSum(Long accountId, String beginTime, String endTime, Boolean forceFlag) throws Exception{ + return accountMapperEx.getAccountSum(accountId, beginTime, endTime, forceFlag); } /** * 单个账户的金额求和-收入、支出、转账的单据表头的合计 - * - * @param id * @return */ - public BigDecimal getAccountSumByHead(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("")) { - Date bTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); - Date eTime = StringUtil.getDateByString(Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME, null); - Date mTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); - if (type.equals("month")) { - criteria.andAccountIdEqualTo(id) - .andBillTimeGreaterThanOrEqualTo(bTime).andBillTimeLessThanOrEqualTo(eTime) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - } else if (type.equals("date")) { - criteria.andAccountIdEqualTo(id) - .andBillTimeLessThanOrEqualTo(mTime) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - } - } else { - criteria.andAccountIdEqualTo(id) - .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) { - for (AccountHead accountHead : dataList) { - if(accountHead.getChangeAmount()!=null) { - accountSum = accountSum.add(accountHead.getChangeAmount()); - } - } - } - } catch (DataAccessException e) { - logger.error(">>>>>>>>>查找进销存信息异常", e); - } - return accountSum; + public BigDecimal getAccountSumByHead(Long accountId, String beginTime, String endTime, Boolean forceFlag) throws Exception{ + return accountMapperEx.getAccountSumByHead(accountId, beginTime, endTime, forceFlag); } /** @@ -383,13 +306,13 @@ public class AccountService { AccountHeadExample example = new AccountHeadExample(); AccountHeadExample.Criteria criteria = example.createCriteria(); if (!timeStr.equals("")) { - Date bTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); - Date eTime = StringUtil.getDateByString(Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME, null); - Date mTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); 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); } @@ -446,14 +369,14 @@ public class AccountService { DepotHeadExample example = new DepotHeadExample(); DepotHeadExample.Criteria criteria = example.createCriteria(); if (!timeStr.equals("")) { - Date bTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); - Date eTime = StringUtil.getDateByString(Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME, null); - Date mTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); 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); @@ -476,8 +399,6 @@ public class AccountService { String accountIdList = depotHead.getAccountIdList(); String accountMoneyList = depotHead.getAccountMoneyList(); if(StringUtil.isNotEmpty(accountIdList) && StringUtil.isNotEmpty(accountMoneyList)) { - accountIdList = accountIdList.replace("[", "").replace("]", "").replace("\"", ""); - accountMoneyList = accountMoneyList.replace("[", "").replace("]", "").replace("\"", ""); String[] aList = accountIdList.split(","); String[] amList = accountMoneyList.split(","); for (int i = 0; i < aList.length; i++) { @@ -567,19 +488,25 @@ public class AccountService { try{ List list = accountMapperEx.selectByConditionAccount(name, serialNo, null, offset, rows); String timeStr = Tools.getCurrentMonth(); + String bTime = Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME; + String eTime = Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME; Boolean forceFlag = systemConfigService.getForceApprovalFlag(); if (null != list) { for (AccountVo4List al : list) { DecimalFormat df = new DecimalFormat(".##"); - BigDecimal thisMonthAmount = getAccountSum(al.getId(), timeStr, "month", forceFlag).add(getAccountSumByHead(al.getId(), timeStr, "month", forceFlag)) - .add(getAccountSumByDetail(al.getId(), timeStr, "month", forceFlag)).add(getManyAccountSum(al.getId(), timeStr, "month", forceFlag)); + 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)); String thisMonthAmountFmt = "0"; if ((thisMonthAmount.compareTo(BigDecimal.ZERO))!=0) { thisMonthAmountFmt = df.format(thisMonthAmount); } al.setThisMonthAmount(thisMonthAmountFmt); //本月发生额 - BigDecimal currentAmount = getAccountSum(al.getId(), "", "month", forceFlag).add(getAccountSumByHead(al.getId(), "", "month", forceFlag)) - .add(getAccountSumByDetail(al.getId(), "", "month", forceFlag)).add(getManyAccountSum(al.getId(), "", "month", forceFlag)) .add(al.getInitialAmount()) ; + 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()) ; al.setCurrentAmount(currentAmount); resList.add(al); } @@ -605,15 +532,21 @@ public class AccountService { try { List list = getAccountByParam(name, serialNo); String timeStr = Tools.getCurrentMonth(); + String bTime = Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME; + String eTime = Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME; BigDecimal allMonthAmount = BigDecimal.ZERO; BigDecimal allCurrentAmount = BigDecimal.ZERO; Boolean forceFlag = systemConfigService.getForceApprovalFlag(); if (null != list && null !=timeStr) { for (Account a : list) { - BigDecimal monthAmount = getAccountSum(a.getId(), timeStr, "month", forceFlag).add(getAccountSumByHead(a.getId(), timeStr, "month", forceFlag)) - .add(getAccountSumByDetail(a.getId(), timeStr, "month", forceFlag)).add(getManyAccountSum(a.getId(), timeStr, "month", forceFlag)); - BigDecimal currentAmount = getAccountSum(a.getId(), "", "month", forceFlag).add(getAccountSumByHead(a.getId(), "", "month", forceFlag)) - .add(getAccountSumByDetail(a.getId(), "", "month", forceFlag)).add(getManyAccountSum(a.getId(), "", "month", forceFlag)).add(a.getInitialAmount()); + 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)); + 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()); 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 cb185f98..6b8c4bbc 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/AccountMapperEx.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/AccountMapperEx.xml @@ -74,6 +74,42 @@ and ifnull(delete_flag,'0') !='1' + + + +