xiaoyong931011
2021-04-14 d43eafe0983ddc7f76c2e1fe77b81a38ad86920c
20210413 后台订单管理修改
5 files modified
220 ■■■■ changed files
zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopOrderAction.java 138 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/vo/LogisticsImportVo.java 14 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/shop/logisticsImport-form.html 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/shop/shopOrder-list.html 64 ●●●●● patch | view | raw | blame | history
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);
                        }
                    }
                }
            }
zq-erp/src/main/java/com/matrix/system/shopXcx/vo/LogisticsImportVo.java
@@ -7,10 +7,14 @@
@Data
@ApiModel(value = "LogisticsImportVo", description = "信息返回类")
public class LogisticsImportVo {
    @ApiModelProperty(value = "单号")
    @ApiModelProperty(value = "订单号")
    private String orderNo;
    @ApiModelProperty(value = "快递公司编码")
    private String logisticsCompanyCode;
    @ApiModelProperty(value = "快递公司名称")
    private String logisticsCompany;
    @ApiModelProperty(value = "快递单号")
    private String waybillNo;
    @ApiModelProperty(value = "备注")
    private String remark;
    @ApiModelProperty(value = "行数")
    private int colNum;
    @ApiModelProperty(value = "失败原因")
    private String failReason;
}
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml
@@ -548,7 +548,7 @@
    </select>
    <!-- 分页查询 -->
    <select id="selectInPageByQuery" resultMap="ShopOrderMap">
    <select id="selectInPageByQuery" resultMap="ShopOrderComplexMap">
        select
        o.*,
        s.shop_name
zq-erp/src/main/resources/templates/views/admin/shop/logisticsImport-form.html
@@ -105,6 +105,8 @@
                    title: '导入快递单,部分失败',
                    content: data.info
                });
                var url = basePath + "/admin/shopOrder/exportLogisticsImportExcel";
                window.open(url);
                parent.myGrid.serchData();
            }
            $("#showFileName").val('');
zq-erp/src/main/resources/templates/views/admin/shop/shopOrder-list.html
@@ -130,10 +130,11 @@
                    <th data-checkbox="true"></th>
                    <th data-formatter="MGrid.indexfn" data-align="center" data-width="30px">序号</th>
                    <th data-align="center" data-width="195px" data-field="id" data-formatter="buidOperate">操作</th>
                    <th data-field="userName">客户姓名</th>
                    <th data-field="userTel">客户电话</th>
                    <th data-field="storeName">店铺名称</th>
                    <th data-field="deliveryInfo.receiveAddress" data-formatter="buildLogistics">发货信息</th>
                    <!--<th data-field="userName">客户姓名</th>-->
                    <!--<th data-field="userTel">客户电话</th>-->
                    <th data-field="orderStatus" data-formatter="buildOrderStatus">订单状态</th>
                    <th data-field="deliveryInfo.waybillNo" data-formatter="buildDelivery">物流信息</th>
                    <th data-field="orderTime" data-formatter="MGrid.getTime">下单时间</th>
                    <th data-field="details" data-formatter="buildDetails">购买商品</th>
                    <!--<th data-field="purchaseQuantity">购买件数</th>-->
@@ -142,6 +143,7 @@
                    <th data-field="shippingMethod"  data-formatter="buildShippingMethod" >配送方式</th>
                    <!--<th data-field="orderType" data-formatter="orderTypeFormatter">订单类型</th>-->
                    <th data-field="orderNo">订单编号</th>
                    <th data-field="storeName">店铺名称</th>
                    <!--<th data-field="applyStatus" data-formatter="applyStatusFormatter">是否已提现</th>-->
                </tr>
                </thead>
@@ -225,6 +227,17 @@
        return details;
    }
    // 发货信息
    function buildLogistics(value, row, index) {
        return (row.userName==null?"":row.userName)+" <br/>"+ (row.userTel==null?"":row.userTel) +" <br/>"+value  ;
    }
    // 物流信息
    function buildDelivery(value, row, index) {
        return (row.deliveryInfo.logisticsCompanyCode==null?"":"快递编码:"+row.deliveryInfo.logisticsCompanyCode)
            +" <br/>"+ (row.deliveryInfo.logisticsCompany==null?"":"快递名称:"+row.deliveryInfo.logisticsCompany)
            +" <br/>"+(value==null?"":"快递单号:"+value)  ;
    }
    function buildOrderStatus(value, row, index) {
        if (value == 1) {
@@ -269,11 +282,16 @@
            + '操作 <span class="caret"></span>' + '</button>'
            + '<ul class="dropdown-menu" role="menu">'
            + btns[0].replace('VALUE', value)
        if (row.deliveryInfo.waybillNo != null && typeof row.deliveryInfo.waybillNo != 'undefined' && row.deliveryInfo.waybillNo != '') {
            html += btns[3].replace('orderId',row.id).replace('waybillNo',row.deliveryInfo.waybillNo);
        }
        if (row.orderStatus == 2) {
            html += btns[1].replace('VALUE', value)
            html += btns[1].replace('VALUE', value);
            html += btns[4].replace('orderId',row.id);
        }
        if (row.orderStatus == 3) {
            html += btns[2].replace('VALUE', value)
            html += btns[2].replace('VALUE', value);
            html += btns[4].replace('orderId',row.id);
        }
        html += '</ul>' + '</div>';
        return html;
@@ -290,6 +308,40 @@
                content: [basePath + '/admin/shopOrder/editForm?id=' + id]
            })
        )
    }
    /**
     * 查看物流信息
     * @param id
     */
    function showLogisticsInfo(orderId,waybillNo){
        if(waybillNo == '' || waybillNo == null){
            layer.msg("订单还未发货,暂无物流信息", {
                icon : 2,
                time : 2000
            });
            return false;
        }
        layer.open({
            type : 2,
            title : "查看物流信息",
            area : [ MUI.SIZE_L, '500px' ],
            maxmin : true,
            content : [ basePath+'/admin/redirect/shop/shopLogisticsInfo-list?orderId=' + orderId]
        });
    }
    /**
     * 编辑物流信息
     * @param id
     */
    function editDeliveryInfo(orderId){
        layer.open({
            type : 2,
            title : "编辑物流信息",
            area : [ MUI.SIZE_L, '500px' ],
            maxmin : true,
            content : [ basePath + '/admin/shopDeliveryInfo/editDeliveryInfoForm?orderId=' + orderId]
        });
    }
    //修改订单为发货
@@ -366,6 +418,8 @@
btns[0] = '<li><a href="javascript:void(0)" onClick="openEdit(\'VALUE\')" title="编辑">编辑</a></li>'
btns[1] = '<li><a href="javascript:void(0)" onClick="openSendPackage(\'VALUE\')" title="开始发货">开始发货</a></li>'
btns[2] = '<li><a href="javascript:void(0)" onClick="openSendPackageOver(\'VALUE\')" title="配送完成">配送完成</a></li>'
btns[3] = '<li><a href="javascript:void(0)" onclick="showLogisticsInfo(\'orderId\',\'waybillNo\')" title="查看物流">查看物流</a></li>'
btns[4] = '<li><a href="javascript:void(0)" onclick="editDeliveryInfo(\'orderId\')" title="编辑快递">编辑快递</a></li>'
</script>