|
@@ -3,24 +3,24 @@ package com.iamberry.rst.controllers.order;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.iamberry.rst.core.cm.SalesOrder;
|
|
import com.iamberry.rst.core.cm.SalesOrder;
|
|
import com.iamberry.rst.core.cm.SalesOrderItem;
|
|
import com.iamberry.rst.core.cm.SalesOrderItem;
|
|
|
|
+import com.iamberry.rst.core.cm.StoreInfo;
|
|
import com.iamberry.rst.core.cm.StoreShip;
|
|
import com.iamberry.rst.core.cm.StoreShip;
|
|
import com.iamberry.rst.core.order.EOrderRequestData;
|
|
import com.iamberry.rst.core.order.EOrderRequestData;
|
|
import com.iamberry.rst.core.order.PostInfo;
|
|
import com.iamberry.rst.core.order.PostInfo;
|
|
import com.iamberry.rst.core.order.PostOrderNum;
|
|
import com.iamberry.rst.core.order.PostOrderNum;
|
|
import com.iamberry.rst.core.order.ProductColor;
|
|
import com.iamberry.rst.core.order.ProductColor;
|
|
import com.iamberry.rst.core.page.PagedResult;
|
|
import com.iamberry.rst.core.page.PagedResult;
|
|
|
|
+import com.iamberry.rst.core.pts.PtsBatch;
|
|
import com.iamberry.rst.core.tools.LogisticsInfo;
|
|
import com.iamberry.rst.core.tools.LogisticsInfo;
|
|
import com.iamberry.rst.faces.cm.PostOrderNumService;
|
|
import com.iamberry.rst.faces.cm.PostOrderNumService;
|
|
import com.iamberry.rst.faces.cm.SalesOrderService;
|
|
import com.iamberry.rst.faces.cm.SalesOrderService;
|
|
|
|
+import com.iamberry.rst.faces.cm.StoreInfoService;
|
|
import com.iamberry.rst.faces.cm.StoreShipService;
|
|
import com.iamberry.rst.faces.cm.StoreShipService;
|
|
import com.iamberry.rst.faces.order.LogisticsInfoService;
|
|
import com.iamberry.rst.faces.order.LogisticsInfoService;
|
|
import com.iamberry.rst.faces.product.ProductService;
|
|
import com.iamberry.rst.faces.product.ProductService;
|
|
import com.iamberry.rst.utils.OrderUtils;
|
|
import com.iamberry.rst.utils.OrderUtils;
|
|
import com.iamberry.rst.utils.StitchAttrUtil;
|
|
import com.iamberry.rst.utils.StitchAttrUtil;
|
|
-import com.iamberry.wechat.tools.AddrUtil;
|
|
|
|
-import com.iamberry.wechat.tools.DateTimeUtil;
|
|
|
|
-import com.iamberry.wechat.tools.ResponseJson;
|
|
|
|
-import com.iamberry.wechat.tools.UUIDGenerator;
|
|
|
|
|
|
+import com.iamberry.wechat.tools.*;
|
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -36,6 +36,7 @@ import java.io.File;
|
|
import java.io.FileReader;
|
|
import java.io.FileReader;
|
|
import java.io.FileWriter;
|
|
import java.io.FileWriter;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -59,10 +60,15 @@ public class AwaitSendController {
|
|
private ProductService productService;
|
|
private ProductService productService;
|
|
@Autowired
|
|
@Autowired
|
|
private PostOrderNumService postOrderNumService;
|
|
private PostOrderNumService postOrderNumService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private StoreInfoService storeInfoService;
|
|
|
|
|
|
|
|
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(AwaitSendController.class);
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(AwaitSendController.class);
|
|
|
|
|
|
|
|
+
|
|
|
|
+ private static List<LogisticsInfo> LOGISTICSINFO_LIST;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 仓库查询待发货订单
|
|
* 仓库查询待发货订单
|
|
* @param request
|
|
* @param request
|
|
@@ -395,7 +401,7 @@ public class AwaitSendController {
|
|
*
|
|
*
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- @RequiresPermissions("salesOrder:confirm:salesOrder")
|
|
|
|
|
|
+ @RequiresPermissions("salesOrder:send:salesOrder")
|
|
@RequestMapping(value = "/to_manual_delivery")
|
|
@RequestMapping(value = "/to_manual_delivery")
|
|
public ModelAndView toDistributionPostFirm(HttpServletRequest request,String salesId) {
|
|
public ModelAndView toDistributionPostFirm(HttpServletRequest request,String salesId) {
|
|
ModelAndView mv = new ModelAndView("order/salesOrder/manual_delivery");
|
|
ModelAndView mv = new ModelAndView("order/salesOrder/manual_delivery");
|
|
@@ -411,7 +417,7 @@ public class AwaitSendController {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@ResponseBody
|
|
@ResponseBody
|
|
- @RequiresPermissions("salesOrder:confirm:salesOrder")
|
|
|
|
|
|
+ @RequiresPermissions("salesOrder:send:salesOrder")
|
|
@RequestMapping("/manual_delivery")
|
|
@RequestMapping("/manual_delivery")
|
|
public ResponseJson listSalesPostFirm(HttpServletRequest request, SalesOrder salesOrder) {
|
|
public ResponseJson listSalesPostFirm(HttpServletRequest request, SalesOrder salesOrder) {
|
|
ResponseJson rj = ResponseJson.getFAILURE();
|
|
ResponseJson rj = ResponseJson.getFAILURE();
|
|
@@ -712,18 +718,17 @@ public class AwaitSendController {
|
|
@ResponseBody
|
|
@ResponseBody
|
|
@RequiresPermissions("salesOrder:post_statistics:deliver")
|
|
@RequiresPermissions("salesOrder:post_statistics:deliver")
|
|
@RequestMapping("/getPostStatistics")
|
|
@RequestMapping("/getPostStatistics")
|
|
- public ResponseJson getPostStatistics(HttpServletRequest request) {
|
|
|
|
|
|
+ public ResponseJson getPostStatistics(HttpServletRequest request,SalesOrder salesOrder) {
|
|
ResponseJson rj = ResponseJson.getSUCCESS();
|
|
ResponseJson rj = ResponseJson.getSUCCESS();
|
|
- SalesOrder salesOrder = new SalesOrder();
|
|
|
|
List<PostOrderNum> postOrderNumList = postOrderNumService.getAllNum(salesOrder);
|
|
List<PostOrderNum> postOrderNumList = postOrderNumService.getAllNum(salesOrder);
|
|
|
|
|
|
List<PostOrderNum> postProductNumList = postOrderNumService.getProductNum(salesOrder);
|
|
List<PostOrderNum> postProductNumList = postOrderNumService.getProductNum(salesOrder);
|
|
|
|
|
|
salesOrder.setSalesShippingStatus(1);
|
|
salesOrder.setSalesShippingStatus(1);
|
|
- List<PostOrderNum> postSendNumList = postOrderNumService.getAllNum(salesOrder);
|
|
|
|
|
|
+ List<PostOrderNum> postSendNumList = postOrderNumService.getSendNum(salesOrder);
|
|
|
|
|
|
salesOrder.setSalesDeliver(2);
|
|
salesOrder.setSalesDeliver(2);
|
|
- List<PostOrderNum> postDeliverNumList = postOrderNumService.getAllNum(salesOrder);
|
|
|
|
|
|
+ List<PostOrderNum> postDeliverNumList = postOrderNumService.getDeliverNum(salesOrder);
|
|
|
|
|
|
postOrderNumList = this.margeList(postOrderNumList,postProductNumList);
|
|
postOrderNumList = this.margeList(postOrderNumList,postProductNumList);
|
|
postOrderNumList = this.margeList(postOrderNumList,postSendNumList);
|
|
postOrderNumList = this.margeList(postOrderNumList,postSendNumList);
|
|
@@ -752,22 +757,268 @@ public class AwaitSendController {
|
|
onePostOrderNum.setLogisticsDeliverNum(twoPostOrderNum.getLogisticsDeliverNum());
|
|
onePostOrderNum.setLogisticsDeliverNum(twoPostOrderNum.getLogisticsDeliverNum());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return oneList;
|
|
return oneList;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 跳转订单统计页面
|
|
|
|
- *
|
|
|
|
|
|
+ * 分页查询订单列表信息
|
|
|
|
+ * @param request
|
|
|
|
+ * @param salesOrder
|
|
|
|
+ * @param pageSize
|
|
|
|
+ * @param pageNO
|
|
|
|
+ * @param totalNum
|
|
* @return
|
|
* @return
|
|
|
|
+ * @throws Exception
|
|
*/
|
|
*/
|
|
- @RequiresPermissions("salesOrder:order_statistics:deliver")
|
|
|
|
@RequestMapping(value = "/order_statistics")
|
|
@RequestMapping(value = "/order_statistics")
|
|
- public ModelAndView orderStatistics(HttpServletRequest request) {
|
|
|
|
|
|
+ @RequiresPermissions("salesOrder:order_statistics:deliver")
|
|
|
|
+ public ModelAndView listOrderPage(HttpServletRequest request, SalesOrder salesOrder,
|
|
|
|
+ @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
|
|
|
|
+ @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
|
|
|
|
+ @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception {
|
|
ModelAndView mv = new ModelAndView("order/statistics/order_statistics");
|
|
ModelAndView mv = new ModelAndView("order/statistics/order_statistics");
|
|
|
|
+
|
|
|
|
+ //分页获取订单信息
|
|
|
|
+ PagedResult<SalesOrder> pagedResult = salesOrderService.salesOrderListAndItemPage(pageNO, pageSize, salesOrder,totalNum == 0);
|
|
|
|
+ if (totalNum != 0) {
|
|
|
|
+ pagedResult.setTotal(totalNum);
|
|
|
|
+ }
|
|
|
|
+ List<StoreInfo> listStoreInfo = storeInfoService.listStore(new StoreInfo());
|
|
|
|
+ List<LogisticsInfo> logisticsInfoList = logisticsInfoService.getLogisticsInfoList(new LogisticsInfo());
|
|
|
|
+ List<ProductColor> productColorList = productService.listproductAndColor(new ProductColor());
|
|
|
|
+ StitchAttrUtil.getSa()
|
|
|
|
+ .addDatePro("yyyy-MM-dd HH:mm:ss","startDate","endDate")
|
|
|
|
+ .addNoPro("salesOrderItemList")
|
|
|
|
+ .setModelAndView(salesOrder, mv, "/admin/await_send/order_statistics", pagedResult);
|
|
|
|
+
|
|
|
|
+ mv.addObject("listStoreInfo",listStoreInfo);
|
|
|
|
+ mv.addObject("logisticsInfoList",logisticsInfoList);
|
|
|
|
+ mv.addObject("productColorList",productColorList);
|
|
|
|
+
|
|
|
|
+ return mv;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 下载订单,返回给各个平台
|
|
|
|
+ * @param request
|
|
|
|
+ * @return
|
|
|
|
+ * @throws IOException
|
|
|
|
+ */
|
|
|
|
+ @ResponseBody
|
|
|
|
+ @RequestMapping("/val_download_order_statistics")
|
|
|
|
+ @RequiresPermissions("salesOrder:order_statistics:deliver")
|
|
|
|
+ public ResponseJson valDownloadOrderStatistics(HttpServletRequest request,SalesOrder so) throws Exception {
|
|
|
|
+ ResponseJson rj = ResponseJson.getFAILURE();
|
|
|
|
+ Integer num = postOrderNumService.listSalesOrderAndItemNum(so);
|
|
|
|
+ if(num > 20000){
|
|
|
|
+ rj.setResultMsg("下载订单超过20000条,请精确查询条件");
|
|
|
|
+ return rj;
|
|
|
|
+ }
|
|
|
|
+ return ResponseJson.getSUCCESS();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 下载订单,返回给各个平台
|
|
|
|
+ * @param request
|
|
|
|
+ * @return
|
|
|
|
+ * @throws IOException
|
|
|
|
+ */
|
|
|
|
+ @RequestMapping("/download_order_statistics")
|
|
|
|
+ @RequiresPermissions("salesOrder:order_statistics:deliver")
|
|
|
|
+ public ModelAndView downloadOrderExcel(HttpServletRequest request,SalesOrder so) throws Exception {
|
|
|
|
+
|
|
|
|
+ List<SalesOrder> temporarySalesOrderList = postOrderNumService.listSalesOrderAndItem(so);
|
|
|
|
+
|
|
|
|
+ if(temporarySalesOrderList.size() > 20000){
|
|
|
|
+ return new ModelAndView().addObject("下载出错,下载数量过大");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 准备model
|
|
|
|
+ Map<String, Object> model = new HashMap<String, Object>();
|
|
|
|
+ model.put("fileName", "订单列表"); // 下载文件名称
|
|
|
|
+
|
|
|
|
+ // 标题
|
|
|
|
+ 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("商品数量");
|
|
|
|
+ titles.add("销售公司名称");
|
|
|
|
+ titles.add("店铺名称");
|
|
|
|
+ titles.add("打单状态");
|
|
|
|
+ titles.add("打单日期");
|
|
|
|
+ titles.add("是否出库");
|
|
|
|
+ titles.add("出库日期");
|
|
|
|
+ model.put("titles", titles);
|
|
|
|
+ PtsBatch ptsBatch = new PtsBatch();
|
|
|
|
+ List<List<Object>> countexts = new ArrayList<List<Object>>();
|
|
|
|
+ if(temporarySalesOrderList != null && temporarySalesOrderList.size() >0){
|
|
|
|
+ for (SalesOrder salesOrder : temporarySalesOrderList) {
|
|
|
|
+ List<Object> row = new ArrayList<Object>();
|
|
|
|
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日");
|
|
|
|
+ row.add(salesOrder.getSalesCreateTime() == null ? null:formatter.format(salesOrder.getSalesCreateTime()));
|
|
|
|
+ row.add(salesOrder.getSalesOrderId() == null ? null:salesOrder.getSalesOrderId());
|
|
|
|
+ row.add(salesOrder.getSalesDealCode() == null ? null:salesOrder.getSalesDealCode());
|
|
|
|
+ if(salesOrder.getSalesCustomerId() == null){
|
|
|
|
+ row.add("正常订单");
|
|
|
|
+ }else{
|
|
|
|
+ if(salesOrder.getCustomerIsSolve() == null){
|
|
|
|
+ row.add("售后订单");
|
|
|
|
+ }else{
|
|
|
|
+ switch (salesOrder.getCustomerIsSolve()){
|
|
|
|
+ case 1:
|
|
|
|
+ row.add("售后订单(已解决)");
|
|
|
|
+ break;
|
|
|
|
+ case 2:
|
|
|
|
+ row.add("售后订单(未解决)");
|
|
|
|
+ break;
|
|
|
|
+ case 3:
|
|
|
|
+ row.add("售后订单(换新)");
|
|
|
|
+ break;
|
|
|
|
+ case 4:
|
|
|
|
+ row.add("售后订单(维修)");
|
|
|
|
+ break;
|
|
|
|
+ case 5:
|
|
|
|
+ row.add("售后订单(补发)");
|
|
|
|
+ break;
|
|
|
|
+ case 6:
|
|
|
|
+ row.add("售后订单(退货)");
|
|
|
|
+ break;
|
|
|
|
+ case 7:
|
|
|
|
+ row.add("售后订单(无理由退货)");
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ row.add("售后订单");
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ row.add(salesOrder.getSalesAddressName() == null ? null:salesOrder.getSalesAddressName());
|
|
|
|
+ row.add(salesOrder.getSalesAddressTel() == null ? null:salesOrder.getSalesAddressTel());
|
|
|
|
+ String pro="",city="";
|
|
|
|
+ try{
|
|
|
|
+ //分割省市
|
|
|
|
+ if(salesOrder.getSalesAddressInfo() == null){
|
|
|
|
+ pro = "";
|
|
|
|
+ city = "";
|
|
|
|
+ }else{
|
|
|
|
+ String[] strarray;
|
|
|
|
+ strarray = salesOrder.getSalesAddressInfo().split(" ");
|
|
|
|
+ if(strarray != null && strarray.length > 3){
|
|
|
|
+ pro = strarray[0];
|
|
|
|
+ city = strarray[1];
|
|
|
|
+ }else{
|
|
|
|
+ strarray = salesOrder.getSalesAddressInfo().split("_");
|
|
|
|
+ if(strarray != null && strarray.length > 3){
|
|
|
|
+ pro = strarray[0];
|
|
|
|
+ city = strarray[1];
|
|
|
|
+ }else{
|
|
|
|
+ strarray = salesOrder.getSalesAddressInfo().split("-");
|
|
|
|
+ if(strarray != null && strarray.length > 3){
|
|
|
|
+ pro = strarray[0];
|
|
|
|
+ city = strarray[1];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ row.add(pro);
|
|
|
|
+ row.add(city);
|
|
|
|
+
|
|
|
|
+ row.add(salesOrder.getSalesAddressInfo() == null ? null:salesOrder.getSalesAddressInfo());
|
|
|
|
+ String frim = replace(salesOrder.getSalesPostFirm());
|
|
|
|
+ row.add(frim);
|
|
|
|
+ row.add(salesOrder.getSalesPostNum() == null ? null:salesOrder.getSalesPostNum());
|
|
|
|
+ row.add(salesOrder.getItemProductName() == null ? null:salesOrder.getItemProductName()+(salesOrder.getItemProductColor() == null ? null:"-"+salesOrder.getItemProductColor()));
|
|
|
|
+ row.add(salesOrder.getItemProductColor() == null ? null:salesOrder.getItemProductColor());
|
|
|
|
+ row.add(salesOrder.getItemNum() == null ? null:salesOrder.getItemNum());
|
|
|
|
+ row.add(salesOrder.getCompanyName() == null ? null:salesOrder.getCompanyName());
|
|
|
|
+ row.add(salesOrder.getStoreName() == null ? null:salesOrder.getStoreName());
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ String salesShoppingStatus = "";
|
|
|
|
+ if(salesOrder.getSalesShippingStatus() == null){
|
|
|
|
+ salesShoppingStatus = "未打单";
|
|
|
|
+ }else{
|
|
|
|
+ // 0(未发货)1(已发货,即已扫描出库)3(备货中)4(收货) 11(已通知配货,后加)
|
|
|
|
+ switch (salesOrder.getSalesShippingStatus()){
|
|
|
|
+ case 0:
|
|
|
|
+ salesShoppingStatus = "未打单";
|
|
|
|
+ break;
|
|
|
|
+ case 1:
|
|
|
|
+ salesShoppingStatus = "已打单";
|
|
|
|
+ break;
|
|
|
|
+ case 11:
|
|
|
|
+ salesShoppingStatus = "通知配货";
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ salesShoppingStatus = "其他状态";
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ row.add(salesShoppingStatus);
|
|
|
|
+ row.add(salesOrder.getSalesSendTime() == null ? null:formatter.format(salesOrder.getSalesSendTime()));
|
|
|
|
+
|
|
|
|
+ String salesDeliver = "";
|
|
|
|
+ if(salesOrder.getSalesDeliver() == null){
|
|
|
|
+ salesDeliver = "未出库";
|
|
|
|
+ }else{
|
|
|
|
+ ///出库状态 1:未出库 2:已出库
|
|
|
|
+ switch (salesOrder.getSalesShippingStatus()){
|
|
|
|
+ case 1:
|
|
|
|
+ salesDeliver = "未出库";
|
|
|
|
+ break;
|
|
|
|
+ case 2:
|
|
|
|
+ salesDeliver = "已出库";
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ salesDeliver = "未出库";
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ row.add(salesDeliver);
|
|
|
|
+ row.add(salesOrder.getSalesDeliverTime() == null ? null:formatter.format(salesOrder.getSalesDeliverTime()));
|
|
|
|
+ countexts.add(row);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ model.put("varList", countexts);
|
|
|
|
+ ObjectExcelView erv = new ObjectExcelView();
|
|
|
|
+ ModelAndView mv = new ModelAndView(erv,model);
|
|
return mv;
|
|
return mv;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**物流名称替换**/
|
|
|
|
+ public String replace(String code) {
|
|
|
|
+ String name = "";
|
|
|
|
+ if(code == null || "".equals(code)){
|
|
|
|
+ return "";
|
|
|
|
+ }
|
|
|
|
+ if(LOGISTICSINFO_LIST == null){
|
|
|
|
+ LOGISTICSINFO_LIST = logisticsInfoService.getLogisticsInfoList(new LogisticsInfo());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (LogisticsInfo logistics : LOGISTICSINFO_LIST) {
|
|
|
|
+ if(code .equalsIgnoreCase(logistics.getLogisticsRstCode())){
|
|
|
|
+ return logistics.getLogisticsName();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return "";
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|