|
@@ -0,0 +1,600 @@
|
|
|
+package com.iamberry.rst.controllers.scm;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.google.zxing.BarcodeFormat;
|
|
|
+import com.google.zxing.EncodeHintType;
|
|
|
+import com.google.zxing.MultiFormatWriter;
|
|
|
+import com.google.zxing.WriterException;
|
|
|
+import com.google.zxing.common.BitMatrix;
|
|
|
+import com.iamberry.rst.core.cm.StoreShip;
|
|
|
+import com.iamberry.rst.core.order.EOrderRequestData;
|
|
|
+import com.iamberry.rst.core.order.ProductColor;
|
|
|
+import com.iamberry.rst.core.page.PagedResult;
|
|
|
+import com.iamberry.rst.core.scm.ScmOrderInfo;
|
|
|
+import com.iamberry.rst.core.scm.ScmOrderItem;
|
|
|
+import com.iamberry.rst.core.sys.Admin;
|
|
|
+import com.iamberry.rst.core.tools.LogisticsInfo;
|
|
|
+import com.iamberry.rst.faces.cm.StoreShipService;
|
|
|
+import com.iamberry.rst.faces.order.LogisticsInfoService;
|
|
|
+import com.iamberry.rst.faces.product.ProductService;
|
|
|
+import com.iamberry.rst.faces.scm.ScmOrderInfoService;
|
|
|
+import com.iamberry.rst.faces.scm.ScmOrderItemService;
|
|
|
+import com.iamberry.rst.utils.*;
|
|
|
+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 net.sf.json.JSONArray;
|
|
|
+import org.apache.shiro.authz.annotation.Logical;
|
|
|
+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.multipart.commons.CommonsMultipartFile;
|
|
|
+import org.springframework.web.servlet.ModelAndView;
|
|
|
+
|
|
|
+import javax.imageio.ImageIO;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.awt.image.BufferedImage;
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileWriter;
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 上朵定制-订单列表
|
|
|
+ */
|
|
|
+@Controller
|
|
|
+@RequestMapping("/admin/scm_order")
|
|
|
+public class AdminScmOrderController {
|
|
|
+
|
|
|
+ private static final Logger LOGGER = LoggerFactory.getLogger(AdminScmOrderController.class);
|
|
|
+ @Autowired
|
|
|
+ private ScmOrderInfoService scmOrderInfoService;
|
|
|
+ @Autowired
|
|
|
+ private ScmOrderItemService scmOrderItemService;
|
|
|
+ @Autowired
|
|
|
+ private LogisticsInfoService logisticsInfoService;
|
|
|
+ @Autowired
|
|
|
+ private ProductService productService;
|
|
|
+ @Autowired
|
|
|
+ private GenerateKeyUtil generateKeyUtil;
|
|
|
+ @Autowired
|
|
|
+ private StoreShipService storeShipService;
|
|
|
+
|
|
|
+ private static final String pathHead = "D";
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单列表
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequiresPermissions("scmOrder:order:list")
|
|
|
+ @RequestMapping("/order_list")
|
|
|
+ public ModelAndView orderList(HttpServletRequest request, ScmOrderItem scmOrderItem,
|
|
|
+ @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) {
|
|
|
+ ModelAndView mv = new ModelAndView("scm/scm_order_list");
|
|
|
+
|
|
|
+ PagedResult<ScmOrderItem> pagedResult = scmOrderItemService.getScmOrderItemListPage(pageNO, pageSize, scmOrderItem, totalNum == 0);
|
|
|
+ if (totalNum != 0){
|
|
|
+ pagedResult.setTotal(totalNum);
|
|
|
+ }
|
|
|
+
|
|
|
+ StitchAttrUtil.getSa()
|
|
|
+ .addDatePro("yyyy-MM-dd HH:mm:ss","startDate","endDate")
|
|
|
+ .setModelAndView(scmOrderItem, mv, "/admin/scm_order/order_list", pagedResult);
|
|
|
+
|
|
|
+ List<LogisticsInfo> logisticsInfoList = logisticsInfoService.getLogisticsInfoList(new LogisticsInfo());
|
|
|
+ mv.addObject("logisticsInfoList",logisticsInfoList);
|
|
|
+
|
|
|
+ return mv;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添加订单
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequiresPermissions("scmOrder:order:add")
|
|
|
+ @RequestMapping("/to_add_order")
|
|
|
+ public ModelAndView toAddOrder(HttpServletRequest request) {
|
|
|
+ ModelAndView mv = new ModelAndView("scm/scm_add_order");
|
|
|
+
|
|
|
+ List<LogisticsInfo> logisticsInfoList = logisticsInfoService.getLogisticsInfoList(new LogisticsInfo());
|
|
|
+ mv.addObject("logisticsInfoList",logisticsInfoList);
|
|
|
+
|
|
|
+ return mv;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添加订单
|
|
|
+ * @param request
|
|
|
+ * @param scmOrderInfo
|
|
|
+ * @param orderItemString
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @ResponseBody
|
|
|
+ @RequestMapping("/add_order")
|
|
|
+ @RequiresPermissions("scmOrder:order:add")
|
|
|
+ public ResponseJson addSalesOrder(HttpServletRequest request,ScmOrderInfo scmOrderInfo,String orderItemString) throws Exception {
|
|
|
+ ResponseJson rj = new ResponseJson();
|
|
|
+ if(scmOrderInfo.getOrderAddressTel() != null && !"".equals(scmOrderInfo.getOrderAddressTel())){
|
|
|
+ scmOrderInfo.setOrderAddressTel(scmOrderInfo.getOrderAddressTel().trim());
|
|
|
+ }
|
|
|
+ Admin admin = AdminUtils.getLoginAdmin();
|
|
|
+ JSONArray jsonArray = JSONArray.fromObject(orderItemString);
|
|
|
+ List<ScmOrderItem> salesOrderItemList = (List) JSONArray.toCollection(jsonArray, ScmOrderItem.class);
|
|
|
+ for (ScmOrderItem scmOrderItem:salesOrderItemList) {
|
|
|
+ if(scmOrderItem.getOrderItemNum() > 0 && scmOrderItem.getOrderItemColorId() > 0){
|
|
|
+ ProductColor productColor = productService.getProduceColor(scmOrderItem.getOrderItemColorId());
|
|
|
+ if(productColor == null){
|
|
|
+ return new ResponseJson(500, "商品不存在", 500);
|
|
|
+ }
|
|
|
+ scmOrderItem.setOrderItemProductId(productColor.getColorProductId()); ////产品id
|
|
|
+ scmOrderItem.setOrderItemProductType(productColor.getProductType());
|
|
|
+ scmOrderItem.setOrderItemProductName(productColor.getProductName());
|
|
|
+ scmOrderItem.setOrderItemProductPic(productColor.getColorPicture());
|
|
|
+ scmOrderItem.setOrderItemColorName(productColor.getColorName());
|
|
|
+ scmOrderItem.setOrderItemColorBar(productColor.getColorBar()); ///产品SKU码(百胜)
|
|
|
+ scmOrderItem.setOrderItemProductPrice(productColor.getColorPrice());
|
|
|
+ scmOrderItem.setOrderItemProductDiscount(productColor.getColorDiscount());
|
|
|
+ scmOrderItem.setOrderItemCreateTime(new Date());
|
|
|
+ }else{
|
|
|
+ return new ResponseJson(500, "添加商品错误", 500);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ String orderMadeId = generateKeyUtil.getScmOrderMadeId(); //获取生产编号
|
|
|
+ String realPath = request.getSession().getServletContext().getRealPath("/common/scmOrder/qrCode/"+orderMadeId+"/");
|
|
|
+ realPath = realPath+"/";
|
|
|
+ String name = orderMadeId+".png";
|
|
|
+
|
|
|
+ QrCodeUtil.madeQrCode(realPath,name,orderMadeId,200);
|
|
|
+
|
|
|
+ String url = "common/scmOrder/qrCode/"+orderMadeId+"/"+orderMadeId+".png";
|
|
|
+
|
|
|
+ scmOrderInfo.setOrderMadeId(orderMadeId);
|
|
|
+ scmOrderInfo.setOrderShippingStatus(0);
|
|
|
+ scmOrderInfo.setOrderStatus(1);
|
|
|
+ scmOrderInfo.setOrderAdminId(admin.getAdminId());
|
|
|
+ scmOrderInfo.setOrderMadeIdPath(url); //二维码地址
|
|
|
+
|
|
|
+ scmOrderInfo.setScmOrderItemList(salesOrderItemList);
|
|
|
+
|
|
|
+ Integer bl = 0;
|
|
|
+ String errorMsg = "";
|
|
|
+ try {
|
|
|
+ bl = scmOrderInfoService.save(scmOrderInfo);
|
|
|
+ }catch (Exception e){
|
|
|
+ errorMsg = e.getMessage();
|
|
|
+ e.printStackTrace();
|
|
|
+ return new ResponseJson(500, "添加订单失败,失败原因:"+errorMsg, 500);
|
|
|
+ }
|
|
|
+ if(bl > 0){
|
|
|
+ rj = new ResponseJson(200, "添加订单成功", 200);
|
|
|
+ rj.addResponseKeyValue("path",realPath);
|
|
|
+ rj.addResponseKeyValue("orderMadeId",orderMadeId);
|
|
|
+ return rj;
|
|
|
+ }else{
|
|
|
+ return new ResponseJson(500, "添加订单失败,失败原因:"+errorMsg, 500);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改订单页面
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequiresPermissions("scmOrder:order:update")
|
|
|
+ @RequestMapping("/to_update_order")
|
|
|
+ public ModelAndView toUpdateOrder(HttpServletRequest request,Integer orderId) {
|
|
|
+ ModelAndView mv = new ModelAndView("scm/scm_update_order");
|
|
|
+
|
|
|
+ List<LogisticsInfo> logisticsInfoList = logisticsInfoService.getLogisticsInfoList(new LogisticsInfo());
|
|
|
+ mv.addObject("logisticsInfoList",logisticsInfoList);
|
|
|
+ mv.addObject("orderId",orderId);
|
|
|
+ return mv;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改订单
|
|
|
+ * @param request
|
|
|
+ * @param scmOrderInfo
|
|
|
+ * @param orderItemString
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @ResponseBody
|
|
|
+ @RequestMapping("/update_order")
|
|
|
+ @RequiresPermissions("scmOrder:order:update")
|
|
|
+ public ResponseJson updateOrder(HttpServletRequest request,ScmOrderInfo scmOrderInfo,String orderItemString) throws Exception {
|
|
|
+ ResponseJson rj = new ResponseJson();
|
|
|
+ if(scmOrderInfo.getOrderAddressTel() != null && !"".equals(scmOrderInfo.getOrderAddressTel())){
|
|
|
+ scmOrderInfo.setOrderAddressTel(scmOrderInfo.getOrderAddressTel().trim());
|
|
|
+ }
|
|
|
+ Admin admin = AdminUtils.getLoginAdmin();
|
|
|
+ JSONArray jsonArray = JSONArray.fromObject(orderItemString);
|
|
|
+ List<ScmOrderItem> salesOrderItemList = (List) JSONArray.toCollection(jsonArray, ScmOrderItem.class);
|
|
|
+ for (ScmOrderItem scmOrderItem:salesOrderItemList) {
|
|
|
+ if(scmOrderItem.getOrderItemNum() > 0 && scmOrderItem.getOrderItemColorId() > 0){
|
|
|
+ ProductColor productColor = productService.getProduceColor(scmOrderItem.getOrderItemColorId());
|
|
|
+ if(productColor == null){
|
|
|
+ return new ResponseJson(500, "商品不存在或商品错误", 500);
|
|
|
+ }
|
|
|
+ scmOrderItem.setOrderItemProductId(productColor.getColorProductId()); ////产品id
|
|
|
+ scmOrderItem.setOrderItemProductType(productColor.getProductType());
|
|
|
+ scmOrderItem.setOrderItemProductName(productColor.getProductName());
|
|
|
+ scmOrderItem.setOrderItemProductPic(productColor.getColorPicture());
|
|
|
+ scmOrderItem.setOrderItemColorName(productColor.getColorName());
|
|
|
+ scmOrderItem.setOrderItemColorBar(productColor.getColorBar()); ///产品SKU码(百胜)
|
|
|
+ scmOrderItem.setOrderItemProductPrice(productColor.getColorPrice());
|
|
|
+ scmOrderItem.setOrderItemProductDiscount(productColor.getColorDiscount());
|
|
|
+ scmOrderItem.setOrderItemCreateTime(new Date());
|
|
|
+ }else{
|
|
|
+ return new ResponseJson(500, "修改商品错误", 500);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ scmOrderInfo.setScmOrderItemList(salesOrderItemList);
|
|
|
+
|
|
|
+ Integer bl = 0;
|
|
|
+ String errorMsg = "";
|
|
|
+ try {
|
|
|
+ bl = scmOrderInfoService.update(scmOrderInfo);
|
|
|
+ }catch (Exception e){
|
|
|
+ errorMsg = e.getMessage();
|
|
|
+ e.printStackTrace();
|
|
|
+ return new ResponseJson(500, "修改订单失败,失败原因:"+errorMsg, 500);
|
|
|
+ }
|
|
|
+ if(bl > 0){
|
|
|
+ rj = new ResponseJson(200, "修改订单成功", 200);
|
|
|
+// rj.addResponseKeyValue("path",realPath);
|
|
|
+// rj.addResponseKeyValue("orderMadeId",orderMadeId);
|
|
|
+ return rj;
|
|
|
+ }else{
|
|
|
+ return new ResponseJson(500, "修改订单失败,失败原因:"+errorMsg, 500);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除订单
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @ResponseBody
|
|
|
+ @RequestMapping("/delete_order")
|
|
|
+ @RequiresPermissions("scmOrder:order:delete")
|
|
|
+ public ResponseJson deleteOrder(HttpServletRequest request,Integer orderId) throws Exception {
|
|
|
+ ResponseJson rj = new ResponseJson();
|
|
|
+
|
|
|
+ ScmOrderInfo scmOrderInfo = scmOrderInfoService.getScmOrderInfoById(orderId);
|
|
|
+ if(scmOrderInfo == null ){
|
|
|
+ return new ResponseJson(500, "删除失败", 500);
|
|
|
+ }
|
|
|
+ Integer flag = scmOrderInfoService.delete(orderId);
|
|
|
+
|
|
|
+ if(flag > 0){
|
|
|
+ rj = new ResponseJson(200, "删除订单成功", 200);
|
|
|
+ return rj;
|
|
|
+ }else{
|
|
|
+ return new ResponseJson(500, "删除失败", 500);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询订单
|
|
|
+ * @param request
|
|
|
+ * @param scmOrderInfo
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @ResponseBody
|
|
|
+ @RequestMapping("/get_order")
|
|
|
+ @RequiresPermissions(value = {"scmOrder:order:add", "scmOrder:update:add", "scmOrder:order:list", "scmOrder:order:send"}, logical = Logical.OR)
|
|
|
+ public ResponseJson addSalesOrder(HttpServletRequest request,ScmOrderInfo scmOrderInfo) throws Exception {
|
|
|
+ if(scmOrderInfo.getOrderId() == null && (scmOrderInfo.getOrderMadeId() == null||"".equals(scmOrderInfo.getOrderMadeId())) &&
|
|
|
+ (scmOrderInfo.getOrderNo() == null || "".equals(scmOrderInfo.getOrderNo()))){
|
|
|
+ return new ResponseJson(500, "查询失败", 500);
|
|
|
+ }
|
|
|
+ ResponseJson rj = new ResponseJson(200, "查询成功", 200);
|
|
|
+ List<ScmOrderInfo> scmOrderInfoList = scmOrderInfoService.getScmOrderInfoList(scmOrderInfo);
|
|
|
+ rj.addResponseKeyValue("scmOrderInfoList",scmOrderInfoList);
|
|
|
+ return rj;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询订单 -- 生产编号
|
|
|
+ * @param request
|
|
|
+ * @param orderMadeId
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @ResponseBody
|
|
|
+ @RequestMapping("/get_order_madeId")
|
|
|
+ @RequiresPermissions(value = {"scmOrder:order:add", "scmOrder:update:add", "scmOrder:order:list", "scmOrder:order:send"}, logical = Logical.OR)
|
|
|
+ public ResponseJson getOrderNo(HttpServletRequest request,String orderMadeId) throws Exception {
|
|
|
+ ScmOrderInfo scmOrderInfo = scmOrderInfoService.getScmOrderInfoByMadeId(orderMadeId);
|
|
|
+ if(scmOrderInfo == null){
|
|
|
+ ResponseJson rj = new ResponseJson(500, "查询失败", 500);
|
|
|
+ return rj;
|
|
|
+ }
|
|
|
+
|
|
|
+ ScmOrderItem scmOrderItem = new ScmOrderItem();
|
|
|
+ scmOrderItem.setOrderId(scmOrderInfo.getOrderId());
|
|
|
+ List<ScmOrderItem> scmOrderItemList = scmOrderItemService.getScmOrderItemList(scmOrderItem);
|
|
|
+ scmOrderInfo.setScmOrderItemList(scmOrderItemList);
|
|
|
+
|
|
|
+ ResponseJson rj = new ResponseJson(200, "查询成功", 200);
|
|
|
+ rj.addResponseKeyValue("scmOrderInfo",scmOrderInfo);
|
|
|
+ return rj;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 上传设计文件
|
|
|
+ * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象
|
|
|
+ */
|
|
|
+ @ResponseBody
|
|
|
+ @RequestMapping("/fileUpload")
|
|
|
+ public ResponseJson fileUpload(HttpServletRequest request, @RequestParam("file") CommonsMultipartFile file) throws IOException {
|
|
|
+ ResponseJson responseJson = new ResponseJson();
|
|
|
+ System.out.println("fileName:"+file.getOriginalFilename());
|
|
|
+
|
|
|
+ String realPath = request.getSession().getServletContext().getRealPath("/");
|
|
|
+
|
|
|
+ if(file.getOriginalFilename() == null || "".equals(file.getOriginalFilename())){
|
|
|
+ responseJson.setReturnCode(500);
|
|
|
+ return responseJson;
|
|
|
+ }
|
|
|
+
|
|
|
+ String oldName = file.getOriginalFilename();
|
|
|
+
|
|
|
+ //名称
|
|
|
+ String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().toString().lastIndexOf("."));
|
|
|
+ String name = System.currentTimeMillis()+suffix;
|
|
|
+
|
|
|
+ String path = UploadFileUtils.scmUploadFile(realPath,name,file);
|
|
|
+
|
|
|
+ String url = request.getScheme()+"://"+ request.getServerName();
|
|
|
+
|
|
|
+ responseJson.setReturnCode(200);
|
|
|
+ responseJson.addResponseKeyValue("allImgUrl",url + "/" + path);
|
|
|
+ responseJson.addResponseKeyValue("imgUrl",path);
|
|
|
+ responseJson.addResponseKeyValue("oldName",oldName);
|
|
|
+ responseJson.addResponseKeyValue("name",name);
|
|
|
+ return responseJson;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单发货页面
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequiresPermissions("scmOrder:order:send")
|
|
|
+ @RequestMapping("/order_ship")
|
|
|
+ public ModelAndView orderShip(HttpServletRequest request) {
|
|
|
+ ModelAndView mv = new ModelAndView("scm/scm_send_order");
|
|
|
+ return mv;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单发货
|
|
|
+ * @param request
|
|
|
+ * @param scmOrderInfo
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @ResponseBody
|
|
|
+ @RequestMapping("/send_order")
|
|
|
+ @RequiresPermissions(value = {"scmOrder:order:send"}, logical = Logical.OR)
|
|
|
+ public ResponseJson sendOrder(HttpServletRequest request,ScmOrderInfo scmOrderInfo) throws Exception {
|
|
|
+ if(scmOrderInfo.getOrderId() == null && (scmOrderInfo.getOrderMadeId() == null||"".equals(scmOrderInfo.getOrderMadeId())) &&
|
|
|
+ (scmOrderInfo.getOrderNo() == null || "".equals(scmOrderInfo.getOrderNo()))){
|
|
|
+ return new ResponseJson(500, "查询失败", 500);
|
|
|
+ }
|
|
|
+ ResponseJson rj = new ResponseJson(200, "查询成功", 200);
|
|
|
+ List<ScmOrderInfo> scmOrderInfoList = scmOrderInfoService.getScmOrderInfoList(scmOrderInfo);
|
|
|
+ rj.addResponseKeyValue("scmOrderInfoList",scmOrderInfoList);
|
|
|
+ return rj;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 打单发货
|
|
|
+ * @param orderMadeId
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @ResponseBody
|
|
|
+ @RequestMapping("/scm_print_order")
|
|
|
+ @RequiresPermissions("scmOrder:order:send")
|
|
|
+ public ResponseJson printOrder(@RequestParam("orderMadeId") String orderMadeId,
|
|
|
+ HttpServletRequest request) {
|
|
|
+ ScmOrderInfo scmOrderInfo = scmOrderInfoService.getScmOrderInfoByMadeId(orderMadeId);
|
|
|
+ if(scmOrderInfo == null){
|
|
|
+ LOGGER.error("{} 获取电子面单失败,原因:{}", orderMadeId, "未查询到该订单");
|
|
|
+ return ResponseJson.getFAILURE().addResponseKeyValue("error","未查询到该订单");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(scmOrderInfo.getOrderShippingStatus() != 0){
|
|
|
+ LOGGER.error("{} 获取电子面单失败,原因:{}", orderMadeId, "该订单已发货");
|
|
|
+ return ResponseJson.getFAILURE().addResponseKeyValue("error","该订单已发货");
|
|
|
+ }
|
|
|
+
|
|
|
+ ScmOrderItem scmOrderItem = new ScmOrderItem();
|
|
|
+ scmOrderItem.setOrderId(scmOrderInfo.getOrderId());
|
|
|
+ List<ScmOrderItem> scmOrderItemList = scmOrderItemService.getScmOrderItemList(scmOrderItem);
|
|
|
+ scmOrderInfo.setScmOrderItemList(scmOrderItemList);
|
|
|
+
|
|
|
+ StoreShip storeShip = null;
|
|
|
+ if(scmOrderInfo.getOrderStoreId() != null){
|
|
|
+ storeShip = storeShipService.getStoreShipByStoreId(scmOrderInfo.getOrderStoreId());
|
|
|
+ }
|
|
|
+ if(storeShip == null){
|
|
|
+ LOGGER.error("{} 获取电子面单失败,原因:{}", orderMadeId, "该订单没有绑定店铺或店铺没有发货人信息");
|
|
|
+ return ResponseJson.getFAILURE().addResponseKeyValue("error","该订单没有绑定店铺或店铺没有发货人信息");
|
|
|
+ }
|
|
|
+
|
|
|
+ String post = scmOrderInfo.getOrderPostFirm();
|
|
|
+ Integer orderId = scmOrderInfo.getOrderId();
|
|
|
+
|
|
|
+ /*
|
|
|
+ * 组装数据
|
|
|
+ */
|
|
|
+ EOrderRequestData eOrderRequestData = new EOrderRequestData();
|
|
|
+ eOrderRequestData.ShipperCode = (post);
|
|
|
+ eOrderRequestData.OrderCode = (UUID.randomUUID().toString().replace("-", ""));
|
|
|
+ eOrderRequestData.PayType = (3);
|
|
|
+ eOrderRequestData.ExpType = ("1");
|
|
|
+ eOrderRequestData.Cost = (0.00);
|
|
|
+ eOrderRequestData.OtherCost = (0.0);
|
|
|
+ eOrderRequestData.Remark = scmOrderInfo.getOrderMadeId() + "-" + scmOrderInfo.getOrderNo();
|
|
|
+ // 不同的快递公司需要做不同的处理
|
|
|
+ if (post.equalsIgnoreCase("EMS")) {
|
|
|
+ // 省内EMS
|
|
|
+ eOrderRequestData.CustomerName = ("90000009971400");
|
|
|
+ eOrderRequestData.CustomerPwd = ("90000009971400");
|
|
|
+ } else if (post.equalsIgnoreCase("SF")) {
|
|
|
+ // 顺丰
|
|
|
+ eOrderRequestData.MonthCode = ("7690035114");
|
|
|
+ } else if (post.equalsIgnoreCase("YZBK")) {
|
|
|
+ // 省外EMS
|
|
|
+ eOrderRequestData.CustomerName = ("90000009971400");
|
|
|
+ eOrderRequestData.CustomerPwd = ("90000009971400");
|
|
|
+ eOrderRequestData.ExpType = "9";
|
|
|
+ eOrderRequestData.ShipperCode = "EMS";
|
|
|
+ } else if (post.equalsIgnoreCase("STO")) {
|
|
|
+ // 申通快递
|
|
|
+ eOrderRequestData.CustomerName = ("爱贝源");
|
|
|
+ eOrderRequestData.CustomerPwd = ("Iamberry321.");
|
|
|
+ eOrderRequestData.SendSite = ("广东东莞公司");
|
|
|
+ } else if (post.equalsIgnoreCase("DBL")) {
|
|
|
+ //德邦 (360特惠件)
|
|
|
+ eOrderRequestData.CustomerName = ("651476854");
|
|
|
+ eOrderRequestData.ExpType = ("2");
|
|
|
+ }
|
|
|
+ LOGGER.info( "===orderNO:" + scmOrderInfo.getOrderNo() + "快递方式:" + post+ "订单编号:"+ scmOrderInfo.getOrderId());
|
|
|
+ // 收件人信息
|
|
|
+ String[] addrs = scmOrderInfo.getOrderAddressInfo().split(" ");
|
|
|
+ if (addrs.length <= 3) {
|
|
|
+ addrs = scmOrderInfo.getOrderAddressInfo().split("-");
|
|
|
+ }
|
|
|
+ // 获取收件人邮编
|
|
|
+ String postCode = AddrUtil.getPostCode(addrs[2]);
|
|
|
+ if (postCode == null || "".equals(postCode)) {
|
|
|
+ postCode = AddrUtil.getPostCode(addrs[1]);
|
|
|
+ }
|
|
|
+ if (postCode == null || "".equals(postCode)) {
|
|
|
+ postCode = AddrUtil.getPostCode(addrs[0]);
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Object> receiver = new HashMap<String, Object>();
|
|
|
+ receiver.put("Name", scmOrderInfo.getOrderAddressName());
|
|
|
+ receiver.put("Tel", scmOrderInfo.getOrderAddressTel());
|
|
|
+ receiver.put("ProvinceName", AddrUtil.dealProvince(addrs[0]));
|
|
|
+ receiver.put("CityName", addrs[1]);
|
|
|
+ receiver.put("ExpAreaName", addrs[2]);
|
|
|
+ receiver.put("Address", scmOrderInfo.getOrderAddressInfo());
|
|
|
+ receiver.put("PostCode", postCode);
|
|
|
+ eOrderRequestData.Receiver = (receiver);
|
|
|
+ // 发件人信息
|
|
|
+ Map<String, Object> sender = new HashMap<String, Object>();
|
|
|
+ sender.put("Name", storeShip.getStoreShipName());
|
|
|
+ sender.put("Tel", storeShip.getStoreShipTel());
|
|
|
+ sender.put("ProvinceName", storeShip.getStoreShipProvince());
|
|
|
+ sender.put("CityName", storeShip.getStoreShipCity());
|
|
|
+ sender.put("ExpAreaName", "清溪镇");
|
|
|
+ sender.put("Address", storeShip.getStoreShipAddress());
|
|
|
+ sender.put("PostCode", "523660");
|
|
|
+ eOrderRequestData.Sender = (sender);
|
|
|
+ // 产品信息
|
|
|
+ List<Map<String, Object>> commodity = new ArrayList<>();
|
|
|
+
|
|
|
+
|
|
|
+ // 整个产品的重量
|
|
|
+ Double colorIsWeight = 0.00;
|
|
|
+ StringBuilder goodName = new StringBuilder();
|
|
|
+
|
|
|
+ int Goodsquantity = 0;
|
|
|
+ for (ScmOrderItem temp : scmOrderItemList) {
|
|
|
+ goodName.append(temp.getProductAbbreviation())
|
|
|
+ .append("(").append(temp.getColorAbbreviation()).append(")*").append(temp.getOrderItemNum()).append(";");
|
|
|
+ if(temp.getColorIsWeight() != null){
|
|
|
+ colorIsWeight += temp.getColorIsWeight();
|
|
|
+ }
|
|
|
+ Goodsquantity += temp.getOrderItemNum();
|
|
|
+ }
|
|
|
+ // 20181113增加需求:产品名称后面增加打印订单日期
|
|
|
+ goodName.append("【D").append(DateTimeUtil.format(new Date(), "MMdd")).append("】");
|
|
|
+ String uuid = UUIDGenerator.getUUID().substring(0, 8);
|
|
|
+ // 增加产品信息
|
|
|
+ Map<String, Object> product1 = new HashMap<String, Object>();
|
|
|
+ product1.put("GoodsName", uuid);
|
|
|
+ product1.put("Goodsquantity", Goodsquantity);
|
|
|
+ // 计算产品重量deliver_statistics
|
|
|
+ product1.put("GoodsWeight", colorIsWeight/1000);
|
|
|
+ commodity.add(product1);
|
|
|
+ eOrderRequestData.Commodity = (commodity);
|
|
|
+ eOrderRequestData.Weight = (colorIsWeight/1000);
|
|
|
+ eOrderRequestData.Quantity = (1);
|
|
|
+ eOrderRequestData.IsReturnPrintTemplate = (1);
|
|
|
+ try {
|
|
|
+ String json = OrderUtils.orderOnlineByJson(eOrderRequestData);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(json);
|
|
|
+ boolean flag = jsonObject.getBoolean("Success");
|
|
|
+ if (flag) {
|
|
|
+ // 替换产品名称
|
|
|
+ json = json.replace(uuid, goodName.toString());
|
|
|
+ // 获取电子面单成功
|
|
|
+ String code = jsonObject.getJSONObject("Order").getString("LogisticCode");
|
|
|
+
|
|
|
+ // 订单发货
|
|
|
+ ScmOrderInfo soi = new ScmOrderInfo();
|
|
|
+ soi.setOrderPostFirm(eOrderRequestData.ShipperCode);
|
|
|
+ soi.setOrderPostNum(code);
|
|
|
+ soi.setOrderShippingStatus(1);
|
|
|
+ soi.setOrderSendTime(new Date());
|
|
|
+ soi.setOrderId(orderId);
|
|
|
+ Integer fl = scmOrderInfoService.updateStatus(soi);
|
|
|
+
|
|
|
+ // 保存HTML
|
|
|
+ String filePath = request.getServletContext().getRealPath("/common/scmOrder/");
|
|
|
+ File dir = new File(filePath + File.separator + "send_order");
|
|
|
+ if (!dir.exists()) {
|
|
|
+ dir.mkdir();
|
|
|
+ }
|
|
|
+ File file = new File(dir.getAbsolutePath() + File.separator + orderMadeId + ".txt");
|
|
|
+ if (!file.createNewFile()) {
|
|
|
+ return ResponseJson.getFAILURE().addResponseKeyValue("error", "创建文件失败");
|
|
|
+ }
|
|
|
+ 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.error("{} 获取电子面单失败,原因:{}", orderId, jsonObject.get("Reason"));
|
|
|
+ }
|
|
|
+ return ResponseJson.getSUCCESS().addResponseKeyValue("json", json);
|
|
|
+ } catch (Exception e) {
|
|
|
+ LOGGER.error("", e);
|
|
|
+ return ResponseJson.getFAILURE().addResponseKeyValue("error", e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|