浏览代码

xwh增加在途库存crud

xwh 4 年之前
父节点
当前提交
fe082e8b09
共有 22 个文件被更改,包括 2189 次插入0 次删除
  1. 19 0
      kmall-admin/src/main/java/com/kmall/admin/controller/GoodsController.java
  2. 112 0
      kmall-admin/src/main/java/com/kmall/admin/controller/GoodsTransportInfoController.java
  3. 168 0
      kmall-admin/src/main/java/com/kmall/admin/controller/GoodsTransportInfoDetailController.java
  4. 3 0
      kmall-admin/src/main/java/com/kmall/admin/dao/GoodsDao.java
  5. 15 0
      kmall-admin/src/main/java/com/kmall/admin/dao/GoodsTransportInfoDao.java
  6. 23 0
      kmall-admin/src/main/java/com/kmall/admin/dao/GoodsTransportInfoDetailDao.java
  7. 258 0
      kmall-admin/src/main/java/com/kmall/admin/dto/GoodsPanoramaDto.java
  8. 205 0
      kmall-admin/src/main/java/com/kmall/admin/entity/GoodsTransportInfoDetailEntity.java
  9. 256 0
      kmall-admin/src/main/java/com/kmall/admin/entity/GoodsTransportInfoEntity.java
  10. 6 0
      kmall-admin/src/main/java/com/kmall/admin/service/GoodsService.java
  11. 78 0
      kmall-admin/src/main/java/com/kmall/admin/service/GoodsTransportInfoDetailService.java
  12. 74 0
      kmall-admin/src/main/java/com/kmall/admin/service/GoodsTransportInfoService.java
  13. 7 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java
  14. 71 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsTransportInfoDetailServiceImpl.java
  15. 60 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsTransportInfoServiceImpl.java
  16. 15 0
      kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml
  17. 147 0
      kmall-admin/src/main/resources/mybatis/mapper/GoodsTransportInfoDao.xml
  18. 159 0
      kmall-admin/src/main/resources/mybatis/mapper/GoodsTransportInfoDetailDao.xml
  19. 87 0
      kmall-admin/src/main/webapp/WEB-INF/page/shop/goodstransportinfo.html
  20. 82 0
      kmall-admin/src/main/webapp/WEB-INF/page/shop/goodstransportinfodetail.html
  21. 151 0
      kmall-admin/src/main/webapp/js/shop/goodstransportinfo.js
  22. 193 0
      kmall-admin/src/main/webapp/js/shop/goodstransportinfodetail.js

+ 19 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/GoodsController.java

@@ -2,6 +2,7 @@ package com.kmall.admin.controller;
 
 import com.kmall.admin.dto.GoodsDetailsDto;
 import com.kmall.admin.dto.GoodsDto;
+import com.kmall.admin.dto.GoodsPanoramaDto;
 import com.kmall.admin.entity.GoodsEntity;
 import com.kmall.admin.entity.GoodsGalleryEntity;
 import com.kmall.admin.entity.StoreEntity;
@@ -301,5 +302,23 @@ public class GoodsController {
     }
 
 
+    /**
+     * 根据商品编码或者条码查询商品信息(17.商品全景图)
+     * @param keyword
+     * @return
+     */
+    @GetMapping("/search/{keyword}")
+    public R searchByKeyword(@PathVariable("keyword") String keyword){
+        if (keyword == null || "".equals(keyword)){
+            return R.error("请输入商品编码或者条码!");
+        }
+        GoodsPanoramaDto goodsPanoramaDto = goodsService.searchGoodsPanoramaDtoByKeyword(keyword);
+        //GoodsEntity goods = goodsService.searchGoodsByKeyword(keyword);
+        if (goodsPanoramaDto == null || "".equals(goodsPanoramaDto)) {
+            return R.error("没有该商品!");
+        }
+        return R.ok().put("goodsPanoramaDto",goodsPanoramaDto);
+    }
+
 
 }

+ 112 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/GoodsTransportInfoController.java

@@ -0,0 +1,112 @@
+package com.kmall.admin.controller;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import com.kmall.common.utils.PageUtils;
+import com.kmall.common.utils.Query;
+import com.kmall.common.utils.R;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+import com.kmall.admin.entity.GoodsTransportInfoEntity;
+import com.kmall.admin.service.GoodsTransportInfoService;
+
+
+/**
+ * 在途运输信息表Controller
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-06-15 18:07:33
+ */
+@Controller
+@RequestMapping("goodstransportinfo")
+public class GoodsTransportInfoController {
+    @Autowired
+    private GoodsTransportInfoService goodsTransportInfoService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+//    @RequiresPermissions("goodstransportinfo:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<GoodsTransportInfoEntity> goodsTransportInfoList = goodsTransportInfoService.queryList(query);
+        int total = goodsTransportInfoService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(goodsTransportInfoList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{transId}")
+//    @RequiresPermissions("goodstransportinfo:info")
+    @ResponseBody
+    public R info(@PathVariable("transId") Integer transId) {
+        GoodsTransportInfoEntity goodsTransportInfo = goodsTransportInfoService.queryObject(transId);
+
+        return R.ok().put("goodsTransportInfo", goodsTransportInfo);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+//    @RequiresPermissions("goodstransportinfo:save")
+    @ResponseBody
+    public R save(@RequestBody GoodsTransportInfoEntity goodsTransportInfo) {
+        goodsTransportInfoService.save(goodsTransportInfo);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+//    @RequiresPermissions("goodstransportinfo:update")
+    @ResponseBody
+    public R update(@RequestBody GoodsTransportInfoEntity goodsTransportInfo) {
+        goodsTransportInfoService.update(goodsTransportInfo);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+//    @RequiresPermissions("goodstransportinfo:delete")
+    @ResponseBody
+    public R delete(@RequestBody Integer[]transIds) {
+        goodsTransportInfoService.deleteBatch(transIds);
+
+        return R.ok();
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+
+        List<GoodsTransportInfoEntity> list = goodsTransportInfoService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+
+
+
+}

+ 168 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/GoodsTransportInfoDetailController.java

@@ -0,0 +1,168 @@
+package com.kmall.admin.controller;
+
+import java.util.*;
+
+import com.kmall.admin.entity.GoodsTransportInfoEntity;
+import com.kmall.common.constant.JxlsXmlTemplateName;
+import com.kmall.common.utils.PageUtils;
+import com.kmall.common.utils.Query;
+import com.kmall.common.utils.R;
+import com.kmall.common.utils.excel.ExcelUtil;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+import com.kmall.admin.entity.GoodsTransportInfoDetailEntity;
+import com.kmall.admin.service.GoodsTransportInfoDetailService;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 在途商品明细表Controller
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-06-15 18:19:23
+ */
+@Controller
+@RequestMapping("goodstransportinfodetail")
+public class GoodsTransportInfoDetailController {
+    @Autowired
+    private GoodsTransportInfoDetailService goodsTransportInfoDetailService;
+    @Autowired
+    private ExcelUtil excelUtil;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+//    @RequiresPermissions("goodstransportinfodetail:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<GoodsTransportInfoDetailEntity> goodsTransportInfoDetailList = goodsTransportInfoDetailService.queryList(query);
+        int total = goodsTransportInfoDetailService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(goodsTransportInfoDetailList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{transItemId}")
+//    @RequiresPermissions("goodstransportinfodetail:info")
+    @ResponseBody
+    public R info(@PathVariable("transItemId") Integer transItemId) {
+        GoodsTransportInfoDetailEntity goodsTransportInfoDetail = goodsTransportInfoDetailService.queryObject(transItemId);
+
+        return R.ok().put("goodsTransportInfoDetail", goodsTransportInfoDetail);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+//    @RequiresPermissions("goodstransportinfodetail:save")
+    @ResponseBody
+    public R save(@RequestBody GoodsTransportInfoDetailEntity goodsTransportInfoDetail) {
+        if (goodsTransportInfoDetail.getWayStatus()==null || goodsTransportInfoDetail.getSku() == null){
+            return R.error("是否在途和sku必须要填");
+        }
+        goodsTransportInfoDetail.setCreateTime(new Date());
+        goodsTransportInfoDetail.setModTime(new Date());
+        goodsTransportInfoDetail.setTstm(new Date());
+        goodsTransportInfoDetailService.save(goodsTransportInfoDetail);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+//    @RequiresPermissions("goodstransportinfodetail:update")
+    @ResponseBody
+    public R update(@RequestBody GoodsTransportInfoDetailEntity goodsTransportInfoDetail) {
+        if (goodsTransportInfoDetail.getWayStatus()==null || goodsTransportInfoDetail.getSku() == null){
+            return R.error("是否在途和sku必须要填");
+        }
+        goodsTransportInfoDetail.setModTime(new Date());
+        goodsTransportInfoDetail.setTstm(new Date());
+        goodsTransportInfoDetailService.update(goodsTransportInfoDetail);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+//    @RequiresPermissions("goodstransportinfodetail:delete")
+    @ResponseBody
+    public R delete(@RequestBody Integer[]transItemIds) {
+        goodsTransportInfoDetailService.deleteBatch(transItemIds);
+
+        return R.ok();
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+
+        List<GoodsTransportInfoDetailEntity> list = goodsTransportInfoDetailService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+
+
+    /**
+     * 根据是否在途和sku查询
+     * @param params
+     * @return
+     */
+    @GetMapping("/searchListByStatusAndSku")
+    @ResponseBody
+    public R searchListByStatusAndSku(@RequestParam Map<String, Object> params){
+        //查询列表数据
+        Query query = new Query(params);
+        Integer wayStatus = null;
+        if(params.get("wayStatus")!=null && !"".equals(params.get("wayStatus"))){
+            wayStatus = Integer.parseInt(params.get("wayStatus").toString());
+        }
+        String sku = (String) params.get("sku");
+        List<GoodsTransportInfoDetailEntity> goodsTransportInfoDetailList = goodsTransportInfoDetailService.searchListByStatusAndSku(query,wayStatus,sku);
+        int total = goodsTransportInfoDetailService.queryTotalByStatusAndSku(query,wayStatus,sku);
+
+        PageUtils pageUtil = new PageUtils(goodsTransportInfoDetailList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 上传文件
+     */
+    @PostMapping("/transInfoDetailUpload")
+    @ResponseBody
+    public R transInfoDetailUpload(@RequestParam("file") MultipartFile file) {
+        List<GoodsTransportInfoDetailEntity> list = new ArrayList<>();
+        //上传文件
+        try {
+
+            if (file.isEmpty()) {
+                return R.error("文件不能为空!");
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.error("导入失败!");
+        }
+        return R.ok("导入成功!");
+    }
+}

+ 3 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/GoodsDao.java

@@ -1,6 +1,7 @@
 package com.kmall.admin.dao;
 
 import com.kmall.admin.dto.GoodsDetailsDto;
+import com.kmall.admin.dto.GoodsPanoramaDto;
 import com.kmall.admin.entity.GoodsEntity;
 import com.kmall.manager.dao.BaseDao;
 import org.apache.ibatis.annotations.Param;
@@ -33,4 +34,6 @@ public interface GoodsDao extends BaseDao<GoodsEntity> {
     GoodsEntity queryObjectByStoreId(@Param("id") Long id, @Param("storeId") Long storeId);
 
     GoodsEntity queryGoodsByGoodsSnAndStoreId(@Param("goodsSn") String goodsSn, @Param("storeId") Long storeId);
+
+    GoodsPanoramaDto searchGoodsPanoramaDtoByKeyword(@Param("keyword") String keyword);
 }

+ 15 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/GoodsTransportInfoDao.java

@@ -0,0 +1,15 @@
+package com.kmall.admin.dao;
+
+import com.kmall.admin.entity.GoodsTransportInfoEntity;
+import com.kmall.manager.dao.BaseDao;
+
+/**
+ * 在途运输信息表Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-06-15 18:07:33
+ */
+public interface GoodsTransportInfoDao extends BaseDao<GoodsTransportInfoEntity> {
+
+}

+ 23 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/GoodsTransportInfoDetailDao.java

@@ -0,0 +1,23 @@
+package com.kmall.admin.dao;
+
+import com.kmall.admin.entity.GoodsTransportInfoDetailEntity;
+import com.kmall.common.utils.Query;
+import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 在途商品明细表Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-06-15 18:19:23
+ */
+public interface GoodsTransportInfoDetailDao extends BaseDao<GoodsTransportInfoDetailEntity> {
+
+
+    List<GoodsTransportInfoDetailEntity> searchListByStatusAndSku(@Param("query") Query query, @Param("wayStatus") Integer wayStatus, @Param("sku")String sku);
+
+    int queryTotalByStatusAndSku(@Param("query") Query query, @Param("wayStatus") Integer wayStatus, @Param("sku")String sku);
+}

+ 258 - 0
kmall-admin/src/main/java/com/kmall/admin/dto/GoodsPanoramaDto.java

@@ -0,0 +1,258 @@
+package com.kmall.admin.dto;
+
+import java.io.Serializable;
+
+
+/**
+ * @author 小问号
+ */
+public class GoodsPanoramaDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // 商品id
+    private Integer id;
+    // 商品名称
+    private String name;
+    // 商品简称
+    private String simpleName;
+    // 商品规格
+    private String ciqProdModel;
+    // 基本单位
+    private String goodsBasicUnit;
+    // 品类id
+    private Integer categoryId;
+    // 品类名称
+    private String categoryName;
+    // 部门 找不到字段
+    private String departmentName;
+    // 品牌厅 找不到字段
+    private String brandHall;
+    // 进货单位
+    private String goodsPurchaseUnit;
+    // 主供应商id
+    private Integer supplierId;
+    // 主供应商名称
+    private String supplierName;
+    // 商品U级 找不到字段
+    private String goodsULevel;
+    // 包装含量 找不到字段
+    private String packageContent;
+    // 产地
+    private String origin;
+    // 主条码
+    private String prodBarcode;
+    // PLU编码
+    private String plu;
+    // 编码
+    private String goodsSn;
+    // 品牌
+    private String brand;
+
+
+
+
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSimpleName() {
+        return simpleName;
+    }
+
+    public void setSimpleName(String simpleName) {
+        this.simpleName = simpleName;
+    }
+
+    public String getCiqProdModel() {
+        return ciqProdModel;
+    }
+
+    public void setCiqProdModel(String ciqProdModel) {
+        this.ciqProdModel = ciqProdModel;
+    }
+
+    public String getGoodsBasicUnit() {
+        return goodsBasicUnit;
+    }
+
+    public void setGoodsBasicUnit(String goodsBasicUnit) {
+        this.goodsBasicUnit = goodsBasicUnit;
+    }
+
+    public Integer getCategoryId() {
+        return categoryId;
+    }
+
+    public void setCategoryId(Integer categoryId) {
+        this.categoryId = categoryId;
+    }
+
+    public String getCategoryName() {
+        return categoryName;
+    }
+
+    public void setCategoryName(String categoryName) {
+        this.categoryName = categoryName;
+    }
+
+    public String getDepartmentName() {
+        return departmentName;
+    }
+
+    public void setDepartmentName(String departmentName) {
+        this.departmentName = departmentName;
+    }
+
+    public String getBrandHall() {
+        return brandHall;
+    }
+
+    public void setBrandHall(String brandHall) {
+        this.brandHall = brandHall;
+    }
+
+    public String getGoodsPurchaseUnit() {
+        return goodsPurchaseUnit;
+    }
+
+    public void setGoodsPurchaseUnit(String goodsPurchaseUnit) {
+        this.goodsPurchaseUnit = goodsPurchaseUnit;
+    }
+
+    public Integer getSupplierId() {
+        return supplierId;
+    }
+
+    public void setSupplierId(Integer supplierId) {
+        this.supplierId = supplierId;
+    }
+
+    public String getSupplierName() {
+        return supplierName;
+    }
+
+    public void setSupplierName(String supplierName) {
+        this.supplierName = supplierName;
+    }
+
+    public String getGoodsULevel() {
+        return goodsULevel;
+    }
+
+    public void setGoodsULevel(String goodsULevel) {
+        this.goodsULevel = goodsULevel;
+    }
+
+    public String getPackageContent() {
+        return packageContent;
+    }
+
+    public void setPackageContent(String packageContent) {
+        this.packageContent = packageContent;
+    }
+
+    public String getOrigin() {
+        return origin;
+    }
+
+    public void setOrigin(String origin) {
+        this.origin = origin;
+    }
+
+    public String getProdBarcode() {
+        return prodBarcode;
+    }
+
+    public void setProdBarcode(String prodBarcode) {
+        this.prodBarcode = prodBarcode;
+    }
+
+
+    public String getGoodsSn() {
+        return goodsSn;
+    }
+
+    public void setGoodsSn(String goodsSn) {
+        this.goodsSn = goodsSn;
+    }
+
+    public String getBrand() {
+        return brand;
+    }
+
+    public void setBrand(String brand) {
+        this.brand = brand;
+    }
+
+    public GoodsPanoramaDto() {
+    }
+
+    public String getPlu() {
+        return plu;
+    }
+
+    public void setPlu(String plu) {
+        this.plu = plu;
+    }
+
+    @Override
+    public String toString() {
+        return "GoodsPanoramaDto{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", simpleName='" + simpleName + '\'' +
+                ", ciqProdModel='" + ciqProdModel + '\'' +
+                ", goodsBasicUnit='" + goodsBasicUnit + '\'' +
+                ", categoryId=" + categoryId +
+                ", categoryName='" + categoryName + '\'' +
+                ", departmentName='" + departmentName + '\'' +
+                ", brandHall='" + brandHall + '\'' +
+                ", goodsPurchaseUnit='" + goodsPurchaseUnit + '\'' +
+                ", supplierId=" + supplierId +
+                ", supplierName='" + supplierName + '\'' +
+                ", goodsULevel='" + goodsULevel + '\'' +
+                ", packageContent='" + packageContent + '\'' +
+                ", origin='" + origin + '\'' +
+                ", prodBarcode='" + prodBarcode + '\'' +
+                ", plu='" + plu + '\'' +
+                ", goodsSn='" + goodsSn + '\'' +
+                ", brand='" + brand + '\'' +
+                '}';
+    }
+
+    public GoodsPanoramaDto(Integer id, String name, String simpleName, String ciqProdModel, String goodsBasicUnit, Integer categoryId, String categoryName, String departmentName, String brandHall, String goodsPurchaseUnit, Integer supplierId, String supplierName, String goodsULevel, String packageContent, String origin, String prodBarcode, String plu, String goodsSn, String brand) {
+        this.id = id;
+        this.name = name;
+        this.simpleName = simpleName;
+        this.ciqProdModel = ciqProdModel;
+        this.goodsBasicUnit = goodsBasicUnit;
+        this.categoryId = categoryId;
+        this.categoryName = categoryName;
+        this.departmentName = departmentName;
+        this.brandHall = brandHall;
+        this.goodsPurchaseUnit = goodsPurchaseUnit;
+        this.supplierId = supplierId;
+        this.supplierName = supplierName;
+        this.goodsULevel = goodsULevel;
+        this.packageContent = packageContent;
+        this.origin = origin;
+        this.prodBarcode = prodBarcode;
+        this.plu = plu;
+        this.goodsSn = goodsSn;
+        this.brand = brand;
+    }
+}

+ 205 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/GoodsTransportInfoDetailEntity.java

@@ -0,0 +1,205 @@
+package com.kmall.admin.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 在途商品明细表实体
+ * 表名 mall_goods_transport_info_detail
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-06-15 18:19:23
+ */
+public class GoodsTransportInfoDetailEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 明细编号
+     */
+    private Integer transItemId;
+    /**
+     * 是否在途(0:是,1:否,默认为0)
+     */
+    private Integer wayStatus;
+    /**
+     * 商品sku
+     */
+    private String sku;
+    /**
+     * 供应商id
+     */
+    private Integer supplierId;
+    /**
+     * 原产地
+     */
+    private String originCountry;
+    /**
+     * 数量
+     */
+    private Integer num;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间,yyyy-MM-dd HH:mm:ss
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间,yyyy-MM-dd HH:mm:ss
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    /**
+     * 设置:明细编号
+     */
+    public void setTransItemId(Integer transItemId) {
+        this.transItemId = transItemId;
+    }
+
+    /**
+     * 获取:明细编号
+     */
+    public Integer getTransItemId() {
+        return transItemId;
+    }
+    /**
+     * 设置:是否在途(0:是,1:否,默认为0)
+     */
+    public void setWayStatus(Integer wayStatus) {
+        this.wayStatus = wayStatus;
+    }
+
+    /**
+     * 获取:是否在途(0:是,1:否,默认为0)
+     */
+    public Integer getWayStatus() {
+        return wayStatus;
+    }
+    /**
+     * 设置:商品sku
+     */
+    public void setSku(String sku) {
+        this.sku = sku;
+    }
+
+    /**
+     * 获取:商品sku
+     */
+    public String getSku() {
+        return sku;
+    }
+    /**
+     * 设置:供应商id
+     */
+    public void setSupplierId(Integer supplierId) {
+        this.supplierId = supplierId;
+    }
+
+    /**
+     * 获取:供应商id
+     */
+    public Integer getSupplierId() {
+        return supplierId;
+    }
+    /**
+     * 设置:原产地
+     */
+    public void setOriginCountry(String originCountry) {
+        this.originCountry = originCountry;
+    }
+
+    /**
+     * 获取:原产地
+     */
+    public String getOriginCountry() {
+        return originCountry;
+    }
+    /**
+     * 设置:数量
+     */
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    /**
+     * 获取:数量
+     */
+    public Integer getNum() {
+        return num;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间,yyyy-MM-dd HH:mm:ss
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间,yyyy-MM-dd HH:mm:ss
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间,yyyy-MM-dd HH:mm:ss
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间,yyyy-MM-dd HH:mm:ss
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 256 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/GoodsTransportInfoEntity.java

@@ -0,0 +1,256 @@
+package com.kmall.admin.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 在途运输信息表实体
+ * 表名 mall_goods_transport_info
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-06-15 18:07:33
+ */
+public class GoodsTransportInfoEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 在途编号
+     */
+    private Integer transId;
+    /**
+     * 00:海运,10:空运,20:公路,30:铁路
+     */
+    private String transportType;
+    /**
+     * 运输工具
+     */
+    private String transportTool;
+    /**
+     * 第三方商户编号
+     */
+    private Integer thirdMerchSn;
+    /**
+     * 0:是,1:否,默认为0
+     */
+    private Integer wayStatus;
+    /**
+     * 始发地
+     */
+    private String origin;
+    /**
+     * 目的地
+     */
+    private String destination;
+    /**
+     * 始发时间
+     */
+    private Date startTime;
+    /**
+     * 到达时间
+     */
+    private Date arrivalTime;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间,yyyy-MM-dd HH:mm:ss
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间,yyyy-MM-dd HH:mm:ss
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    /**
+     * 设置:在途编号
+     */
+    public void setTransId(Integer transId) {
+        this.transId = transId;
+    }
+
+    /**
+     * 获取:在途编号
+     */
+    public Integer getTransId() {
+        return transId;
+    }
+    /**
+     * 设置:00:海运,10:空运,20:公路,30:铁路
+     */
+    public void setTransportType(String transportType) {
+        this.transportType = transportType;
+    }
+
+    /**
+     * 获取:00:海运,10:空运,20:公路,30:铁路
+     */
+    public String getTransportType() {
+        return transportType;
+    }
+    /**
+     * 设置:运输工具
+     */
+    public void setTransportTool(String transportTool) {
+        this.transportTool = transportTool;
+    }
+
+    /**
+     * 获取:运输工具
+     */
+    public String getTransportTool() {
+        return transportTool;
+    }
+    /**
+     * 设置:第三方商户编号
+     */
+    public void setThirdMerchSn(Integer thirdMerchSn) {
+        this.thirdMerchSn = thirdMerchSn;
+    }
+
+    /**
+     * 获取:第三方商户编号
+     */
+    public Integer getThirdMerchSn() {
+        return thirdMerchSn;
+    }
+    /**
+     * 设置:0:是,1:否,默认为0
+     */
+    public void setWayStatus(Integer wayStatus) {
+        this.wayStatus = wayStatus;
+    }
+
+    /**
+     * 获取:0:是,1:否,默认为0
+     */
+    public Integer getWayStatus() {
+        return wayStatus;
+    }
+    /**
+     * 设置:始发地
+     */
+    public void setOrigin(String origin) {
+        this.origin = origin;
+    }
+
+    /**
+     * 获取:始发地
+     */
+    public String getOrigin() {
+        return origin;
+    }
+    /**
+     * 设置:目的地
+     */
+    public void setDestination(String destination) {
+        this.destination = destination;
+    }
+
+    /**
+     * 获取:目的地
+     */
+    public String getDestination() {
+        return destination;
+    }
+    /**
+     * 设置:始发时间
+     */
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    /**
+     * 获取:始发时间
+     */
+    public Date getStartTime() {
+        return startTime;
+    }
+    /**
+     * 设置:到达时间
+     */
+    public void setArrivalTime(Date arrivalTime) {
+        this.arrivalTime = arrivalTime;
+    }
+
+    /**
+     * 获取:到达时间
+     */
+    public Date getArrivalTime() {
+        return arrivalTime;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间,yyyy-MM-dd HH:mm:ss
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间,yyyy-MM-dd HH:mm:ss
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间,yyyy-MM-dd HH:mm:ss
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间,yyyy-MM-dd HH:mm:ss
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 6 - 0
kmall-admin/src/main/java/com/kmall/admin/service/GoodsService.java

@@ -2,6 +2,7 @@ package com.kmall.admin.service;
 
 import com.kmall.admin.dto.GoodsDetailsDto;
 import com.kmall.admin.dto.GoodsDto;
+import com.kmall.admin.dto.GoodsPanoramaDto;
 import com.kmall.admin.entity.GoodsEntity;
 
 import java.util.List;
@@ -130,4 +131,9 @@ public interface GoodsService {
      * @return
      */
     GoodsDetailsDto queryGoodsDetailsByProdBarcode(String prodBarcode, String storeId);
+
+
+    GoodsPanoramaDto searchGoodsPanoramaDtoByKeyword(String keyword);
+
+
 }

+ 78 - 0
kmall-admin/src/main/java/com/kmall/admin/service/GoodsTransportInfoDetailService.java

@@ -0,0 +1,78 @@
+package com.kmall.admin.service;
+
+import com.kmall.admin.entity.GoodsTransportInfoDetailEntity;
+import com.kmall.common.utils.Query;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 在途商品明细表Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-06-15 18:19:23
+ */
+public interface GoodsTransportInfoDetailService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param transItemId 主键
+     * @return 实体
+     */
+    GoodsTransportInfoDetailEntity queryObject(Integer transItemId);
+
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<GoodsTransportInfoDetailEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param goodsTransportInfoDetail 实体
+     * @return 保存条数
+     */
+    int save(GoodsTransportInfoDetailEntity goodsTransportInfoDetail);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param goodsTransportInfoDetail 实体
+     * @return 更新条数
+     */
+    int update(GoodsTransportInfoDetailEntity goodsTransportInfoDetail);
+
+    /**
+     * 根据主键删除
+     *
+     * @param transItemId
+     * @return 删除条数
+     */
+    int delete(Integer transItemId);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param transItemIds
+     * @return 删除条数
+     */
+    int deleteBatch(Integer[] transItemIds);
+
+
+    List<GoodsTransportInfoDetailEntity> searchListByStatusAndSku(Query query, Integer wayStatus, String sku);
+
+    int queryTotalByStatusAndSku(Query query, Integer wayStatus, String sku);
+}

+ 74 - 0
kmall-admin/src/main/java/com/kmall/admin/service/GoodsTransportInfoService.java

@@ -0,0 +1,74 @@
+package com.kmall.admin.service;
+
+import com.kmall.admin.entity.GoodsTransportInfoEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 在途运输信息表Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-06-15 18:07:33
+ */
+public interface GoodsTransportInfoService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param transId 主键
+     * @return 实体
+     */
+    GoodsTransportInfoEntity queryObject(Integer transId);
+
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<GoodsTransportInfoEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param goodsTransportInfo 实体
+     * @return 保存条数
+     */
+    int save(GoodsTransportInfoEntity goodsTransportInfo);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param goodsTransportInfo 实体
+     * @return 更新条数
+     */
+    int update(GoodsTransportInfoEntity goodsTransportInfo);
+
+    /**
+     * 根据主键删除
+     *
+     * @param transId
+     * @return 删除条数
+     */
+    int delete(Integer transId);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param transIds
+     * @return 删除条数
+     */
+    int deleteBatch(Integer[] transIds);
+
+
+}

+ 7 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java

@@ -5,6 +5,7 @@ import com.google.common.collect.Maps;
 import com.kmall.admin.dao.*;
 import com.kmall.admin.dto.GoodsDetailsDto;
 import com.kmall.admin.dto.GoodsDto;
+import com.kmall.admin.dto.GoodsPanoramaDto;
 import com.kmall.admin.entity.*;
 import com.kmall.admin.service.GoodsService;
 import com.kmall.admin.utils.ShiroUtils;
@@ -1023,6 +1024,12 @@ public class GoodsServiceImpl implements GoodsService {
     public GoodsDetailsDto queryGoodsDetailsByProdBarcode(String prodBarcode, String storeId) {
         return goodsDao.queryGoodsDetailsByProdBarcode(prodBarcode,storeId);
     }
+
+
+    @Override
+    public GoodsPanoramaDto searchGoodsPanoramaDtoByKeyword(String keyword) {
+        return goodsDao.searchGoodsPanoramaDtoByKeyword(keyword);
+    }
 /*  @Override
     @Transactional
     public int uploadExcel(MultipartFile file) {

+ 71 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsTransportInfoDetailServiceImpl.java

@@ -0,0 +1,71 @@
+package com.kmall.admin.service.impl;
+
+import com.kmall.common.utils.Query;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.kmall.admin.dao.GoodsTransportInfoDetailDao;
+import com.kmall.admin.entity.GoodsTransportInfoDetailEntity;
+import com.kmall.admin.service.GoodsTransportInfoDetailService;
+
+/**
+ * 在途商品明细表Service实现类
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-06-15 18:19:23
+ */
+@Service("goodsTransportInfoDetailService")
+public class GoodsTransportInfoDetailServiceImpl implements GoodsTransportInfoDetailService {
+    @Autowired
+    private GoodsTransportInfoDetailDao goodsTransportInfoDetailDao;
+
+    @Override
+    public GoodsTransportInfoDetailEntity queryObject(Integer transItemId) {
+        return goodsTransportInfoDetailDao.queryObject(transItemId);
+    }
+
+    @Override
+    public List<GoodsTransportInfoDetailEntity> queryList(Map<String, Object> map) {
+        return goodsTransportInfoDetailDao.queryList(map);
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return goodsTransportInfoDetailDao.queryTotal(map);
+    }
+
+    @Override
+    public int save(GoodsTransportInfoDetailEntity goodsTransportInfoDetail) {
+        return goodsTransportInfoDetailDao.save(goodsTransportInfoDetail);
+    }
+
+    @Override
+    public int update(GoodsTransportInfoDetailEntity goodsTransportInfoDetail) {
+        return goodsTransportInfoDetailDao.update(goodsTransportInfoDetail);
+    }
+
+    @Override
+    public int delete(Integer transItemId) {
+        return goodsTransportInfoDetailDao.delete(transItemId);
+    }
+
+    @Override
+    public int deleteBatch(Integer[]transItemIds) {
+        return goodsTransportInfoDetailDao.deleteBatch(transItemIds);
+    }
+
+    @Override
+    public List<GoodsTransportInfoDetailEntity> searchListByStatusAndSku(Query query, Integer wayStatus, String sku) {
+        return goodsTransportInfoDetailDao.searchListByStatusAndSku(query,wayStatus,sku);
+    }
+
+    @Override
+    public int queryTotalByStatusAndSku(Query query, Integer wayStatus, String sku) {
+        return goodsTransportInfoDetailDao.queryTotalByStatusAndSku(query,wayStatus,sku);
+    }
+
+}

+ 60 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsTransportInfoServiceImpl.java

@@ -0,0 +1,60 @@
+package com.kmall.admin.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.kmall.admin.dao.GoodsTransportInfoDao;
+import com.kmall.admin.entity.GoodsTransportInfoEntity;
+import com.kmall.admin.service.GoodsTransportInfoService;
+
+/**
+ * 在途运输信息表Service实现类
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-06-15 18:07:33
+ */
+@Service("goodsTransportInfoService")
+public class GoodsTransportInfoServiceImpl implements GoodsTransportInfoService {
+    @Autowired
+    private GoodsTransportInfoDao goodsTransportInfoDao;
+
+    @Override
+    public GoodsTransportInfoEntity queryObject(Integer transId) {
+        return goodsTransportInfoDao.queryObject(transId);
+    }
+
+    @Override
+    public List<GoodsTransportInfoEntity> queryList(Map<String, Object> map) {
+        return goodsTransportInfoDao.queryList(map);
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return goodsTransportInfoDao.queryTotal(map);
+    }
+
+    @Override
+    public int save(GoodsTransportInfoEntity goodsTransportInfo) {
+        return goodsTransportInfoDao.save(goodsTransportInfo);
+    }
+
+    @Override
+    public int update(GoodsTransportInfoEntity goodsTransportInfo) {
+        return goodsTransportInfoDao.update(goodsTransportInfo);
+    }
+
+    @Override
+    public int delete(Integer transId) {
+        return goodsTransportInfoDao.delete(transId);
+    }
+
+    @Override
+    public int deleteBatch(Integer[]transIds) {
+        return goodsTransportInfoDao.deleteBatch(transIds);
+    }
+
+}

+ 15 - 0
kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml

@@ -591,4 +591,19 @@
     <select id="queryMaxId" resultType="java.lang.Long" parameterType="map">
         SELECT MAX(id) FROM mall_goods
     </select>
+    <select id="searchGoodsPanoramaDtoByKeyword" resultType="com.kmall.admin.dto.GoodsPanoramaDto">
+        SELECT
+            g.id id,g.name `name`,g.name simpleName,g.ciq_prod_model ciqProdModel,
+            g.goods_unit goodsBasicUnit,g.category_id categoryId,c.name categoryName,
+            g.goods_unit goodsPurchaseUnit,g.supplier_id supplierId,s.child_supplier_name supplierName,
+            g.prod_barcode prodBarcode,g.plu plu,g.goods_sn goodsSn,g.brand brand
+        FROM
+            mall_goods g
+            INNER JOIN mall_category c
+            INNER JOIN mall_supplier s
+        WHERE
+            g.category_id = c.id
+            and g.supplier_id = s.id
+            AND (g.goods_sn=#{keyword} OR g.prod_barcode=#{keyword})
+    </select>
 </mapper>

+ 147 - 0
kmall-admin/src/main/resources/mybatis/mapper/GoodsTransportInfoDao.xml

@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kmall.admin.dao.GoodsTransportInfoDao">
+
+    <resultMap type="com.kmall.admin.entity.GoodsTransportInfoEntity" id="goodsTransportInfoMap">
+        <result property="transId" column="trans_id"/>
+        <result property="transportType" column="transport_type"/>
+        <result property="transportTool" column="transport_tool"/>
+        <result property="thirdMerchSn" column="third_merch_sn"/>
+        <result property="wayStatus" column="way_status"/>
+        <result property="origin" column="origin"/>
+        <result property="destination" column="destination"/>
+        <result property="startTime" column="start_time"/>
+        <result property="arrivalTime" column="arrival_time"/>
+        <result property="createrSn" column="creater_sn"/>
+        <result property="createTime" column="create_time"/>
+        <result property="moderSn" column="moder_sn"/>
+        <result property="modTime" column="mod_time"/>
+        <result property="tstm" column="tstm"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.GoodsTransportInfoEntity">
+		select
+			`trans_id`,
+			`transport_type`,
+			`transport_tool`,
+			`third_merch_sn`,
+			`way_status`,
+			`origin`,
+			`destination`,
+			`start_time`,
+			`arrival_time`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`
+		from mall_goods_transport_info
+		where trans_id = #{id}
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.GoodsTransportInfoEntity">
+		select
+    		`trans_id`,
+    		`transport_type`,
+    		`transport_tool`,
+    		`third_merch_sn`,
+    		`way_status`,
+    		`origin`,
+    		`destination`,
+    		`start_time`,
+    		`arrival_time`,
+    		`creater_sn`,
+    		`create_time`,
+    		`moder_sn`,
+    		`mod_time`,
+    		`tstm`
+		from mall_goods_transport_info
+		WHERE 1=1
+		<if test="name != null and name.trim() != ''">
+			AND name LIKE concat('%',#{name},'%')
+		</if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+			<otherwise>
+                order by trans_id desc
+			</otherwise>
+        </choose>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+	
+ 	<select id="queryTotal" resultType="int">
+		select count(*) from mall_goods_transport_info
+		WHERE 1=1
+        <if test="name != null and name.trim() != ''">
+            AND name LIKE concat('%',#{name},'%')
+        </if>
+	</select>
+
+	<insert id="save" parameterType="com.kmall.admin.entity.GoodsTransportInfoEntity" useGeneratedKeys="true" keyProperty="transId">
+		insert into mall_goods_transport_info(
+			`transport_type`,
+			`transport_tool`,
+			`third_merch_sn`,
+			`way_status`,
+			`origin`,
+			`destination`,
+			`start_time`,
+			`arrival_time`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`)
+		values(
+			#{transportType},
+			#{transportTool},
+			#{thirdMerchSn},
+			#{wayStatus},
+			#{origin},
+			#{destination},
+			#{startTime},
+			#{arrivalTime},
+			#{createrSn},
+			#{createTime},
+			#{moderSn},
+			#{modTime},
+			#{tstm})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.GoodsTransportInfoEntity">
+		update mall_goods_transport_info 
+		<set>
+			<if test="transportType != null">`transport_type` = #{transportType}, </if>
+			<if test="transportTool != null">`transport_tool` = #{transportTool}, </if>
+			<if test="thirdMerchSn != null">`third_merch_sn` = #{thirdMerchSn}, </if>
+			<if test="wayStatus != null">`way_status` = #{wayStatus}, </if>
+			<if test="origin != null">`origin` = #{origin}, </if>
+			<if test="destination != null">`destination` = #{destination}, </if>
+			<if test="startTime != null">`start_time` = #{startTime}, </if>
+			<if test="arrivalTime != null">`arrival_time` = #{arrivalTime}, </if>
+			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
+			<if test="createTime != null">`create_time` = #{createTime}, </if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
+			<if test="modTime != null">`mod_time` = #{modTime}, </if>
+			<if test="tstm != null">`tstm` = #{tstm}</if>
+		</set>
+		where trans_id = #{transId}
+	</update>
+	
+	<delete id="delete">
+		delete from mall_goods_transport_info where trans_id = #{value}
+	</delete>
+	
+	<delete id="deleteBatch">
+		delete from mall_goods_transport_info where trans_id in 
+		<foreach item="transId" collection="array" open="(" separator="," close=")">
+			#{transId}
+		</foreach>
+	</delete>
+
+</mapper>

+ 159 - 0
kmall-admin/src/main/resources/mybatis/mapper/GoodsTransportInfoDetailDao.xml

@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kmall.admin.dao.GoodsTransportInfoDetailDao">
+
+    <resultMap type="com.kmall.admin.entity.GoodsTransportInfoDetailEntity" id="goodsTransportInfoDetailMap">
+        <result property="transItemId" column="trans_item_id"/>
+        <result property="wayStatus" column="way_status"/>
+        <result property="sku" column="sku"/>
+        <result property="supplierId" column="supplier_id"/>
+        <result property="originCountry" column="origin_country"/>
+        <result property="num" column="num"/>
+        <result property="createrSn" column="creater_sn"/>
+        <result property="createTime" column="create_time"/>
+        <result property="moderSn" column="moder_sn"/>
+        <result property="modTime" column="mod_time"/>
+        <result property="tstm" column="tstm"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.GoodsTransportInfoDetailEntity">
+		select
+			`trans_item_id`,
+			`way_status`,
+			`sku`,
+			`supplier_id`,
+			`origin_country`,
+			`num`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`
+		from mall_goods_transport_info_detail
+		where trans_item_id = #{id}
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.GoodsTransportInfoDetailEntity">
+		select
+    		`trans_item_id`,
+    		`way_status`,
+    		`sku`,
+    		`supplier_id`,
+    		`origin_country`,
+    		`num`,
+    		`creater_sn`,
+    		`create_time`,
+    		`moder_sn`,
+    		`mod_time`,
+    		`tstm`
+		from mall_goods_transport_info_detail
+		WHERE 1=1
+		<if test="name != null and name.trim() != ''">
+			AND name LIKE concat('%',#{name},'%')
+		</if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+			<otherwise>
+                order by trans_item_id desc
+			</otherwise>
+        </choose>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+	
+ 	<select id="queryTotal" resultType="int">
+		select count(*) from mall_goods_transport_info_detail
+		WHERE 1=1
+        <if test="name != null and name.trim() != ''">
+            AND name LIKE concat('%',#{name},'%')
+        </if>
+	</select>
+	<select id="searchListByStatusAndSku" resultType="com.kmall.admin.entity.GoodsTransportInfoDetailEntity">
+		select * from mall_goods_transport_info_detail where 1=1
+		<if test="wayStatus!=null">
+			AND way_status=#{wayStatus}
+		</if>
+		<if test="sku!=null and sku.trim() != ''">
+			AND sku=#{sku}
+		</if>
+		<choose>
+			<when test="query.sidx != null and query.sidx.trim() != ''">
+				order by ${query.sidx} ${query.order}
+			</when>
+			<otherwise>
+				order by trans_item_id desc
+			</otherwise>
+		</choose>
+		<if test="query.offset != null and query.limit != null">
+			limit #{query.offset}, #{query.limit}
+		</if>
+	</select>
+	<select id="queryTotalByStatusAndSku" resultType="java.lang.Integer">
+		select count(*) from mall_goods_transport_info_detail
+		WHERE 1=1
+		<if test="wayStatus!=null">
+			AND way_status=#{wayStatus}
+		</if>
+		<if test="sku!=null and sku.trim() != ''">
+			AND sku=#{sku}
+		</if>
+	</select>
+
+	<insert id="save" parameterType="com.kmall.admin.entity.GoodsTransportInfoDetailEntity" useGeneratedKeys="true" keyProperty="transItemId">
+		insert into mall_goods_transport_info_detail(
+			`way_status`,
+			`sku`,
+			`supplier_id`,
+			`origin_country`,
+			`num`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`)
+		values(
+			#{wayStatus},
+			#{sku},
+			#{supplierId},
+			#{originCountry},
+			#{num},
+			#{createrSn},
+			#{createTime},
+			#{moderSn},
+			#{modTime},
+			#{tstm})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.GoodsTransportInfoDetailEntity">
+		update mall_goods_transport_info_detail 
+		<set>
+			<if test="wayStatus != null">`way_status` = #{wayStatus}, </if>
+			<if test="sku != null">`sku` = #{sku}, </if>
+			<if test="supplierId != null">`supplier_id` = #{supplierId}, </if>
+			<if test="originCountry != null">`origin_country` = #{originCountry}, </if>
+			<if test="num != null">`num` = #{num}, </if>
+			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
+			<if test="createTime != null">`create_time` = #{createTime}, </if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
+			<if test="modTime != null">`mod_time` = #{modTime}, </if>
+			<if test="tstm != null">`tstm` = #{tstm}</if>
+		</set>
+		where trans_item_id = #{transItemId}
+	</update>
+	
+	<delete id="delete">
+		delete from mall_goods_transport_info_detail where trans_item_id = #{value}
+	</delete>
+	
+	<delete id="deleteBatch">
+		delete from mall_goods_transport_info_detail where trans_item_id in 
+		<foreach item="transItemId" collection="array" open="(" separator="," close=")">
+			#{transItemId}
+		</foreach>
+	</delete>
+
+</mapper>

+ 87 - 0
kmall-admin/src/main/webapp/WEB-INF/page/shop/goodstransportinfo.html

@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>在途运输信息表</title>
+    #parse("sys/header.html")
+</head>
+<body>
+<div id="rrapp" v-cloak>
+	<div v-show="showList">
+        <Row :gutter="16">
+            <div class="search-group">
+                <i-col span="4">
+                    <i-input v-model="q.name" @on-enter="query" placeholder="名称"/>
+                </i-col>
+                <i-button @click="query">查询</i-button>
+                <i-button @click="reloadSearch">重置</i-button>
+            </div>
+            <div class="buttons-group">
+                #if($shiro.hasPermission("goodstransportinfo:save"))
+                <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
+                #end
+                #if($shiro.hasPermission("goodstransportinfo:update"))
+                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
+                #end
+                #if($shiro.hasPermission("goodstransportinfo:delete"))
+                <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
+                #end
+            </div>
+        </Row>
+	    <table id="jqGrid"></table>
+	    <div id="jqGridPager"></div>
+    </div>
+
+    <Card v-show="!showList">
+        <p slot="title">{{title}}</p>
+		<i-form ref="formValidate" :model="goodsTransportInfo" :rules="ruleValidate" :label-width="80">
+            <Form-item label="传输类型" prop="transportType">
+                <i-input v-model="goodsTransportInfo.transportType" placeholder="传输类型"/>
+            </Form-item>
+            <Form-item label="运输工具" prop="transportTool">
+                <i-input v-model="goodsTransportInfo.transportTool" placeholder="运输工具"/>
+            </Form-item>
+            <Form-item label="第三方商户编号" prop="thirdMerchSn">
+                <i-input v-model="goodsTransportInfo.thirdMerchSn" placeholder="第三方商户编号"/>
+            </Form-item>
+            <Form-item label="是否在途" prop="wayStatus">
+                <i-input v-model="goodsTransportInfo.wayStatus" placeholder="是否在途"/>
+            </Form-item>
+            <Form-item label="始发地" prop="origin">
+                <i-input v-model="goodsTransportInfo.origin" placeholder="始发地"/>
+            </Form-item>
+            <Form-item label="目的地" prop="destination">
+                <i-input v-model="goodsTransportInfo.destination" placeholder="目的地"/>
+            </Form-item>
+            <Form-item label="始发时间" prop="startTime">
+                <i-input v-model="goodsTransportInfo.startTime" placeholder="始发时间"/>
+            </Form-item>
+            <Form-item label="到达时间" prop="arrivalTime">
+                <i-input v-model="goodsTransportInfo.arrivalTime" placeholder="到达时间"/>
+            </Form-item>
+            <Form-item label="创建人编号" prop="createrSn">
+                <i-input v-model="goodsTransportInfo.createrSn" placeholder="创建人编号"/>
+            </Form-item>
+            <Form-item label="创建时间" prop="createTime">
+                <i-input v-model="goodsTransportInfo.createTime" placeholder="创建时间"/>
+            </Form-item>
+            <Form-item label="修改人编号" prop="moderSn">
+                <i-input v-model="goodsTransportInfo.moderSn" placeholder="修改人编号"/>
+            </Form-item>
+            <Form-item label="修改时间" prop="modTime">
+                <i-input v-model="goodsTransportInfo.modTime" placeholder="修改时间"/>
+            </Form-item>
+            <Form-item label="时间戳" prop="tstm">
+                <i-input v-model="goodsTransportInfo.tstm" placeholder="时间戳"/>
+            </Form-item>
+            <Form-item>
+                <i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>
+                <i-button type="warning" @click="reload" style="margin-left: 8px"/>返回</i-button>
+                <i-button type="ghost" @click="handleReset('formValidate')" style="margin-left: 8px">重置</i-button>
+            </Form-item>
+        </i-form>
+	</Card>
+</div>
+
+<script src="${rc.contextPath}/js/shop/goodstransportinfo.js?_${date.systemTime}"></script>
+</body>
+</html>

+ 82 - 0
kmall-admin/src/main/webapp/WEB-INF/page/shop/goodstransportinfodetail.html

@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>在途商品明细表</title>
+    #parse("sys/header.html")
+</head>
+<body>
+<div id="rrapp" v-cloak>
+	<div v-show="showList">
+        <Row :gutter="16">
+            <div class="search-group">
+                <i-col span="2">
+                    <i-input v-model="q.wayStatus" @on-enter="query" placeholder="是否在途"/>
+                </i-col>
+                <i-col span="4">
+                    <i-input v-model="q.sku" @on-enter="query" placeholder="sku"/>
+                </i-col>
+                <i-button @click="query">查询</i-button>
+                <i-button @click="reloadSearch">重置</i-button>
+            </div>
+            <div class="buttons-group">
+                <i-col style="display: inline-grid;">
+                    <Upload :show-upload-list="false" :on-success="uploadExcelSuccess" :on-error="uploadExcelError" :on-format-error="uploadExcelFormatError"
+                            :format="['xls','xlsx']"
+                            action="../goodstransportinfodetail/transInfoDetailUpload">
+                        <i-button type="ghost" icon="ios-cloud-upload-outline">在途商品明细导入</i-button>
+                    </Upload>
+                </i-col>
+                <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
+                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
+                <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
+            </div>
+        </Row>
+	    <table id="jqGrid"></table>
+	    <div id="jqGridPager"></div>
+    </div>
+
+    <Card v-show="!showList">
+        <p slot="title">{{title}}</p>
+		<i-form ref="formValidate" :model="goodsTransportInfoDetail" :rules="ruleValidate" :label-width="80">
+            <Form-item label="是否在途" prop="wayStatus">
+                <i-input v-model="goodsTransportInfoDetail.wayStatus" placeholder="是否在途"/>
+            </Form-item>
+            <Form-item label="商品sku" prop="sku">
+                <i-input v-model="goodsTransportInfoDetail.sku" placeholder="商品sku"/>
+            </Form-item>
+            <Form-item label="供应商id" prop="supplierId">
+                <i-input v-model="goodsTransportInfoDetail.supplierId" placeholder="供应商id"/>
+            </Form-item>
+            <Form-item label="原产地" prop="originCountry">
+                <i-input v-model="goodsTransportInfoDetail.originCountry" placeholder="原产地"/>
+            </Form-item>
+            <Form-item label="数量" prop="num">
+                <i-input v-model="goodsTransportInfoDetail.num" placeholder="数量"/>
+            </Form-item>
+            <Form-item label="创建人编号" prop="createrSn">
+                <i-input v-model="goodsTransportInfoDetail.createrSn" placeholder="创建人编号"/>
+            </Form-item>
+            <!--<Form-item label="创建时间" prop="createTime">-->
+                <!--<i-input v-model="goodsTransportInfoDetail.createTime"  placeholder="创建时间"/>-->
+            <!--</Form-item>-->
+            <Form-item label="修改人编号" prop="moderSn">
+                <i-input v-model="goodsTransportInfoDetail.moderSn" placeholder="修改人编号"/>
+            </Form-item>
+            <!--<Form-item label="修改时间" prop="modTime">-->
+                <!--<i-input v-model="goodsTransportInfoDetail.modTime"  placeholder="修改时间"/>-->
+            <!--</Form-item>-->
+            <!--<Form-item label="时间戳" prop="tstm">-->
+                <!--<i-input v-model="goodsTransportInfoDetail.tstm" placeholder="时间戳"/>-->
+            <!--</Form-item>-->
+            <Form-item>
+                <i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>
+                <i-button type="warning" @click="reload" style="margin-left: 8px"/>返回</i-button>
+                <i-button type="ghost" @click="handleReset('formValidate')" style="margin-left: 8px">重置</i-button>
+            </Form-item>
+        </i-form>
+	</Card>
+</div>
+
+<script src="${rc.contextPath}/js/shop/goodstransportinfodetail.js?_${date.systemTime}"></script>
+</body>
+</html>

+ 151 - 0
kmall-admin/src/main/webapp/js/shop/goodstransportinfo.js

@@ -0,0 +1,151 @@
+$(function () {
+    $("#jqGrid").jqGrid({
+        url: '../goodstransportinfo/list',
+        datatype: "json",
+        colModel: [
+			{label: 'transId', name: 'transId', index: 'trans_id', key: true, hidden: true},
+			{label: '传输类型', name: 'transportType', index: 'transport_type', width: 80},
+			{label: '运输工具', name: 'transportTool', index: 'transport_tool', width: 80},
+			{label: '第三方商户编号', name: 'thirdMerchSn', index: 'third_merch_sn', width: 80},
+			{label: '是否在途', name: 'wayStatus', index: 'way_status', width: 80},
+			{label: '始发地', name: 'origin', index: 'origin', width: 80},
+			{label: '目的地', name: 'destination', index: 'destination', width: 80},
+			{label: '始发时间', name: 'startTime', index: 'start_time', width: 80},
+			{label: '到达时间', name: 'arrivalTime', index: 'arrival_time', width: 80},
+			{label: '创建人编号', name: 'createrSn', index: 'creater_sn', width: 80},
+			{label: '创建时间', name: 'createTime', index: 'create_time', width: 80},
+			{label: '修改人编号', name: 'moderSn', index: 'moder_sn', width: 80},
+			{label: '修改时间', name: 'modTime', index: 'mod_time', width: 80},
+			{label: '时间戳', name: 'tstm', index: 'tstm', width: 80}],
+		viewrecords: true,
+        height: 550,
+        rowNum: 10,
+        rowList: [10, 30, 50],
+        rownumbers: true,
+        rownumWidth: 25,
+        autowidth: true,
+        multiselect: true,
+        pager: "#jqGridPager",
+        jsonReader: {
+            root: "page.list",
+            page: "page.currPage",
+            total: "page.totalPage",
+            records: "page.totalCount"
+        },
+        prmNames: {
+            page: "page",
+            rows: "limit",
+            order: "order"
+        },
+        gridComplete: function () {
+            $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "hidden"});
+        }
+    });
+});
+
+let vm = new Vue({
+	el: '#rrapp',
+	data: {
+        showList: true,
+        title: null,
+		goodsTransportInfo: {},
+		ruleValidate: {
+			name: [
+				{required: true, message: '名称不能为空', trigger: 'blur'}
+			]
+		},
+		q: {
+		    name: ''
+		}
+	},
+	methods: {
+		query: function () {
+			vm.reload();
+		},
+		add: function () {
+			vm.showList = false;
+			vm.title = "新增";
+			vm.goodsTransportInfo = {};
+		},
+		update: function (event) {
+            let transId = getSelectedRow();
+			if (transId == null) {
+				return;
+			}
+			vm.showList = false;
+            vm.title = "修改";
+
+            vm.getInfo(transId)
+		},
+		saveOrUpdate: function (event) {
+            let url = vm.goodsTransportInfo.transId == null ? "../goodstransportinfo/save" : "../goodstransportinfo/update";
+			$.ajax({
+				type: "POST",
+			    url: url,
+			    contentType: "application/json",
+			    data: JSON.stringify(vm.goodsTransportInfo),
+                success: function (r) {
+                    if (r.code === 0) {
+                        alert('操作成功', function (index) {
+                            vm.reload();
+                        });
+                    } else {
+                        alert(r.msg);
+                    }
+                }
+			});
+		},
+		del: function (event) {
+            let transIds = getSelectedRows();
+			if (transIds == null){
+				return;
+			}
+
+			confirm('确定要删除选中的记录?', function () {
+				$.ajax({
+					type: "POST",
+				    url: "../goodstransportinfo/delete",
+				    contentType: "application/json",
+				    data: JSON.stringify(transIds),
+				    success: function (r) {
+						if (r.code == 0) {
+							alert('操作成功', function (index) {
+								$("#jqGrid").trigger("reloadGrid");
+							});
+						} else {
+							alert(r.msg);
+						}
+					}
+				});
+			});
+		},
+		getInfo: function(transId){
+			$.get("../goodstransportinfo/info/"+transId, function (r) {
+                vm.goodsTransportInfo = r.goodsTransportInfo;
+            });
+		},
+        reloadSearch: function() {
+            vm.q = {
+                name: ''
+            }
+            vm.reload();
+		},
+		reload: function (event) {
+			vm.showList = true;
+            let page = $("#jqGrid").jqGrid('getGridParam', 'page');
+			$("#jqGrid").jqGrid('setGridParam', {
+                postData: {'name': vm.q.name},
+                page: page
+            }).trigger("reloadGrid");
+            vm.handleReset('formValidate');
+		},
+        handleSubmit: function (name) {
+            handleSubmitValidate(this, name, function () {
+                vm.saveOrUpdate()
+            });
+        },
+        handleReset: function (name) {
+            handleResetForm(this, name);
+        }
+	}
+});

+ 193 - 0
kmall-admin/src/main/webapp/js/shop/goodstransportinfodetail.js

@@ -0,0 +1,193 @@
+$(function () {
+    $("#jqGrid").jqGrid({
+        url: '../goodstransportinfodetail/searchListByStatusAndSku',
+        datatype: "json",
+        colModel: [
+			{label: 'transItemId', name: 'transItemId', index: 'trans_item_id', key: true, hidden: true},
+			{label: '是否在途', name: 'wayStatus', index: 'way_status', width: 80,formatter: function (value) {
+                    if (value == '0') {
+                        return '是(0)';
+                    } else if(value == '1'){
+                        return '否(1)';
+                    }
+                }},
+			{label: '商品sku', name: 'sku', index: 'sku', width: 80},
+			{label: '供应商id', name: 'supplierId', index: 'supplier_id', width: 80},
+			{label: '原产地', name: 'originCountry', index: 'origin_country', width: 80},
+			{label: '数量', name: 'num', index: 'num', width: 80},
+			{label: '创建人编号', name: 'createrSn', index: 'creater_sn', width: 80},
+			{label: '创建时间', name: 'createTime', index: 'create_time', width: 80, align: 'center',width: 280,formatter: function (value) {
+                    return transDate(value,'yyyy-MM-dd hh:mm:ss');
+                }},
+			{label: '修改人编号', name: 'moderSn', index: 'moder_sn', width: 80},
+			{label: '修改时间', name: 'modTime', index: 'mod_time', width: 80, align: 'center',width: 280,formatter: function (value) {
+                    return transDate(value,'yyyy-MM-dd hh:mm:ss');
+                }},
+			{label: '时间戳', name: 'tstm', index: 'tstm', width: 80}],
+		viewrecords: true,
+        height: 550,
+        rowNum: 10,
+        rowList: [10, 30, 50],
+        rownumbers: true,
+        rownumWidth: 25,
+        autowidth: true,
+        multiselect: true,
+        pager: "#jqGridPager",
+        jsonReader: {
+            root: "page.list",
+            page: "page.currPage",
+            total: "page.totalPage",
+            records: "page.totalCount"
+        },
+        prmNames: {
+            page: "page",
+            rows: "limit",
+            order: "order"
+        },
+        gridComplete: function () {
+            $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "hidden"});
+        }
+    });
+});
+
+let vm = new Vue({
+	el: '#rrapp',
+	data: {
+        showList: true,
+        title: null,
+		goodsTransportInfoDetail: {},
+        ruleValidate: {
+            sku:{required: true, message: 'sku不能为空', trigger: 'blur'}
+            // wayStatus:{required: true, message: '是否在途不能为空', trigger: 'blur'}
+        },
+		q: {
+            wayStatus: null,
+			sku: null
+		}
+	},
+	methods: {
+		query: function () {
+			vm.reload();
+		},
+		add: function () {
+			vm.showList = false;
+			vm.title = "新增";
+			vm.goodsTransportInfoDetail = {};
+		},
+		update: function (event) {
+            let transItemId = getSelectedRow();
+			if (transItemId == null) {
+				return;
+			}
+			vm.showList = false;
+            vm.title = "修改";
+
+            vm.getInfo(transItemId)
+		},
+		saveOrUpdate: function (event) {
+            let url = vm.goodsTransportInfoDetail.transItemId == null ? "../goodstransportinfodetail/save" : "../goodstransportinfodetail/update";
+			$.ajax({
+				type: "POST",
+			    url: url,
+			    contentType: "application/json",
+			    data: JSON.stringify(vm.goodsTransportInfoDetail),
+                success: function (r) {
+                    if (r.code === 0) {
+                        alert('操作成功', function (index) {
+                            vm.reload();
+                        });
+                    } else {
+                        alert(r.msg);
+                    }
+                }
+			});
+		},
+		del: function (event) {
+            let transItemIds = getSelectedRows();
+			if (transItemIds == null){
+				return;
+			}
+
+			confirm('确定要删除选中的记录?', function () {
+				$.ajax({
+					type: "POST",
+				    url: "../goodstransportinfodetail/delete",
+				    contentType: "application/json",
+				    data: JSON.stringify(transItemIds),
+				    success: function (r) {
+						if (r.code == 0) {
+							alert('操作成功', function (index) {
+								$("#jqGrid").trigger("reloadGrid");
+							});
+						} else {
+							alert(r.msg);
+						}
+					}
+				});
+			});
+		},
+		getInfo: function(transItemId){
+			$.get("../goodstransportinfodetail/info/"+transItemId, function (r) {
+                vm.goodsTransportInfoDetail = r.goodsTransportInfoDetail;
+            });
+		},
+        reloadSearch: function() {
+            vm.q = {
+                wayStatus: null,
+                sku: null
+            }
+            vm.reload();
+		},
+		reload: function (event) {
+			vm.showList = true;
+            let page = $("#jqGrid").jqGrid('getGridParam', 'page');
+			$("#jqGrid").jqGrid('setGridParam', {
+                postData: {'sku': vm.q.sku,'wayStatus' : vm.q.wayStatus},
+                page: page
+            }).trigger("reloadGrid");
+            vm.handleReset('formValidate');
+		},
+        handleSubmit: function (name) {
+            handleSubmitValidate(this, name, function () {
+                vm.saveOrUpdate()
+            });
+        },
+        handleReset: function (name) {
+            handleResetForm(this, name);
+        },
+
+        uploadExcelSuccess: function () {
+            alert('上传成功', function (index) {
+                $("#jqGrid").trigger("reloadGrid");
+            });
+        },
+        uploadExcelError: function () {
+            alert('上传出现异常');
+        },
+
+        uploadExcelSuccess: function (data) {
+            if(data.code==0){
+                alert('导入成功', function (index) {
+                    vm.reload();
+                });
+            }else{
+                if(data.msg == '导入成功!'){
+                    alert(data.msg);
+                    vm.reload();
+                }else {
+                    alert(data.msg);
+                }
+            }
+        },
+        uploadExcelError: function (data) {
+            console.log(data);
+            alert('上传出现异常,请重试!');
+        },
+        uploadExcelFormatError: function (file) {
+            this.$Notice.warning({
+                title: '文件格式不正确',
+                desc: '文件 ' + file.name + ' 格式不正确,请上传 xls 或 xlsx 格式的文件。'
+            });
+        }
+	}
+});