@Override
public List<DiffRiskInfoBO> getDiffRiskInfo(String yyyyMMdd) {
String year;
String month;
if (StringUtils.isEmpty(yyyyMMdd)) {
yyyyMMdd = CalendarUtil.curretDate();
}
year = yyyyMMdd.substring(0, yyyyMMdd.length() - 4); //当前年份
month = yyyyMMdd.substring(4, yyyyMMdd.length() - 2); // 当前月份
String lastMonthDay; // 上个月的最后一天 yyyyMMdd
if (Integer.parseInt(month) == 1) { // 一月份则取上一年的最后一天的日期
lastMonthDay = CalendarUtil.getLastDayOfMonth(Integer.parseInt(year) - 1, Integer.parseInt("12"));
year = lastMonthDay.substring(0, yyyyMMdd.length() - 4);
} else {
lastMonthDay = CalendarUtil.getLastDayOfMonth(Integer.parseInt(year), Integer.parseInt(month) - 1);
}
String date = lastMonthDay.substring(0, lastMonthDay.length() - 2);
// 获取过渡科目信息集合
List<ZGDKMDataBO> zgdkmDataBOList = zGdkmDataServiceImpl.selectGdkmDataByDate(year);
// 校验数据
if (CollectionUtils.isEmpty(zgdkmDataBOList) || 12 != zgdkmDataBOList.size()) { // 如果year年的过度科目数据并未初始化、则在接口中调用抽数接口完成数据初始化
processDiffRiskInfo(yyyyMMdd);
zgdkmDataBOList = zGdkmDataServiceImpl.selectGdkmDataByDate(year);
}
// 初始化合计数据
SimpleDateFormat sdfYearMonth = new SimpleDateFormat("yyyyMM");
DiffRiskInfoBO totalDiffRisk = new DiffRiskInfoBO(); // 合计差异风险信息
DiffRiskInfoBO monthDiffRisk = new DiffRiskInfoBO(); // 月均差异风险信息
BigDecimal lastYearPackages = BigDecimal.ZERO; // 用来合计上一年的差异包数
BigDecimal diffPackages = BigDecimal.ZERO; // 用来合计差异包数
BigDecimal totalPackages = BigDecimal.ZERO; // 用来合计差异总包数
BigDecimal packageDiffRate = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP); // 合计包差异率
BigDecimal diffAmount = BigDecimal.ZERO; // 合计差异金额
BigDecimal totalAmount = BigDecimal.ZERO; // 合计差异总金额
BigDecimal amountDiffRate = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP); // 合计差异金额占比
BigDecimal yoyGrowthRate = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP); // 合计同比增长率
BigDecimal chainGrowthRate = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP); // 合计环比增长率
BigDecimal diffDays = BigDecimal.ZERO; // 合计月度差异天数
BigDecimal subsidiaryNum = BigDecimal.ZERO; // 合计差异分公司数
BigDecimal sourcSysNum = BigDecimal.ZERO; // 合计来源系统数
BigDecimal manualVoucherNum = BigDecimal.ZERO; // 合计手工凭证数
BigDecimal totalVoucherNum = BigDecimal.ZERO; // 合计总凭证数
BigDecimal manualVoucherProportion = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP); // 合计手工凭证占比
// 转换过渡科目出参vo,处理数据
List<DiffRiskInfoBO> diffRiskInfoBOList = new ArrayList<>();
if (!CollectionUtils.isEmpty(zgdkmDataBOList)) {
for (ZGDKMDataBO item : zgdkmDataBOList) {
DiffRiskInfoBO diffRiskInfoBO = new DiffRiskInfoBO();
try {
diffRiskInfoBO.setMonths(item.getMonat());
diffRiskInfoBO.setDate(item.getGjanhr() + item.getMonat()); // 设置日期
diffRiskInfoBO.setLastYearPackages(item.getLastYearPackages());
if ((Integer.parseInt(diffRiskInfoBO.getDate()) - Integer.parseInt(date)) <= 0) {
BeanUtils.copyProperties(item, diffRiskInfoBO);
diffRiskInfoBO.setDiffDays(item.getDiffDays()); // 差异天数
diffRiskInfoBO.setTotalDays(CalendarUtil.getMonthDays(sdfYearMonth.parse(item.getGjanhr() + item.getMonat()))); // 设置当月总天数
diffRiskInfoBO.setManualVoucherNum(item.getZsgpz()); // 手工凭证数
diffRiskInfoBO.setTotalVoucherNum(item.getZzpz()); // 总凭证数
diffRiskInfoBO.setSubsidiaryNum(item.getSubCompanyNum()); // 差异子公司数
diffRiskInfoBO.setSourcSysNum(item.getSourceSysNum()); //来源系统数
if (null != item.getPackageDiffRate()) {
diffRiskInfoBO.setPackageDiffRate(item.getPackageDiffRate() + "%"); //包差异率
packageDiffRate = packageDiffRate.add(item.getPackageDiffRate()); //累加包差异率
}
if (null != item.getAmountDiffRate()) {
diffRiskInfoBO.setAmountDiffRate(item.getAmountDiffRate() + "%"); // 金额差异率
amountDiffRate = amountDiffRate.add(item.getAmountDiffRate()); //累加金额差异率
}
if (null != item.getYoyGrowthRate()) {
diffRiskInfoBO.setYoyGrowthRate(item.getYoyGrowthRate() + "%"); // 差异包同比增长率
yoyGrowthRate = yoyGrowthRate.add(item.getYoyGrowthRate()); //累加差异包同比增长率
}
if (null != item.getChainGrowthRate()) {
diffRiskInfoBO.setChainGrowthRate(item.getChainGrowthRate() + "%"); // 差异包环比增长率
chainGrowthRate = chainGrowthRate.add(item.getChainGrowthRate()); // 累加差异包环比增长率
}
if (null != item.getManualVoucherRate()) {
diffRiskInfoBO.setManualVoucherProportion(item.getManualVoucherRate() + "%"); // 手工凭证占比
manualVoucherProportion = manualVoucherProportion.add(item.getManualVoucherRate()); // 累加手工凭证占比
}
}
// 累加统计全年的数据
if (StringUtils.isNotEmpty(item.getLastYearPackages())) {
lastYearPackages = lastYearPackages.add(new BigDecimal(item.getLastYearPackages()));
}
if (StringUtils.isNotEmpty(item.getDiffPackages())) {
diffPackages = diffPackages.add(new BigDecimal(item.getDiffPackages()));
}
if (StringUtils.isNotEmpty(item.getTotalPackages())) {
totalPackages = totalPackages.add(new BigDecimal(item.getTotalPackages()));
}
if (item.getDiffAmount() != null) {
diffAmount = diffAmount.add(item.getDiffAmount());
}
if (item.getTotalAmount() != null) {
totalAmount = totalAmount.add(item.getTotalAmount());
}
if (StringUtils.isNotEmpty(item.getDiffDays())) {
diffDays = diffDays.add(new BigDecimal(item.getDiffDays()));
}
if (StringUtils.isNotEmpty(item.getSubCompanyNum())) {
subsidiaryNum = subsidiaryNum.add(new BigDecimal(item.getSubCompanyNum()));
}
if (StringUtils.isNotEmpty(item.getSourceSysNum())) {
sourcSysNum = sourcSysNum.add(new BigDecimal(item.getSourceSysNum()));
}
if (StringUtils.isNotEmpty(item.getZsgpz())) {
manualVoucherNum = manualVoucherNum.add(new BigDecimal(item.getZsgpz()));
}
if (StringUtils.isNotEmpty(item.getZzpz())) {
totalVoucherNum = totalVoucherNum.add(new BigDecimal(item.getZzpz()));
}
diffRiskInfoBOList.add(diffRiskInfoBO);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
// 按照月份排序
Collections.sort(diffRiskInfoBOList);
// 处理全年合计数据
totalDiffRisk.setMonths("全年合计");
totalDiffRisk.setLastYearPackages(lastYearPackages + "");
totalDiffRisk.setDiffPackages(diffPackages + "");
totalDiffRisk.setTotalPackages(totalPackages + "");
totalDiffRisk.setPackageDiffRate(packageDiffRate + "%");
totalDiffRisk.setDiffAmount(diffAmount);
totalDiffRisk.setTotalAmount(totalAmount);
totalDiffRisk.setAmountDiffRate(amountDiffRate + "%");
totalDiffRisk.setYoyGrowthRate(yoyGrowthRate + "%");
totalDiffRisk.setChainGrowthRate(chainGrowthRate + "%");
totalDiffRisk.setDiffDays(diffDays + "");
totalDiffRisk.setTotalDays(LocalDate.of(Integer.parseInt(year), 1, 1).lengthOfYear() + "");
totalDiffRisk.setSubsidiaryNum(subsidiaryNum + "");
totalDiffRisk.setSourcSysNum(sourcSysNum + "");
totalDiffRisk.setManualVoucherNum(manualVoucherNum + "");
totalDiffRisk.setTotalVoucherNum(totalVoucherNum + "");
totalDiffRisk.setManualVoucherProportion(manualVoucherProportion + "%");
// 处理月均数据
BigDecimal nowMonth = new BigDecimal(lastMonthDay.substring(lastMonthDay.length() - 4, lastMonthDay.length() - 2));
monthDiffRisk.setMonths("月均");
monthDiffRisk.setLastYearPackages(lastYearPackages.divide(new BigDecimal("12"), 0, BigDecimal.ROUND_HALF_UP) + ""); //计算上一年差异包数的月均值、固定全年合计包数除以12
monthDiffRisk.setDiffPackages(diffPackages.divide(nowMonth, 0, BigDecimal.ROUND_HALF_UP) + "");
monthDiffRisk.setTotalPackages(totalPackages.divide(nowMonth, 0, BigDecimal.ROUND_HALF_UP) + "");
monthDiffRisk.setPackageDiffRate(packageDiffRate.divide(nowMonth, 2, BigDecimal.ROUND_HALF_UP) + "%");
monthDiffRisk.setDiffAmount(diffAmount.divide(nowMonth, 2, BigDecimal.ROUND_HALF_UP));
monthDiffRisk.setTotalAmount(totalAmount.divide(nowMonth, 2, BigDecimal.ROUND_HALF_UP));
monthDiffRisk.setAmountDiffRate(amountDiffRate.divide(nowMonth, 2, BigDecimal.ROUND_HALF_UP) + "%");
monthDiffRisk.setYoyGrowthRate(yoyGrowthRate.divide(nowMonth, 2, BigDecimal.ROUND_HALF_UP) + "%");
monthDiffRisk.setChainGrowthRate(chainGrowthRate.divide(nowMonth, 2, BigDecimal.ROUND_HALF_UP) + "%");
monthDiffRisk.setDiffDays(diffDays.divide(nowMonth, 0, BigDecimal.ROUND_HALF_UP) + "");
monthDiffRisk.setTotalDays("30");
monthDiffRisk.setSubsidiaryNum(subsidiaryNum.divide(nowMonth, 0, BigDecimal.ROUND_HALF_UP) + "");
monthDiffRisk.setSourcSysNum(sourcSysNum.divide(nowMonth, 0, BigDecimal.ROUND_HALF_UP) + "");
monthDiffRisk.setManualVoucherNum(manualVoucherNum.divide(nowMonth, 0, BigDecimal.ROUND_HALF_UP) + "");
monthDiffRisk.setTotalVoucherNum(totalVoucherNum.divide(nowMonth, 0, BigDecimal.ROUND_HALF_UP) + "");
monthDiffRisk.setManualVoucherProportion(manualVoucherProportion.divide(nowMonth, 2, BigDecimal.ROUND_HALF_UP) + "%");
// 将全年合计数据和月均数据添加到出参的集合中
diffRiskInfoBOList.add(totalDiffRisk);
diffRiskInfoBOList.add(monthDiffRisk);
return diffRiskInfoBOList;
}
@Override
public void processDiffRiskInfo(String yyyyMMdd) {
// 入参校验
if (StringUtils.isEmpty(yyyyMMdd)) { // 若不传参数、则默认取当前时间(yyyyMMdd)为查询条件
yyyyMMdd = CalendarUtil.curretDate();
}
String year = yyyyMMdd.substring(0, yyyyMMdd.length() - 4);
String month = yyyyMMdd.substring(4, yyyyMMdd.length() - 2);
String lastMonthDay; // 上个月的最后一天 yyyyMMdd
if (Integer.parseInt(month) == 1) { // 一月份则取上一年的最后一天
lastMonthDay = CalendarUtil.getLastDayOfMonth(Integer.parseInt(year) - 1, Integer.parseInt("12"));
year = lastMonthDay.substring(0, lastMonthDay.length() - 4);
} else {
lastMonthDay = CalendarUtil.getLastDayOfMonth(Integer.parseInt(year), Integer.parseInt(month) - 1);
}
// 1.校验数据是否完成初始化
int count = zGdkmDataServiceImpl.selectGdkmDataCount(year);
if (count != 12) { //若未完成初始化,需要先初始化数据
// 删除表中year的数据
ZGDKMDataBO zgdkmData = new ZGDKMDataBO();
zgdkmData.setGjanhr(year);
zGdkmDataServiceImpl.deleteGdkmData(zgdkmData);
// 获取上一年的差异包数信息
Map<String, List<String>> map = CommConst.GDKM_DATA_MAP;
List<String> diffPackagesDataList = map.get(Integer.parseInt(year) - 1 + "");
List<ZGDKMDataBO> zgdkmDataBOList = new ArrayList<>();
int i = 1;
for (String s : diffPackagesDataList) {
ZGDKMDataBO zgdkmDataBO = new ZGDKMDataBO();
zgdkmDataBO.setLastYearPackages(s);
zgdkmDataBO.setGjanhr(year);
zgdkmDataBO.setMonat(String.format("%02d", i));
zgdkmDataBOList.add(zgdkmDataBO);
i++;
}
zGdkmDataServiceImpl.insertGdkmData(zgdkmDataBOList);
}
// 2.获取数据(sap数据、过渡科目差异数据)
List<DiffRiskInfoBO> diffRiskInfoBOList = new ArrayList<>();
List<DiffRiskInfoBO> diffList = new ArrayList<>();
// 封装调用SAP接口的入参
GDKMReqVO reqVO = new GDKMReqVO();
reqVO.setDate(lastMonthDay);
reqVO.setType(CommConst.GDKM_QUERY_TYPE);
// 调用SAP接口
GDKMDataInfoVO gdkmData = sapSserviceImpl.getGDKMData(reqVO);
if (CommConst.GDKM_STATE_FALSE.equals(gdkmData.getState())) { //若调用失败
// todo 缺少处理失败调用的逻辑
log.info("调用sap接口获取过渡科目数据失败!");
}
// 获取SAP接口返回数据
List<GDKMInfoVO> gdkmInfoList = gdkmData.getGdkmInfoList(); //过渡科目数据信息集合
System.out.println("=======" + gdkmInfoList + "=======");
// 获取差异风险数据集合
ConditionVo data = new ConditionVo();
String reqYear = lastMonthDay.substring(0, lastMonthDay.length() - 4);
data.setBldat(reqYear);
data.setBudat(lastMonthDay);
diffRiskInfoBOList = diffMapper.getDiffRiskInfo(data);
diffList = diffMapper.getDiffBOInfo(data);
for (int i = 0; i < diffRiskInfoBOList.size(); i++) {
for (int j = 0; j < diffList.size(); j++) {
String BOOKDATE = diffRiskInfoBOList.get(i).getDate();
String MINTIME = diffList.get(j).getDate();
if(BOOKDATE.equals(MINTIME)){
diffRiskInfoBOList.get(i).setDiffDays(diffList.get(j).getDiffDays());
diffRiskInfoBOList.get(i).setSourcSysNum(diffList.get(j).getSourcSysNum());
diffRiskInfoBOList.get(i).setSubsidiaryNum(diffList.get(j).getSubsidiaryNum());
}
}
}
// 校验差异风险数据是否12个月的信息都存在、若不存在则补全
checkMonths(diffRiskInfoBOList, data.getBudat().substring(0, data.getBudat().length() - 4));
// 3.处理落库数据
List<ZGDKMDataBO> zgdkmDataBOList = new ArrayList<>();
// 按照月份排序
Collections.sort(diffRiskInfoBOList);
String lastMonthPackages = null; //上个月的差异包数
// 设置每月的总天数、总包数、总金额、手工凭证数、凭证总数以上一年的差异包数
try {
for (DiffRiskInfoBO item : diffRiskInfoBOList) {
ZGDKMDataBO zgdkmDataBO = new ZGDKMDataBO();
String mon = item.getDate().substring(item.getDate().length() - 2, item.getDate().length());
// 封装BO
zgdkmDataBO.setGjanhr(year); //年份
zgdkmDataBO.setMonat(mon); //月份
zgdkmDataBO.setLastYearPackages(getPackeageNumByYearAndMonth(mon, Integer.parseInt(year) - 1 + "")); //上一年同月差异包数
zgdkmDataBO.setLastMonthPackages(lastMonthPackages); // 上一个月差异包数
if ("01".equals(mon)) { //一月份的需要用上一年最后一个月的数据
zgdkmDataBO.setLastMonthPackages(getPackeageNumByYearAndMonth("12", Integer.parseInt(year) - 1 + "")); // 一个月差异包数
}
processGdkmDataBO(zgdkmDataBO, item, gdkmInfoList, mon, year); //处理数据,并set差异总金额、总包数、手工凭证数、凭证数,
lastMonthPackages = zgdkmDataBO.getDiffPackages(); //因已经按照月份排序,记录本月的差异包数用来给下个月的lastMonthPackages赋值
// 计算包差异率、同比增长率、环比增长率、差异金额占比、手工凭证占比
if (StringUtils.isNotEmpty(zgdkmDataBO.getDiffPackages()) && StringUtils.isNotEmpty(zgdkmDataBO.getTotalPackages()) && !"0".equals(zgdkmDataBO.getTotalPackages())) { // 计算包差异率
zgdkmDataBO.setPackageDiffRate(DataUtils.perToDecimal(DataUtils.division(Integer.parseInt(zgdkmDataBO.getDiffPackages()), Integer.parseInt(zgdkmDataBO.getTotalPackages())))); // 包差异率
}
if (StringUtils.isNotEmpty(zgdkmDataBO.getDiffPackages()) && StringUtils.isNotEmpty(zgdkmDataBO.getLastYearPackages()) && !"0".equals(zgdkmDataBO.getLastYearPackages())) { // 计算同比增长率
zgdkmDataBO.setYoyGrowthRate(DataUtils.perToDecimal(DataUtils.division((Integer.parseInt(zgdkmDataBO.getDiffPackages()) - Integer.parseInt(zgdkmDataBO.getLastYearPackages())), Integer.parseInt(zgdkmDataBO.getLastYearPackages())))); //同比增长率
}
if (StringUtils.isNotEmpty(zgdkmDataBO.getDiffPackages()) && StringUtils.isNotEmpty(zgdkmDataBO.getLastMonthPackages()) && !"0".equals(zgdkmDataBO.getLastMonthPackages())) { // 计算环比增长率
zgdkmDataBO.setChainGrowthRate(DataUtils.perToDecimal(DataUtils.division((Integer.parseInt(zgdkmDataBO.getDiffPackages()) - Integer.parseInt(zgdkmDataBO.getLastMonthPackages())), Integer.parseInt(zgdkmDataBO.getLastMonthPackages())))); //环比增长率
}
if (zgdkmDataBO.getDiffAmount() != null && zgdkmDataBO.getTotalAmount() != null && 0 != BigDecimal.ZERO.compareTo(zgdkmDataBO.getTotalAmount())) { // 计算差异金额占比
zgdkmDataBO.setAmountDiffRate(zgdkmDataBO.getDiffAmount().multiply(new BigDecimal(100)).divide(zgdkmDataBO.getTotalAmount(), 2, BigDecimal.ROUND_HALF_UP)); // 差异金额占比
}
if (StringUtils.isNotEmpty(zgdkmDataBO.getZsgpz()) && StringUtils.isNotEmpty(zgdkmDataBO.getZzpz()) && !"0".equals(zgdkmDataBO.getZzpz())) { // 计算手工凭证占比
zgdkmDataBO.setManualVoucherRate(DataUtils.perToDecimal(DataUtils.division(Integer.parseInt(zgdkmDataBO.getZsgpz()), Integer.parseInt(zgdkmDataBO.getZzpz())))); // 手工凭证占比
}
zgdkmDataBOList.add(zgdkmDataBO);
}
// 4. 落库ZGDKMDATA
zGdkmDataServiceImpl.updateGdkmData(zgdkmDataBOList);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param diffRiskInfoBOList
* @describe 校验是否12个月的信息都存在、若不存在则补全
*/
private void checkMonths(List<DiffRiskInfoBO> diffRiskInfoBOList, String year) {
List<String> monthlist = Stream.of("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12").collect(Collectors.toList());
// 获取截取date(yyyyMM)日期字段 月份值的集合
List<String> dateList = diffRiskInfoBOList.stream().map(e -> e.getDate().substring(e.getDate().length() - 2, e.getDate().length())).collect(Collectors.toList());
// 取两个集合的差集
monthlist.removeAll(dateList);
if (!CollectionUtils.isEmpty(monthlist)) { // 若差集不为空则,补全缺少的月份
for (String month : monthlist) {
DiffRiskInfoBO diffRiskInfoBO = new DiffRiskInfoBO();
// 初始化数据
diffRiskInfoBO.setDate(year + month);
diffRiskInfoBOList.add(diffRiskInfoBO);
}
}
}
/**
* 计算往年同期包数
*
* @param month
* @param year
* @return
*/
private String getPackeageNumByYearAndMonth(String month, String year) {
Map<String, List<String>> map = CommConst.GDKM_DATA_MAP;
List<String> gdkmDataLists = map.get(year);
if (CollectionUtils.isEmpty(gdkmDataLists)) {
return "0";
}
BigDecimal packageNum = BigDecimal.ZERO; // 初始化包总数
if (StringUtils.isEmpty(gdkmDataLists.get(Integer.parseInt(month) - 1))) {
return packageNum + "";
}
return gdkmDataLists.get(Integer.parseInt(month) - 1);
}
/**
* 处理数据:统计总金额、总包数、手工凭证数、凭证数,并set
*
* @param zgdkmDataBO
* @param gdkmInfoList
* @param month
* @param year
* @return
*/
private void processGdkmDataBO(ZGDKMDataBO zgdkmDataBO, DiffRiskInfoBO diffRiskInfoBO, List<GDKMInfoVO> gdkmInfoList, String month, String year) {
if (null == zgdkmDataBO) {
return;
}
if (CollectionUtils.isEmpty(gdkmInfoList)) {
return;
}
// 初始化过度科目数据
zgdkmDataBO.setDiffDays("0"); // 差异天数
zgdkmDataBO.setDiffAmount(BigDecimal.ZERO); // 差异金额
zgdkmDataBO.setDiffPackages("0"); // 差异包数
zgdkmDataBO.setSourceSysNum("0"); // 来源系统数
zgdkmDataBO.setSubCompanyNum("0"); // 来源分公司数
if (null != diffRiskInfoBO) {
if (StringUtils.isNotEmpty(diffRiskInfoBO.getDiffDays())) {
zgdkmDataBO.setDiffDays(diffRiskInfoBO.getDiffDays()); // 差异天数
}
if (null != diffRiskInfoBO.getDiffAmount()) {
zgdkmDataBO.setDiffAmount(diffRiskInfoBO.getDiffAmount()); // 差异金额
}
if (StringUtils.isNotEmpty(diffRiskInfoBO.getSourcSysNum())) {
zgdkmDataBO.setSourceSysNum(diffRiskInfoBO.getSourcSysNum()); // 来源系统数
}
if (StringUtils.isNotEmpty(diffRiskInfoBO.getSubsidiaryNum())) {
zgdkmDataBO.setSubCompanyNum(diffRiskInfoBO.getSubsidiaryNum()); // 来源分公司数
}
if (StringUtils.isNotEmpty(diffRiskInfoBO.getDiffPackages())) {
zgdkmDataBO.setDiffPackages(diffRiskInfoBO.getDiffPackages()); // 差异包数
}
}
List<GDKMInfoVO> gdkmInfoVOInfoVOList = gdkmInfoList.stream().filter(item -> item.getYear().equals(year) && item.getMonth().equals(month)).collect(Collectors.toList());
if (CollectionUtils.isEmpty(gdkmInfoVOInfoVOList)) {
return;
}
BigDecimal totalAmount = BigDecimal.ZERO; // 初始化差异总金额
BigDecimal totalPackageNum = BigDecimal.ZERO; // 初始化差异包数
BigDecimal totalVoucherNum = BigDecimal.ZERO; // 初始化总凭证数
BigDecimal manualVoucherNum = BigDecimal.ZERO; // 初始化手工凭证数
// 正常情况只有对应的月份数据只有一个,gdkmInfoVOInfoVOList.size() == 1
for (GDKMInfoVO gdkmInfoVO : gdkmInfoVOInfoVOList) {
totalPackageNum = totalPackageNum.add(new BigDecimal(gdkmInfoVO.getPackage22()));
totalPackageNum = totalPackageNum.add(new BigDecimal(gdkmInfoVO.getPackage23()));
totalAmount = totalAmount.add(gdkmInfoVO.getAmount22());
totalAmount = totalAmount.add(gdkmInfoVO.getAmount23());
totalVoucherNum = totalVoucherNum.add(new BigDecimal(gdkmInfoVO.getTotalVoucherNum()));
manualVoucherNum = manualVoucherNum.add(new BigDecimal(gdkmInfoVO.getManualVoucherNum()));
// 正常情况只有对应的月份数据只有一个
zgdkmDataBO.setZbs1(gdkmInfoVO.getPackage23()); //23科目差异总包数
zgdkmDataBO.setZdmbtr1(gdkmInfoVO.getAmount23()); //23科目差异总金额
zgdkmDataBO.setZbs2(gdkmInfoVO.getPackage22()); //22科目差异总包数
zgdkmDataBO.setZdmbtr2(gdkmInfoVO.getAmount22()); //22科目差异总金额
}
zgdkmDataBO.setTotalPackages(totalPackageNum + ""); // 总包数
zgdkmDataBO.setTotalAmount(totalAmount); // 总金额
zgdkmDataBO.setZzpz(totalVoucherNum + ""); // 凭证总数
zgdkmDataBO.setZsgpz(manualVoucherNum + ""); // 手工凭证数
}