From d85af61932a03bd03663daf9da33177af5824a5c Mon Sep 17 00:00:00 2001
From: jyy <935090232@qq.com>
Date: Tue, 20 Apr 2021 14:09:45 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/api_score_meger' into api_score_meger
---
zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopOrderAction.java | 245 ++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 213 insertions(+), 32 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopOrderAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopOrderAction.java
index 49d6d78..7b7cdc0 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopOrderAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopOrderAction.java
@@ -1,7 +1,10 @@
package com.matrix.system.shopXcx.action;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
import com.google.gson.Gson;
+import com.matrix.component.rabbitmq.RabiitMqTemplate;
import com.matrix.core.anotations.RemoveRequestToken;
import com.matrix.core.anotations.SaveRequestToken;
import com.matrix.core.constance.MatrixConstance;
@@ -16,25 +19,33 @@
import com.matrix.core.tools.excl.ExcelVersion;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.constance.AppConstance;
-import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.action.BaseController;
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.hive.bean.SysShopInfo;
+import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.SysShopInfoDao;
+import com.matrix.system.hive.service.SysVipInfoService;
import com.matrix.system.shopXcx.bean.*;
import com.matrix.system.shopXcx.dao.*;
import com.matrix.system.shopXcx.dto.DiscountExplain;
+import com.matrix.system.shopXcx.mqTask.MQTaskRouting;
import com.matrix.system.shopXcx.pojo.ShopOrderQueryPOJO;
import com.matrix.system.shopXcx.shopEnum.OrderStatusEnum;
+import com.matrix.system.shopXcx.vo.LogisticsImportVo;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
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.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
@@ -62,10 +73,196 @@
private WxApplyOrderRelateDao wxApplyOrderRelateDao;
@Autowired
private SysShopInfoDao sysShopInfoDao;
+ @Autowired
+ private SysVipInfoService vipInfoService;
+ @Autowired
+ private RabiitMqTemplate rabiitMqTemplate;
//记录编辑前的值Before_Edit_Value
public static final String BEV = "ShopOrder_BEV";
+ public static final List<LogisticsImportVo> logisticsImportVoLists = new ArrayList<>();
+
+ @Value("${evn}")
+ private String evn;
+
+ /**
+ * 导入快递单
+ */
+ @RequestMapping(value = "/logisticsImport")
+ @ResponseBody
+ public AjaxResult logisticsImport(HttpServletResponse response, HttpServletRequest request,
+ @RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
+
+ String fileName = file.getOriginalFilename();
+ String dirPath = PropertiesUtil.getString(AppConstance.FILES_TORAGE_PATH);
+// String dirPath = "E:/xcshop";
+ File fileDir = new File(dirPath);
+ LogUtil.info("#----->{}#", fileDir.exists());
+ if (!fileDir.exists()) {
+ fileDir.mkdirs();
+ }
+ File saveFile = new File(dirPath + "/" + fileName);
+ file.transferTo(saveFile);
+
+ String infoRemind = "提示:";
+ AjaxResult ajaxResult = new AjaxResult();
+ List<LogisticsImportVo> logisticsImportVos = logisticsImportFile(saveFile);
+ if(CollUtil.isNotEmpty(logisticsImportVos)){
+ ajaxResult = AjaxResult.buildSuccessInstance("部分数据导入失败");
+ ajaxResult.setStatus(AjaxResult.STATUS_FAIL);
+ }else{
+ ajaxResult = AjaxResult.buildSuccessInstance("导入成功");
+ ajaxResult.setStatus(AjaxResult.STATUS_SUCCESS);
+ }
+ return ajaxResult;
+ }
+
+ @RequestMapping(value = "/exportLogisticsImportExcel")
+ public void exportLogisticsImportExcel(HttpServletResponse res) {
+ OutputStream os = null;
+ try {
+ res.setCharacterEncoding("UTF-8");
+ res.setHeader("content-type", "application/octet-stream;charset=UTF-8");
+ res.setContentType("application/octet-stream;charset=UTF-8");
+ Date date = new Date();
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss");
+ res.setHeader("Content-Disposition", "attachment;filename=" +
+ java.net.URLEncoder.encode("快递单导入列表" + dateFormat.format(date) + ".xls".trim(), "UTF-8"));
+
+ os = res.getOutputStream();
+ ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, disPoseLogisticsImportExcel(logisticsImportVoLists), os, true);
+ logisticsImportVoLists.clear();
+ } catch (Exception e) {
+ LogUtil.error("快递单导入异常", e);
+ } finally {
+ if (os != null) {
+ try {
+ os.close();
+ } catch (IOException e) {
+ LogUtil.error("关闭资源异常", e);
+ }
+ }
+ }
+ }
+ private List<ExcelSheetPO> disPoseLogisticsImportExcel(List<LogisticsImportVo> logisticsImportVos) {
+ List<ExcelSheetPO> res = new ArrayList<>();
+ ExcelSheetPO orderSheet = new ExcelSheetPO();
+ orderSheet.setSheetName("快递单导入");
+ orderSheet.setTitle("快递单导入失败列表");
+ String[] header = new String[]{"订单编号", "物流公司编码", "物流公司名称", "快递单号", "失败原因"};
+ orderSheet.setHeaders(header);
+ List<List<Object>> body = new ArrayList<>();
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
+ if(CollUtil.isNotEmpty(logisticsImportVos)){
+ for (LogisticsImportVo logisticsImportVo : logisticsImportVos) {
+ List<Object> bodyItem = new ArrayList<>();
+ bodyItem.add(logisticsImportVo.getOrderNo());
+ bodyItem.add(logisticsImportVo.getLogisticsCompanyCode());
+ bodyItem.add(logisticsImportVo.getLogisticsCompany());
+ bodyItem.add(logisticsImportVo.getWaybillNo());
+ bodyItem.add(logisticsImportVo.getFailReason());
+ body.add(bodyItem);
+ }
+ }
+ orderSheet.setDataList(body);
+ res.add(orderSheet);
+ return res;
+ }
+
+ public List<LogisticsImportVo> logisticsImportFile(File file) throws IOException {
+ SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ List<ExcelSheetPO> excelList = ExcelUtil.readExcel(file, null,null);
+ ArrayList<LogisticsImportVo> logisticsImportVos = new ArrayList<>();
+ for (int i = 0; i < excelList.size(); i++) {
+ List<List<Object>> dataList = excelList.get(i).getDataList();
+ List<SysVipInfo> vipInfos = new ArrayList<>();
+ if (CollectionUtils.isNotEmpty(dataList)) {
+ for (int j = 1; j < dataList.size(); j++) {
+ /**
+ * 订单处于【待付款】【待配送】【待收货】都可以导入
+ * 其他状态生成一个提示
+ */
+
+ LogisticsImportVo logisticsImportVo = new LogisticsImportVo();
+ List<Object> objects = dataList.get(j);
+ //订单编号
+ String orderNo = objects.get(0).toString();
+ ShopOrder shopOrder = shopOrderDao.selectShopOrderByOrderNo(orderNo);
+ if(ObjectUtil.isNotEmpty(shopOrder) &&
+ (shopOrder.getOrderStatus() == ShopOrder.ORDER_STATUS_WAIT_SEND ||
+ shopOrder.getOrderStatus() == ShopOrder.ORDER_STATUS_WAIT_RECEIVE )){
+ //物流公司编码
+ String logisticsCompanyCode = objects.get(1).toString();
+ //物流公司名称
+ String logisticsCompany = objects.get(2).toString();
+ //快递单号
+ String waybillNo = objects.get(3).toString();
+
+ ShopDeliveryInfo shopDeliveryInfo = new ShopDeliveryInfo();
+ shopDeliveryInfo.setOrderId(shopOrder.getId());
+ List<ShopDeliveryInfo> infoList = shopDeliveryInfoDao.selectByModel(shopDeliveryInfo);
+ if (CollectionUtils.isEmpty(infoList)) {
+ logisticsImportVo.setOrderNo(objects.get(0).toString());
+ logisticsImportVo.setLogisticsCompanyCode(objects.get(1).toString());
+ logisticsImportVo.setLogisticsCompany(objects.get(2).toString());
+ logisticsImportVo.setWaybillNo(objects.get(3).toString());
+ logisticsImportVo.setFailReason("未找到发货信息");
+ logisticsImportVos.add(logisticsImportVo);
+ logisticsImportVoLists.add(logisticsImportVo);
+ }else{
+ shopDeliveryInfo = infoList.get(0);
+ shopDeliveryInfo.setOrderNo(orderNo);
+ shopDeliveryInfo.setLogisticsCompanyCode(logisticsCompanyCode);
+ shopDeliveryInfo.setLogisticsCompany(logisticsCompany);
+ shopDeliveryInfo.setWaybillNo(waybillNo);
+ shopDeliveryInfo.setUpdateBy(sysUsers.getSuName());
+ shopDeliveryInfo.setLogisticsStatus(AppConstance.LOGISTICS_STATUS_OF_RECEIVE);
+ shopDeliveryInfo.setDeliveryTime(new Date());
+ shopDeliveryInfoDao.updateByModel(shopDeliveryInfo);
+
+ //构建需要修改订单信息Map
+ Map<String, Object> modifyMap = new HashMap<>();
+ modifyMap.put("id", shopOrder.getId());
+ modifyMap.put("orderStatus", ShopOrder.ORDER_STATUS_WAIT_RECEIVE);
+ shopOrderDao.updateByMap(modifyMap);
+
+ //发送创建订单的消息
+ rabiitMqTemplate.sendMsg(MQTaskRouting.ORDER_OUT_SOTORE+evn, orderNo);
+ }
+ }else{
+ if(ObjectUtil.isEmpty(shopOrder)){
+ logisticsImportVo.setOrderNo(objects.get(0).toString());
+ logisticsImportVo.setLogisticsCompanyCode(objects.get(1).toString());
+ logisticsImportVo.setLogisticsCompany(objects.get(2).toString());
+ logisticsImportVo.setWaybillNo(objects.get(3).toString());
+ logisticsImportVo.setFailReason("未找到订单信息");
+ logisticsImportVos.add(logisticsImportVo);
+ logisticsImportVoLists.add(logisticsImportVo);
+ }else if(shopOrder.getOrderStatus() != ShopOrder.ORDER_STATUS_WAIT_SEND ||
+ shopOrder.getOrderStatus() != ShopOrder.ORDER_STATUS_WAIT_RECEIVE ){
+ logisticsImportVo.setOrderNo(objects.get(0).toString());
+ logisticsImportVo.setLogisticsCompanyCode(objects.get(1).toString());
+ logisticsImportVo.setLogisticsCompany(objects.get(2).toString());
+ logisticsImportVo.setWaybillNo(objects.get(3).toString());
+ logisticsImportVo.setFailReason("订单状态不允许发货");
+ logisticsImportVos.add(logisticsImportVo);
+ logisticsImportVoLists.add(logisticsImportVo);
+ }else{
+ logisticsImportVo.setOrderNo(objects.get(0).toString());
+ logisticsImportVo.setLogisticsCompanyCode(objects.get(1).toString());
+ logisticsImportVo.setLogisticsCompany(objects.get(2).toString());
+ logisticsImportVo.setWaybillNo(objects.get(3).toString());
+ logisticsImportVo.setFailReason("导入失败");
+ logisticsImportVos.add(logisticsImportVo);
+ logisticsImportVoLists.add(logisticsImportVo);
+ }
+ }
+ }
+ }
+ }
+ return logisticsImportVos;
+ }
/**
* 导出Excel
@@ -108,8 +305,8 @@
ExcelSheetPO orderSheet = new ExcelSheetPO();
orderSheet.setSheetName("订单列表");
orderSheet.setTitle("订单列表");
- String[] header = new String[]{"订单编号", "客户姓名", "客户电话", "收货地址", "下单时间", "订单金额",
- "优惠总金额", "优惠说明", "订单状态", "配送方式", "门店名称", "商品名称", "规格", "生产企业", "单价", "购买数量"};
+ String[] header = new String[]{"订单编号", "客户姓名", "客户电话", "收货地址", "店铺名称","订单状态","下单时间", "购买商品","订单金额",
+ "优惠总金额", "配送方式"};
orderSheet.setHeaders(header);
List<List<Object>> body = new ArrayList<>();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
@@ -133,42 +330,26 @@
} else {
bodyItem.add("");
}
- //下单时间
- bodyItem.add(dateFormat.format(shopOrder.getOrderTime()));
- //购买数量
-// bodyItem.add(shopOrder.getPurchaseQuantity());
- //订单金额
- bodyItem.add(shopOrder.getOrderMoney());
- //优惠总金额
- bodyItem.add(shopOrder.getDiscountAmount());
- //优惠说明
- bodyItem.add(shopOrder.getDiscountExplain());
+ //店铺名称
+ bodyItem.add(shopOrder.getStoreName());
//订单状态
bodyItem.add(OrderStatusEnum.getNameByCode(shopOrder.getOrderStatus()));
- //配送方式 门店
- bodyItem.add("物流");
- bodyItem.add("");
-
- //商品名称
+ //下单时间
+ bodyItem.add(dateFormat.format(shopOrder.getOrderTime()));
+ //购买商品
+ ShopSku shopSku = shopOrderDetails.getShopSku();
ShopProduct shopProduct = shopOrderDetails.getShopProduct();
if (shopProduct == null) {
bodyItem.add("");
} else {
- bodyItem.add(shopProduct.getTitle());
+ bodyItem.add(shopProduct.getTitle()+ "(" +shopSku.getName()+ ")*" + shopOrderDetails.getCount());
}
- //规格名称、生产企业、单价
- ShopSku shopSku = shopOrderDetails.getShopSku();
- if (shopSku == null) {
- bodyItem.add("");
- bodyItem.add(shopOrderDetails.getProductionEnterprise());
- bodyItem.add("");
- } else {
- bodyItem.add(shopSku.getName());
- bodyItem.add(shopOrderDetails.getProductionEnterprise());
- bodyItem.add(shopSku.getPrice());
- }
- //购买数量
- bodyItem.add(shopOrderDetails.getCount());
+ //订单金额
+ bodyItem.add(shopOrder.getOrderMoney());
+ //优惠总金额
+ bodyItem.add(shopOrder.getDiscountAmount());
+ //配送方式 门店
+ bodyItem.add("物流");
body.add(bodyItem);
}
}
--
Gitblit v1.9.1