Browse Source

库存管理

wangxiaoming 5 years ago
parent
commit
f5f48778fc
19 changed files with 499 additions and 97 deletions
  1. 10 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/fm/InventoryInfo.java
  2. 47 46
      watero-rst-core/src/main/java/com.iamberry.rst.core/fm/WarehouseInfo.java
  3. 10 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/sys/Admin.java
  4. 1 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/InventoryService.java
  5. 14 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java
  6. 43 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/OrderWarehouseService.java
  7. 2 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/InventoryServiceImpl.java
  8. 53 25
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java
  9. 1 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml
  10. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/InventoryMapper.java
  11. 7 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/inventoryMapper.xml
  12. 65 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderWarehouseServiceImpl.java
  13. 43 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/OrderWarehouseMapper.java
  14. 78 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/orderWarehouseMapper.xml
  15. 32 15
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java
  16. 23 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/InventoryController.java
  17. 5 2
      watero-rst-web/src/main/resources/watero-rst-orm.xml
  18. 13 3
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/inventory/inventory_list.ftl
  19. 51 0
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/error.ftl

+ 10 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/fm/InventoryInfo.java

@@ -31,6 +31,8 @@ public class InventoryInfo implements Serializable{
     private Integer operationNum;//操作数量
     private Integer productTypeId;//产品类型id
 
+    private Integer warehouseId;//仓库ID
+
     public Integer getInventoryId() {
         return inventoryId;
     }
@@ -198,4 +200,12 @@ public class InventoryInfo implements Serializable{
     public void setProductTypeId(Integer productTypeId) {
         this.productTypeId = productTypeId;
     }
+
+    public Integer getWarehouseId() {
+        return warehouseId;
+    }
+
+    public void setWarehouseId(Integer warehouseId) {
+        this.warehouseId = warehouseId;
+    }
 }

+ 47 - 46
watero-rst-core/src/main/java/com.iamberry.rst.core/fm/WarehouseInfo.java

@@ -7,51 +7,52 @@ import java.util.Date;
  * 仓库表
  * Created by Administrator on 2018/7/11.
  */
+@Deprecated
 public class WarehouseInfo implements Serializable {
-    private static final long serialVersionUID = 8272776376340335251L;
-    private Integer warehouseId;
-    private Integer factoryId;//关联工厂id
-    private String warehouseName;//仓库名称
-    private String warehouseDesc;//仓库简介
-    private Date warehouseCreateDate;//创建时间
-
-    public Integer getWarehouseId() {
-        return warehouseId;
-    }
-
-    public void setWarehouseId(Integer warehouseId) {
-        this.warehouseId = warehouseId;
-    }
-
-    public Integer getFactoryId() {
-        return factoryId;
-    }
-
-    public void setFactoryId(Integer factoryId) {
-        this.factoryId = factoryId;
-    }
-
-    public String getWarehouseName() {
-        return warehouseName;
-    }
-
-    public void setWarehouseName(String warehouseName) {
-        this.warehouseName = warehouseName;
-    }
-
-    public String getWarehouseDesc() {
-        return warehouseDesc;
-    }
-
-    public void setWarehouseDesc(String warehouseDesc) {
-        this.warehouseDesc = warehouseDesc;
-    }
-
-    public Date getWarehouseCreateDate() {
-        return warehouseCreateDate;
-    }
-
-    public void setWarehouseCreateDate(Date warehouseCreateDate) {
-        this.warehouseCreateDate = warehouseCreateDate;
-    }
+//    private static final long serialVersionUID = 8272776376340335251L;
+//    private Integer warehouseId;
+//    private Integer factoryId;//关联工厂id
+//    private String warehouseName;//仓库名称
+//    private String warehouseDesc;//仓库简介
+//    private Date warehouseCreateDate;//创建时间
+//
+//    public Integer getWarehouseId() {
+//        return warehouseId;
+//    }
+//
+//    public void setWarehouseId(Integer warehouseId) {
+//        this.warehouseId = warehouseId;
+//    }
+//
+//    public Integer getFactoryId() {
+//        return factoryId;
+//    }
+//
+//    public void setFactoryId(Integer factoryId) {
+//        this.factoryId = factoryId;
+//    }
+//
+//    public String getWarehouseName() {
+//        return warehouseName;
+//    }
+//
+//    public void setWarehouseName(String warehouseName) {
+//        this.warehouseName = warehouseName;
+//    }
+//
+//    public String getWarehouseDesc() {
+//        return warehouseDesc;
+//    }
+//
+//    public void setWarehouseDesc(String warehouseDesc) {
+//        this.warehouseDesc = warehouseDesc;
+//    }
+//
+//    public Date getWarehouseCreateDate() {
+//        return warehouseCreateDate;
+//    }
+//
+//    public void setWarehouseCreateDate(Date warehouseCreateDate) {
+//        this.warehouseCreateDate = warehouseCreateDate;
+//    }
 }

+ 10 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/sys/Admin.java

@@ -59,6 +59,8 @@ public class Admin implements Serializable {
 
     private String adminOpenId;           // 管理员openid
 
+    private Integer warehouseId;           // 所属仓库Id
+
     public Integer getAdminManager() {
         return adminManager;
     }
@@ -210,6 +212,14 @@ public class Admin implements Serializable {
         return adminAccount.hashCode();
     }
 
+    public Integer getWarehouseId() {
+        return warehouseId;
+    }
+
+    public void setWarehouseId(Integer warehouseId) {
+        this.warehouseId = warehouseId;
+    }
+
     /**
      * 重载equals,只计算loginName;
      */

+ 1 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/InventoryService.java

@@ -26,7 +26,7 @@ public interface InventoryService {
      * @param inventoryProductBar
      * @return
      */
-    InventoryInfo getByInventoryByBar(String inventoryProductBar);
+    InventoryInfo getByInventoryByBar(String inventoryProductBar,Integer salesWarehouseId);
     /**
      * 新增
      */

+ 14 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -311,6 +311,20 @@ public interface SalesOrderService {
     Integer updateDeliver(SalesOrder salesOrder);
 
     /**
+     * 减少库存
+     * @param salesId
+     * @return
+     */
+    boolean updateInventory(Integer salesId,Integer salesWarehouseId);
+
+    /**
+     * 标记未出库时返还库存
+     * @param salesId
+     * @return
+     */
+    boolean returnInventory(Integer salesId,Integer salesWarehouseId);
+
+    /**
      * 获取出库数量
      * @param salesOrder
      * @return

+ 43 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/OrderWarehouseService.java

@@ -0,0 +1,43 @@
+package com.iamberry.rst.faces.order;
+
+import com.iamberry.rst.core.order.OrderWarehouse;
+
+import java.util.List;
+
+/**
+ *  仓库接口
+ * @author xm
+ * @Date 2019-06-11
+ */
+public interface OrderWarehouseService {
+    /**
+     * 获取集合
+     * @param  orderWarehouse
+     * @return List
+     */
+    List<OrderWarehouse> getOrderWarehouseList(OrderWarehouse  orderWarehouse);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  orderWarehouse
+     */
+    OrderWarehouse  getOrderWarehouseById(Integer  id);
+    /**
+     * 增加数据
+     * @param  orderWarehouse
+     * @return Integer
+     */
+    Integer  save(OrderWarehouse  orderWarehouse);
+    /**
+     * 修改数据
+     * @param  orderWarehouse
+     * @return Integer
+     */
+    Integer  update(OrderWarehouse  orderWarehouse);
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    Integer  delete(Integer  id);
+}

+ 2 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/InventoryServiceImpl.java

@@ -40,8 +40,8 @@ public class InventoryServiceImpl implements InventoryService {
     }
 
     @Override
-    public InventoryInfo getByInventoryByBar(String inventoryProductBar) {
-        return inventoryMapper.getByInventoryByBar(inventoryProductBar);
+    public InventoryInfo getByInventoryByBar(String inventoryProductBar,Integer salesWarehouseId) {
+        return inventoryMapper.getByInventoryByBar(inventoryProductBar,salesWarehouseId);
     }
 
     @Override

+ 53 - 25
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -106,8 +106,9 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         // 作废订单时需要返还库存
         if(salesOrder.getSalesStatus() != null && salesOrder.getSalesStatus() == 3){
             // 如果已出库则返还库存
-            if(salesOrderMapper.getSalesOrderById(salesOrder.getSalesId()).getSalesDeliver() == 2){
-                returnInventory(salesOrder.getSalesId());
+            SalesOrder so = salesOrderMapper.getSalesOrderById(salesOrder.getSalesId());
+            if(so.getSalesDeliver() == 2){
+                returnInventory(salesOrder.getSalesId(),so.getSalesWarehouseId());
             }
         }
         return 1;
@@ -903,8 +904,9 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     @Transactional
     public Integer delSalesOrder(Integer id) {
         //查询出库状态判断是否需要返还库存
-        if(salesOrderMapper.getSalesOrderById(id).getSalesDeliver() == 2){
-            returnInventory(id);
+        SalesOrder so = salesOrderMapper.getSalesOrderById(id);
+        if(so.getSalesDeliver() == 2){
+            returnInventory(id,so.getSalesWarehouseId());
         }
         // 检查客诉是否使用订单,如果有使用订单,无法删除
         salesOrderMapper.delOrderItem(id);
@@ -1062,31 +1064,41 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     @Transactional
     @Override
     public Integer updateDeliver(SalesOrder salesOrder) {
-            if(salesOrder.getSalesDeliver() == 2){//标记出库,修改库存
-                if(!updateInventory(salesOrder.getSalesId())){
-                    return 0;
-                }
+        if(salesOrder.getSalesDeliver() == 2){//标记出库,修改库存
+            if(!salesOrderService.updateInventory(salesOrder.getSalesId(),salesOrder.getSalesWarehouseId())){
+                return 0;
             }
+        }
         if(salesOrder.getSalesDeliver() == 1){//标记未出库,修改库存
-            if(!returnInventory(salesOrder.getSalesId())){
+            if(!salesOrderService.returnInventory(salesOrder.getSalesId(),salesOrder.getSalesWarehouseId())){
                 return 0;
             }
         }
-        return salesOrderMapper.updateDeliver(salesOrder);
+        Integer flag = salesOrderMapper.updateDeliver(salesOrder);
+        if(flag < 1){
+            throw new RuntimeException("出库失败,订单出库失败。");
+        }
+        return flag;
     }
+
     //减少库存
-    public boolean updateInventory(Integer salesId){
+    @Transactional
+    @Override
+    public boolean updateInventory(Integer salesId,Integer salesWarehouseId){
         SalesOrderItem salesOrderItem = new SalesOrderItem();
         salesOrderItem.setItemOrderId(salesId);
         List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         for(SalesOrderItem item : listOrderitem){
-            InventoryInfo info = inventoryMapper.getByInventoryByBar(item.getItemColorBar());
+            InventoryInfo info = inventoryMapper.getByInventoryByBar(item.getItemColorBar(),salesWarehouseId);
             if(info != null){
                 if(info.getInventoryGoodProductNum() >= item.getItemNum()){
                     info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() - item.getItemNum());
                     info.setInventoryRecentRecord(sdf.format(new Date())+"出库:"+item.getItemNum()+"件");
-                    inventoryMapper.updateById(info);
+                    Integer flag =  inventoryMapper.updateById(info);
+                    if(flag < 1){
+                        throw new RuntimeException("【出库】更新库存失败,库存修改失败。");
+                    }
                     //添加日志
                     InventoryLog inventoryLog = new InventoryLog();
                     inventoryLog.setLogProductName(info.getInventoryProductName());
@@ -1096,28 +1108,37 @@ public class SalesOrderServiceImpl implements SalesOrderService {
                     inventoryLog.setLogOperationType(2);
                     inventoryLog.setLogDesc(sdf.format(new Date())+"待发货标记出库:"+item.getItemNum()+"件");
                     inventoryLog.setLogQualityType(1);
-                    inventoryLog.setLogWarehouseId(1);
-                    inventoryLogMapper.insert(inventoryLog);
+                    inventoryLog.setLogWarehouseId(salesWarehouseId);
+                    flag = inventoryLogMapper.insert(inventoryLog);
+                    if(flag < 1){
+                        throw new RuntimeException("更新库存失败,增加库存记录失败。");
+                    }
                 }else{
-                    return false;
+                    throw new RuntimeException("更新库存失败,该产品库存不足。");
                 }
+            }else{
+                throw new RuntimeException("更新库存失败,未查询到库存信息,请确认该仓库是否有该产品库存信息。");
             }
-
         }
         return true;
     }
     //标记未出库时返还库存
-    public boolean returnInventory(Integer salesId){
+    @Transactional
+    @Override
+    public boolean returnInventory(Integer salesId,Integer salesWarehouseId){
         SalesOrderItem salesOrderItem = new SalesOrderItem();
         salesOrderItem.setItemOrderId(salesId);
         List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         for(SalesOrderItem item : listOrderitem){
-            InventoryInfo info = inventoryMapper.getByInventoryByBar(item.getItemColorBar());
+            InventoryInfo info = inventoryMapper.getByInventoryByBar(item.getItemColorBar(),salesWarehouseId);
             if(info != null){
                 info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() + item.getItemNum());
                 info.setInventoryRecentRecord(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存:"+item.getItemNum()+"件");
-                inventoryMapper.updateById(info);
+                Integer flag = inventoryMapper.updateById(info);
+                if(flag < 1){
+                    throw new RuntimeException("【返还库存】更新库存失败,库存修改失败。");
+                }
                 //添加日志
                 InventoryLog inventoryLog = new InventoryLog();
                 inventoryLog.setLogProductName(info.getInventoryProductName());
@@ -1127,8 +1148,13 @@ public class SalesOrderServiceImpl implements SalesOrderService {
                 inventoryLog.setLogOperationType(1);
                 inventoryLog.setLogDesc(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存:"+item.getItemNum()+"件");
                 inventoryLog.setLogQualityType(1);
-                inventoryLog.setLogWarehouseId(1);
-                inventoryLogMapper.insert(inventoryLog);
+                inventoryLog.setLogWarehouseId(salesWarehouseId);
+                flag = inventoryLogMapper.insert(inventoryLog);
+                if(flag < 1){
+                    throw new RuntimeException("更新库存失败,增加库存记录失败。");
+                }
+            }else{
+                throw new RuntimeException("更新库存失败,未查询到库存信息,请确认该仓库是否有该产品库存信息。");
             }
 
         }
@@ -1186,10 +1212,11 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             orderCorrectItem.setOldNum(orderItem.getItemNum());
             if(orderItem.getItemNum().intValue() != salesOrderItem.getItemNum().intValue()){
                 //查询订单判断是否已出库
-                if(salesOrderMapper.getSalesOrderById(orderCorrectInfo.getItemOrderId()).getSalesDeliver() == 2){
+                SalesOrder so = salesOrderMapper.getSalesOrderById(orderCorrectInfo.getItemOrderId());
+                if(so.getSalesDeliver() == 2){
                     //返还库存
                     SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                    InventoryInfo info = inventoryMapper.getByInventoryByBar(orderItem.getItemColorBar());
+                    InventoryInfo info = inventoryMapper.getByInventoryByBar(orderItem.getItemColorBar(),so.getSalesWarehouseId());
                     //添加日志
                     InventoryLog inventoryLog = new InventoryLog();
                     inventoryLog.setLogProductName(info.getInventoryProductName());
@@ -1237,7 +1264,8 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         for(SalesOrderItem item : listOrderitem){
-            InventoryInfo info = inventoryMapper.getByInventoryByBar(item.getItemColorBar());
+            SalesOrder so = salesOrderMapper.getSalesOrderById(item.getItemOrderId());
+            InventoryInfo info = inventoryMapper.getByInventoryByBar(item.getItemColorBar(),so.getSalesWarehouseId());
             if(info != null){
                 info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() + item.getItemNum());
                 info.setInventoryRecentRecord(sdf.format(new Date())+"删除/作废订单返还库存:"+item.getItemNum()+"件");

+ 1 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml

@@ -1319,6 +1319,7 @@
              sales_shipping_status,
              sales_status,
              sales_post_num,
+             sales_warehouse_id,
              ifnull(sales_deliver,0) AS  sales_deliver
         from tb_rst_sales_order_info t
         where sales_post_num = #{postNum}

+ 1 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/InventoryMapper.java

@@ -19,7 +19,7 @@ public interface InventoryMapper {
      * @param inventoryProductBar
      * @return
      */
-    InventoryInfo getByInventoryByBar(String inventoryProductBar);
+    InventoryInfo getByInventoryByBar(String inventoryProductBar,Integer warehouseId);
     /**
      * 获取库存信息列表
      */

+ 7 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/inventoryMapper.xml

@@ -111,6 +111,9 @@
       <if test="inventoryId != null and inventoryId != ''">
         fi.inventory_id = #{inventoryId}
       </if>
+      <if test="warehouseId != null">
+        fi.warehouse_id = #{warehouseId}
+      </if>
       <if test="inventoryProductName != null and inventoryProductName != ''">
         and fi.inventory_product_name like CONCAT('%',#{inventoryProductName},'%')
       </if>
@@ -168,9 +171,10 @@
     where inventory_id = #{inventoryId,jdbcType=INTEGER}
   </update>
 
-  <select id="getByInventoryByBar" resultMap="BaseResultMap" parameterType="java.lang.String" >
+  <select id="getByInventoryByBar" resultMap="BaseResultMap"  >
     select
     fi.inventory_id,
+    fi.warehouse_id,
     fi.inventory_product_name,
     fi.inventory_product_bar,
     fi.inventory_remaining_num,
@@ -202,7 +206,8 @@
     oi.sales_shipping_status IN (0,3,11)
     GROUP BY soi.item_color_id
     ) imn on imn.colorId  = pc.color_id
-    where fi.inventory_product_bar = #{inventoryProductBar}
+    where fi.inventory_product_bar = #{0}
+    AND  warehouse_id = #{1}
   </select>
 
   <insert id="insert" parameterType="InventoryInfo">

+ 65 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderWarehouseServiceImpl.java

@@ -0,0 +1,65 @@
+package com.iamberry.rst.service.order;
+
+import com.iamberry.rst.core.order.OrderWarehouse;
+import com.iamberry.rst.faces.order.OrderWarehouseService;
+import com.iamberry.rst.service.order.mapper.OrderWarehouseMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *  接口
+ * @author xm
+ * @Date 2019-06-11
+ */
+@Service
+public class OrderWarehouseServiceImpl  implements OrderWarehouseService {
+    @Autowired
+    private OrderWarehouseMapper orderWarehouseMapper;
+    /**
+     * 获取集合
+     * @param  orderWarehouse
+     * @return List
+     */
+    @Override
+    public List<OrderWarehouse> getOrderWarehouseList(OrderWarehouse  orderWarehouse){
+        return  orderWarehouseMapper.getOrderWarehouseList(orderWarehouse);
+    }
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  orderWarehouse
+     */
+    @Override
+    public  OrderWarehouse  getOrderWarehouseById(Integer  id){
+        return  orderWarehouseMapper.getOrderWarehouseById(id);
+    }
+    /**
+     * 增加数据
+     * @param  orderWarehouse
+     * @return Integer
+     */
+    @Override
+    public  Integer  save(OrderWarehouse  orderWarehouse){
+        return  orderWarehouseMapper.save(orderWarehouse);
+    }
+    /**
+     * 修改数据
+     * @param  orderWarehouse
+     * @return Integer
+     */
+    @Override
+    public  Integer  update(OrderWarehouse  orderWarehouse){
+        return  orderWarehouseMapper.update(orderWarehouse);
+    }
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    @Override
+    public  Integer  delete(Integer  id){
+        return  orderWarehouseMapper.delete(id);
+    }
+}

+ 43 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/OrderWarehouseMapper.java

@@ -0,0 +1,43 @@
+package com.iamberry.rst.service.order.mapper;
+
+import com.iamberry.rst.core.order.OrderWarehouse;
+
+import java.util.List;
+
+/**
+ *  接口
+ * @author xm
+ * @Date 2019-06-11
+ */
+public interface OrderWarehouseMapper {
+    /**
+     * 获取集合
+     * @param  orderWarehouse
+     * @return List
+     */
+    List<OrderWarehouse> getOrderWarehouseList(OrderWarehouse  orderWarehouse);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  orderWarehouse
+     */
+    OrderWarehouse  getOrderWarehouseById(Integer  id);
+    /**
+     * 增加数据
+     * @param  orderWarehouse
+     * @return Integer
+     */
+    Integer  save(OrderWarehouse  orderWarehouse);
+    /**
+     * 修改数据
+     * @param  orderWarehouse
+     * @return Integer
+     */
+    Integer  update(OrderWarehouse  orderWarehouse);
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    Integer  delete(Integer  id);
+}

+ 78 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/orderWarehouseMapper.xml

@@ -0,0 +1,78 @@
+<?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.iamberry.rst.service.order.mapper.OrderWarehouseMapper">
+    <resultMap  id="BaseResultMap" type="OrderWarehouse" >
+        <result    column="warehouse_id"    property="warehouseId" />
+        <result    column="warehouse_name"    property="warehouseName" />
+        <result    column="warehouse_state"    property="warehouseState" />
+        <result    column="warehouse_introduction"    property="warehouseIntroduction" />
+        <result    column="warehouse_create_time"    property="warehouseCreateTime" />
+    </resultMap>
+    <sql    id="Base_List" >
+        t.warehouse_id,
+        t.warehouse_name,
+        t.warehouse_state,
+        t.warehouse_introduction,
+        t.warehouse_create_time
+    </sql>
+    <select id="getOrderWarehouseList" resultMap="BaseResultMap" parameterType="OrderWarehouse" >
+        select
+        <include refid="Base_List" />
+        from tb_rst_order_warehouse t
+        <where>
+            <if test="warehouseId != null ">
+                AND t.warehouse_id = #{warehouseId}
+            </if >
+            <if test="warehouseName != null and warehouseName != ''">
+                AND t.warehouse_name  like  CONCAT ('%',#{warehouseName},'%')
+            </if >
+            <if test="warehouseState != null ">
+                AND t.warehouse_state = #{warehouseState}
+            </if >
+        </where>
+    </select>
+    <select id="getOrderWarehouseById" resultMap="BaseResultMap" parameterType="Integer" >
+        select
+        <include refid="Base_List" />
+        from tb_rst_order_warehouse t
+        where t.warehouse_id= #{warehouseId}
+    </select>
+    <insert id="save" parameterType="OrderWarehouse" >
+        insert into
+        tb_rst_order_warehouse
+        (
+        warehouse_id,
+        warehouse_name,
+        warehouse_state,
+        warehouse_introduction
+        )
+        values
+        (
+        #{warehouseId},
+        #{warehouseName},
+        #{warehouseState},
+        #{warehouseIntroduction}
+        )
+    </insert>
+    <update id="update" parameterType="OrderWarehouse" >
+        update
+        tb_rst_order_warehouse
+        <set >
+            <if test="warehouseName != null and warehouseName != ''">
+                warehouse_name = #{warehouseName},
+            </if >
+            <if test="warehouseState != null ">
+                warehouse_state = #{warehouseState},
+            </if >
+            <if test="warehouseIntroduction != null and warehouseIntroduction != ''">
+                warehouse_introduction = #{warehouseIntroduction},
+            </if >
+        </set >
+        where warehouse_id= #{warehouseId}
+    </update>
+    <delete id="delete" parameterType="Integer" >
+        delete FROM
+        tb_rst_order_warehouse
+        where warehouse_id=#{warehouseId}
+    </delete>
+</mapper>

+ 32 - 15
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java

@@ -91,6 +91,7 @@ public class AwaitSendController {
         //查询当前登录人属于哪个仓库
         OrderWarehouse orderWarehouse = salesOrderService.selectAdminWarehouse(admin.getAdminId());
         if(orderWarehouse == null){
+            mv = new ModelAndView("order/salesOrder/error");
             return mv;
         }
         salesOrder.setSalesWarehouseId(orderWarehouse.getWarehouseId());
@@ -517,6 +518,14 @@ public class AwaitSendController {
     @RequiresPermissions("salesOrder:deliver:deliverList")
     @RequestMapping(value = "/deliverList")
     public ModelAndView deliverList(HttpServletRequest request) {
+        // 分页获取订单信息(仓库只能查询已确认的订单)
+        Admin admin = AdminUtils.getLoginAdmin();
+        //查询当前登录人属于哪个仓库
+        OrderWarehouse orderWarehouse = salesOrderService.selectAdminWarehouse(admin.getAdminId());
+        if(orderWarehouse == null){
+            ModelAndView mv = new ModelAndView("order/salesOrder/error");
+            return mv;
+        }
         ModelAndView mv = new ModelAndView("order/salesOrder/deliver_list");
         return mv;
     }
@@ -544,15 +553,26 @@ public class AwaitSendController {
     @RequestMapping("/deliver")
     public ResponseJson deliver(HttpServletRequest request, String postNum) {
         ResponseJson rj = ResponseJson.getFAILURE();
+
+        // 分页获取订单信息(仓库只能查询已确认的订单)
+        Admin admin = AdminUtils.getLoginAdmin();
+        //查询当前登录人属于哪个仓库
+        OrderWarehouse orderWarehouse = salesOrderService.selectAdminWarehouse(admin.getAdminId());
+        if(orderWarehouse == null){
+            rj.setResultMsg("出货失败,权限不足,未分配所属仓库,无法查看,请联系管理员");
+            return rj;
+        }
+
         SalesOrder salesOrder = null;
         try{
             salesOrder = salesOrderService.getSalesOrderByPostNum(postNum);
         }catch (Exception e){
-            Integer flag = salesOrderService.updateDeliver(salesOrder);
-            if(flag < 1){
-                rj.setResultMsg("出货失败,请检查该物流单号("+postNum+")和订单状态是否为已发货。");
-                return rj;
-            }
+            e.printStackTrace();
+//            Integer flag = salesOrderService.updateDeliver(salesOrder);   //没验证,不允许直接直接执行修改库存和出库操作
+//            if(flag < 1){
+//                rj.setResultMsg("出货失败,请检查该物流单号("+postNum+")和订单状态是否为已发货。");
+//                return rj;
+//            }
             /*//修改库存信息
             if(updateInventory(salesOrder.getSalesId())){
                 rj = ResponseJson.getSUCCESS();
@@ -577,16 +597,12 @@ public class AwaitSendController {
             return rj;
         }
         salesOrder.setSalesDeliver(2);
-        /*if(updateInventory(salesOrder.getSalesId())){*/
-            Integer flag = salesOrderService.updateDeliver(salesOrder);
-            if(flag < 1){
-                rj.setResultMsg("出货失败,请检查该物流单号("+postNum+")和订单状态,产品库存是否充足。");
-                return rj;
-            }
-        /*}else{
-            rj.setResultMsg("出货失败,请检查该物流单号("+postNum+")和订单状态是否为已发货,产品库存是否充足。");
+        Integer flag = salesOrderService.updateDeliver(salesOrder);
+        if(flag < 1){
+            rj.setResultMsg("出货失败,请检查该物流单号("+postNum+")和订单状态,产品库存是否充足。");
             return rj;
-        }*/
+        }
+
         //查询出库的产品项
         List<SalesOrderItem> itemList = salesOrderService.selectSalesOrderItemList(salesOrder.getSalesId());
         rj = ResponseJson.getSUCCESS();
@@ -601,7 +617,8 @@ public class AwaitSendController {
         List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         for(SalesOrderItem item : listOrderitem){
-            InventoryInfo info = inventoryService.getByInventoryByBar(item.getItemColorBar());
+            SalesOrder so = salesOrderService.getSalesOrderById(item.getItemOrderId());
+            InventoryInfo info = inventoryService.getByInventoryByBar(item.getItemColorBar(),so.getSalesWarehouseId());
             if(info != null){
                 if(info.getInventoryGoodProductNum() >= item.getItemNum()){
                     info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() - item.getItemNum());

+ 23 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/InventoryController.java

@@ -3,15 +3,20 @@ package com.iamberry.rst.controllers.pts;
 import com.iamberry.rst.core.fm.InventoryInfo;
 import com.iamberry.rst.core.fm.InventoryLog;
 import com.iamberry.rst.core.fm.WarehouseInfo;
+import com.iamberry.rst.core.order.OrderWarehouse;
 import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.order.ProductType;
 import com.iamberry.rst.core.page.PageRequest;
 import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.sys.Admin;
 import com.iamberry.rst.faces.cm.InventoryLogService;
 import com.iamberry.rst.faces.cm.InventoryService;
+import com.iamberry.rst.faces.cm.SalesOrderService;
+import com.iamberry.rst.faces.order.OrderWarehouseService;
 import com.iamberry.rst.faces.product.ProductColorService;
 import com.iamberry.rst.faces.product.ProductService;
+import com.iamberry.rst.utils.AdminUtils;
 import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.ResponseJson;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -40,6 +45,10 @@ public class InventoryController {
     private ProductService productService;
     @Autowired
     private ProductColorService productColorService;
+    @Autowired
+    private OrderWarehouseService orderWarehouseService;
+    @Autowired
+    private SalesOrderService salesOrderService;
 
     /**
      * 查询库存列表信息
@@ -59,12 +68,26 @@ public class InventoryController {
                                             @RequestParam(value = "pageSize", defaultValue = "10", required = false) int pageSize,
                                             InventoryInfo inventoryInfo
     ) throws Exception {
+        // 分页获取订单信息(仓库只能查询已确认的订单)
+        Admin admin = AdminUtils.getLoginAdmin();
+        //查询当前登录人属于哪个仓库
+        OrderWarehouse ow = salesOrderService.selectAdminWarehouse(admin.getAdminId());
+        if(ow == null){
+            ModelAndView mv = new ModelAndView("order/salesOrder/error");
+            return mv;
+        }
+
         ModelAndView mv = new ModelAndView("cm/inventory/inventory_list");
         StringBuilder url = new StringBuilder("/admin/inventory/select_inventory_list?pageSize=" + pageSize);
         // 封装请求数据
         PageRequest<InventoryInfo> pageRequest = new PageRequest<>(inventoryInfo, pageNO, pageSize, pageTotal == null);
         // 查询库存列表
         PagedResult<InventoryInfo> result = inventoryService.listByInventoryId(pageRequest);
+
+        OrderWarehouse orderWarehouse = new OrderWarehouse();
+        List<OrderWarehouse> orderWarehouseList = orderWarehouseService.getOrderWarehouseList(orderWarehouse);
+        mv.addObject("orderWarehouseList",orderWarehouseList);
+
         ProductColor color = new ProductColor();
         List<ProductColor> productColorList = productService.listProduceColor(color);
         mv.addObject("productColorList",productColorList);

+ 5 - 2
watero-rst-web/src/main/resources/watero-rst-orm.xml

@@ -39,6 +39,8 @@
 		<typeAlias type="com.iamberry.rst.core.order.PostOrderNum" alias="PostOrderNum"/>
 		<typeAlias type="com.iamberry.rst.core.order.OrderCorrectInfo" alias="OrderCorrectInfo"/>
 		<typeAlias type="com.iamberry.rst.core.order.OrderCorrectItem" alias="OrderCorrectItem"/>
+		<typeAlias type="com.iamberry.rst.core.order.OrderWarehouse" alias="OrderWarehouse"/>
+		<typeAlias type="com.iamberry.rst.core.order.OrderWarehouseAdmin" alias="OrderWarehouseAdmin"/>
 
 		<typeAlias type="com.iamberry.rst.core.sms.SmsMessage" alias="SmsMessage"/>
 		<typeAlias type="com.iamberry.rst.core.sms.OrderMessage" alias="OrderMessage"/>
@@ -194,8 +196,8 @@
 
 		<typeAlias type="com.iamberry.wechat.core.entity.PaperBean" alias="PaperBean"/>
 
-		<typeAlias type="com.iamberry.rst.core.order.OrderWarehouse" alias="OrderWarehouse"/>
-		<typeAlias type="com.iamberry.rst.core.order.OrderWarehouseAdmin" alias="OrderWarehouseAdmin"/>
+
+
 		<typeAlias type="com.iamberry.rst.core.cm.PostageInfo" alias="PostageInfo"/>
 		<typeAlias type="com.iamberry.rst.core.cm.SendbackInfo" alias="SendbackInfo"/>
 		<typeAlias type="com.iamberry.rst.core.cm.SendbackItem" alias="SendbackItem"/>
@@ -294,6 +296,7 @@
 		<mapper resource="com/iamberry/rst/service/order/mapper/orderBatchMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/order/mapper/logisticsInfoMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/order/mapper/provincesLogisticsMapper.xml"/>
+		<mapper resource="com/iamberry/rst/service/order/mapper/orderWarehouseMapper.xml"/>
 
 		<mapper resource="com/iamberry/rst/service/approval/mapper/applyPickItemMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/approval/mapper/applyPickMapper.xml"/>

+ 13 - 3
watero-rst-web/src/main/webapp/WEB-INF/views/cm/inventory/inventory_list.ftl

@@ -55,6 +55,16 @@
             <select id="productColorId" name="productColorId" class="select" style="width: 120px;">
 
             </select>-->
+
+            <select class="my-select" name="warehouseId" style="height: 30px;width: 150px">
+                <option value ="">选择仓库</option>
+            <#if (orderWarehouseList?size > 0)>
+                <#list orderWarehouseList as orderWarehouse>
+                    <option value ="${orderWarehouse.warehouseId!}" <#if warehouseId??><#if warehouseId == orderWarehouse.warehouseId>selected="selected"</#if></#if>>${orderWarehouse.warehouseName!}</option>
+                </#list>
+            </#if>
+            </select>
+
             <select class="my-select" name="productTypeId" style="height: 30px;width: 150px">
                     <option value ="">选择产品类型</option>
                 <#if (productTypeList?size > 0)>
@@ -76,12 +86,12 @@
                 <th width="100">产品类型</th>
                 <th width="100">产品名称</th>
                 <#--<th width="100">产品型号</th>-->
-                <th width="100">产品简称</th>
+                <#--<th width="100">产品简称</th>-->
                 <th width="100">产品颜色</th>
                 <th width="100">产品69码</th>
                 <th width="100">待发数量</th>
                 <th width="100">良品数量</th>
-                <th width="100">维修机数量</th>
+                <th width="100">不良品数量</th>
                 <th width="100">最近记录</th>
                 <th width="100">操作</th>
             </tr>
@@ -93,7 +103,7 @@
                     <td class="text-c" width="100">${info.productTypeName!}</td>
                     <td class="text-c" width="100">${info.inventoryProductName!}</td>
                     <#--<td class="text-c" width="100">${info.productNumber!}</td>-->
-                    <td class="text-c" width="100">${info.productAbbreviation!}</td>
+                    <#--<td class="text-c" width="100">${info.productAbbreviation!}</td>-->
                     <td class="text-c" width="100">${info.productColorName!}</td>
                     <td class="text-c" width="100">${info.inventoryProductBar!}</td>
                     <td class="text-c" width="100">${info.inventoryMomentumNum!}</td>

+ 51 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/error.ftl

@@ -0,0 +1,51 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <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" />
+    <link rel="Bookmark" href="/favicon.ico" >
+    <link rel="Shortcut Icon" href="/favicon.ico" />
+    <#include "/base/list_base.ftl">
+    <script type="text/javascript" src="//s.iamberry.com/js/LodopFuncs.js"></script>
+    <link href="${path}/common/lib/lightbox2/2.8.1/css/lightbox.css" rel="stylesheet" type="text/css" >
+    <title>错误页面</title>
+    <style>
+        *{padding: 0;margin: 0;}
+        .my-input{border: 1px solid rgba(0,0,0,.1);padding: 1px 5px;height: 32px;margin-right: 10px;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
+        .table-bg thead th{background-color: #e2f6ff;}
+        .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+        .my-order{border: 1px solid #50a2ea;
+            padding: 1px 25px;
+            height: 36px;
+            background-color: #fff;
+            color: #50a2ea;}
+        .my-select {
+            border: 1px solid rgba(0,0,0,.1);
+            padding: 6px 50px 6px 15px;
+            height: 34px;
+            -webkit-appearance: none;
+            appearance: none;
+            background: url(/common/images/pts/select-11.png) right center no-repeat;
+            background-size: auto 100%;
+        }
+        .label-default{background-color: #e6e6e6; color: #50a2ea;}
+        .radio-box input[type=radio]{position: relative;-webkit-appearance: none;appearance: none;cursor: pointer;width: 17px;height: 17px;border: 1px solid #333;border-radius: 50%;}
+        .radio-box input[type=radio]:focus {outline: none;}
+        .radio-box input[type=radio]:checked{background: #fff;}
+        .radio-box input[type=radio]:checked:after {content: '';position: absolute;width: 11px;height: 11px;left: 2px;top: 2px;background: #333;border-radius: 50%;}
+    </style>
+</head>
+<body style="margin-bottom: 30px">
+
+<div class="page-container">
+    <div class="text-c">
+        权限不足,未分配所属仓库,无法查看,请联系管理员!
+    </div>
+</div>
+
+</body>
+</html>