public void dcGetinSelf(DcParamDto dcParamDto) { // 1 验证是否有需要自冲销的负数实收 if (dcParamDto.getGetinList() == null || dcParamDto.getGetinList().stream().anyMatch(getin -> getin.getAfterRmbYe() < 0) == false) return; // 2 循环负数款项开始小类自冲销 for (DcGetinDto fsGetin : dcParamDto.getGetinList().stream().filter(getin -> getin.getAfterRmbYe() < 0).collect(Collectors.toList())) { int index = dcParamDto.getGetinList().indexOf(fsGetin); // 2.1 查询当前这笔负数款项的位置,从下向上冲减余额 for (DcGetinDto getin : dcParamDto.getGetinList().stream().limit(index).filter(getin -> getin.getSaleGUID().equals(fsGetin.getSaleGUID()) && itemNameEquals(getin.getItemNameGUID(), fsGetin.getItemNameGUID()) && getin.getAfterRmbYe() > 0).collect(Collectors.toList())) { if (fsGetin.getAfterRmbYe() == 0) continue; // 计算自冲销结果,冲减两笔款项的余额并记录两笔对冲过程 caleDcGetinSelf(getin, fsGetin, dcParamDto); } // 2.2 查询当前这笔负数款项的位置,从上向下冲减余额 for (DcGetinDto getin : dcParamDto.getGetinList().stream().skip(index + 1).filter(getin -> getin.getSaleGUID().equals(fsGetin.getSaleGUID()) && itemNameEquals(getin.getItemNameGUID(), fsGetin.getItemNameGUID()) && getin.getAfterRmbYe() > 0).collect(Collectors.toList())) { if (fsGetin.getAfterRmbYe() == 0) continue; // 计算自冲销结果,冲减两笔款项的余额并记录两笔对冲过程 caleDcGetinSelf(getin, fsGetin, dcParamDto); } // 2.3 查询当前这笔负数款项的位置,从下向上冲减余额 for (DcGetinDto getin : dcParamDto.getGetinList().stream().limit(index).filter(getin -> getin.getSaleGUID().equals(fsGetin.getSaleGUID()) && itemTypeEquals(getin.getItemTypeGUID(), fsGetin.getItemTypeGUID(), getin.getItemNameGUID(), fsGetin.getItemNameGUID(), dcParamDto) && getin.getAfterRmbYe() > 0).collect(Collectors.toList())) { if (fsGetin.getAfterRmbYe() == 0) continue; // 计算自冲销结果,冲减两笔款项的余额并记录两笔对冲过程 caleDcGetinSelf(getin, fsGetin, dcParamDto); } // 2.4 查询当前这笔负数款项的位置,从上向下冲减余额 for (DcGetinDto getin : dcParamDto.getGetinList().stream().skip(index + 1).filter(getin -> getin.getSaleGUID().equals(fsGetin.getSaleGUID()) && itemTypeEquals(getin.getItemTypeGUID(), fsGetin.getItemTypeGUID(), getin.getItemNameGUID(), fsGetin.getItemNameGUID(), dcParamDto) && getin.getAfterRmbYe() > 0).collect(Collectors.toList())) { if (fsGetin.getAfterRmbYe() == 0) continue; // 计算自冲销结果,冲减两笔款项的余额并记录两笔对冲过程 caleDcGetinSelf(getin, fsGetin, dcParamDto); } } }

public virtual void DcGetinSelfDcParamDto dcParamDto 1 验证是否有需要自冲销的负数实收 if dcParamDtoGetinList == null dcParamDtoGetinListAnygetin = getinAfterRmbYe 0 == false return;

原文地址: http://www.cveoy.top/t/topic/I89 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录