Skip to content

Commit be4add2

Browse files
committed
fetch: add assemble receipt export api eairps#245
1 parent 693d5a5 commit be4add2

File tree

6 files changed

+95
-22
lines changed

6 files changed

+95
-22
lines changed

core/api/src/main/java/com/wansenai/api/warehouse/AssembleController.java

+7-8
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,8 @@
1919
import com.wansenai.utils.response.Response;
2020
import com.wansenai.vo.warehouse.AssembleReceiptDetailVO;
2121
import com.wansenai.vo.warehouse.AssembleReceiptVO;
22-
import org.springframework.web.bind.annotation.RestController;
23-
import org.springframework.web.bind.annotation.RequestMapping;
24-
import org.springframework.web.bind.annotation.RequestBody;
25-
import org.springframework.web.bind.annotation.GetMapping;
26-
import org.springframework.web.bind.annotation.PathVariable;
27-
import org.springframework.web.bind.annotation.PutMapping;
28-
import org.springframework.web.bind.annotation.RequestParam;
29-
import org.springframework.web.bind.annotation.PostMapping;
22+
import jakarta.servlet.http.HttpServletResponse;
23+
import org.springframework.web.bind.annotation.*;
3024

3125
import java.util.List;
3226

@@ -64,4 +58,9 @@ public Response<String> deleteAssembleReceiptByIds(@RequestParam("ids") List<Lon
6458
public Response<String> updateAssembleReceiptStatusByIds(@RequestParam("ids") List<Long> ids, @RequestParam("status") Integer status) {
6559
return assembleService.updateAssembleReceiptStatus(ids, status);
6660
}
61+
62+
@GetMapping("export")
63+
public void exportAssembleReceipt(@ModelAttribute QueryAssembleReceiptDTO queryAssembleReceiptDTO, HttpServletResponse response) throws Exception {
64+
assembleService.exportAssembleReceipt(queryAssembleReceiptDTO, response);
65+
}
6766
}

core/domain/src/main/java/com/wansenai/vo/warehouse/AssembleReceiptVO.java

+10-2
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.Builder;
1920
import lombok.Data;
2021

@@ -28,19 +29,26 @@ public class AssembleReceiptVO {
2829
@JsonFormat(shape = JsonFormat.Shape.STRING)
2930
private Long id;
3031

32+
@ExcelExport(value = "单据编号")
3133
private String receiptNumber;
3234

35+
@ExcelExport(value = "商品信息")
3336
private String productInfo;
3437

3538
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
39+
@ExcelExport(value = "单据日期")
3640
private LocalDateTime receiptDate;
3741

38-
private String operator;
39-
42+
@ExcelExport(value = "商品数量")
4043
private Integer productNumber;
4144

4245
@JsonSerialize(using = BigDecimalSerializerBO.class)
46+
@ExcelExport(value = "金额合计")
4347
private BigDecimal totalAmount;
4448

49+
@ExcelExport(value = "操作员")
50+
private String operator;
51+
52+
@ExcelExport(value = "状态", kv = "0-未审核;1-已审核")
4553
private Integer status;
4654
}

core/service/src/main/java/com/wansenai/service/warehouse/AssembleReceiptService.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.warehouse.AssembleReceiptDetailVO;
2222
import com.wansenai.vo.warehouse.AssembleReceiptVO;
23+
import jakarta.servlet.http.HttpServletResponse;
2324

2425
import java.util.List;
2526

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

3637
Response<String> updateAssembleReceiptStatus(List<Long> ids, Integer status);
38+
39+
void exportAssembleReceipt(QueryAssembleReceiptDTO queryAssembleReceiptDTO, HttpServletResponse response) throws Exception;
3740
}

core/service/src/main/java/com/wansenai/service/warehouse/impl/AssembleReceiptServiceImpl.java

+51-1
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,11 @@
3737
import com.wansenai.utils.constants.CommonConstants;
3838
import com.wansenai.utils.enums.AssembleReceiptCodeEnum;
3939
import com.wansenai.utils.enums.BaseCodeEnum;
40+
import com.wansenai.utils.excel.ExcelUtils;
4041
import com.wansenai.utils.response.Response;
4142
import com.wansenai.vo.warehouse.AssembleReceiptDetailVO;
4243
import com.wansenai.vo.warehouse.AssembleReceiptVO;
44+
import jakarta.servlet.http.HttpServletResponse;
4345
import org.springframework.stereotype.Service;
4446
import org.springframework.transaction.annotation.Transactional;
4547
import org.springframework.util.StringUtils;
@@ -178,7 +180,46 @@ public Response<Page<AssembleReceiptVO>> getAssembleReceiptPageList(QueryAssembl
178180
return Response.responseData(result);
179181
}
180182

181-
@Override
183+
private List<AssembleReceiptVO> getAssembleReceiptList(QueryAssembleReceiptDTO queryAssembleReceiptDTO) {
184+
var wrapperMainMapper = lambdaQuery()
185+
.eq(queryAssembleReceiptDTO.getOperatorId() != null, WarehouseReceiptMain::getCreateBy, queryAssembleReceiptDTO.getOperatorId())
186+
.eq(queryAssembleReceiptDTO.getStatus() != null, WarehouseReceiptMain::getStatus, queryAssembleReceiptDTO.getStatus())
187+
.eq(StringUtils.hasLength(queryAssembleReceiptDTO.getReceiptNumber()), WarehouseReceiptMain::getReceiptNumber, queryAssembleReceiptDTO.getReceiptNumber())
188+
.like(StringUtils.hasLength(queryAssembleReceiptDTO.getRemark()), WarehouseReceiptMain::getRemark, queryAssembleReceiptDTO.getRemark())
189+
.ge(StringUtils.hasLength(queryAssembleReceiptDTO.getStartDate()), WarehouseReceiptMain::getCreateTime, queryAssembleReceiptDTO.getStartDate())
190+
.le(StringUtils.hasLength(queryAssembleReceiptDTO.getEndDate()), WarehouseReceiptMain::getCreateTime, queryAssembleReceiptDTO.getEndDate())
191+
.eq(WarehouseReceiptMain::getType, "组装单")
192+
.eq(WarehouseReceiptMain::getDeleteFlag, CommonConstants.NOT_DELETED)
193+
.list();
194+
195+
var assembleReceiptVOList = new ArrayList<AssembleReceiptVO>(wrapperMainMapper.size() + 1);
196+
wrapperMainMapper.forEach(item -> {
197+
198+
var product = productService.getById(item.getProductId());
199+
var productInfo = "";
200+
if(product != null) {
201+
productInfo = product.getProductName() + "|" + product.getProductStandard() + "|" + product.getProductModel() + "|" + product.getProductUnit();
202+
}
203+
204+
var operator = userService.getById(item.getCreateBy());
205+
var assembleReceiptVO = AssembleReceiptVO.builder()
206+
.id(item.getId())
207+
.receiptNumber(item.getReceiptNumber())
208+
.productInfo(productInfo)
209+
.receiptDate(item.getReceiptDate())
210+
.operator(Optional.ofNullable(operator).map(SysUser::getName).orElse(""))
211+
.productNumber(item.getTotalProductNumber())
212+
.totalAmount(item.getTotalAmount())
213+
.status(item.getStatus())
214+
.build();
215+
216+
assembleReceiptVOList.add(assembleReceiptVO);
217+
});
218+
return assembleReceiptVOList;
219+
}
220+
221+
222+
@Override
182223
public Response<AssembleReceiptDetailVO> getAssembleReceiptDetail(Long id) {
183224
if (id == null) {
184225
return Response.responseMsg(BaseCodeEnum.PARAMETER_NULL);
@@ -428,4 +469,13 @@ public Response<String> updateAssembleReceiptStatus(List<Long> ids, Integer stat
428469
}
429470
return Response.responseMsg(AssembleReceiptCodeEnum.UPDATE_ASSEMBLE_RECEIPT_SUCCESS);
430471
}
472+
473+
@Override
474+
public void exportAssembleReceipt(QueryAssembleReceiptDTO queryAssembleReceiptDTO, HttpServletResponse response) throws Exception {
475+
var data = getAssembleReceiptList(queryAssembleReceiptDTO);
476+
if (!data.isEmpty()) {
477+
var file = ExcelUtils.exportFile(ExcelUtils.DEFAULT_FILE_PATH, "组装单", data);
478+
ExcelUtils.downloadExcel(file, "组装单", response);
479+
}
480+
}
431481
}

web/src/api/warehouse/assemble.ts

+11
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ enum API {
1414
DeleteBatch = '/warehouse/assemble/deleteByIds',
1515
UpdateStatus = '/warehouse/assemble/updateStatusByIds',
1616
GetDetail = '/warehouse/assemble/getDetailById',
17+
Export = '/warehouse/assemble/export',
1718
}
1819

1920
export function getAssemblePageList(params: QueryAssembleReq) {
@@ -65,4 +66,14 @@ export function getAssembleDetailById(id: number) {
6566
url: `${API.GetDetail}/${id}`
6667
},
6768
);
69+
}
70+
71+
export function exportAssemble(params: QueryAssembleReq) {
72+
return defHttp.get<BaseDataResp<Blob>>(
73+
{
74+
url: `${API.Export}`,
75+
params,
76+
responseType: "blob"
77+
}
78+
);
6879
}

web/src/views/warehouse/assemble/index.vue

+13-11
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,8 @@ import {defineComponent, ref} from "vue";
5252
import {BasicTable, TableAction, useTable} from "@/components/Table";
5353
import {useMessage} from "@/hooks/web/useMessage";
5454
import {columns, searchFormSchema} from "@/views//warehouse/assemble/assemble.data";
55-
import {exportXlsx} from "@/api/basic/common";
5655
import {useI18n} from "vue-i18n";
57-
import {getAssemblePageList, deleteBatchAssemble, updateAssembleStatus} from "@/api/warehouse/assemble";
56+
import {getAssemblePageList, deleteBatchAssemble, updateAssembleStatus, exportAssemble} from "@/api/warehouse/assemble";
5857
import AddEditAssembleModal from "@/views/warehouse/assemble/components/AddEditAssembleModal.vue"
5958
import ViewAssembleModal from "@/views/warehouse/assemble/components/ViewAssembleModal.vue";
6059
import {Tag} from "ant-design-vue";
@@ -67,7 +66,7 @@ export default defineComponent({
6766
const { createMessage } = useMessage();
6867
const addEditModalRef = ref(null);
6968
const [receiptViewModal, {openModal: openReceiptViewModal}] = useModal();
70-
const [registerTable, { reload, getSelectRows }] = useTable({
69+
const [registerTable, { reload, getSelectRows, getForm }] = useTable({
7170
title: '组装单列表',
7271
rowKey: 'id',
7372
api: getAssemblePageList,
@@ -170,14 +169,17 @@ export default defineComponent({
170169
}
171170
172171
async function handleExport() {
173-
const file = await exportXlsx("组装单列表")
174-
const blob = new Blob([file]);
175-
const link = document.createElement("a");
176-
link.href = URL.createObjectURL(blob);
177-
const timestamp = getTimestamp(new Date());
178-
link.download = "组装单数据" + timestamp + ".xlsx";
179-
link.target = "_blank";
180-
link.click();
172+
const data = getForm().getFieldsValue();
173+
const file: any = await exportAssemble(data)
174+
if (file.size > 0) {
175+
const blob = new Blob([file]);
176+
const link = document.createElement("a");
177+
link.href = URL.createObjectURL(blob);
178+
const timestamp = getTimestamp(new Date());
179+
link.download = "组装单数据" + timestamp + ".xlsx";
180+
link.target = "_blank";
181+
link.click();
182+
}
181183
}
182184
183185

0 commit comments

Comments
 (0)