zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopOrderAction.java | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopOrderDao.java | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/java/com/matrix/system/shopXcx/vo/LogisticsImportVo.java | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/resources/templates/views/admin/shop/logisticsImport-form.html | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/resources/templates/views/admin/shop/shopOrder-list.html | ●●●●● patch | view | raw | blame | history |
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; @@ -19,21 +22,30 @@ 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; @@ -61,10 +73,108 @@ 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"; @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)){ for(LogisticsImportVo logisticsImportVo : logisticsImportVos){ infoRemind = infoRemind + logisticsImportVo.getRemark()+";//r//n"; } ajaxResult = AjaxResult.buildSuccessInstance(infoRemind); ajaxResult.setStatus(AjaxResult.STATUS_SUCCESS); }else{ ajaxResult = AjaxResult.buildSuccessInstance("导入成功"); ajaxResult.setStatus(AjaxResult.STATUS_FAIL); } return ajaxResult; } 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++) { /** * 订单处于【待付款】【待配送】【待收货】都可以导入 * 其他状态生成一个提示 */ List<Object> objects = dataList.get(j); ShopDeliveryInfo shopDeliveryInfo = new ShopDeliveryInfo(); //订单编号 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.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{ LogisticsImportVo logisticsImportVo = new LogisticsImportVo(); logisticsImportVo.setWaybillNo(orderNo); logisticsImportVo.setColNum(j); logisticsImportVo.setRemark("第"+j+"行导入失败"); logisticsImportVos.add(logisticsImportVo); } } } } return logisticsImportVos; } /** * 导出Excel zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopOrderDao.java
@@ -74,5 +74,7 @@ public int batchUpdateOrderStatus(@Param("list") List<ShopOrder> list); public ShopOrder selectShopOrderByOrderNo(@Param("orderNo")String orderNo); } zq-erp/src/main/java/com/matrix/system/shopXcx/vo/LogisticsImportVo.java
New file @@ -0,0 +1,16 @@ package com.matrix.system.shopXcx.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "LogisticsImportVo", description = "信息返回类") public class LogisticsImportVo { @ApiModelProperty(value = "单号") private String waybillNo; @ApiModelProperty(value = "备注") private String remark; @ApiModelProperty(value = "行数") private int colNum; } zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml
@@ -756,6 +756,13 @@ group by order_status </select> <select id="selectShopOrderByOrderNo" resultType="com.matrix.system.shopXcx.bean.ShopOrder" > select a.* from shop_order a where a.order_no=#{orderNo} </select> <update id="batchUpdateOrderStatus"> <foreach collection="list" index="index" item="item" separator=";"> update shop_order set order_status=#{item.orderStatus} zq-erp/src/main/resources/templates/views/admin/shop/logisticsImport-form.html
New file @@ -0,0 +1,125 @@ <!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <meta name="renderer" content="webkit|ie-comp|ie-stand"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> <meta http-equiv="Cache-Control" content="no-siteapp" /> <!-- 本框架基本脚本和样式 --> <script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> <script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script> <script src="https://cdn.jsdelivr.net/gh/jquery-form/form@4.2.2/dist/jquery.form.min.js" integrity="sha384-FzT3vTVGXqf7wRfy8k4BiyzvbNfeYjK+frTVqZeNDFl8woCbF0CYG6g2fMEFFo/i" crossorigin="anonymous"></script> </head> <body> <div class="ibox-content"> <form name="uploadExcel" style="display: contents; margin-left: 20px;" action="/admin/shopOrder/logisticsImport" method="post" enctype="multipart/form-data" id="uploadForm"> <div class="form-group"> <input onclick="importChances()" class="input-text upload-url radius form-control" type="text" id="showFileName" readonly style="width: 200px; display: inline; margin-left: 50px;"> <a onclick="importChances()" class="btn btn-primary radius"> <i class="fa fa-cloud-upload"></i> 浏览文件 </a> <input type="file" name="file" accept=".xls,.xlsx" id="chanceUploadId" style="display: none"> <button type="button" onclick="download()" class="btn btn-success radius">下载模板</button></div> <div class="form-group "> <div class="col-sm-12 text-center"> <button type="submit" onclick="return submitFile()" class="btn btn-success radius">导入快递单</button> <a class="btn btn-danger radius" href="javascript:;" onclick="MTools.closeForm()" ><i class="fa fa-close"></i> 关闭</a> </div> </div> </form> </div> </body> <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> <script th:inline="javascript"> MTools.autoFullSelect(); $(".select2").select2(); /*<![CDATA[*/ var obj=/*[[${obj}]]*/ /*]]>*/ var invokeUrl=basePath+"/admin/shopOrder/showList"; var myForm=MForm.initForm({ invokeUrl:invokeUrl, afterSubmit:function(){ parent.myGrid.serchData(); }, }); //绑定文件的点击事件 function importChances() { var file = $("#chanceUploadId").click(); //选中文件,文件名字显示在文本框中 $("#chanceUploadId").change( function() { $("#showFileName").val(''); var fileName = $(this).val(); fileName = fileName.substring( fileName.lastIndexOf("\\") + 1, fileName .lastIndexOf(".")); $("#showFileName").val(fileName); }) } //提交文件 function submitFile() { if ($("#showFileName").val() == '' || $("#showFileName").val().length < 1) { layer.msg("请选择上传文件!", { icon : 2 }); return false; } layer.load(2, { time : 100 * 1000, shade : [ 0.4, '#aeaeae' ] }); $("#uploadForm").ajaxForm(function (data) { layer.closeAll('loading'); console.log(data) if (data.status == "200") { layer.open({ title: '导入快递单', content: data.info }); } else { layer.open({ title: '导入快递单', content: data.info }); } $("#showFileName").val(''); var file = $("#chanceUploadId"); file.after(file.clone().val('')); file.remove(); }); } function download() { //window.location.href= "https://xcshop.csxuncong.com/uploadefile/image/logisticsImport.xls"; window.location.href= "http://xcshop.csxuncong.com/uploadfile/image/logisticsImport.xls"; } </script> </body> </html> zq-erp/src/main/resources/templates/views/admin/shop/shopOrder-list.html
@@ -84,11 +84,11 @@ class="form-control datetimepicker" id="orderEndTime"> </div> <input type="hidden" value="" name="orderStatus" id="orderStatus"/> <input type="hidden" value="2" name="orderStatus" id="orderStatus"/> <div class="form-group mr-20"> <button type="button" class="btn btn-my btn-sm active" id="btn0" value="">全部</button> <button type="button" class="btn btn-my btn-sm" id="btn0" value="">全部</button> <button type="button" class="btn btn-my btn-sm" id="btn1" value="1">待付款</button> <button type="button" class="btn btn-my btn-sm" id="btn2" value="2">待配送</button> <button type="button" class="btn btn-my btn-sm active" id="btn2" value="2">待配送</button> <button type="button" class="btn btn-my btn-sm" id="btn3" value="3">待收货</button> <button type="button" class="btn btn-my btn-sm" id="btn4" value="4">待评价</button> <button type="button" class="btn btn-my btn-sm" id="btn5" value="5">已评价</button> @@ -106,6 +106,11 @@ class="btn btn-info" matrix:btn="order-exportExcel"> <i class="fa fa-search "></i> 导出EXCEL </button> <button onclick="importLogisticsInfo()" type="button" class="btn btn-info" matrix:btn="order-exportExcel"> <i class="fa fa-search "></i> 导入快递单 </button> <button type="reset" class="btn btn-info "> <i class="fa fa-refresh "></i> 重置 @@ -170,6 +175,15 @@ $(this).addClass("active"); }); function importLogisticsInfo() { layer.open({ type: 2, title: "导入快递单", area: [MUI.SIZE_L, '400px'], content : [ basePath+'/admin/redirect/shop/logisticsImport-form'] }); } function exportExcel() {