Browse Source

库存管理

wangxiaoming 5 years ago
parent
commit
977040965d

+ 9 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java

@@ -62,6 +62,7 @@ public class SalesOrder implements Serializable {
     private String salesOrderStatusProcTypeName;       //订单状态 订单状态:1:正常 2:换货 3:退货  4:维修  5:补发 -- TODO: 2019/1/4 改为 ProcTypeId
     private Integer salesShippingStatus;    //发货状态 0(未发货)1(已发货,即已扫描出库)3(备货中)4(收货) 11(已通知配货,后加)
     private Integer salesDeliver;            //出库状态  1:未出库   2:已出库
+    private Integer salesOldDeliver;            //过去的状态 - 出库状态  1:未出库   2:已出库
     private Date salesDeliverTime;            //出库时间
     private Integer salesPayStatus;         //付款状态 0(未付款)2(已付款)
     private Integer salesProcessStatus;     //单据状态  0(正常单)1(问题单)
@@ -695,6 +696,14 @@ public class SalesOrder implements Serializable {
         this.salesDeliver = salesDeliver;
     }
 
+    public Integer getSalesOldDeliver() {
+        return salesOldDeliver;
+    }
+
+    public void setSalesOldDeliver(Integer salesOldDeliver) {
+        this.salesOldDeliver = salesOldDeliver;
+    }
+
     public String getSalesAdminName() {
         return salesAdminName;
     }

+ 21 - 17
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -1081,21 +1081,23 @@ public class SalesOrderServiceImpl implements SalesOrderService {
 
     @Transactional
     @Override
-    public Integer updateDeliver(SalesOrder salesOrder) {
+    public synchronized Integer updateDeliver(SalesOrder salesOrder) {
+        Integer flag = salesOrderMapper.updateDeliver(salesOrder);
+        if(flag < 1){
+            throw new RuntimeException("出库失败,订单出库失败。");
+        }
+
         if(salesOrder.getSalesDeliver() == 2){//标记出库,修改库存
             if(!salesOrderService.updateInventory(salesOrder.getSalesId(),salesOrder.getSalesWarehouseId())){
-                return 0;
+                throw new RuntimeException("出库失败,【出库】库存修改失败。");
             }
         }
+
         if(salesOrder.getSalesDeliver() == 1){//标记未出库,修改库存
             if(!salesOrderService.returnInventory(salesOrder.getSalesId(),salesOrder.getSalesWarehouseId())){
-                return 0;
+                throw new RuntimeException("出库失败,【返还库存】库存修改失败。");
             }
         }
-        Integer flag = salesOrderMapper.updateDeliver(salesOrder);
-        if(flag < 1){
-            throw new RuntimeException("出库失败,订单出库失败。");
-        }
         return flag;
     }
 
@@ -1118,7 +1120,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             if(info != null){
                 if(info.getInventoryGoodProductNum() >= item.getItemNum()){
                     info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() - item.getItemNum());
-                    info.setInventoryRecentRecord(sdf.format(new Date())+"出库:"+item.getItemNum()+"件");
+                    info.setInventoryRecentRecord(sdf.format(new Date())+"出库:"+item.getItemNum()+"件,订单号:"+item.getItemOrderId());
                     Integer flag =  inventoryMapper.updateById(info);
                     if(flag < 1){
                         throw new RuntimeException("【出库】更新库存失败,库存修改失败。");
@@ -1130,18 +1132,20 @@ public class SalesOrderServiceImpl implements SalesOrderService {
                     inventoryLog.setLogRemainingNum(item.getItemNum());
                     inventoryLog.setLogType(2);
                     inventoryLog.setLogOperationType(2);
-                    inventoryLog.setLogDesc(sdf.format(new Date())+"待发货标记出库:"+item.getItemNum()+"件");
+                    inventoryLog.setLogDesc(sdf.format(new Date())+"待发货标记出库:"+item.getItemNum()+"件,订单号:"+item.getItemOrderId());
                     inventoryLog.setLogQualityType(1);
                     inventoryLog.setLogWarehouseId(salesWarehouseId);
                     flag = inventoryLogMapper.insert(inventoryLog);
                     if(flag < 1){
-                        throw new RuntimeException("更新库存失败,增加库存记录失败。");
+                        throw new RuntimeException("【出库】更新库存失败,增加库存记录失败。");
                     }
+
+                    logger.info("---------"+sdf.format(new Date())+"待发货标记出库:"+item.getItemNum()+"件,订单号:"+item.getItemOrderId());
                 }else{
-                    throw new RuntimeException("更新库存失败,"+ warehouseName +"["+ item.getItemProductName()+ "("+ item.getItemProductColor() +")" +"]库存不足。");
+                    throw new RuntimeException("【出库】更新库存失败,"+ warehouseName +"["+ item.getItemProductName()+ "("+ item.getItemProductColor() +")" +"]库存不足。");
                 }
             }else{
-                throw new RuntimeException("更新库存失败,未查询到库存信息,请确认“"+ warehouseName +"”是否有该产品["+ item.getItemProductName()+ "("+ item.getItemProductColor() +")" +"]库存信息。");
+                throw new RuntimeException("【出库】更新库存失败,未查询到库存信息,请确认“"+ warehouseName +"”是否有该产品["+ item.getItemProductName()+ "("+ item.getItemProductColor() +")" +"]库存信息。");
             }
         }
         return true;
@@ -1152,7 +1156,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     public boolean returnInventory(Integer salesId,Integer salesWarehouseId){
         OrderWarehouse orderWarehouse = orderWarehouseService.getOrderWarehouseById(salesWarehouseId);
         if(orderWarehouse == null){
-            throw new RuntimeException("【出库】更新库存失败,查询仓库信息失败。");
+            throw new RuntimeException("【返还库存】更新库存失败,查询仓库信息失败。");
         }
         String warehouseName = orderWarehouse.getWarehouseName();
 
@@ -1164,7 +1168,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             InventoryInfo info = inventoryMapper.getByInventoryByBar(item.getItemColorBar(),salesWarehouseId);
             if(info != null){
                 info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() + item.getItemNum());
-                info.setInventoryRecentRecord(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存:"+item.getItemNum()+"件");
+                info.setInventoryRecentRecord(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存:"+item.getItemNum()+"件,订单号:"+item.getItemOrderId());
                 Integer flag = inventoryMapper.updateById(info);
                 if(flag < 1){
                     throw new RuntimeException("【返还库存】更新库存失败,库存修改失败。");
@@ -1176,15 +1180,15 @@ public class SalesOrderServiceImpl implements SalesOrderService {
                 inventoryLog.setLogRemainingNum(item.getItemNum());
                 inventoryLog.setLogType(1);
                 inventoryLog.setLogOperationType(1);
-                inventoryLog.setLogDesc(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存:"+item.getItemNum()+"件");
+                inventoryLog.setLogDesc(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存:"+item.getItemNum()+"件,订单号:"+item.getItemOrderId());
                 inventoryLog.setLogQualityType(1);
                 inventoryLog.setLogWarehouseId(salesWarehouseId);
                 flag = inventoryLogMapper.insert(inventoryLog);
                 if(flag < 1){
-                    throw new RuntimeException("更新库存失败,增加库存记录失败。");
+                    throw new RuntimeException("【返还库存】更新库存失败,增加库存记录失败。");
                 }
             }else{
-                throw new RuntimeException("更新库存失败,未查询到库存信息,请确认“"+ warehouseName +"”是否有该产品["+ item.getItemProductName()+ "("+ item.getItemProductColor() +")" +"]库存信息。");
+                throw new RuntimeException("【返还库存】更新库存失败,未查询到库存信息,请确认“"+ warehouseName +"”是否有该产品["+ item.getItemProductName()+ "("+ item.getItemProductColor() +")" +"]库存信息。");
             }
 
         }

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

@@ -1336,6 +1336,7 @@
         WHERE
           sales_post_num = #{salesPostNum}
         AND sales_id = #{salesId}
+        AND sales_deliver = #{salesOldDeliver}
         AND sales_shipping_status = 1
     </update>
 

+ 12 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java

@@ -796,10 +796,10 @@ public class AwaitSendController {
     @RequiresPermissions("salesOrder:markDeliver:deliverList")
     @RequestMapping("/markDeliver")
     public ResponseJson markDeliver(HttpServletRequest request,Integer salesId, Integer type) {
+        ResponseJson rj = ResponseJson.getFAILURE();
         if(salesId == null || type == null){
             return ResponseJson.getFAILURE();
         }
-        ResponseJson rj = ResponseJson.getSUCCESS();
 
         SalesOrder salesOrder = salesOrderService.getSalesOrderById(salesId);
         if(salesOrder == null){
@@ -811,6 +811,17 @@ public class AwaitSendController {
             return rj;
         }
 
+        if(type == salesOrder.getSalesDeliver()){
+            if(type == 1){
+                rj.setResultMsg("出货失败,该订单已标记为未出库。");
+                return rj;
+            }else  if(type == 2){
+                rj.setResultMsg("出货失败,该订单已标记为已出库。");
+                return rj;
+            }
+        }
+
+        salesOrder.setSalesOldDeliver(salesOrder.getSalesDeliver());
         salesOrder.setSalesDeliver(type);
         Integer flag = 0;
         try{

+ 1 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/list_wait_send_order.ftl

@@ -371,7 +371,7 @@
                 dataType: 'json',
                 type: 'post',
                 success: function(dt) {
-                    if(dt.resultCode == 200){
+                    if(dt.resultCode == 200 && dt.returnCode == 200){
                         layer.msg(dt.resultMsg, {icon: 1, time: 3000});
                     }else{
                         layer.msg(dt.resultMsg, {icon: 5, time: 3000});