|
@@ -49,9 +49,7 @@ import org.springframework.stereotype.Service;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@@ -88,54 +86,7 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
|
|
|
|
|
|
@Override
|
|
|
public Page<AccountRunningWaterVo> getPage(AccountRunningWaterSelectDto dto) {
|
|
|
- QueryWrapper<Object> wrapper = Wrappers.query();
|
|
|
- // 资金账户
|
|
|
- wrapper.eq(ObjectUtil.isNotEmpty(dto.getAccountManagementId()), "arw.account_management_id", dto.getAccountManagementId());
|
|
|
- // 交易类型
|
|
|
- wrapper.eq(ObjectUtil.isNotEmpty(dto.getStatus()), "arw.status", dto.getStatus());
|
|
|
- // 是否合同到账
|
|
|
- wrapper.eq(ObjectUtil.isNotEmpty(dto.getReceived()), "arw.received", dto.getReceived());
|
|
|
- // 币种
|
|
|
- wrapper.eq(ObjectUtil.isNotEmpty(dto.getCurrency()), "arw.currency", dto.getCurrency());
|
|
|
- //是否认领
|
|
|
- wrapper.eq(ObjectUtil.isNotEmpty(dto.getIsClaim()), "arw.is_claim", dto.getIsClaim());
|
|
|
- //交易开始金额
|
|
|
- wrapper.ge(ObjectUtil.isNotEmpty(dto.getBeginAmount()), "arw.amount", dto.getBeginAmount());
|
|
|
- //交易结束金额
|
|
|
- wrapper.le(ObjectUtil.isNotEmpty(dto.getEndAmount()), "arw.amount", dto.getEndAmount());
|
|
|
- //交易开始时间
|
|
|
- wrapper.ge(ObjectUtil.isNotEmpty(dto.getStartTime()), "arw.transaction_time", dto.getStartTime());
|
|
|
- //交易结束时间
|
|
|
- wrapper.le(ObjectUtil.isNotEmpty(dto.getStopTime()), "arw.transaction_time", dto.getStopTime());
|
|
|
- //对方账户名称
|
|
|
- wrapper.like(ObjectUtil.isNotEmpty(dto.getName()), "arw.name", dto.getName());
|
|
|
- //摘要
|
|
|
- wrapper.like(ObjectUtil.isNotEmpty(dto.getRemarks()), "arw.remarks", dto.getRemarks());
|
|
|
- if (StringUtils.isNotEmpty(dto.getKeyword())) {
|
|
|
- wrapper.and(wrapper1 -> wrapper1.like("arw.remarks", dto.getKeyword()).or().like("arw.name", dto.getKeyword()));
|
|
|
- }
|
|
|
- if (ObjectUtil.isNotEmpty(dto.getDataType()) && dto.getDataType() == 1) {// 到账认领数据
|
|
|
- wrapper.eq("arw.received", 10);
|
|
|
- //到账认领状态使用自定义排序 0未认领 2部分认领 1已认领
|
|
|
- wrapper.orderByAsc("field(arw.is_claim,0,2,1)");
|
|
|
- //到账时间倒序
|
|
|
- wrapper.orderByDesc("arw.transaction_time");
|
|
|
- }
|
|
|
- // todo ERP-》资金管理-》资金流水分页 要求按交易时间排序,我也不懂上面if排序是在哪调用的,先在else里加吧
|
|
|
- else {
|
|
|
- wrapper.orderByDesc("arw.transaction_time", "arw.id");
|
|
|
- }
|
|
|
-
|
|
|
- //是否汇算过滤
|
|
|
- if (ObjectUtil.isNotEmpty(dto.getIsSettleAccounts())) {
|
|
|
- if (0 == dto.getIsSettleAccounts()) {
|
|
|
- wrapper.isNull("arw.amount_cny");
|
|
|
- } else {
|
|
|
- wrapper.isNotNull("arw.amount_cny");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+ QueryWrapper<Object> wrapper = getPageWrapper(dto);
|
|
|
Page<AccountRunningWaterVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
List<AccountRunningWaterVo> records = page.getRecords();
|
|
|
//赋值归属公司名称
|
|
@@ -704,4 +655,84 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
|
|
|
accountService.updateClaimInfo(newAccountRunningWater);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Map<String, List<AccountRunningWaterVo>> getTotal(AccountRunningWaterSelectDto dto) {
|
|
|
+ QueryWrapper<Object> wrapper = getPageWrapper(dto);
|
|
|
+ wrapper.groupBy("arw.currency");
|
|
|
+ wrapper.groupBy("arw.`status`");
|
|
|
+
|
|
|
+ Map<String, List<AccountRunningWaterVo>> map = new HashMap<>();
|
|
|
+ map.put("income", new ArrayList<>());
|
|
|
+ map.put("expenditure", new ArrayList<>());
|
|
|
+
|
|
|
+ List<AccountRunningWaterVo> totalList = baseMapper.getTotal(wrapper);
|
|
|
+ if (ObjectUtil.isEmpty(totalList)) {
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ List<AccountRunningWaterVo> income = totalList.stream().filter(item -> Objects.equals(item.getStatus(), "10")).collect(Collectors.toList());
|
|
|
+ List<AccountRunningWaterVo> expenditure = totalList.stream().filter(item -> Objects.equals(item.getStatus(), "20")).collect(Collectors.toList());
|
|
|
+
|
|
|
+ map.put("income", income);
|
|
|
+ map.put("expenditure", expenditure);
|
|
|
+
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页条件抽取
|
|
|
+ */
|
|
|
+ private QueryWrapper<Object> getPageWrapper(AccountRunningWaterSelectDto dto) {
|
|
|
+ QueryWrapper<Object> wrapper = Wrappers.query();
|
|
|
+ // 资金账户
|
|
|
+ wrapper.eq(ObjectUtil.isNotEmpty(dto.getAccountManagementId()), "arw.account_management_id", dto.getAccountManagementId());
|
|
|
+ // 交易类型
|
|
|
+ wrapper.eq(ObjectUtil.isNotEmpty(dto.getStatus()), "arw.status", dto.getStatus());
|
|
|
+ // 是否合同到账
|
|
|
+ wrapper.eq(ObjectUtil.isNotEmpty(dto.getReceived()), "arw.received", dto.getReceived());
|
|
|
+ // 币种
|
|
|
+ wrapper.eq(ObjectUtil.isNotEmpty(dto.getCurrency()), "arw.currency", dto.getCurrency());
|
|
|
+ //是否认领
|
|
|
+ wrapper.eq(ObjectUtil.isNotEmpty(dto.getIsClaim()), "arw.is_claim", dto.getIsClaim());
|
|
|
+ //交易开始金额
|
|
|
+ wrapper.ge(ObjectUtil.isNotEmpty(dto.getBeginAmount()), "arw.amount", dto.getBeginAmount());
|
|
|
+ //交易结束金额
|
|
|
+ wrapper.le(ObjectUtil.isNotEmpty(dto.getEndAmount()), "arw.amount", dto.getEndAmount());
|
|
|
+ //交易开始时间
|
|
|
+ wrapper.ge(ObjectUtil.isNotEmpty(dto.getStartTime()), "arw.transaction_time", dto.getStartTime());
|
|
|
+ //交易结束时间
|
|
|
+ wrapper.le(ObjectUtil.isNotEmpty(dto.getStopTime()), "arw.transaction_time", dto.getStopTime());
|
|
|
+ //对方账户名称
|
|
|
+ wrapper.like(ObjectUtil.isNotEmpty(dto.getName()), "arw.name", dto.getName());
|
|
|
+ //摘要
|
|
|
+ wrapper.like(ObjectUtil.isNotEmpty(dto.getRemarks()), "arw.remarks", dto.getRemarks());
|
|
|
+ if (StringUtils.isNotEmpty(dto.getKeyword())) {
|
|
|
+ wrapper.and(wrapper1 -> wrapper1.like("arw.remarks", dto.getKeyword())
|
|
|
+ .or().like("arw.name", dto.getKeyword())
|
|
|
+ .or().in(ObjectUtil.isNotEmpty(dto.getAccountWaterIdList()), "arw.id", dto.getAccountWaterIdList())
|
|
|
+ );
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(dto.getDataType()) && dto.getDataType() == 1) {// 到账认领数据
|
|
|
+ wrapper.eq("arw.received", 10);
|
|
|
+ //到账认领状态使用自定义排序 0未认领 2部分认领 1已认领
|
|
|
+ wrapper.orderByAsc("field(arw.is_claim,0,2,1)");
|
|
|
+ //到账时间倒序
|
|
|
+ wrapper.orderByDesc("arw.transaction_time");
|
|
|
+ }
|
|
|
+ // todo ERP-》资金管理-》资金流水分页 要求按交易时间排序,我也不懂上面if排序是在哪调用的,先在else里加吧
|
|
|
+ else {
|
|
|
+ wrapper.orderByDesc("arw.transaction_time", "arw.id");
|
|
|
+ }
|
|
|
+
|
|
|
+ //是否汇算过滤
|
|
|
+ if (ObjectUtil.isNotEmpty(dto.getIsSettleAccounts())) {
|
|
|
+ if (0 == dto.getIsSettleAccounts()) {
|
|
|
+ wrapper.isNull("arw.amount_cny");
|
|
|
+ } else {
|
|
|
+ wrapper.isNotNull("arw.amount_cny");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return wrapper;
|
|
|
+ }
|
|
|
+
|
|
|
}
|