Skip to content

Commit 0e15868

Browse files
committed
fetch: add collection export data object and api and views eairps#245
1 parent 25ab7bd commit 0e15868

File tree

6 files changed

+104
-1
lines changed

6 files changed

+104
-1
lines changed

core/api/src/main/java/com/wansenai/api/financial/CollectionReceiptController.java

+7
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.wansenai.utils.response.Response;
2020
import com.wansenai.vo.financial.CollectionDetailVO;
2121
import com.wansenai.vo.financial.CollectionVO;
22+
import jakarta.servlet.http.HttpServletResponse;
2223
import org.springframework.web.bind.annotation.RestController;
2324
import org.springframework.web.bind.annotation.RequestMapping;
2425
import org.springframework.web.bind.annotation.RequestBody;
@@ -27,6 +28,7 @@
2728
import org.springframework.web.bind.annotation.PutMapping;
2829
import org.springframework.web.bind.annotation.RequestParam;
2930
import org.springframework.web.bind.annotation.PostMapping;
31+
import org.springframework.web.bind.annotation.ModelAttribute;
3032

3133
import java.util.List;
3234

@@ -64,4 +66,9 @@ public Response<String> deleteCollectionReceiptByIds(@RequestParam("ids") List<L
6466
public Response<String> updateCollectionReceiptStatusByIds(@RequestParam("ids") List<Long> ids, @RequestParam("status") Integer status) {
6567
return collectionReceiptService.updateCollectionReceiptStatus(ids, status);
6668
}
69+
70+
@GetMapping("export")
71+
public void exportCollectionReceipt(@ModelAttribute QueryCollectionDTO queryCollectionDTO, HttpServletResponse response) {
72+
collectionReceiptService.exportCollectionReceipt(queryCollectionDTO, response);
73+
}
6774
}

core/domain/src/main/java/com/wansenai/dto/financial/QueryCollectionDTO.java

+2
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,6 @@ public class QueryCollectionDTO {
3838
private Integer page;
3939

4040
private Integer pageSize;
41+
42+
private Boolean isExportDetail;
4143
}

core/domain/src/main/java/com/wansenai/vo/financial/CollectionVO.java

+11
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.fasterxml.jackson.annotation.JsonFormat;
1616
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
1717
import com.wansenai.bo.BigDecimalSerializerBO;
18+
import com.wansenai.utils.excel.ExcelExport;
1819
import lombok.AllArgsConstructor;
1920
import lombok.Builder;
2021
import lombok.Data;
@@ -32,27 +33,37 @@ public class CollectionVO {
3233
@JsonFormat(shape = JsonFormat.Shape.STRING)
3334
private Long id;
3435

36+
@ExcelExport(value = "客户")
3537
private String customerName;
3638

39+
@ExcelExport(value = "单据编号")
3740
private String receiptNumber;
3841

3942
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
43+
@ExcelExport(value = "单据日期")
4044
private LocalDateTime receiptDate;
4145

46+
@ExcelExport(value = "财务人员")
4247
private String financialPerson;
4348

49+
@ExcelExport(value = "收款账户")
4450
private String collectionAccountName;
4551

4652
@JsonSerialize(using = BigDecimalSerializerBO.class)
53+
@ExcelExport(value = "合计收款")
4754
private BigDecimal totalCollectionAmount;
4855

4956
@JsonSerialize(using = BigDecimalSerializerBO.class)
57+
@ExcelExport(value = "优惠金额")
5058
private BigDecimal discountAmount;
5159

5260
@JsonSerialize(using = BigDecimalSerializerBO.class)
61+
@ExcelExport(value = "实际收款")
5362
private BigDecimal actualCollectionAmount;
5463

64+
@ExcelExport(value = "备注")
5565
private String remark;
5666

67+
@ExcelExport(value = "状态", kv = "0:未审核;1:已审核")
5768
private Integer status;
5869
}

core/service/src/main/java/com/wansenai/service/financial/CollectionReceiptService.java

+3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.wansenai.utils.response.Response;
2121
import com.wansenai.vo.financial.CollectionDetailVO;
2222
import com.wansenai.vo.financial.CollectionVO;
23+
import jakarta.servlet.http.HttpServletResponse;
2324

2425
import java.util.List;
2526

@@ -34,4 +35,6 @@ public interface CollectionReceiptService extends IService<FinancialMain> {
3435
Response<String> deleteBatchCollectionReceipt(List<Long> ids);
3536

3637
Response<String> updateCollectionReceiptStatus(List<Long> ids, Integer status);
38+
39+
void exportCollectionReceipt(QueryCollectionDTO queryCollectionDTO, HttpServletResponse response);
3740
}

core/service/src/main/java/com/wansenai/service/financial/impl/CollectionReceiptServiceImpl.java

+70-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
1616
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
1717
import com.wansenai.bo.CollectionBO;
18+
import com.wansenai.bo.CollectionDataExportBO;
1819
import com.wansenai.bo.FileDataBO;
1920
import com.wansenai.dto.financial.AddOrUpdateCollectionDTO;
2021
import com.wansenai.dto.financial.QueryCollectionDTO;
@@ -33,10 +34,11 @@
3334
import com.wansenai.utils.constants.CommonConstants;
3435
import com.wansenai.utils.enums.BaseCodeEnum;
3536
import com.wansenai.utils.enums.CollectionPaymentCodeEnum;
36-
import com.wansenai.utils.enums.IncomeExpenseCodeEnum;
37+
import com.wansenai.utils.excel.ExcelUtils;
3738
import com.wansenai.utils.response.Response;
3839
import com.wansenai.vo.financial.CollectionDetailVO;
3940
import com.wansenai.vo.financial.CollectionVO;
41+
import jakarta.servlet.http.HttpServletResponse;
4042
import org.springframework.stereotype.Service;
4143
import org.springframework.util.StringUtils;
4244

@@ -46,6 +48,7 @@
4648
import java.util.Arrays;
4749
import java.util.List;
4850
import java.util.Optional;
51+
import java.util.concurrent.ConcurrentHashMap;
4952
import java.util.stream.Collectors;
5053

5154
@Service
@@ -139,6 +142,41 @@ public Response<Page<CollectionVO>> getCollectionReceiptPageList(QueryCollection
139142
return Response.responseData(result);
140143
}
141144

145+
private List<CollectionVO> getCollectionReceiptList(QueryCollectionDTO queryCollectionDTO) {
146+
var financialMainList = lambdaQuery()
147+
.eq(queryCollectionDTO.getFinancialPersonId() != null, FinancialMain::getOperatorId, queryCollectionDTO.getFinancialPersonId())
148+
.eq(queryCollectionDTO.getAccountId() != null, FinancialMain::getAccountId, queryCollectionDTO.getAccountId())
149+
.eq(queryCollectionDTO.getStatus() != null, FinancialMain::getStatus, queryCollectionDTO.getStatus())
150+
.eq(queryCollectionDTO.getCustomerId() != null, FinancialMain::getRelatedPersonId, queryCollectionDTO.getCustomerId())
151+
.eq(StringUtils.hasLength(queryCollectionDTO.getReceiptNumber()), FinancialMain::getReceiptNumber, queryCollectionDTO.getReceiptNumber())
152+
.like(StringUtils.hasLength(queryCollectionDTO.getRemark()), FinancialMain::getRemark, queryCollectionDTO.getRemark())
153+
.ge(StringUtils.hasLength(queryCollectionDTO.getStartDate()), FinancialMain::getReceiptDate, queryCollectionDTO.getStartDate())
154+
.le(StringUtils.hasLength(queryCollectionDTO.getEndDate()), FinancialMain::getReceiptDate, queryCollectionDTO.getEndDate())
155+
.eq(FinancialMain::getType, "收款")
156+
.eq(FinancialMain::getDeleteFlag, CommonConstants.NOT_DELETED)
157+
.list();
158+
159+
var collectionVOList = new ArrayList<CollectionVO>(financialMainList.size() + 1);
160+
financialMainList.forEach(item -> {
161+
var collectionVo = CollectionVO.builder()
162+
.id(item.getId())
163+
.receiptNumber(item.getReceiptNumber())
164+
.customerName(commonService.getCustomerName(item.getRelatedPersonId()))
165+
.receiptDate(item.getReceiptDate())
166+
.financialPerson(commonService.getOperatorName(item.getOperatorId()))
167+
.collectionAccountName(commonService.getAccountName(item.getAccountId()))
168+
.totalCollectionAmount(item.getTotalAmount())
169+
.discountAmount(item.getDiscountAmount())
170+
.actualCollectionAmount(item.getChangeAmount())
171+
.status(item.getStatus())
172+
.remark(item.getRemark())
173+
.build();
174+
175+
collectionVOList.add(collectionVo);
176+
});
177+
return collectionVOList;
178+
}
179+
142180
@Override
143181
public Response<CollectionDetailVO> getCollectionReceiptDetail(Long id) {
144182
if (id == null) {
@@ -352,4 +390,35 @@ public Response<String> updateCollectionReceiptStatus(List<Long> ids, Integer st
352390
}
353391
return Response.responseMsg(CollectionPaymentCodeEnum.UPDATE_COLLECTION_RECEIPT_SUCCESS);
354392
}
393+
394+
@Override
395+
public void exportCollectionReceipt(QueryCollectionDTO queryCollectionDTO, HttpServletResponse response) {
396+
var exportMap = new ConcurrentHashMap<String, List<List<Object>>>();
397+
var mainData = getCollectionReceiptList(queryCollectionDTO);
398+
if (!mainData.isEmpty()) {
399+
exportMap.put("收款单", ExcelUtils.getSheetData(mainData));
400+
if (queryCollectionDTO.getIsExportDetail()) {
401+
var subData = new ArrayList<CollectionDataExportBO>();
402+
for (CollectionVO collectionVO : mainData) {
403+
var detail = getCollectionReceiptDetail(collectionVO.getId()).getData().getTableData();
404+
if (!detail.isEmpty()) {
405+
detail.forEach(item -> {
406+
var data = CollectionDataExportBO.builder()
407+
.customerName(collectionVO.getCustomerName())
408+
.receiptNumber(collectionVO.getReceiptNumber())
409+
.saleReceiptNumber(item.getSaleReceiptNumber())
410+
.receivableArrears(item.getReceivableArrears())
411+
.receivedArrears(item.getReceivedArrears())
412+
.thisCollectionAmount(item.getThisCollectionAmount())
413+
.remark(item.getRemark())
414+
.build();
415+
subData.add(data);
416+
});
417+
}
418+
}
419+
exportMap.put("收款单明细", ExcelUtils.getSheetData(subData));
420+
}
421+
ExcelUtils.exportManySheet(response, "收款单", exportMap);
422+
}
423+
}
355424
}

web/src/api/financial/collection.ts

+11
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ enum API {
1515
UpdateStatus = '/financial/collection/updateStatusByIds',
1616
GetDetail = '/financial/collection/getDetailById',
1717
GetArrearsPage = '/sale/arrears/pageList',
18+
Export = '/financial/collection/export',
1819
}
1920

2021
export function getCollectionPageList(params: QueryCollectionReq) {
@@ -75,4 +76,14 @@ export function getArrearsPageList(params: QuerySaleArrearsReq) {
7576
params,
7677
}
7778
);
79+
}
80+
81+
export function exportCollection(params: QueryCollectionReq) {
82+
return defHttp.get<BaseDataResp<Blob>>(
83+
{
84+
url: `${API.Export}`,
85+
params,
86+
responseType: "blob"
87+
}
88+
);
7889
}

0 commit comments

Comments
 (0)