| | |
| | | import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderPageReqVO; |
| | | import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderRespVO; |
| | | import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderSaveReqVO; |
| | | import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderImportExcelVO; |
| | | import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderImportRespVO; |
| | | import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO; |
| | | import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderItemDO; |
| | | import cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderService; |
| | |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | import java.util.Arrays; |
| | | import java.util.Map; |
| | | |
| | | import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; |
| | |
| | | ExcelUtils.write(response, "销售订单.xls", "数据", ErpSaleOrderRespVO.class, list); |
| | | } |
| | | |
| | | @GetMapping("/get-import-template") |
| | | @Operation(summary = "获得导入销售订单模板") |
| | | @PreAuthorize("@ss.hasPermission('erp:sale-order:import')") |
| | | public void importTemplate(HttpServletResponse response) throws IOException { |
| | | List<ErpSaleOrderImportExcelVO> list = Arrays.asList( |
| | | ErpSaleOrderImportExcelVO.builder() |
| | | .no("XSDD20260101000001").customerName("示例客户").contractNo("HT20260101") |
| | | .orderTime("2026-01-01 10:00:00").productCode("ITEM001").productName("示例产品A") |
| | | .count(new BigDecimal("100")).productPrice(new BigDecimal("20.00")) |
| | | .taxPercent(new BigDecimal("13")).needProduction("是").remark("示例").build()); |
| | | ExcelUtils.write(response, "销售订单导入模板.xls", "销售订单", ErpSaleOrderImportExcelVO.class, list); |
| | | } |
| | | |
| | | @PostMapping("/import") |
| | | @Operation(summary = "导入销售订单") |
| | | @PreAuthorize("@ss.hasPermission('erp:sale-order:import')") |
| | | public CommonResult<ErpSaleOrderImportRespVO> importSaleOrderExcel( |
| | | @RequestParam("file") MultipartFile file) throws Exception { |
| | | List<ErpSaleOrderImportExcelVO> list = ExcelUtils.read(file, ErpSaleOrderImportExcelVO.class); |
| | | return success(saleOrderService.importSaleOrderList(list)); |
| | | } |
| | | |
| | | private PageResult<ErpSaleOrderRespVO> buildSaleOrderVOPageResult(PageResult<ErpSaleOrderDO> pageResult) { |
| | | if (CollUtil.isEmpty(pageResult.getList())) { |
| | | return PageResult.empty(pageResult.getTotal()); |
| | |
| | | } |
| | | // 2. 开始拼接 |
| | | return BeanUtils.toBean(pageResult, ErpSaleOrderRespVO.class, saleOrder -> { |
| | | saleOrder.setItems(BeanUtils.toBean(saleOrderItemMap.get(saleOrder.getId()), ErpSaleOrderRespVO.Item.class, |
| | | saleOrder.setItems(BeanUtils.toBean( |
| | | saleOrderItemMap.getOrDefault(saleOrder.getId(), java.util.Collections.<ErpSaleOrderItemDO>emptyList()), |
| | | ErpSaleOrderRespVO.Item.class, |
| | | item -> { |
| | | fillItemPrice(item); |
| | | item.setBatchCode(batchCodeMap.get(item.getId())); |