月度汇总视图查询接口;
This commit is contained in:
+62
@@ -33,6 +33,7 @@ import com.mhd.bms.infrastructure.constant.BillLogsConstants;
|
||||
import com.mhd.bms.interfaces.assembler.billManage.BillManageAssembler;
|
||||
import com.mhd.bms.interfaces.dto.billManage.BillDetailDTO;
|
||||
import com.mhd.bms.interfaces.dto.billManage.BillManageDTO;
|
||||
import com.mhd.bms.interfaces.dto.billManage.CustomerMonthBillVO;
|
||||
import com.mhd.bms.interfaces.dto.billingStatement.BillingStatementDTO;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException;
|
||||
@@ -876,5 +877,66 @@ public class BillManageApplicationService {
|
||||
return flag && flagTwo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 客户每月账单分组查询
|
||||
*/
|
||||
public List<CustomerMonthBillVO> queryCustomerMonthBillList(BillManageDO billManageDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null && loginUser.getUserPo() != null) {
|
||||
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
|
||||
Long frontendOrganizationId = billManageDO.getOrganizationId();
|
||||
|
||||
if (userOrganizationId != null && userOrganizationId == 2827L) {
|
||||
if (frontendOrganizationId != null) {
|
||||
billManageDO.setOrganizationId(frontendOrganizationId);
|
||||
billManageDO.setTopOrganizationId(null);
|
||||
} else {
|
||||
billManageDO.setOrganizationId(null);
|
||||
billManageDO.setTopOrganizationId(null);
|
||||
}
|
||||
} else {
|
||||
if (frontendOrganizationId != null && userOrganizationId != null) {
|
||||
if (!frontendOrganizationId.equals(userOrganizationId)) {
|
||||
billManageDO.setOrganizationId(userOrganizationId);
|
||||
}
|
||||
} else {
|
||||
if (userOrganizationId != null) {
|
||||
billManageDO.setOrganizationId(userOrganizationId);
|
||||
}
|
||||
}
|
||||
if (billManageDO.getOrganizationId() == null) {
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1) {
|
||||
billManageDO.setTopOrganizationId(topOrganizationId);
|
||||
}
|
||||
} else {
|
||||
billManageDO.setTopOrganizationId(2827L);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<CustomerMonthBillVO> list = billManageDomainService.queryCustomerMonthBillList(billManageDO);
|
||||
|
||||
// 计算付款状态
|
||||
for (CustomerMonthBillVO vo : list) {
|
||||
BigDecimal totalAmount = vo.getTotalBillAmount() != null ? vo.getTotalBillAmount() : BigDecimal.ZERO;
|
||||
BigDecimal settledAmount = vo.getTotalSettledAmount() != null ? vo.getTotalSettledAmount() : BigDecimal.ZERO;
|
||||
|
||||
if (totalAmount.compareTo(BigDecimal.ZERO) == 0) {
|
||||
vo.setPaymentStatus(3);
|
||||
vo.setPaymentStatusName("已付款");
|
||||
} else if (settledAmount.compareTo(BigDecimal.ZERO) == 0) {
|
||||
vo.setPaymentStatus(1);
|
||||
vo.setPaymentStatusName("未付款");
|
||||
} else if (settledAmount.compareTo(totalAmount) >= 0) {
|
||||
vo.setPaymentStatus(3);
|
||||
vo.setPaymentStatusName("已付款");
|
||||
} else {
|
||||
vo.setPaymentStatus(2);
|
||||
vo.setPaymentStatusName("部分付款");
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
||||
+6
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mhd.bms.domain.billManage.entity.BillManage;
|
||||
import com.mhd.bms.domain.billManage.repository.po.BillManagePO;
|
||||
import com.mhd.bms.domain.billManage.repository.todo.BillManageDO;
|
||||
import com.mhd.bms.interfaces.dto.billManage.CustomerMonthBillVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -20,6 +21,11 @@ public interface IBillManageService extends IService<BillManage>
|
||||
*/
|
||||
public List<BillManagePO> queryList(BillManageDO billManageDO);
|
||||
|
||||
/**
|
||||
* 客户每月账单分组查询
|
||||
*/
|
||||
public List<CustomerMonthBillVO> queryCustomerMonthBillList(BillManageDO billManageDO);
|
||||
|
||||
/**
|
||||
* 新增账单管理
|
||||
*/
|
||||
|
||||
+6
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mhd.bms.domain.billManage.entity.BillManage;
|
||||
import com.mhd.bms.domain.billManage.repository.po.BillManagePO;
|
||||
import com.mhd.bms.domain.billManage.repository.todo.BillManageDO;
|
||||
import com.mhd.bms.interfaces.dto.billManage.CustomerMonthBillVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
/**
|
||||
* 账单管理Mapper接口
|
||||
@@ -19,6 +20,11 @@ public interface BillManageMapper extends BaseMapper<BillManage>
|
||||
*/
|
||||
public List<BillManagePO> queryList(@Param("billManageDO") BillManageDO billManageDO);
|
||||
|
||||
/**
|
||||
* 客户每月账单分组查询
|
||||
*/
|
||||
public List<CustomerMonthBillVO> queryCustomerMonthBillList(@Param("billManageDO") BillManageDO billManageDO);
|
||||
|
||||
String getInvoiceItemName(@Param("invoiceItemId") String invoiceItemId);
|
||||
|
||||
String getInvoiceItemNcCode(@Param("invoiceItemId") String invoiceItemId);
|
||||
|
||||
+6
@@ -31,6 +31,7 @@ import com.mhd.bms.domain.settlementCustomers.entity.SettlementCustomers;
|
||||
import com.mhd.bms.domain.settlementCustomers.repository.facade.ISettlementCustomersService;
|
||||
import com.mhd.bms.interfaces.dto.billManage.BillDetailDTO;
|
||||
import com.mhd.bms.interfaces.dto.billManage.BillManageDTO;
|
||||
import com.mhd.bms.interfaces.dto.billManage.CustomerMonthBillVO;
|
||||
import com.mhd.common.core.domain.dto.ReconciliationDTO;
|
||||
import com.mhd.common.core.domain.dto.nc.*;
|
||||
import com.mhd.common.core.domain.entity.R;
|
||||
@@ -1504,4 +1505,9 @@ public class BillManageImpl extends ServiceImpl<BillManageMapper, BillManage> im
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CustomerMonthBillVO> queryCustomerMonthBillList(BillManageDO billManageDO) {
|
||||
return billManageMapper.queryCustomerMonthBillList(billManageDO);
|
||||
}
|
||||
}
|
||||
@@ -266,4 +266,7 @@ public class BillManageDO extends BaseVOEntity{
|
||||
private String paymentAccountName;
|
||||
@ApiModelProperty("业务员ID")
|
||||
private String salesmanId;
|
||||
|
||||
@ApiModelProperty("账单月份(yyyy-MM,按创建时间月份筛选,用于客户月账单分组查询)")
|
||||
private String billMonth;
|
||||
}
|
||||
+8
@@ -12,6 +12,7 @@ import com.mhd.bms.domain.billManage.repository.facade.IBillManageService;
|
||||
import com.mhd.bms.domain.billManage.repository.po.BillManagePO;
|
||||
import com.mhd.bms.domain.billManage.repository.todo.BillDetailDO;
|
||||
import com.mhd.bms.domain.billManage.repository.todo.BillManageDO;
|
||||
import com.mhd.bms.interfaces.dto.billManage.CustomerMonthBillVO;
|
||||
import com.mhd.bms.domain.billOperationLog.entity.BillOperationLog;
|
||||
import com.mhd.bms.domain.billOperationLog.repository.todo.BillOperationLogDO;
|
||||
import com.mhd.bms.domain.billOperationLog.service.BillOperationLogDomainService;
|
||||
@@ -776,4 +777,11 @@ public class BillManageDomainService {
|
||||
{
|
||||
return billManageService.synchronousNcSK(businessDocumentDetaliIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 客户每月账单分组查询
|
||||
*/
|
||||
public List<CustomerMonthBillVO> queryCustomerMonthBillList(BillManageDO billManageDO) {
|
||||
return billManageService.queryCustomerMonthBillList(billManageDO);
|
||||
}
|
||||
}
|
||||
@@ -276,4 +276,7 @@ public class BillManageDTO extends BaseVOEntity{
|
||||
private String paymentAccountId;
|
||||
@ApiModelProperty("收款帐户名称")
|
||||
private String paymentAccountName;
|
||||
|
||||
@ApiModelProperty("账单月份(yyyy-MM,按创建时间月份筛选,用于客户月账单分组查询)")
|
||||
private String billMonth;
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.mhd.bms.interfaces.dto.billManage;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "客户月账单VO", description = "客户每月账单分组统计信息")
|
||||
public class CustomerMonthBillVO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("结算对象id")
|
||||
private Long settlementCustomersId;
|
||||
|
||||
@ApiModelProperty("结算对象code")
|
||||
private String settlementCustomersCode;
|
||||
|
||||
@ApiModelProperty("结算对象/客户名称")
|
||||
private String settlementEntity;
|
||||
|
||||
@ApiModelProperty("结算主体id")
|
||||
private Long settlementEntityId;
|
||||
|
||||
@ApiModelProperty("结算主体")
|
||||
private String settlementEntityName;
|
||||
|
||||
@ApiModelProperty("组织ID")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("账单月份(yyyy-MM)")
|
||||
private String billMonth;
|
||||
|
||||
@ApiModelProperty("账单总金额合计")
|
||||
private BigDecimal totalBillAmount;
|
||||
|
||||
@ApiModelProperty("已收金额合计")
|
||||
private BigDecimal totalSettledAmount;
|
||||
|
||||
@ApiModelProperty("未收金额合计")
|
||||
private BigDecimal totalUnsettledAmount;
|
||||
|
||||
@ApiModelProperty("账单数量")
|
||||
private Integer billCount;
|
||||
|
||||
@ApiModelProperty("付款状态(1-未付款,2-部分付款,3-已付款)")
|
||||
private Integer paymentStatus;
|
||||
|
||||
@ApiModelProperty("付款状态名称")
|
||||
private String paymentStatusName;
|
||||
|
||||
@ApiModelProperty("应收账单id列表(逗号拼接)")
|
||||
private String billManageIds;
|
||||
|
||||
@ApiModelProperty("结算方式")
|
||||
private String settlementMethod;
|
||||
|
||||
@ApiModelProperty("默认结算币种")
|
||||
private String settlementCurrency;
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.mhd.bms.interfaces.facadeApi;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
@@ -31,6 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import com.mhd.bms.interfaces.dto.billManage.BillManageDTO;
|
||||
import com.mhd.bms.interfaces.dto.billManage.CustomerMonthBillVO;
|
||||
import com.mhd.bms.domain.billManage.repository.todo.BillManageDO;
|
||||
import com.mhd.bms.domain.billManage.repository.po.BillManagePO;
|
||||
import com.mhd.bms.interfaces.assembler.billManage.BillManageAssembler;
|
||||
@@ -84,6 +86,72 @@ public class BillManageApi extends BaseController{
|
||||
return AjaxResult.success(billManageApplicationService.listCount(billManageDO));
|
||||
}
|
||||
|
||||
/**
|
||||
* 客户每月账单分组列表(应收)
|
||||
*/
|
||||
@ApiOperation("客户每月账单分组列表")
|
||||
@GetMapping("/receivableCustomerMonthList")
|
||||
public TableDataInfo receivableCustomerMonthList(BillManageDTO billManageDTO)
|
||||
{
|
||||
BillManageDO billManageDO = new BillManageDO();
|
||||
BeanUtils.copyProperties(billManageDTO, billManageDO);
|
||||
billManageDO.setBillType(1);
|
||||
startPage();
|
||||
List<CustomerMonthBillVO> list = billManageApplicationService.queryCustomerMonthBillList(billManageDO);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 客户每月账单分组列表统计(应收)
|
||||
*/
|
||||
@ApiOperation("客户每月账单分组列表统计")
|
||||
@GetMapping(value = "/receivableCustomerMonthListCount")
|
||||
public AjaxResult receivableCustomerMonthListCount(BillManageDTO billManageDTO)
|
||||
{
|
||||
BillManageDO billManageDO = new BillManageDO();
|
||||
BeanUtils.copyProperties(billManageDTO, billManageDO);
|
||||
billManageDO.setBillType(1);
|
||||
List<CustomerMonthBillVO> list = billManageApplicationService.queryCustomerMonthBillList(billManageDO);
|
||||
BigDecimal totalBillAmount = list.stream()
|
||||
.map(CustomerMonthBillVO::getTotalBillAmount)
|
||||
.filter(java.util.Objects::nonNull)
|
||||
.reduce(java.math.BigDecimal.ZERO, java.math.BigDecimal::add);
|
||||
BigDecimal totalSettledAmount = list.stream()
|
||||
.map(CustomerMonthBillVO::getTotalSettledAmount)
|
||||
.filter(java.util.Objects::nonNull)
|
||||
.reduce(java.math.BigDecimal.ZERO, java.math.BigDecimal::add);
|
||||
BigDecimal totalUnsettledAmount = list.stream()
|
||||
.map(CustomerMonthBillVO::getTotalUnsettledAmount)
|
||||
.filter(java.util.Objects::nonNull)
|
||||
.reduce(java.math.BigDecimal.ZERO, java.math.BigDecimal::add);
|
||||
java.util.Map<String, Object> resultMap = new java.util.HashMap<>();
|
||||
resultMap.put("totalBillAmount", totalBillAmount);
|
||||
resultMap.put("totalSettledAmount", totalSettledAmount);
|
||||
resultMap.put("totalUnsettledAmount", totalUnsettledAmount);
|
||||
resultMap.put("totalCount", list.size());
|
||||
return AjaxResult.success(resultMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据账单ID列表查询应收账单详情(客户月账单点击账单数量回显)
|
||||
*/
|
||||
@ApiOperation("根据账单ID列表查询应收账单详情")
|
||||
@GetMapping("/receivableDetailByMonth")
|
||||
public TableDataInfo receivableDetailByMonth(BillManageDTO billManageDTO)
|
||||
{
|
||||
if (billManageDTO.getBillManageIds() != null && !billManageDTO.getBillManageIds().isEmpty()) {
|
||||
Set<String> idSet = java.util.Arrays.stream(billManageDTO.getBillManageIds().split(","))
|
||||
.collect(java.util.stream.Collectors.toSet());
|
||||
billManageDTO.setBillManageIdSet(idSet);
|
||||
}
|
||||
BillManageDO billManageDO = new BillManageDO();
|
||||
BeanUtils.copyProperties(billManageDTO, billManageDO);
|
||||
billManageDO.setBillType(1);
|
||||
startPage();
|
||||
List<BillManagePO> list = billManageApplicationService.queryList(billManageDO);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
@ApiOperation("导出应收账单")
|
||||
@GetMapping(value = "/exportReceivableList", produces = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
||||
public void exportReceivableList(BillManageDTO billManageDTO, HttpServletResponse response) throws IOException
|
||||
|
||||
@@ -22,7 +22,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
ORDER BY a.create_time DESC
|
||||
</select>
|
||||
|
||||
<select id="queryCustomerMonthBillList" parameterType="com.mhd.bms.domain.billManage.repository.todo.BillManageDO" resultType="com.mhd.bms.interfaces.dto.billManage.CustomerMonthBillVO">
|
||||
SELECT
|
||||
a.SETTLEMENT_CUSTOMERS_ID AS settlementCustomersId,
|
||||
a.SETTLEMENT_CUSTOMERS_CODE AS settlementCustomersCode,
|
||||
a.SETTLEMENT_ENTITY AS settlementEntity,
|
||||
b.SETTLEMENT_ENTITY_ID AS settlementEntityId,
|
||||
b.SETTLEMENT_ENTITY AS settlementEntityName,
|
||||
a.ORGANIZATION_ID AS organizationId,
|
||||
a.ORGANIZATION_NAME AS organizationName,
|
||||
DATE_FORMAT(a.CREATE_TIME, '%Y-%m') AS billMonth,
|
||||
SUM(a.BILL_AMOUNT) AS totalBillAmount,
|
||||
SUM(IFNULL(a.BILL_AMOUNT_SETTLEMENT, 0)) AS totalSettledAmount,
|
||||
SUM(IFNULL(a.BILL_AMOUNT_UNSETTLED, 0)) AS totalUnsettledAmount,
|
||||
COUNT(*) AS billCount,
|
||||
GROUP_CONCAT(a.BILL_MANAGE_ID) AS billManageIds,
|
||||
b.SETTLEMENT_METHOD AS settlementMethod,
|
||||
b.SETTLEMENT_CURRENCY AS settlementCurrency
|
||||
FROM bill_manage a
|
||||
LEFT JOIN SETTLEMENT_CUSTOMERS b ON a.SETTLEMENT_CUSTOMERS_ID = b.SETTLEMENT_CUSTOMERS_ID AND b.del_flag = 1
|
||||
WHERE a.del_flag = 1
|
||||
<include refid="common_where"/>
|
||||
GROUP BY a.SETTLEMENT_CUSTOMERS_ID, DATE_FORMAT(a.CREATE_TIME, '%Y-%m')
|
||||
ORDER BY a.CREATE_TIME DESC
|
||||
</select>
|
||||
|
||||
<sql id="common_where">
|
||||
<if test="billManageDO.billMonth != null and billManageDO.billMonth != ''">
|
||||
AND DATE_FORMAT(a.CREATE_TIME, '%Y-%m') = #{billManageDO.billMonth}
|
||||
</if>
|
||||
<if test="billManageDO.createTimeStart != null and billManageDO.createTimeStart != ''">
|
||||
AND date_format(a.create_time,'%Y-%m-%d') <![CDATA[>=]]> #{billManageDO.createTimeStart}
|
||||
</if>
|
||||
|
||||
Reference in New Issue
Block a user