wangxiaoming 5 anni fa
parent
commit
9dbf770f0f

+ 3 - 0
iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/order/Order.java

@@ -6,6 +6,7 @@ import java.util.List;
 
 import com.iamberry.wechat.core.entity.PageBean;
 import com.iamberry.wechat.core.entity.order.OrderItem;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * 销售订单表 实体类
@@ -60,7 +61,9 @@ public class Order implements java.io.Serializable{
 	
 	private List<OrderOperation> operations;	//订单操作工具类
 	private String orderLinkStatus;			//订单状态描述
+	@DateTimeFormat(pattern="yyyy-MM-dd")
 	private Date beginDate;	//开始时间
+	@DateTimeFormat(pattern="yyyy-MM-dd")
 	private Date endDate;		//结束时间
 	
 	private int deadline;		//返利期限,以秒为单位,必须大于此时间才能返利

+ 9 - 2
iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/order/OrderItem.java

@@ -44,6 +44,7 @@ public class OrderItem implements Serializable {
 	//			5:青色	6:蓝色	7:紫色	8:白色
 	
 	private String produectRemark;		//产品备注,存放百胜商品69码的
+	private String productTypeName;		//产品类型名称
 
 	private Integer itemColorId;			//产品颜色id
 	private String itemProductColor;		//产品颜色
@@ -217,6 +218,12 @@ public class OrderItem implements Serializable {
 	public void setProductStatus(Integer productStatus) {
 		this.productStatus = productStatus;
 	}
-	
-	
+
+	public String getProductTypeName() {
+		return productTypeName;
+	}
+
+	public void setProductTypeName(String productTypeName) {
+		this.productTypeName = productTypeName;
+	}
 }

+ 10 - 0
iamberry-common-tool/src/main/java/com/iamberry/wechat/tools/ObjectExcelView.java

@@ -20,6 +20,16 @@ import org.springframework.web.servlet.view.document.AbstractExcelView;
  */
 public class ObjectExcelView extends AbstractExcelView{
 
+	private String name = "";
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
 	/**
 	 * model参数为:
 	 * 	fileName: 下载的文件名称

+ 6 - 0
iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/order/AdminOrderService.java

@@ -103,4 +103,10 @@ public interface AdminOrderService {
 	 * @return
 	 */
 	NumberBacklogDto selectNumberBacklog();
+
+	/**
+	 * 获取订单列表-Excel
+	 * @return
+	 */
+	List<Order> getOrderListToExcel(Order order);
 }

+ 6 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/AdminOrderMapper.java

@@ -125,4 +125,10 @@ public interface AdminOrderMapper {
 	 * @return
 	 */
 	NumberBacklogDto selectNumberBacklog();
+	/**
+	 * 下载Excel
+	 * @param order
+	 * @return
+	 */
+	List<Order> getOrderListToExcel(Order order);
 }

+ 45 - 1
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/adminOrderMapper.xml

@@ -467,5 +467,49 @@ Reback_status  = 2) placeId
 				SALES_ORDERID  =  #{item.salesOrderid,jdbcType=VARCHAR} 
 		</foreach>
 	</update>
-	
+
+
+	<resultMap  id="BaseResultMap" type="Order" >
+		<result    column="sales_orderid"    property="salesOrderid" />
+		<collection property="orderItemList" column="sales_orderid" javaType="ArrayList" select="getOrderItemListToExcel"/>
+	</resultMap>
+	<select id="getOrderListToExcel" resultMap="BaseResultMap" parameterType="Order" >
+		select
+		t.*,
+		uuer.user_nickname
+		from tb_iamberry_shop_sales_order t
+		LEFT JOIN tb_iamberry_user_userinfo uuer ON t.sales_openid = uuer.user_openid
+		<where>
+			t.sales_status IN (2,5,9,10,11,12)
+			<if test="beginDate != null">
+				<![CDATA[AND DATE_FORMAT(t.SALES_CREATE_DATE, '%Y-%m-%d') >= ]]>DATE_FORMAT(#{beginDate},'%Y-%m-%d')
+			</if>
+			<if test="endDate != null">
+				<![CDATA[AND DATE_FORMAT(t.SALES_CREATE_DATE, '%Y-%m-%d') <= ]]>DATE_FORMAT(#{endDate},'%Y-%m-%d')
+			</if>
+		</where>
+		ORDER BY t.SALES_CREATE_DATE DESC
+	</select>
+	<select id="getOrderItemListToExcel" resultType="OrderItem" parameterType="String" >
+		select
+		t.item_id,
+		t.item_sales_orderid,
+		t.item_product_id,
+		t.item_color_id,
+		t.item_num,
+		t.item_total,
+		t.item_create_date,
+		t.item_product_name,
+		t.item_product_discount,
+		t.item_product_price,
+		t.item_product_pic,
+		t.item_product_type,
+		pt.type_name AS productTypeName,
+		pc.color_name AS itemProductColor
+		from tb_iamberry_shop_order_item t
+		LEFT JOIN tb_iamberry_product_info pi ON t.item_product_id = pi.product_id
+		LEFT JOIN tb_iamberry_product_color pc ON t.item_color_id = pc.color_id
+		LEFT JOIN tb_iamberry_product_type pt ON pi.product_type = pt.type_id
+		WHERE t.item_sales_orderid = #{salesOrderid}
+	</select>
 </mapper>

+ 4 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/order/AdminOrderServiceImpl.java

@@ -694,4 +694,8 @@ public class AdminOrderServiceImpl implements AdminOrderService {
 	public NumberBacklogDto selectNumberBacklog() {
 		return adminOrderDao.selectNumberBacklog();
 	}
+	@Override
+	public List<Order> getOrderListToExcel(Order order) {
+		return adminOrderDao.getOrderListToExcel(order);
+	}
 }

+ 2 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/order/dao/AdminOrderDao.java

@@ -141,4 +141,6 @@ public interface AdminOrderDao {
 	 * @return
 	 */
 	NumberBacklogDto selectNumberBacklog();
+
+	List<Order> getOrderListToExcel(Order order);
 }

+ 4 - 1
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/order/dao/impl/AdminOrderDaoImpl.java

@@ -236,5 +236,8 @@ public class AdminOrderDaoImpl implements AdminOrderDao {
 	public NumberBacklogDto selectNumberBacklog() {
 		return adminOrderMapper.selectNumberBacklog();
 	}
-	
+	@Override
+	public List<Order> getOrderListToExcel(Order order) {
+		return adminOrderMapper.getOrderListToExcel(order);
+	}
 }

+ 148 - 6
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/AdminOrderHandlers.java

@@ -4,13 +4,13 @@ import java.io.IOException;
 import java.net.URLDecoder;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.iamberry.wechat.core.entity.OrderUtil;
+import com.iamberry.wechat.tools.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -38,10 +38,6 @@ import com.iamberry.wechat.face.reback.RebackServices;
 import com.iamberry.wechat.face.relationship.DealerRelationService;
 import com.iamberry.wechat.face.relationship.WdRelationService;
 import com.iamberry.wechat.handles.mq.MQServiceProxy;
-import com.iamberry.wechat.tools.DateTimeUtil;
-import com.iamberry.wechat.tools.NameUtils;
-import com.iamberry.wechat.tools.ResultInfo;
-import com.iamberry.wechat.tools.SendMessageUtil;
 
 @Controller
 @RequestMapping("/admin/order")
@@ -818,4 +814,150 @@ public class AdminOrderHandlers {
 			return "{\"status\":\"false\",\"info\":\"备注失败,请稍后重试!\"}";
 		}
 	}
+
+	/**
+	 * 下载导出订单
+	 */
+	@ResponseBody
+	@RequestMapping(value = "/download_order")
+	public ModelAndView downloadOrder(HttpServletRequest request,Order order){
+		List<Order> orderList = adminOrderService.getOrderListToExcel(order);
+
+		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+		// 准备model
+		Map<String, Object> model = new HashMap<String, Object>();
+		model.put("fileName", "Aiberle销售订单");	// 下载文件名称
+		// 标题
+		List<String> titles = new ArrayList<String>();
+		titles.add("时间");
+		titles.add("订单编号");
+//		titles.add("产品类型");
+		titles.add("产品名称");
+		titles.add("产品颜色");
+		titles.add("数量");
+//		titles.add("订单金额");
+		titles.add("支付金额");
+		titles.add("订单状态");
+		titles.add("优惠券使用");
+		titles.add("收货人");
+		titles.add("昵称");
+		titles.add("手机号码");
+		titles.add("地址");
+		model.put("titles", titles);
+		List<List<Object>> countexts = new ArrayList<List<Object>>();
+		for (Order info : orderList) {
+			Integer salesAmount = 0;	//总金额
+			Integer salesYetAmount = info.getSalesYetAmount();	//总支付金额
+			for (int i=0; i<info.getOrderItemList().size(); i++) {
+				salesAmount += info.getOrderItemList().get(i).getItemNum()*info.getOrderItemList().get(i).getItemProductDiscount();
+			}
+			for (int j = 0; j < info.getOrderItemList().size() ; j++) {
+				OrderItem item = info.getOrderItemList().get(j);
+
+				List<Object> row = new ArrayList<Object>();
+				row.add(info.getSalesCreateDate() == null ? "":formatter.format(info.getSalesCreateDate()));
+				row.add(info.getSalesOrderid() == null ? "":info.getSalesOrderid());
+//				row.add(item.getProductTypeName() == null ? "":item.getProductTypeName());
+				row.add(item.getItemProductName() == null ? "":item.getItemProductName());
+				row.add(item.getItemProductColor() == null ? "":item.getItemProductColor());
+				row.add(item.getItemNum() == null ? "":item.getItemNum());
+
+				if((j+1) >=  info.getOrderItemList().size()){
+					Double dd = Double.valueOf(salesYetAmount);
+					row.add(dd/100);  //订单金额
+				}else{
+					if(salesAmount > 0 ){
+						Double itemPay =  Double.valueOf(info.getSalesYetAmount()) * (item.getItemNum()*item.getItemProductDiscount())/salesAmount;
+						Integer itemDiscount = itemPay.intValue();
+						Double dd = Double.valueOf(itemDiscount);
+						row.add(dd/100);  //订单金额
+						salesYetAmount -= itemDiscount;
+					}else{
+						row.add(0);  //订单金额
+					}
+				}
+
+				String statusString = "";
+				switch (info.getSalesStatus()){
+					case 0:
+						statusString = "取消订单";
+						break;
+					case 1:
+						statusString = "待支付";
+						break;
+					case 2:
+						statusString = "已支付、待发货";
+						break;
+					case 3:
+						statusString = "退款申请中";
+						break;
+					case 4:
+						statusString = "已退款";
+						break;
+					case 5:
+						statusString = "已发货";
+						break;
+					case 6:
+						statusString = "申请退货中";
+						break;
+					case 7:
+						statusString = "退货中";
+						break;
+					case 8:
+						statusString = "订单退货";
+						break;
+					case 9:
+						statusString = "换货中";
+						break;
+					case 10:
+						statusString = "换货完成";
+						break;
+					case 11:
+						statusString = "申请换货中";
+						break;
+					case 12:
+						statusString = "订单完成";
+						break;
+				}
+				row.add(statusString);  //订单状态
+				if(info.getCouponId() != null){
+					row.add("是");
+				}else{
+					row.add("否");
+				}
+				row.add(info.getSalesAddressName() == null ? "":info.getSalesAddressName());
+				try{
+					row.add(info.getUserNickname() == null ? "":java.net.URLDecoder.decode(info.getUserNickname(), "UTF-8"));
+				}catch (Exception e){
+					row.add("");
+				}
+				row.add(info.getSalesAddressTel() == null ? "":info.getSalesAddressTel());
+				row.add(info.getSalesAddressInfo() == null ? "":info.getSalesAddressInfo());
+				countexts.add(row);
+			}
+		}
+		model.put("varList", countexts);
+
+		ObjectExcelView erv = new ObjectExcelView();
+		SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
+		String name = "";
+		if(order.getBeginDate() != null){
+			name += sd.format(order.getBeginDate());
+		}else{
+			Calendar calendar = Calendar.getInstance();
+			calendar.set(Calendar.DAY_OF_MONTH,1);
+			name += sd.format(calendar.getTime());
+		}
+		name += "-";
+		if( order.getEndDate() != null){
+			name += sd.format(order.getEndDate());
+		}else{
+			name += sd.format(new Date());
+		}
+		erv.setName(name);
+		ModelAndView mv = new ModelAndView(erv, model);
+		return mv;
+	}
+
 }

+ 17 - 3
iamberry-wechat-web/src/main/webapp/WEB-INF/views/admin/order/orderList.jsp

@@ -108,6 +108,9 @@
 			<button name="" id="submitBtn" class="btn btn-success" type="submit">
 				<i class="Hui-iconfont">&#xe665;</i> 搜索
 			</button>
+
+			<button style="" name="" class="btn btn-danger" type="button" onclick="downloadExcel()">下载订单</button>
+		</form>
 		</form>
 		</div>
 		<div class="cl pd-5 bg-1 bk-gray mt-20">
@@ -363,9 +366,20 @@
 				  		  }
 					    });
 					}) */
-				
-				
-				
+
+
+                function downloadExcel(){
+                    var beginDate = $("#beginDate").val();
+                    var endDate = $("#endDate").val();
+                    if(beginDate == "" && endDate == ""){
+                        var dd = new Date();
+                        beginDate = dd.getFullYear() + "-" + ( dd.getMonth()+1) + "-" + 01;
+
+                        dd.setMonth(dd.getMonth()+1);//获取下月月份
+                        endDate = dd.getFullYear() + "-" + ( dd.getMonth()+1) + "-" + 01;
+                    }
+                    window.location=" <%=request.getContextPath()%>/admin/order/download_order?beginDate="+ beginDate +"&endDate=" + endDate;
+                }
 				</script>
 </body>
 </html>