From 52f694ab369861f644f8efab797a85776b73ee52 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 13 四月 2021 17:29:05 +0800
Subject: [PATCH] #

---
 src/main/resources/mapper/OrderMapper.xml                                 |    4 
 src/main/java/zy/cloud/wms/manager/controller/OrderController.java        |    3 
 src/main/java/zy/cloud/wms/manager/service/OrderService.java              |    8 +
 src/main/java/zy/cloud/wms/manager/service/LocDetlService.java            |    7 
 src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java      |   46 ++++-
 src/main/java/zy/cloud/wms/manager/mapper/OrderDetlMapper.java            |    6 
 src/main/java/zy/cloud/wms/manager/service/impl/OrderDetlServiceImpl.java |    6 
 src/main/java/zy/cloud/wms/common/service/MainService.java                |   58 +++----
 src/main/webapp/views/order/order.html                                    |   44 ++++++
 src/main/resources/mapper/OrderDetlMapper.xml                             |    9 +
 /dev/null                                                                 |   68 ---------
 src/main/java/zy/cloud/wms/manager/service/OrderDetlService.java          |    6 
 src/main/java/zy/cloud/wms/common/model/OrderStoDto.java                  |   12 
 src/main/webapp/static/js/order/order.js                                  |   85 +++++++++++
 src/main/java/zy/cloud/wms/manager/entity/param/StockOutParam.java        |    4 
 src/main/java/zy/cloud/wms/manager/mapper/OrderMapper.java                |    3 
 src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java   |   37 ++---
 src/main/java/zy/cloud/wms/manager/service/impl/OrderServiceImpl.java     |   12 +
 18 files changed, 267 insertions(+), 151 deletions(-)

diff --git a/src/main/java/zy/cloud/wms/common/model/OrderStoDto.java b/src/main/java/zy/cloud/wms/common/model/OrderStoDto.java
index 58b89d1..b3167ca 100644
--- a/src/main/java/zy/cloud/wms/common/model/OrderStoDto.java
+++ b/src/main/java/zy/cloud/wms/common/model/OrderStoDto.java
@@ -1,7 +1,6 @@
 package zy.cloud.wms.common.model;
 
 import lombok.Data;
-import zy.cloud.wms.manager.entity.CustOrder;
 
 import java.util.List;
 
@@ -11,15 +10,16 @@
 @Data
 public class OrderStoDto {
 
-    private String number;
+    private String orderNo;
 
-    private List<CustOrder> custOrders;
+    private List<MatnrDto> dtos;
 
     public OrderStoDto() {
     }
 
-    public OrderStoDto(String number, List<CustOrder> custOrders) {
-        this.number = number;
-        this.custOrders = custOrders;
+    public OrderStoDto(String orderNo, List<MatnrDto> dtos) {
+        this.orderNo = orderNo;
+        this.dtos = dtos;
     }
+
 }
diff --git a/src/main/java/zy/cloud/wms/common/service/MainScheduler.java b/src/main/java/zy/cloud/wms/common/service/MainScheduler.java
deleted file mode 100644
index 3cbc29a..0000000
--- a/src/main/java/zy/cloud/wms/common/service/MainScheduler.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package zy.cloud.wms.common.service;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.Cools;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import zy.cloud.wms.common.model.OrderStoDto;
-import zy.cloud.wms.manager.entity.CustOrder;
-import zy.cloud.wms.manager.service.CustOrderService;
-
-import java.util.*;
-
-/**
- * Created by vincent on 2021/3/1
- */
-@Slf4j
-@Component
-public class MainScheduler {
-
-    @Autowired
-    private CustOrderService custOrderService;
-    @Autowired
-    private MainService mainService;
-
-    /**
-     * 鎵弿閿�鍞鍗曟暟鎹紝鐢熸垚鍑哄簱鍗�
-     */
-//    @Scheduled(cron = "0/5 * * * * ? ")
-    public void stockOutExecute(){
-        List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>().eq("status", 1));
-        if (Cools.isEmpty(custOrders)){
-            return;
-        }
-        Set<String> numbers = new HashSet<>();
-        custOrders.forEach(custOrder -> numbers.add(custOrder.getNumber()));
-
-        List<OrderStoDto> orderStoDtos = new ArrayList<>();
-        for (String number : numbers) {
-            List<CustOrder> list = new ArrayList<>();
-            Iterator<CustOrder> iterator = custOrders.iterator();
-            while (iterator.hasNext()) {
-                CustOrder dto = iterator.next();
-                if (number.equals(dto.getNumber())) {
-                    list.add(dto);
-                    iterator.remove();
-                }
-            }
-            orderStoDtos.add(new OrderStoDto(number, list));
-        }
-
-        for (OrderStoDto dto : orderStoDtos) {
-            mainService.stockOutProcess(dto);
-        }
-
-    }
-
-    // 澶勭悊寰呭彇娑堣鍗�
-    //    @Scheduled(cron = "0/5 * * * * ? ")
-    public void cancelOrderExecute(){
-        List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>().eq("status", 5));
-        if (Cools.isEmpty(custOrders)){
-            return;
-        }
-
-    }
-
-}
diff --git a/src/main/java/zy/cloud/wms/common/service/MainService.java b/src/main/java/zy/cloud/wms/common/service/MainService.java
index 3791840..6c81900 100644
--- a/src/main/java/zy/cloud/wms/common/service/MainService.java
+++ b/src/main/java/zy/cloud/wms/common/service/MainService.java
@@ -7,13 +7,11 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import zy.cloud.wms.common.model.MatnrDto;
 import zy.cloud.wms.common.model.OrderStoDto;
 import zy.cloud.wms.common.utils.VersionUtils;
 import zy.cloud.wms.manager.entity.*;
-import zy.cloud.wms.manager.service.CustOrderService;
-import zy.cloud.wms.manager.service.LocDetlService;
-import zy.cloud.wms.manager.service.MatService;
-import zy.cloud.wms.manager.service.PakoutService;
+import zy.cloud.wms.manager.service.*;
 
 import java.util.*;
 
@@ -31,28 +29,28 @@
     @Autowired
     private PakoutService pakoutService;
     @Autowired
-    private CustOrderService custOrderService;
-    @Autowired
     private SnowflakeIdWorker snowflakeIdWorker;
+    @Autowired
+    private OrderService orderService;
 
     @Transactional
-    public List<StoPreTab> stockOutPreview(OrderStoDto dto) {
-        if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getCustOrders())) {
+    public List<StoPreTab> stockOutPreview(OrderStoDto orderStoDto) {
+        if (Cools.isEmpty(orderStoDto) || Cools.isEmpty(orderStoDto.getDtos())) {
             throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
         }
         List<StoPreTab> res = new ArrayList<>();
         // 妫�鏌ュ簱瀛樻槸鍚﹁冻澶�
-        locDetlService.checkLocDetlCount(dto.getNumber());
+        locDetlService.checkLocDetlCount(orderStoDto.getDtos());
 
-        for (CustOrder custOrder : dto.getCustOrders()) {
+        for (MatnrDto matnrDto : orderStoDto.getDtos()) {
             // 鍒ゆ柇鐗╂枡鏄惁瀛樺湪
-            Mat mat = matService.selectByMatnr(custOrder.getUserCode());
+            Mat mat = matService.selectByMatnr(matnrDto.getMatnr());
             if (null == mat) {
-                throw new CoolException(custOrder.getUserCode() + "鐗╂枡灏氭湭鏇存柊銆�" + custOrder.getNumber() +"鍗曟嵁鍥犳涓柇锛�");
+                throw new CoolException(matnrDto.getMatnr() + "鐗╂枡灏氭湭鏇存柊銆�" + orderStoDto.getOrderNo() +"鍗曟嵁鍥犳涓柇锛�");
             }
             // 鏌ヨ瀛樻湁褰撳墠鐗╂枡鐨勮揣浣�
             List<LocDetl> locDetls = locDetlService.findOfSort(mat.getMatnr());
-            double issued = Optional.ofNullable(custOrder.getQty()).orElse(0.0D) ;
+            double issued = Optional.ofNullable(matnrDto.getCount()).orElse(0.0D) ;
             double anfme = issued;
             for (LocDetl locDetl : locDetls) {
                 if (issued > 0) {
@@ -89,26 +87,27 @@
     }
 
     @Transactional
-    public void stockOutProcess(OrderStoDto dto) {
-        if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getCustOrders())) {
+    public void stockOutProcess(OrderStoDto orderStoDto) {
+        if (Cools.isEmpty(orderStoDto) || Cools.isEmpty(orderStoDto.getDtos())) {
             return;
         }
+        Order order = orderService.selectByOrderNo(orderStoDto.getOrderNo());
+        if (order == null) {
+            throw new CoolException(orderStoDto.getOrderNo() + "鍗曟嵁涓嶅瓨鍦�");
+        }
         Date now = new Date();
-
-        /******************************* 绔嬪簱鎷h揣鍗� ********************************/
         // 妫�鏌ュ簱瀛樻槸鍚﹁冻澶�
-        locDetlService.checkLocDetlCount(dto.getNumber());
+        locDetlService.checkLocDetlCount(orderStoDto.getDtos());
 
-        /******************************* 骞充粨鎷h揣鍗� ********************************/
-        for (CustOrder custOrder : dto.getCustOrders()) {
+        for (MatnrDto matnrDto : orderStoDto.getDtos()) {
             // 鍒ゆ柇鐗╂枡鏄惁瀛樺湪
-            Mat mat = matService.selectByMatnr(custOrder.getUserCode());
+            Mat mat = matService.selectByMatnr(matnrDto.getMatnr());
             if (null == mat) {
-                throw new CoolException(custOrder.getUserCode() + "鐗╂枡灏氭湭鏇存柊銆�" + custOrder.getNumber() +"鍗曟嵁鍥犳涓柇锛�");
+                throw new CoolException(matnrDto.getMatnr() + "鐗╂枡灏氭湭鏇存柊銆�" + matnrDto.getCount() +"鍗曟嵁鍥犳涓柇锛�");
             }
             // 鏌ヨ瀛樻湁褰撳墠鐗╂枡鐨勮揣浣�
             List<LocDetl> locDetls = locDetlService.findOfSort(mat.getMatnr());
-            double issued = Optional.ofNullable(custOrder.getQty()).orElse(0.0D) ;
+            double issued = Optional.ofNullable(matnrDto.getCount()).orElse(0.0D) ;
             for (LocDetl locDetl : locDetls) {
                if (issued > 0) {
                     // 淇濆瓨鍑哄簱閫氱煡鍗�
@@ -120,8 +119,8 @@
                     pakout.setNodeId(locDetl.getNodeId());
                     pakout.setWrkNo(String.valueOf(snowflakeIdWorker.nextId()));
                     VersionUtils.setPakout(pakout, mat);
-                    pakout.setDocId(getDocId(dto.getNumber())); // 鍗曟嵁绫诲瀷
-                    pakout.setDocNum(custOrder.getNumber());    // 鍗曟嵁缂栧彿
+                    pakout.setDocId(order.getDocType()); // 鍗曟嵁绫诲瀷
+                    pakout.setDocNum(order.getOrderNo());    // 鍗曟嵁缂栧彿
                     pakout.setCreateTime(now);
                     pakout.setUpdateTime(now);
                     pakout.setStatus(1);
@@ -144,17 +143,10 @@
                 }
             }
             // 淇敼鍗曟嵁鐘舵��
-            if (!custOrderService.updateStatus(custOrder.getNumber(), 2)) {
+            if (!orderService.updateSettle(orderStoDto.getOrderNo(), 2L)) {
                 throw new CoolException("淇敼鍗曟嵁鐘舵�佸け璐�");
             }
         }
-    }
-
-    private Long getDocId(String number) {
-        if (number.startsWith("PR")) {
-            return 6L;
-        }
-        return 11L;
     }
 
 }
diff --git a/src/main/java/zy/cloud/wms/manager/controller/OrderController.java b/src/main/java/zy/cloud/wms/manager/controller/OrderController.java
index 6e9b981..0a60840 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/OrderController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/OrderController.java
@@ -46,6 +46,9 @@
         excludeTrash(param);
         convert(param, wrapper);
         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        else {
+            wrapper.orderBy("update_time", false);
+        }
         return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
diff --git a/src/main/java/zy/cloud/wms/manager/entity/param/StockOutParam.java b/src/main/java/zy/cloud/wms/manager/entity/param/StockOutParam.java
index bef4792..8b33406 100644
--- a/src/main/java/zy/cloud/wms/manager/entity/param/StockOutParam.java
+++ b/src/main/java/zy/cloud/wms/manager/entity/param/StockOutParam.java
@@ -8,7 +8,7 @@
 @Data
 public class StockOutParam {
 
-    // 閿�鍞鍗曞彿
-    private String number;
+    // 璁㈠崟鍙�
+    private String orderNo;
 
 }
diff --git a/src/main/java/zy/cloud/wms/manager/mapper/OrderDetlMapper.java b/src/main/java/zy/cloud/wms/manager/mapper/OrderDetlMapper.java
index cccbdfe..6851b49 100644
--- a/src/main/java/zy/cloud/wms/manager/mapper/OrderDetlMapper.java
+++ b/src/main/java/zy/cloud/wms/manager/mapper/OrderDetlMapper.java
@@ -1,12 +1,16 @@
 package zy.cloud.wms.manager.mapper;
 
-import zy.cloud.wms.manager.entity.OrderDetl;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Repository;
+import zy.cloud.wms.manager.entity.OrderDetl;
+
+import java.util.List;
 
 @Mapper
 @Repository
 public interface OrderDetlMapper extends BaseMapper<OrderDetl> {
 
+    List<OrderDetl> selectByOrderNo(String orderNo);
+
 }
diff --git a/src/main/java/zy/cloud/wms/manager/mapper/OrderMapper.java b/src/main/java/zy/cloud/wms/manager/mapper/OrderMapper.java
index bace93f..1f181d1 100644
--- a/src/main/java/zy/cloud/wms/manager/mapper/OrderMapper.java
+++ b/src/main/java/zy/cloud/wms/manager/mapper/OrderMapper.java
@@ -1,5 +1,6 @@
 package zy.cloud.wms.manager.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import zy.cloud.wms.manager.entity.Order;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -9,4 +10,6 @@
 @Repository
 public interface OrderMapper extends BaseMapper<Order> {
 
+    Boolean updateSettle(@Param("orderNo")String orderNo, @Param("settle")Long settle);
+
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java b/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
index 4712c0a..108587e 100644
--- a/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.service.IService;
+import zy.cloud.wms.common.model.MatnrDto;
 import zy.cloud.wms.manager.entity.LocDetl;
 import zy.cloud.wms.manager.entity.param.StockTransferParam;
 
@@ -22,11 +23,11 @@
 
     /**
      * 鏌ョ湅褰撳墠璁㈠崟鍙风殑鐗╂枡鍦ㄥ簱瀛樹腑鏄惁鍏呰冻
-     * @param number
+     * @param dtos
      */
-    void checkLocDetlCount(String number);
+    void checkLocDetlCount(List<MatnrDto> dtos);
 
-    List<StockTransferParam> checkLocDetlCountOfRes(String number);
+    List<StockTransferParam> checkLocDetlCountOfRes(List<MatnrDto> dtos);
 
     /**
      * 鍑忓皯搴撳瓨
diff --git a/src/main/java/zy/cloud/wms/manager/service/OrderDetlService.java b/src/main/java/zy/cloud/wms/manager/service/OrderDetlService.java
index 18b2065..f74e221 100644
--- a/src/main/java/zy/cloud/wms/manager/service/OrderDetlService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/OrderDetlService.java
@@ -1,8 +1,12 @@
 package zy.cloud.wms.manager.service;
 
-import zy.cloud.wms.manager.entity.OrderDetl;
 import com.baomidou.mybatisplus.service.IService;
+import zy.cloud.wms.manager.entity.OrderDetl;
+
+import java.util.List;
 
 public interface OrderDetlService extends IService<OrderDetl> {
 
+    List<OrderDetl> selectByOrderNo(String orderNo);
+
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/OrderService.java b/src/main/java/zy/cloud/wms/manager/service/OrderService.java
index cfec7eb..6a2ce31 100644
--- a/src/main/java/zy/cloud/wms/manager/service/OrderService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/OrderService.java
@@ -1,7 +1,9 @@
 package zy.cloud.wms.manager.service;
 
-import zy.cloud.wms.manager.entity.Order;
 import com.baomidou.mybatisplus.service.IService;
+import zy.cloud.wms.manager.entity.Order;
+
+import java.util.List;
 
 public interface OrderService extends IService<Order> {
 
@@ -11,4 +13,8 @@
 
     Boolean insertReturnId(Order order);
 
+    List<Order> selectOrderBySettle(Long settle);
+
+    Boolean updateSettle(String orderNo, Long settle);
+
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
index 5b7c44e..aa84e3c 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
@@ -7,7 +7,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import zy.cloud.wms.common.config.CodeCoolException;
-import zy.cloud.wms.manager.entity.CustOrder;
+import zy.cloud.wms.common.model.MatnrDto;
 import zy.cloud.wms.manager.entity.LocDetl;
 import zy.cloud.wms.manager.entity.Mat;
 import zy.cloud.wms.manager.entity.Prior;
@@ -20,6 +20,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 @Service("locDetlService")
@@ -62,21 +63,17 @@
     }
 
     @Override
-    public void checkLocDetlCount(String number) {
-        List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>().eq("number", number).eq("status", 1));
+    public void checkLocDetlCount(List<MatnrDto> dtos) {
         StringBuilder errorMsg = new StringBuilder();
         boolean error = false;
-        for (CustOrder custOrder : custOrders) {
-            Double count = this.baseMapper.selectCountByMatnr(custOrder.getUserCode());
-            if (count == null) {
-                count = 0.0D;
-            }
-            if (count < custOrder.getQty()) {
+        for (MatnrDto dto : dtos) {
+            Double count = Optional.ofNullable(baseMapper.selectCountByMatnr(dto.getMatnr())).orElse(0.0D);
+            if (count < dto.getCount()) {
                 if (!error) {
                     error = true;
                 }
-                Mat mat = matService.selectByMatnr(custOrder.getUserCode());
-                errorMsg.append(mat == null ? custOrder.getUserCode() : mat.getMaktx()).append("搴撳瓨涓嶈冻锛岀己璐ф暟閲忥細").append(custOrder.getQty() - count).append("</br>");
+                Mat mat = matService.selectByMatnr(dto.getMatnr());
+                errorMsg.append(mat == null ? dto.getMatnr() : mat.getMaktx()).append("搴撳瓨涓嶈冻锛岀己璐ф暟閲忥細").append(dto.getCount() - count).append("</br>");
             }
         }
         if (error) {
@@ -85,21 +82,17 @@
     }
 
     @Override
-    public List<StockTransferParam> checkLocDetlCountOfRes(String number) {
-        List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>().eq("number", number).eq("status", 1));
+    public List<StockTransferParam> checkLocDetlCountOfRes(List<MatnrDto> dtos) {
         boolean asrs = false;
         List<StockTransferParam> params = new ArrayList<>();
-        for (CustOrder custOrder : custOrders) {
-            Double count = this.baseMapper.selectCountByMatnr(custOrder.getUserCode());
-            if (count == null) {
-                count = 0.0D;
-            }
-            if (count < custOrder.getQty()) {
+        for (MatnrDto dto : dtos) {
+            Double count = Optional.ofNullable(baseMapper.selectCountByMatnr(dto.getMatnr())).orElse(0.0D);
+            if (count < dto.getCount()) {
                 if (!asrs) { asrs = true; }
                 StockTransferParam param = new StockTransferParam();
-                param.setMatnr(custOrder.getUserCode());
-                param.setAnfme(custOrder.getQty() - count);
-                param.setTotal(custOrder.getQty());
+                param.setMatnr(dto.getMatnr());
+                param.setAnfme(dto.getCount() - count);
+                param.setTotal(dto.getCount());
                 params.add(param);
             }
         }
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/OrderDetlServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/OrderDetlServiceImpl.java
index e5ff17b..dd3f900 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/OrderDetlServiceImpl.java
@@ -6,7 +6,13 @@
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service("orderDetlService")
 public class OrderDetlServiceImpl extends ServiceImpl<OrderDetlMapper, OrderDetl> implements OrderDetlService {
 
+    @Override
+    public List<OrderDetl> selectByOrderNo(String orderNo) {
+        return this.baseMapper.selectByOrderNo(orderNo);
+    }
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/OrderServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/OrderServiceImpl.java
index 78807fc..8f6f894 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/OrderServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/OrderServiceImpl.java
@@ -7,6 +7,8 @@
 import zy.cloud.wms.manager.mapper.OrderMapper;
 import zy.cloud.wms.manager.service.OrderService;
 
+import java.util.List;
+
 @Service("orderService")
 public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
 
@@ -27,4 +29,14 @@
         return this.baseMapper.insert(order) > 0;
     }
 
+    @Override
+    public List<Order> selectOrderBySettle(Long settle) {
+        return this.selectList(new EntityWrapper<Order>().eq("settle", settle));
+    }
+
+    @Override
+    public Boolean updateSettle(String orderNo, Long settle) {
+        return this.baseMapper.updateSettle(orderNo, settle);
+    }
+
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
index 399e9f0..70e7a2f 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -213,7 +213,7 @@
 
     @Override
     public R stockOutPrint(StockOutParam param, Long userId) {
-        List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>().eq("doc_num", param.getNumber()));
+        List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>().eq("doc_num", param.getOrderNo()));
         Double total = 0.0D;
         String custName = "";
         for (Pakout pakout : pakouts) {
@@ -221,7 +221,7 @@
             custName = pakout.getCustName();
         }
         StoPrintVo vo = new StoPrintVo();
-        vo.setDocNum(param.getNumber());
+        vo.setDocNum(param.getOrderNo());
         vo.setList(pakouts);
         vo.setTotal(total);
         vo.setCustName("娴欐睙涓壃绔嬪簱鎶�鏈湁闄愬叕鍙�");
@@ -231,25 +231,47 @@
 
     @Override
     public R stockOutPreview(StockOutParam param, Long userId) {
-        List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>()
-                .eq("number", param.getNumber())
-                .eq("status", 1)
-        );
+        Order order = orderService.selectByOrderNo(param.getOrderNo());
+        if (order.getSettle() != 1) {
+            return R.error("姝ゅ崟鎹棤娉曠敓鎴愭嫞璐у崟");
+        }
+        List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(order.getOrderNo());
+        if (Cools.isEmpty(orderDetls)) {
+            return R.error("姝ゅ崟鎹凡澶辨晥锛岃鑱旂郴绠$悊鍛�");
+        }
         OrderStoDto dto = new OrderStoDto();
-        dto.setNumber(param.getNumber());
-        dto.setCustOrders(custOrders);
+        dto.setOrderNo(param.getOrderNo());
+        List<MatnrDto> matnrDtos = new ArrayList<>();
+        for (OrderDetl orderDetl : orderDetls) {
+            MatnrDto matnrDto = new MatnrDto();
+            matnrDto.setMatnr(orderDetl.getMatnr());
+            matnrDto.setCount(orderDetl.getAnfme());
+            matnrDtos.add(matnrDto);
+        }
+        dto.setDtos(matnrDtos);
         return R.ok().add(mainService.stockOutPreview(dto));
     }
 
     @Override
     public R stockOut(StockOutParam param, Long userId) {
         List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>()
-                .eq("number", param.getNumber())
+                .eq("number", param.getOrderNo())
                 .eq("status", 1)
         );
+        List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(param.getOrderNo());
+        if (Cools.isEmpty(orderDetls)) {
+            return R.error("姝ゅ崟鎹凡澶辨晥锛岃鑱旂郴绠$悊鍛�");
+        }
         OrderStoDto dto = new OrderStoDto();
-        dto.setNumber(param.getNumber());
-        dto.setCustOrders(custOrders);
+        dto.setOrderNo(param.getOrderNo());
+        List<MatnrDto> matnrDtos = new ArrayList<>();
+        for (OrderDetl orderDetl : orderDetls) {
+            MatnrDto matnrDto = new MatnrDto();
+            matnrDto.setMatnr(orderDetl.getMatnr());
+            matnrDto.setCount(orderDetl.getAnfme());
+            matnrDtos.add(matnrDto);
+        }
+        dto.setDtos(matnrDtos);
         // 寮�濮嬫暣鐞嗗嚭搴撴暟鎹�
         mainService.stockOutProcess(dto);
         return R.ok("鐢熸垚鎷h揣鍗曟垚鍔�");
@@ -515,7 +537,7 @@
                 null,    // 鍙戣揣鏃堕棿
                 null,    // 鐗╂祦鍚嶇О
                 null,    // 鐗╂祦鍗曞彿
-                null,    // 璁㈠崟鐘舵��
+                1L,    // 璁㈠崟鐘舵��
                 1,    // 鐘舵��
                 userId,    // 娣诲姞浜哄憳
                 now,    // 娣诲姞鏃堕棿
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index ed2963c..1db3eee 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -29,4 +29,13 @@
 
     </resultMap>
 
+    <select id="selectByOrderNo" resultMap="BaseResultMap">
+        select
+        mod.*
+        from man_order_detl mod
+        left join man_order mo on mo.id = mod.order_id
+        where 1=1
+        and mo.order_no = #{orderNo}
+    </select>
+
 </mapper>
diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml
index 5826de3..1afc582 100644
--- a/src/main/resources/mapper/OrderMapper.xml
+++ b/src/main/resources/mapper/OrderMapper.xml
@@ -42,4 +42,8 @@
 
     </resultMap>
 
+    <update id="updateSettle">
+        update man_order set settle = #{settle} where 1=1 and order_no = #{orderNo}
+    </update>
+
 </mapper>
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index d973001..1071361 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -1,13 +1,14 @@
 var pageCurr;
 layui.config({
     base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
+}).use(['table','laydate', 'form', 'admin', 'tableMerge'], function(){
     var table = layui.table;
     var $ = layui.jquery;
     var layer = layui.layer;
     var layDate = layui.laydate;
     var form = layui.form;
     var admin = layui.admin;
+    var tableMerge = layui.tableMerge;
 
     /****************************************** 宸﹁竟琛� *************************************************/
 
@@ -178,7 +179,7 @@
             ,{field: 'sendTime$', align: 'center',title: '鍙戣揣鏃堕棿', hide: true}
             ,{field: 'shipName', align: 'center',title: '鐗╂祦鍚嶇О', hide: true}
             ,{field: 'shipCode', align: 'center',title: '鐗╂祦鍗曞彿', hide: true}
-            ,{field: 'settle$', align: 'center',title: '璁㈠崟鐘舵��'}
+            ,{field: 'settle$', align: 'center',title: '璁㈠崟鐘舵��', templet: '#settleTpl', width: 100}
             // ,{field: 'status$', align: 'center',title: '鐘舵��'}
             // ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳',event: 'createBy', style: 'cursor:pointer'}
             // ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
@@ -232,6 +233,86 @@
 
     /* 琛ㄦ牸2宸ュ叿鏉$偣鍑讳簨浠� */
     table.on('tool(orderTable)', function (obj) {
+        var data = obj.data;
+        switch (obj.event) {
+            // 鎷h揣
+            case 'stockOut':
+                var loadIndex = layer.load(2);
+                $.ajax({
+                    url: baseUrl + "/work/stock/out/preview",
+                    headers: {'token': localStorage.getItem('token')},
+                    contentType: 'application/json;charset=UTF-8',
+                    data: JSON.stringify({
+                        orderNo: data.orderNo
+                    }),
+                    method: 'POST',
+                    success: function (res) {
+                        layer.close(loadIndex);
+                        // 鎴愬姛
+                        if (res.code === 200){
+                            layer.open({
+                                type: 1
+                                ,title: false
+                                ,closeBtn: false
+                                ,offset: '100px'
+                                ,area: '1000px'
+                                ,shade: 0.5
+                                ,shadeClose: true
+                                ,btn: ['绔嬪嵆鐢熸垚', '绋嶅悗澶勭悊']
+                                ,btnAlign: 'c'
+                                ,moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1
+                                ,content: $('#stoukOutPreview')
+                                ,success: function(layero, index){
+                                    table.render({
+                                        elem: '#stoPreTab',
+                                        data: res.data,
+                                        page: true,
+                                        cellMinWidth: 100,
+                                        height: 432,
+                                        cols: [[
+                                            {field: 'title', title: '鍟嗗搧', merge: true, align: 'center'},
+                                            {field: 'anfme', title: '鎬绘暟閲�', merge: ['title'], align: 'center', style: 'font-weight: bold', width: 90},
+                                            {field: 'type', title: '浠撳簱', merge: true, align: 'center', templet: '#typeTpl', width: 90},
+                                            {field: 'locNo', title: '璐т綅', align: 'center'},
+                                            {field: 'prior$', title: '鎺ㄨ崘璐т綅', align: 'center', width: 100},
+                                            {field: 'reduce', title: '鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
+                                            // {field: 'remQty', title: '浣欓噺', align: 'center', width: 80},
+                                            {field: 'total', title: '鎬婚噺', align: 'center', width: 90},
+                                        ]],
+                                        done: function () {
+                                            tableMerge.render(this);
+                                            // tableX.merges('stoPreTab', [0,1,2]);
+                                            $('.layui-table-body.layui-table-main').css("overflow", "auto")
+                                        }
+                                    });
+
+                                }
+                                ,yes: function(index, layero){
+                                    //鎸夐挳銆愰┈涓婃嫞璐с�戠殑鍥炶皟
+                                    stockOut(data.number);
+                                }
+                                ,btn2: function(index, layero){
+                                    //鎸夐挳銆愮◢鍚庡鐞嗐�戠殑鍥炶皟
+                                    //return false 寮�鍚浠g爜鍙姝㈢偣鍑昏鎸夐挳鍏抽棴
+                                }
+                            });
+                        } else if (res.code === 403){
+                            top.location.href = baseUrl+"/";
+                        } else {
+                            layer.msg(res.msg, {icon: 2})
+                        }
+                    }
+                })
+                break;
+            // 鎵撳嵃
+            case 'print':
+                layer.confirm('寮�濮嬫墦鍗�' +data.number + ' 鎷h揣鍗曪紵', {shadeClose: true}, function(){
+                    layer.closeAll();
+                    printPakouts(data.number);
+                })
+                break;
+
+        }
         if (obj.event === 'edit') { // 淇敼
             showEditModel2(obj.data);
         } else if (obj.event === 'del') { // 鍒犻櫎
diff --git a/src/main/webapp/views/order/order.html b/src/main/webapp/views/order/order.html
index a52e6cb..98ef806 100644
--- a/src/main/webapp/views/order/order.html
+++ b/src/main/webapp/views/order/order.html
@@ -109,6 +109,50 @@
     </div>
 </div>
 
+<script type="text/html" id="operate">
+    {{#if (d.settle == 1){ }}
+    <a class="layui-btn layui-btn-sm layui-btn-danger" lay-event="stockOut" style="font-size: 16px">鎷h揣鍗�</a>
+    {{# } }}
+    {{#if (d.settle == 2 || d.settle == 4){ }}
+    <a class="layui-btn layui-btn-sm layui-btn-normal" lay-event="print" style="font-size: 16px">鎵撳嵃</a>
+    {{# } }}
+</script>
+
+<script type="text/html" id="settleTpl">
+    <span name="settle"
+          {{# if( d.settle === 1){ }}
+          class="layui-badge layui-badge-blue"
+          {{# } else if(d.settle === 2){ }}
+          class="layui-badge layui-badge-red"
+          {{# } else if(d.settle === 3){ }}
+          class="layui-badge layui-badge-gray"
+          {{# } else if(d.settle === 4){ }}
+          class="layui-badge layui-badge-green"
+          {{# } }}
+    >{{d.settle$}}</span>
+</script>
+
+<script type="text/html" id="typeTpl">
+    <span name="type"
+          {{# if( d.type === 1){ }}
+          class="layui-badge layui-badge-blue" ><span style="display: none">{{d.number}}</span>骞充粨</span>
+    {{# } else if(d.type === 2){ }}
+    class="layui-badge layui-badge-green" ><span style="display: none">{{d.number}}</span>绔嬪簱</span>
+    {{# } else if(d.type === 0){ }}
+    class="layui-badge layui-badge-red" ><span style="display: none">{{d.number}}</span>缂鸿揣</span>
+    {{# } }}
+</script>
+
+<!-- 鎵撳嵃瀹瑰櫒 -->
+<div id="pakoutPrintBox" style="display: none"></div>
+<!-- 鍑哄簱棰勮瀹瑰櫒 -->
+<div id="stoukOutPreview" style="display: none">
+    <div  style="padding: 25px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">
+        <span style="font-size: large; font-weight: bold">鎷h揣鍗曢瑙�</span>
+    </div>
+    <table id="stoPreTab" lay-filter="stoPreTab"></table>
+</div>
+
 <!-- 鍗曟嵁绫诲瀷琛ㄥ崟 -->
 <script type="text/html" id="docTypeEditDialog">
     <form id="docTypeEditForm" lay-filter="docTypeEditForm" class="layui-form model-form">

--
Gitblit v1.9.1