|
|
@@ -10,6 +10,9 @@ import com.fs.his.utils.PhoneUtil;
|
|
|
import com.fs.hisStore.service.IMergedOrderService;
|
|
|
import com.fs.live.param.MergedOrderQueryParam;
|
|
|
import com.fs.live.vo.MergedOrderVO;
|
|
|
+import com.fs.live.vo.MergedOrderExportVO;
|
|
|
+import com.fs.common.utils.poi.ExcelUtil;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
import io.swagger.annotations.Api;
|
|
|
@@ -19,7 +22,10 @@ import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 合并订单Controller
|
|
|
@@ -34,6 +40,8 @@ public class OrderController extends BaseController
|
|
|
{
|
|
|
@Autowired
|
|
|
private IMergedOrderService mergedOrderService;
|
|
|
+ // 设置最大导出数量限制为20000条
|
|
|
+ private static final int maxExportCount = 20000;
|
|
|
|
|
|
/**
|
|
|
* 查询合并订单列表
|
|
|
@@ -49,7 +57,196 @@ public class OrderController extends BaseController
|
|
|
vo.setPhone(ParseUtils.parsePhone(vo.getPhone()));
|
|
|
vo.setSalesPhone(ParseUtils.parsePhone(vo.getSalesPhone()));
|
|
|
vo.setUserAddress(ParseUtils.parseAddress(vo.getUserAddress()));
|
|
|
+ vo.setCost(BigDecimal.ZERO);
|
|
|
}
|
|
|
return getDataTable(list);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出合并订单列表
|
|
|
+ */
|
|
|
+ @ApiOperation("导出合并订单列表")
|
|
|
+ @Log(title = "合并订单", businessType = BusinessType.EXPORT)
|
|
|
+ @GetMapping("/export")
|
|
|
+ public AjaxResult export(MergedOrderQueryParam param)
|
|
|
+ {
|
|
|
+ // 先查询数据,限制查询20001条,用于判断是否超过限制
|
|
|
+ PageHelper.startPage(1, maxExportCount + 1);
|
|
|
+ List<MergedOrderVO> list = mergedOrderService.selectMergedOrderList(param);
|
|
|
+
|
|
|
+ // 如果查询结果超过20000条,返回错误提示
|
|
|
+ if (list != null && list.size() > maxExportCount) {
|
|
|
+ return AjaxResult.error("导出数据量超过限制,最多只能导出" + maxExportCount + "条数据,请缩小查询范围后重试");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 转换为导出VO
|
|
|
+ List<MergedOrderExportVO> exportList = convertToExportVO(list, false);
|
|
|
+
|
|
|
+ // 如果数据量在限制范围内,正常导出
|
|
|
+ ExcelUtil<MergedOrderExportVO> util = new ExcelUtil<>(MergedOrderExportVO.class);
|
|
|
+ return util.exportExcel(exportList, "合并订单数据");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出合并订单明细
|
|
|
+ */
|
|
|
+ @ApiOperation("导出合并订单明细")
|
|
|
+ @Log(title = "合并订单明细", businessType = BusinessType.EXPORT)
|
|
|
+ @GetMapping("/exportItems")
|
|
|
+ public AjaxResult exportItems(MergedOrderQueryParam param)
|
|
|
+ {
|
|
|
+ // 先查询数据,限制查询20001条,用于判断是否超过限制
|
|
|
+ PageHelper.startPage(1, maxExportCount + 1);
|
|
|
+ List<MergedOrderVO> list = mergedOrderService.selectMergedOrderList(param);
|
|
|
+
|
|
|
+ // 如果查询结果超过20000条,返回错误提示
|
|
|
+ if (list != null && list.size() > maxExportCount) {
|
|
|
+ return AjaxResult.error("导出数据量超过限制,最多只能导出" + maxExportCount + "条数据,请缩小查询范围后重试");
|
|
|
+ }
|
|
|
+
|
|
|
+ ExcelUtil<MergedOrderVO> util = new ExcelUtil<>(MergedOrderVO.class);
|
|
|
+ return util.exportExcel(list, "合并订单明细");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出合并订单(明文)
|
|
|
+ */
|
|
|
+ @ApiOperation("导出合并订单(明文)")
|
|
|
+ @Log(title = "合并订单(明文)", businessType = BusinessType.EXPORT)
|
|
|
+ @GetMapping("/exportDetails")
|
|
|
+ public AjaxResult exportDetails(MergedOrderQueryParam param)
|
|
|
+ {
|
|
|
+ // 先查询数据,限制查询20001条,用于判断是否超过限制
|
|
|
+ PageHelper.startPage(1, maxExportCount + 1);
|
|
|
+ List<MergedOrderVO> list = mergedOrderService.selectMergedOrderList(param);
|
|
|
+
|
|
|
+ // 如果查询结果超过20000条,返回错误提示
|
|
|
+ if (list != null && list.size() > maxExportCount) {
|
|
|
+ return AjaxResult.error("导出数据量超过限制,最多只能导出" + maxExportCount + "条数据,请缩小查询范围后重试");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 转换为导出VO(明文模式,不脱敏)
|
|
|
+ List<MergedOrderExportVO> exportList = convertToExportVO(list, true);
|
|
|
+
|
|
|
+ ExcelUtil<MergedOrderExportVO> util = new ExcelUtil<>(MergedOrderExportVO.class);
|
|
|
+ return util.exportExcel(exportList, "合并订单(明文)");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出合并订单明细(明文)
|
|
|
+ */
|
|
|
+ @ApiOperation("导出合并订单明细(明文)")
|
|
|
+ @Log(title = "合并订单明细(明文)", businessType = BusinessType.EXPORT)
|
|
|
+ @GetMapping("/exportItemsDetails")
|
|
|
+ public AjaxResult exportItemsDetails(MergedOrderQueryParam param)
|
|
|
+ {
|
|
|
+ // 先查询数据,限制查询20001条,用于判断是否超过限制
|
|
|
+ PageHelper.startPage(1, maxExportCount + 1);
|
|
|
+ List<MergedOrderVO> list = mergedOrderService.selectMergedOrderList(param);
|
|
|
+
|
|
|
+ // 如果查询结果超过20000条,返回错误提示
|
|
|
+ if (list != null && list.size() > maxExportCount) {
|
|
|
+ return AjaxResult.error("导出数据量超过限制,最多只能导出" + maxExportCount + "条数据,请缩小查询范围后重试");
|
|
|
+ }
|
|
|
+
|
|
|
+ ExcelUtil<MergedOrderVO> util = new ExcelUtil<>(MergedOrderVO.class);
|
|
|
+ return util.exportExcel(list, "合并订单明细(明文)");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出合并订单发货单
|
|
|
+ */
|
|
|
+ @ApiOperation("导出合并订单发货单")
|
|
|
+ @Log(title = "合并订单发货单", businessType = BusinessType.EXPORT)
|
|
|
+ @GetMapping("/exportShipping")
|
|
|
+ public AjaxResult exportShipping(MergedOrderQueryParam param)
|
|
|
+ {
|
|
|
+ // 先查询数据,限制查询20001条,用于判断是否超过限制
|
|
|
+ PageHelper.startPage(1, maxExportCount + 1);
|
|
|
+ List<MergedOrderVO> list = mergedOrderService.selectMergedOrderList(param);
|
|
|
+ // 如果查询结果超过20000条,返回错误提示
|
|
|
+ if (list != null && list.size() > maxExportCount) {
|
|
|
+ return AjaxResult.error("导出数据量超过限制,最多只能导出" + maxExportCount + "条数据,请缩小查询范围后重试");
|
|
|
+ }
|
|
|
+ ExcelUtil<MergedOrderVO> util = new ExcelUtil<>(MergedOrderVO.class);
|
|
|
+ return util.exportExcel(list, "合并订单发货单");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将 MergedOrderVO 转换为 MergedOrderExportVO
|
|
|
+ * @param list 原始数据列表
|
|
|
+ * @param isPlainText 是否为明文模式(true:不脱敏,false:脱敏)
|
|
|
+ * @return 导出VO列表
|
|
|
+ */
|
|
|
+ private List<MergedOrderExportVO> convertToExportVO(List<MergedOrderVO> list, boolean isPlainText)
|
|
|
+ {
|
|
|
+ if (list == null || list.isEmpty()) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ return list.stream().map(vo -> {
|
|
|
+ MergedOrderExportVO exportVO = new MergedOrderExportVO();
|
|
|
+
|
|
|
+ // 订单基本信息(参考 FsStoreOrderItemExportVO 的顺序)
|
|
|
+ exportVO.setOrderCode(vo.getOrderCode());
|
|
|
+ exportVO.setStatus(vo.getStatus() != null ? String.valueOf(vo.getStatus()) : null);
|
|
|
+ exportVO.setUserId(vo.getUserId());
|
|
|
+
|
|
|
+ // 产品信息
|
|
|
+ exportVO.setProductName(vo.getProductName());
|
|
|
+ exportVO.setBarCode(vo.getBarCode());
|
|
|
+ exportVO.setProductSpec(vo.getProductSpec());
|
|
|
+ exportVO.setTotalNum(vo.getTotalNum());
|
|
|
+ exportVO.setPrice(vo.getTotalPrice()); // 产品价格使用订单总价
|
|
|
+ exportVO.setCost(vo.getCost());
|
|
|
+ exportVO.setFPrice(null); // 结算价,合并订单暂无此字段
|
|
|
+ exportVO.setCateName(vo.getCateName());
|
|
|
+
|
|
|
+ // 收货信息
|
|
|
+ exportVO.setRealName(vo.getRealName());
|
|
|
+ if (isPlainText) {
|
|
|
+ exportVO.setUserPhone(vo.getUserPhone());
|
|
|
+ exportVO.setUserAddress(vo.getUserAddress());
|
|
|
+ } else {
|
|
|
+ exportVO.setUserPhone(ParseUtils.parsePhone(vo.getUserPhone()));
|
|
|
+ exportVO.setUserAddress(ParseUtils.parseAddress(vo.getUserAddress()));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 时间信息
|
|
|
+ exportVO.setCreateTime(vo.getCreateTime());
|
|
|
+ exportVO.setPayTime(vo.getPayTime());
|
|
|
+
|
|
|
+ // 物流信息
|
|
|
+ exportVO.setDeliverySn(vo.getDeliveryCode()); // 快递公司编号,合并订单暂无此字段
|
|
|
+ exportVO.setDeliveryName(vo.getDeliveryName()); // 快递公司,合并订单暂无此字段
|
|
|
+ exportVO.setDeliveryId(vo.getDeliveryId());
|
|
|
+
|
|
|
+ // 公司和销售信息
|
|
|
+ exportVO.setCompanyName(vo.getCompanyName());
|
|
|
+ exportVO.setCompanyUserNickName(vo.getCompanyUserNickName());
|
|
|
+
|
|
|
+ // 套餐信息
|
|
|
+ exportVO.setPackageName(null); // 套餐名称,合并订单暂无此字段
|
|
|
+ exportVO.setGroupBarCode(null); // 组合码,合并订单暂无此字段
|
|
|
+
|
|
|
+ // 凭证信息
|
|
|
+ exportVO.setIsUpload(null); // 是否上传凭证,合并订单暂无此字段
|
|
|
+ exportVO.setUploadTime(null); // 上传时间,合并订单暂无此字段
|
|
|
+
|
|
|
+ // 档期信息
|
|
|
+ exportVO.setScheduleName(null); // 归属档期,合并订单暂无此字段
|
|
|
+
|
|
|
+ // 银行交易流水号
|
|
|
+ exportVO.setBankTransactionId(vo.getBankTransactionId());
|
|
|
+
|
|
|
+ // 金额信息
|
|
|
+ exportVO.setTotalPrice(vo.getTotalPrice());
|
|
|
+ exportVO.setPayPrice(vo.getPayPrice());
|
|
|
+ exportVO.setPayMoney(vo.getPayMoney());
|
|
|
+ exportVO.setPayPostage(vo.getPayDelivery()); // 额外运费,合并订单暂无此字段
|
|
|
+ exportVO.setPayDelivery(vo.getPayDelivery());
|
|
|
+
|
|
|
+ return exportVO;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ }
|
|
|
}
|