From 6ada97d503bd93722c081b66a9adcce7599e5536 Mon Sep 17 00:00:00 2001
From: jyy <935090232@qq.com>
Date: Wed, 14 Apr 2021 17:31:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/score_shop' into score_shop

---
 zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopOrderAction.java |  138 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 113 insertions(+), 25 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 7d133fd..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
@@ -81,6 +81,8 @@
     //记录编辑前的值Before_Edit_Value
     public static final String BEV = "ShopOrder_BEV";
 
+    public static final List<LogisticsImportVo> logisticsImportVoLists = new ArrayList<>();
+
     @Value("${evn}")
     private String evn;
     
@@ -107,16 +109,65 @@
         AjaxResult ajaxResult = new AjaxResult();
         List<LogisticsImportVo> logisticsImportVos = logisticsImportFile(saveFile);
         if(CollUtil.isNotEmpty(logisticsImportVos)){
-            for(LogisticsImportVo logisticsImportVo : logisticsImportVos){
-                infoRemind = infoRemind + logisticsImportVo.getRemark()+";";
-            }
-            ajaxResult = AjaxResult.buildSuccessInstance(infoRemind);
+            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 {
@@ -132,8 +183,9 @@
                      * 订单处于【待付款】【待配送】【待收货】都可以导入
                      * 其他状态生成一个提示
                      */
+
+                    LogisticsImportVo logisticsImportVo = new LogisticsImportVo();
 					List<Object> objects = dataList.get(j);
-					ShopDeliveryInfo shopDeliveryInfo = new ShopDeliveryInfo();
 					//订单编号
 					String orderNo = objects.get(0).toString();
                     ShopOrder shopOrder = shopOrderDao.selectShopOrderByOrderNo(orderNo);
@@ -146,29 +198,65 @@
                         String logisticsCompany = objects.get(2).toString();
                         //快递单号
                         String waybillNo = objects.get(3).toString();
-                        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);
+                        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);
 
-                        //发送创建订单的消息
-                        rabiitMqTemplate.sendMsg(MQTaskRouting.ORDER_OUT_SOTORE+evn, orderNo);
+                            //构建需要修改订单信息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{
-                        LogisticsImportVo logisticsImportVo = new LogisticsImportVo();
-                        logisticsImportVo.setWaybillNo(orderNo);
-                        logisticsImportVo.setColNum(j);
-                        logisticsImportVo.setRemark("第"+j+"行导入失败");
-                        logisticsImportVos.add(logisticsImportVo);
+                        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);
+                        }
                     }
 				}
 			}

--
Gitblit v1.9.1