Przeglądaj źródła

经销商订单实现导出功能、经销商订单增加经销商筛选条件

guanglong 3 lat temu
rodzic
commit
6c52bcb4b6

+ 134 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/ChannelOrderMgrController.java

@@ -7,12 +7,14 @@ import com.qs.mp.admin.domain.TicketPackage;
 import com.qs.mp.admin.domain.param.ChannelOrderPkgParam;
 import com.qs.mp.admin.domain.param.ChannelOrderQueryParam;
 import com.qs.mp.admin.domain.param.ChannelOrderShipParam;
+import com.qs.mp.admin.domain.param.UserDeliverOrderQueryParam;
 import com.qs.mp.admin.domain.vo.TicketPackageVO;
 import com.qs.mp.admin.service.ITicketPackageService;
 import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.domain.ChannelOrder;
 import com.qs.mp.channel.domain.ChannelOrderDetail;
 import com.qs.mp.channel.domain.ChannelOrderItem;
+import com.qs.mp.channel.domain.excel.ChannelOrderExcel;
 import com.qs.mp.channel.domain.vo.ChannelOrderInfoVO;
 import com.qs.mp.channel.domain.vo.ChannelOrderItemVO;
 import com.qs.mp.channel.domain.vo.ChannelOrderVO;
@@ -29,6 +31,12 @@ import com.qs.mp.common.enums.BusinessType;
 import com.qs.mp.common.enums.ErrorCodeEnum;
 import com.qs.mp.common.enums.TicketPkgStatusEnum;
 import com.qs.mp.common.service.IDeliveryCompanyService;
+import com.qs.mp.user.domain.UserDeliverOrder;
+import com.qs.mp.user.domain.UserDeliverOrderItem;
+import com.qs.mp.user.domain.excel.DeliverOrderExcel;
+import com.qs.mp.user.domain.vo.UserDeliverOrderItemVO;
+import com.qs.mp.user.domain.vo.UserDeliverOrderVO;
+import com.qs.mp.utils.ExcelUtil;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -93,8 +101,11 @@ public class ChannelOrderMgrController extends BaseApiController {
     queryWrapper.orderByDesc("t1.order_id");
     List<ChannelOrderVO> channelOrderVOList = channelOrderService.selectChannelOrderVoList(queryWrapper);
     for (ChannelOrderVO channelOrderVO : channelOrderVOList) {
-      channelOrderVO.setItems(channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
-          .eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId())));
+    	List<ChannelOrderItem> itemList = channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
+   	          .eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId()));
+
+   	    List<ChannelOrderItemVO> itemVOList = mapperFacade.mapAsList(itemList, ChannelOrderItemVO.class);
+        channelOrderVO.setItems(itemVOList);
     }
     return getDataTable(channelOrderVOList);
   }
@@ -249,4 +260,125 @@ public class ChannelOrderMgrController extends BaseApiController {
 		}
 		return AjaxResult.success(list);
 	}
+	
+	
+	
+	@Log(title = "提货订单导出", businessType = BusinessType.EXPORT)
+	@PostMapping("/export")
+	@PreAuthorize("@ss.hasPermi('order:channel:export')")
+	public AjaxResult export(@RequestBody ChannelOrderQueryParam queryParam) {
+
+		List<ChannelOrderExcel> excelList = new ArrayList<ChannelOrderExcel>();
+		List<ChannelOrderVO> listAll = new ArrayList<ChannelOrderVO>();
+		// 首先查询要导出的数据总数
+		QueryWrapper<ChannelOrder> queryWrapper = new QueryWrapper<ChannelOrder>();
+	    queryWrapper.eq(null != queryParam && null != queryParam.getChannelId(), "t1.channel_id" ,queryParam.getChannelId());
+	    queryWrapper.eq(null != queryParam && StringUtils.isNotBlank(queryParam.getOrderId()), "t1.order_id" ,queryParam.getOrderId());
+		queryWrapper.eq(null != queryParam && null != queryParam.getStatus(), "t1.`status`" ,queryParam.getStatus());
+		queryWrapper.ge(null != queryParam && null != queryParam.getStartTime(),  "t1.created_time", queryParam.getStartTime());
+		queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
+		queryWrapper.like(null != queryParam && StringUtils.isNotBlank(queryParam.getTitle()), "t1.title", queryParam.getTitle());
+	    queryWrapper.orderByDesc("t1.order_id");
+	    
+	    int totalSize = channelOrderService.selectChannelOrderCount(queryWrapper);
+		if (totalSize == 0) {
+			return AjaxResult.error("没有符合条件的经销商订单");
+		}
+	    
+		int pageSize = 2000;
+		if (totalSize > pageSize) {
+			int totalPage = totalSize % pageSize == 0 ? totalSize / pageSize : totalSize / pageSize + 1;
+			for (int i = 0; i < totalPage; i++) {
+				queryWrapper.last("limit " + (i * pageSize) + ", " + pageSize);
+			    List<ChannelOrderVO> channelOrderVOList = channelOrderService.selectChannelOrderVoList(queryWrapper);
+			    for (ChannelOrderVO channelOrderVO : channelOrderVOList) {
+			    	List<ChannelOrderItem> itemList = channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
+			     	          .eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId()));
+				  	List<ChannelOrderItemVO> itemVOList = mapperFacade.mapAsList(itemList, ChannelOrderItemVO.class);
+				  	if(null != itemVOList && itemVOList.size() > 0) {
+				  		for(ChannelOrderItemVO itemVO : itemVOList) {
+				  			if(null != itemVO && StringUtils.isNotBlank(itemVO.getBoxId())
+				  					&& StringUtils.isNotBlank(itemVO.getOrderId())) {
+				  				LambdaQueryWrapper<ChannelOrderDetail> detailQueryWrapper = new LambdaQueryWrapper<ChannelOrderDetail>();
+				  				detailQueryWrapper.eq(ChannelOrderDetail::getOrderId, itemVO.getOrderId());
+				  				detailQueryWrapper.eq(ChannelOrderDetail::getBoxId, itemVO.getBoxId());
+				  				List<ChannelOrderDetail> detailList = channelOrderDetailService.list(detailQueryWrapper);
+				  				itemVO.setDetailList(detailList);
+				  			}
+				  		}
+				  	}
+				  	channelOrderVO.setItems(itemVOList);
+			    }
+				if (null != channelOrderVOList && channelOrderVOList.size() > 0) {
+					listAll.addAll(channelOrderVOList);
+				}
+			}
+		} else {
+			listAll = channelOrderService.selectChannelOrderVoList(queryWrapper);
+		    for (ChannelOrderVO channelOrderVO : listAll) {
+		    	List<ChannelOrderItem> itemList = channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
+		     	          .eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId()));
+			  	List<ChannelOrderItemVO> itemVOList = mapperFacade.mapAsList(itemList, ChannelOrderItemVO.class);
+			  	if(null != itemVOList && itemVOList.size() > 0) {
+			  		for(ChannelOrderItemVO itemVO : itemVOList) {
+			  			if(null != itemVO && StringUtils.isNotBlank(itemVO.getBoxId())
+			  					&& StringUtils.isNotBlank(itemVO.getOrderId())) {
+			  				LambdaQueryWrapper<ChannelOrderDetail> detailQueryWrapper = new LambdaQueryWrapper<ChannelOrderDetail>();
+			  				detailQueryWrapper.eq(ChannelOrderDetail::getOrderId, itemVO.getOrderId());
+			  				detailQueryWrapper.eq(ChannelOrderDetail::getBoxId, itemVO.getBoxId());
+			  				List<ChannelOrderDetail> detailList = channelOrderDetailService.list(detailQueryWrapper);
+			  				itemVO.setDetailList(detailList);
+			  			}
+			  		}
+			  	}
+			  	channelOrderVO.setItems(itemVOList);
+		    }
+		}
+	    
+		if (null != listAll && listAll.size() > 0) {
+			// listAll.sort(Comparator.comparing(UserDeliverOrderVO::getOrderId));
+			for (ChannelOrderVO channelOrder : listAll) {
+				if (null != channelOrder && StringUtils.isNotBlank(channelOrder.getOrderId())
+						&& StringUtils.isNotBlank(channelOrder.getReceiver())
+						&& StringUtils.isNotBlank(channelOrder.getTel())
+						&& StringUtils.isNotBlank(channelOrder.getProvince())
+						&& StringUtils.isNotBlank(channelOrder.getCity())
+						&& StringUtils.isNotBlank(channelOrder.getArea())
+						&& StringUtils.isNotBlank(channelOrder.getAddress()) && null != channelOrder.getItems()
+						&& channelOrder.getItems().size() > 0) {
+					for (ChannelOrderItemVO channelOrderItem : channelOrder.getItems()) {
+						if (null != channelOrderItem) {
+							ChannelOrderExcel channelOrderExcel = new ChannelOrderExcel();
+							channelOrderExcel.setTitle(channelOrderItem.getTitle());
+							channelOrderExcel.setOrderNum(channelOrderItem.getOrderNum());
+							if(null != channelOrderItem.getDetailList() && channelOrderItem.getDetailList().size() > 0) {
+								StringBuffer buff = new StringBuffer();
+								for(ChannelOrderDetail orderDetail: channelOrderItem.getDetailList()) {
+									if(null != orderDetail && StringUtils.isNotBlank(orderDetail.getStartSn())
+											&& StringUtils.isNotBlank(orderDetail.getEndSn())) {
+										buff.append("("+orderDetail.getStartSn()+"-"+orderDetail.getEndSn()+")");
+									}
+								}
+								channelOrderExcel.setSnRrange(buff.toString());
+							}
+							channelOrderExcel.setCreatedTime(channelOrder.getCreatedTime());
+							channelOrderExcel.setItemStatus(channelOrder.getStatus().getValue() > 1 ? "已发货" : "未发货");
+							channelOrderExcel.setOrderId(channelOrder.getOrderId());
+							channelOrderExcel.setStatus(channelOrder.getStatus().getDesc());
+							channelOrderExcel.setChannelName(channelOrder.getChannelName());
+							channelOrderExcel.setParentName(channelOrder.getParentName());
+							channelOrderExcel.setReceiver(channelOrder.getReceiver());
+							channelOrderExcel.setTel(channelOrder.getTel());
+							String address = channelOrder.getProvince() + channelOrder.getCity()
+									+ channelOrder.getArea() + channelOrder.getAddress();
+							channelOrderExcel.setAddress(address);
+							excelList.add(channelOrderExcel);
+						}
+					}
+				}
+			}
+		}
+		ExcelUtil<ChannelOrderExcel> util = new ExcelUtil<ChannelOrderExcel>(ChannelOrderExcel.class);
+		return util.exportExcel(excelList, "经销商订单导出", false);
+	}
 }

+ 20 - 5
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/SaleSiteMgrController.java

@@ -89,7 +89,7 @@ public class SaleSiteMgrController extends BaseApiController {
 	 */
 	@PostMapping("/list")
 	@PreAuthorize("@ss.hasPermi('business:salesite:list')")
-	public TableDataInfo listChannel(@RequestBody Channel channel) {
+	public TableDataInfo listSite(@RequestBody Channel channel) {
 		List<ChannelVO> list = new ArrayList<ChannelVO>();
 		startPage();
 		QueryWrapper<Channel> queryWrapper = new QueryWrapper<>();
@@ -181,6 +181,21 @@ public class SaleSiteMgrController extends BaseApiController {
 		return "";
 	}
 
+	/**
+	 * 查询所有渠道列表
+	 *
+	 * @return
+	 */
+	@PostMapping("/listAll")
+	// @PreAuthorize("@ss.hasPermi('business:salesite:list')")
+	public AjaxResult listAllSite() {
+		List<Channel> list = new ArrayList<Channel>();
+		LambdaQueryWrapper<Channel> queryWrapper = new LambdaQueryWrapper<Channel>();
+		queryWrapper.eq(Channel::getLevel, 0);
+		queryWrapper.orderByDesc(Channel::getChannelId);
+		list = channelService.list(queryWrapper);
+		return AjaxResult.success(list);
+	}
 
 	/**
 	 * 新增经销商信息
@@ -191,7 +206,7 @@ public class SaleSiteMgrController extends BaseApiController {
 	@ApiOperation(value = "新增经销商信息", notes = "经销商端新增经销商")
 	@PostMapping("/create")
 	@PreAuthorize("@ss.hasPermi('business:salesite:add')")
-	public AjaxResult channelCreate(@Validated @RequestBody SaleSiteParam channelParam) {
+	public AjaxResult siteCreate(@Validated @RequestBody SaleSiteParam channelParam) {
 		if (channelParam.getChannelId() != null && channelParam.getChannelId() != 0) {
 			return AjaxResult.error("该经销商已存在");
 		}
@@ -246,7 +261,7 @@ public class SaleSiteMgrController extends BaseApiController {
 	@ApiOperation(value = "编辑经销商信息", notes = "经销商端编辑经销商")
 	@PostMapping("/update")
 	@PreAuthorize("@ss.hasPermi('business:salesite:edit')")
-	public AjaxResult channelUpdate(@Validated @RequestBody ChannelParam channelParam) {
+	public AjaxResult siteUpdate(@Validated @RequestBody ChannelParam channelParam) {
 		if (null == channelParam || null == channelParam.getChannelId()) {
 			return error(ErrorCodeEnum.ERROR_CODE_1001);
 		}
@@ -309,7 +324,7 @@ public class SaleSiteMgrController extends BaseApiController {
 	@ApiOperation(value = "停用、启用经销商信息", notes = "经销商管理编辑经销商")
 	@PostMapping("/status")
 	@PreAuthorize("@ss.hasPermi('business:salesite:edit')")
-	public AjaxResult channelStatus(@RequestBody JSONObject jsonObject) {
+	public AjaxResult siteStatus(@RequestBody JSONObject jsonObject) {
 		String channelId = jsonObject.containsKey("channelId")?jsonObject.get("channelId").toString():"";
 		String status = jsonObject.containsKey("status")?jsonObject.get("status").toString():"";
 		if (null == jsonObject || StringUtils.isBlank(channelId)
@@ -341,7 +356,7 @@ public class SaleSiteMgrController extends BaseApiController {
 	@ApiOperation(value = "查询经销商详情信息", notes = "经销商管理编辑子经销商查询经销商详情")
 	@PostMapping("/detail")
 	@PreAuthorize("@ss.hasPermi('business:salesite:query')")
-	public AjaxResult getChannelDetail(@RequestBody JSONObject jsonObject) {
+	public AjaxResult getSiteDetail(@RequestBody JSONObject jsonObject) {
 		String channelId = (null != jsonObject && jsonObject.containsKey("channelId"))?jsonObject.getString("channelId"):"";
 		if (StringUtils.isBlank(channelId)) {
 			return error(ErrorCodeEnum.ERROR_CODE_1001);

+ 5 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/mall/ChannelOrderController.java

@@ -115,8 +115,11 @@ public class ChannelOrderController extends BaseApiController {
             .orderByDesc(ChannelOrder::getCreatedTime));
     List<ChannelOrderVO> channelOrderVOList = mapperFacade.mapAsList(channelOrders, ChannelOrderVO.class);
     for (ChannelOrderVO channelOrderVO : channelOrderVOList) {
-      channelOrderVO.setItems(channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
-          .eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId())));
+    	List<ChannelOrderItem> itemList = channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
+     	          .eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId()));
+
+     	 List<ChannelOrderItemVO> itemVOList = mapperFacade.mapAsList(itemList, ChannelOrderItemVO.class);
+         channelOrderVO.setItems(itemVOList);
     }
     TableDataInfo rspData = getDataTable(channelOrders);
     rspData.setRows(channelOrderVOList);

+ 4 - 0
mp-common/src/main/java/com/qs/mp/common/enums/ChannelOrderStatusEnum.java

@@ -30,6 +30,10 @@ public enum ChannelOrderStatusEnum implements IEnum<Integer> {
   public Integer getValue() {
     return value;
   }
+  
+  public String getDesc() {
+	return desc;
+  }
 
   /**
    * 重写toString,单个转化成json

+ 66 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/excel/ChannelOrderExcel.java

@@ -0,0 +1,66 @@
+package com.qs.mp.channel.domain.excel;
+
+import com.qs.mp.common.annotation.Excel;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * @author zhongcp
+ * @Date 2022/3/3
+ */
+@Data
+public class ChannelOrderExcel {
+
+	@Excel(name = "盲票组名称")
+	private String title;
+
+	@Excel(name = "盲票包数量")
+	private Integer orderNum;
+
+	@Excel(name = "盲票序列号范围")
+	private String snRrange;
+
+	@Excel(name = "下单时间")
+	private Date createdTime;
+	
+	/**
+	 * 订单状态 >=1 已发货
+	 */
+	@Excel(name = "发货状态")
+	private String itemStatus;
+	
+
+	@Excel(name = "订单编号")
+	private String orderId;
+	
+	/**
+	 * 订单状态
+	 */
+	@Excel(name = "订单状态")
+	private String status;
+	
+	@Excel(name = "经销商名称")
+	private String channelName;
+	
+	@Excel(name = "经销商上级渠道名称")
+	private String parentName;  // 上级渠道名称
+
+	/**
+	 * 收货人
+	 */
+	@Excel(name = "收货人")
+	private String receiver;
+
+	/**
+	 * 收货人电话
+	 */
+	@Excel(name = "联系电话")
+	private String tel;
+
+	/**
+	 * (省-市-区-详细地址)
+	 */
+	@Excel(name = "收货地址")
+	private String address;
+
+}

+ 1 - 1
mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelOrderVO.java

@@ -12,7 +12,7 @@ import lombok.Data;
 @Data
 public class ChannelOrderVO extends ChannelOrder {
 
-  private List<ChannelOrderItem> items;
+  private List<ChannelOrderItemVO> items;
 
   private String channelName;  // 经销商名称
   

+ 9 - 0
mp-service/src/main/java/com/qs/mp/channel/mapper/ChannelOrderMapper.java

@@ -26,4 +26,13 @@ public interface ChannelOrderMapper extends BaseMapper<ChannelOrder> {
 	 * @return
 	 */
 	public List<ChannelOrderVO> selectChannelOrderVoList(@Param(Constants.WRAPPER) Wrapper<ChannelOrder> wrapper);
+	
+	
+	/**
+	 * 查询满足筛选条件的经销商订单数量
+	 *
+	 * @param wrapper
+	 * @return
+	 */
+	int selectChannelOrderCount(@Param(Constants.WRAPPER) Wrapper<ChannelOrder> wrapper);
 }

+ 9 - 0
mp-service/src/main/java/com/qs/mp/channel/service/IChannelOrderService.java

@@ -65,4 +65,13 @@ public interface IChannelOrderService extends IService<ChannelOrder> {
 	 */
 	public List<ChannelOrderVO> selectChannelOrderVoList(Wrapper<ChannelOrder> wrapper);
 	
+	
+	/**
+	 * 查询满足筛选条件的经销商订单数量
+	 *
+	 * @param wrapper
+	 * @return
+	 */
+	int selectChannelOrderCount(Wrapper<ChannelOrder> wrapper);
+	
 }

+ 7 - 0
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelOrderServiceImpl.java

@@ -282,4 +282,11 @@ public class ChannelOrderServiceImpl extends
 	public List<ChannelOrderVO> selectChannelOrderVoList(Wrapper<ChannelOrder> wrapper) {
 		return getBaseMapper().selectChannelOrderVoList(wrapper);
 	}
+
+	@Override
+	public int selectChannelOrderCount(Wrapper<ChannelOrder> wrapper) {
+		return getBaseMapper().selectChannelOrderCount(wrapper);
+	}
+	
+	
 }

+ 11 - 1
mp-service/src/main/resources/mapper/channel/ChannelOrderMapper.xml

@@ -32,7 +32,7 @@
         order_id, channel_id, title, order_amt, discount_amt, freight_amt, pay_amt, status, pkg_num, memo, receiver, tel, province, city, area, address, delivery_id, delivery_flow_id, delivery_time, created_time, updated_time
     </sql>
     
-    <!-- 查询用户提货订单列表 -->
+    <!-- 查询经销商订单列表 -->
     <select id="selectChannelOrderVoList" resultType="com.qs.mp.channel.domain.vo.ChannelOrderVO">
 		select DISTINCT t1.* , t2.name channelName, t3.name parentName
 		from mp_channel_order t1
@@ -40,5 +40,15 @@
 		left join mp_channel t3 on t2.parent_id = t3.channel_id
 		${ew.customSqlSegment}
 	</select>
+	
+	
+	<!-- 查询经销商订单数量 -->
+    <select id="selectChannelOrderCount" resultType="integer">
+		select count(DISTINCT t1.order_id) 
+		from mp_channel_order t1
+		left join mp_channel t2 on t1.channel_id = t2.channel_id
+		left join mp_channel t3 on t2.parent_id = t3.channel_id
+		${ew.customSqlSegment}
+	</select>
 
 </mapper>