|
@@ -1,13 +1,30 @@
|
|
|
package com.iamberry.rst.controllers.order;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.iamberry.rst.core.cm.SalesOrder;
|
|
|
+import com.iamberry.rst.core.cm.SalesOrderItem;
|
|
|
+import com.iamberry.rst.core.order.EOrderRequestData;
|
|
|
+import com.iamberry.rst.core.page.PagedResult;
|
|
|
+import com.iamberry.rst.core.tools.LogisticsInfo;
|
|
|
+import com.iamberry.rst.faces.cm.SalesOrderService;
|
|
|
+import com.iamberry.rst.utils.OrderUtils;
|
|
|
+import com.iamberry.rst.utils.StitchAttrUtil;
|
|
|
import com.iamberry.wechat.tools.ResponseJson;
|
|
|
+import org.apache.poi.hssf.record.cf.IconMultiStateFormatting;
|
|
|
+import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.io.*;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
/**
|
|
|
* @author 献
|
|
|
* @company 深圳爱贝源科技有限公司
|
|
@@ -19,27 +36,185 @@ import org.springframework.web.servlet.ModelAndView;
|
|
|
@RequestMapping("/admin/await_send")
|
|
|
public class AwaitSendController {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SalesOrderService salesOrderService;
|
|
|
+
|
|
|
+ private static final Logger LOGGER = LoggerFactory.getLogger(AwaitSendController.class);
|
|
|
+
|
|
|
// 仓库查询待发货订单
|
|
|
@RequestMapping("/listAwaitSendOrder")
|
|
|
- public ModelAndView listAwaitSendOrder(SalesOrder salesOrder) {
|
|
|
+ @RequiresPermissions("order:listAwaitSendOrder")
|
|
|
+ public ModelAndView listAwaitSendOrder(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) {
|
|
|
+ // 分页获取订单信息
|
|
|
+ PagedResult<SalesOrder> pagedResult = salesOrderService.listSalesOrderPage(pageNO, pageSize, salesOrder,totalNum == 0);
|
|
|
+ if (totalNum != 0) {
|
|
|
+ pagedResult.setTotal(totalNum);
|
|
|
+ }
|
|
|
+ // 查询订单项
|
|
|
+ if (pagedResult != null && pagedResult.getDataList() != null && !pagedResult.getDataList().isEmpty()) {
|
|
|
+ for (SalesOrder temp : pagedResult.getDataList()) {
|
|
|
+ SalesOrderItem item = new SalesOrderItem();
|
|
|
+ item.setItemOrderId(temp.getSalesId());
|
|
|
+ temp.setSalesOrderItemList(salesOrderService.listSalesOrderItem(item));
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- return null;
|
|
|
+ salesOrder.setSalesOrderItemList(null);
|
|
|
+ ModelAndView mv = new ModelAndView("order/salesOrder/list_wait_send_order");
|
|
|
+ StitchAttrUtil.getSa()
|
|
|
+ .addDatePro("yyyy-MM-dd HH:mm:ss","startDate","endDate")
|
|
|
+ .setModelAndView(salesOrder, mv, "/admin/await_send/listAwaitSendOrder", pagedResult);
|
|
|
+ mv.addObject("req",salesOrder);
|
|
|
+ return mv;
|
|
|
}
|
|
|
|
|
|
// 打单发货页面
|
|
|
@RequestMapping("/printOrderUI")
|
|
|
- public ModelAndView printOrderUI(@RequestParam("orderId") String[] orders) {
|
|
|
- return null;
|
|
|
+ @RequiresPermissions("order:listAwaitSendOrder")
|
|
|
+ public ModelAndView printOrderUI(@RequestParam(value = "orderId", required = false) String[] orders) {
|
|
|
+ SalesOrder salesOrder = new SalesOrder();
|
|
|
+ if (orders == null) {
|
|
|
+ salesOrder.setSalesShippingStatus(1);
|
|
|
+ } else {
|
|
|
+ salesOrder.setSalesIds(orders);
|
|
|
+ }
|
|
|
+ PagedResult<SalesOrder> pagedResult = salesOrderService.listSalesOrderPage(1, 1000, salesOrder, false);
|
|
|
+ // 查询订单项
|
|
|
+ if (pagedResult != null && pagedResult.getDataList() != null && !pagedResult.getDataList().isEmpty()) {
|
|
|
+ for (SalesOrder temp : pagedResult.getDataList()) {
|
|
|
+ SalesOrderItem item = new SalesOrderItem();
|
|
|
+ item.setItemOrderId(temp.getSalesId());
|
|
|
+ temp.setSalesOrderItemList(salesOrderService.listSalesOrderItem(item));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return new ModelAndView("order/salesOrder/print_order").addObject("page", pagedResult).addObject("posts", salesOrderService.getLogisticsInfo(new LogisticsInfo()));
|
|
|
}
|
|
|
|
|
|
// 打单发货
|
|
|
@ResponseBody
|
|
|
@RequestMapping("/printOrder")
|
|
|
- public ResponseJson printOrder(@RequestParam("post") String postType,
|
|
|
- @RequestParam("orderId") String orderId) {
|
|
|
+ @RequiresPermissions("order:listAwaitSendOrder")
|
|
|
+ public ResponseJson printOrder(@RequestParam("post") String post,
|
|
|
+ @RequestParam("orderId") String orderId,
|
|
|
+ @RequestParam("salesId") Integer salesId,
|
|
|
+ HttpServletRequest request) {
|
|
|
+ SalesOrder salesOrderInfo = salesOrderService.getSalesOrderById(salesId);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * 组装数据
|
|
|
+ */
|
|
|
+ EOrderRequestData eOrderRequestData = new EOrderRequestData();
|
|
|
+ eOrderRequestData.setShipperCode(post);
|
|
|
+ eOrderRequestData.setOrderCode(orderId);
|
|
|
+ eOrderRequestData.setPayType(3);
|
|
|
+ eOrderRequestData.setExpType("1");
|
|
|
+ eOrderRequestData.setCost(0.00);
|
|
|
+ eOrderRequestData.setOtherCost(0.0);
|
|
|
+ if (post.equalsIgnoreCase("DBL")) {
|
|
|
+ eOrderRequestData.setCustomerName("testdbl");
|
|
|
+ }
|
|
|
+ // 收件人信息
|
|
|
+ String[] addrs = salesOrderInfo.getSalesAddressInfo().split("-");
|
|
|
+ if (addrs.length <= 3) {
|
|
|
+ addrs = salesOrderInfo.getSalesAddressInfo().split(" ");
|
|
|
+ }
|
|
|
+ Map<String, Object> Receiver = new HashMap<String, Object>();
|
|
|
+ Receiver.put("Name", salesOrderInfo.getSalesAddressName());
|
|
|
+ Receiver.put("Tel", salesOrderInfo.getSalesAddressTel());
|
|
|
+ Receiver.put("ProvinceName", addrs[0]);
|
|
|
+ Receiver.put("CityName", addrs[1]);
|
|
|
+ Receiver.put("Address", salesOrderInfo.getSalesAddressInfo());
|
|
|
+ eOrderRequestData.setReceiver(Receiver);
|
|
|
+ // 发件人信息
|
|
|
+ Map<String, Object> Sender = new HashMap<String, Object>();
|
|
|
+ Sender.put("Name", "爱贝源");
|
|
|
+ Sender.put("Tel", "13112639663");
|
|
|
+ Sender.put("ProvinceName", "广东省");
|
|
|
+ Sender.put("CityName", "东莞市");
|
|
|
+ Sender.put("Address", "东莞清溪三中金龙工业区徐福记对面优尼雅电子科技");
|
|
|
+ eOrderRequestData.setSender(Sender);
|
|
|
+ // 产品信息
|
|
|
+ List<Map<String, Object>> Commodity = new ArrayList<>();
|
|
|
+ SalesOrderItem item = new SalesOrderItem();
|
|
|
+ item.setItemOrderId(salesOrderInfo.getSalesId());
|
|
|
+ List<SalesOrderItem> items = salesOrderService.listSalesOrderItem(item);
|
|
|
+ for (SalesOrderItem temp : items) {
|
|
|
+ Map<String, Object> product1 = new HashMap<String, Object>();
|
|
|
+ product1.put("GoodsName", temp.getItemProductName() + "(" + (temp.getItemProductColor()) + ")");
|
|
|
+ product1.put("GoodsWeight", 10.0);
|
|
|
+ Commodity.add(product1);
|
|
|
+ }
|
|
|
+ eOrderRequestData.setCommodity(Commodity);
|
|
|
+ eOrderRequestData.setWeight(1.0);
|
|
|
+ eOrderRequestData.setQuantity(1);
|
|
|
+ eOrderRequestData.setIsReturnPrintTemplate(1);
|
|
|
|
|
|
- return null;
|
|
|
+ try {
|
|
|
+ String json = OrderUtils.orderOnlineByJson(eOrderRequestData);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(json);
|
|
|
+ boolean flag = jsonObject.getBoolean("Success");
|
|
|
+ if (flag) {
|
|
|
+ // 获取电子面单成功
|
|
|
+ String code = jsonObject.getJSONObject("Order").getString("LogisticCode");
|
|
|
+ // 订单发货
|
|
|
+ SalesOrder salesOrder = new SalesOrder();
|
|
|
+ salesOrder.setSalesPostFirm(post);
|
|
|
+ salesOrder.setSalesPostNum(code);
|
|
|
+ salesOrder.setSalesShippingStatus(2);
|
|
|
+ salesOrder.setSalesSendTime(new Date());
|
|
|
+ salesOrder.setSalesId(salesId);
|
|
|
+ salesOrderService.updateSalesOrder(salesOrder);
|
|
|
+ // 保存HTML
|
|
|
+ String filePath = request.getServletContext().getRealPath("/common/");
|
|
|
+ File dir = new File(filePath + File.separator + "send_order");
|
|
|
+ if (!dir.exists()) {
|
|
|
+ dir.mkdir();
|
|
|
+ }
|
|
|
+ File file = new File(dir.getAbsolutePath() + File.separator + orderId + ".txt");
|
|
|
+ file.createNewFile();
|
|
|
+ FileWriter fileWriter = null;
|
|
|
+ try {
|
|
|
+ fileWriter = new FileWriter(file, false);
|
|
|
+ fileWriter.write(json);
|
|
|
+ } catch (Exception e) {
|
|
|
+ LOGGER.error("", e);
|
|
|
+ } finally {
|
|
|
+ if (fileWriter != null) {
|
|
|
+ fileWriter.close();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 获取电子面单失败
|
|
|
+ LOGGER.info("{} 获取电子名单失败,原因{}", orderId, jsonObject.get("Reason"));
|
|
|
+ }
|
|
|
+ return ResponseJson.getSUCCESS().addResponseKeyValue("json", json);
|
|
|
+ } catch (Exception e) {
|
|
|
+ return ResponseJson.getFAILURE().addResponseKeyValue("error", e.getMessage());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+ // 重新打印发货
|
|
|
+ @ResponseBody
|
|
|
+ @RequestMapping("/rePrintOrder")
|
|
|
+ @RequiresPermissions("order:listAwaitSendOrder")
|
|
|
+ public ResponseJson rePrintOrder(@RequestParam("orderId") String orderId,
|
|
|
+ HttpServletRequest request) throws IOException {
|
|
|
+ String filePath = request.getServletContext().getRealPath("/common/send_order");
|
|
|
+ filePath = filePath + File.separator + orderId + ".txt";
|
|
|
+ // 读取文件内容
|
|
|
+ FileReader reader = new FileReader(filePath);
|
|
|
+ StringBuilder stringBuilder = new StringBuilder();
|
|
|
+ char[] chars = new char[1024];
|
|
|
+ int len = 0;
|
|
|
+ while((len = reader.read(chars)) != -1) {
|
|
|
+ stringBuilder.append(new String(chars, 0, len));
|
|
|
+ }
|
|
|
+ reader.close();
|
|
|
+
|
|
|
+ return ResponseJson.getSUCCESS().addResponseKeyValue("json", stringBuilder.toString());
|
|
|
+ }
|
|
|
|
|
|
}
|