From 7c1af4c63e66754f0868c1a501f4895f9cbc9213 Mon Sep 17 00:00:00 2001
From: zhangchao <zc857179121@qq.com>
Date: 星期五, 15 十一月 2024 09:29:12 +0800
Subject: [PATCH] 双单位

---
 src/main/java/com/zy/asrs/controller/OrderController.java |  693 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 678 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OrderController.java b/src/main/java/com/zy/asrs/controller/OrderController.java
index cf452b0..df58107 100644
--- a/src/main/java/com/zy/asrs/controller/OrderController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderController.java
@@ -8,11 +8,13 @@
 import com.core.common.*;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.AgvMobileStartPakin;
 import com.zy.asrs.entity.param.OrderDomainParam;
 import com.zy.asrs.entity.result.WrkTraceVo;
 import com.zy.asrs.service.*;
 import com.zy.common.model.DetlDto;
 import com.zy.common.web.BaseController;
+import lombok.Synchronized;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.DataFormatter;
@@ -52,6 +54,52 @@
     private LocDetlService locDetlService;
     @Autowired
     private MatService matService;
+    @Autowired
+    private AgvLocDetlService agvLocDetlService;
+    @Autowired
+    private FlowLogService flowLogService;
+
+    @GetMapping("/doc/type/list")
+    @Transactional
+    @ManagerAuth(memo = "鍏ュ簱鍗曟嵁绫诲瀷")
+    @Synchronized
+    public R docTypeList(){
+        List<DocType> result = new ArrayList<>();
+        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakin", 1));
+        List<Long> unDocIds = new ArrayList<>();
+        unDocIds.add(19L);
+        unDocIds.add(30L);
+        unDocIds.add(32L);
+        unDocIds.add(36L);
+        for (DocType pakin : pakins) {
+            if (!unDocIds.contains(pakin.getDocId())) {
+                result.add(pakin);
+            }
+        }
+        return R.ok().add(result);
+    }
+
+    @GetMapping("/doc/type/out/list")
+    @Transactional
+    @ManagerAuth(memo = "鍑哄簱鍗曟嵁绫诲瀷")
+    @Synchronized
+    public R docTypeOutList(){
+        List<DocType> result = new ArrayList<>();
+        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
+        List<Long> unDocIds = new ArrayList<>();
+        unDocIds.add(18L);
+        unDocIds.add(31L);
+        unDocIds.add(33L);
+        unDocIds.add(34L);
+        unDocIds.add(35L);
+        unDocIds.add(37L);
+        for (DocType pakin : pakins) {
+            if (!unDocIds.contains(pakin.getDocId())) {
+                result.add(pakin);
+            }
+        }
+        return R.ok().add(result);
+    }
 
     @RequestMapping(value = "/order/nav/list/auth")
     @ManagerAuth
@@ -130,7 +178,19 @@
                         @RequestParam(required = false)String orderByField,
                         @RequestParam(required = false)String orderByType,
                         @RequestParam Map<String, Object> param){
-        return R.ok(orderDetlService.getPakoutPage(toPage(curr, limit, param, OrderDetl.class)));
+        EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+//        return R.ok(orderDetlService.getPakoutPage(toPage(curr, limit, param, OrderDetl.class)));
+        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakin", 1));
+        List<Long> docIds = new ArrayList<>();
+        for (DocType pakin : pakins) {
+            if (pakin.getDocId() != 32) {
+                docIds.add(pakin.getDocId());
+            }
+        }
+        wrapper.in("source",docIds);
+        return R.ok(orderDetlService.selectPage(new Page<>(curr, limit), wrapper));
 //        EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
 //        excludeTrash(param);
 //        convert(param, wrapper);
@@ -152,6 +212,144 @@
 //        return R.ok(orderDetlService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
+    @RequestMapping(value = "/order/detls/pakin")
+    @ManagerAuth
+    public R orderDetlsIn(@RequestParam(defaultValue = "1")Integer curr,
+                        @RequestParam(defaultValue = "100")Integer limit,
+                        @RequestParam(required = false)String orderByField,
+                        @RequestParam(required = false)String orderByType,
+                        @RequestParam(required = false)Long docType,
+                        @RequestParam Map<String, Object> param){
+        EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
+        param.remove("docType");
+        excludeTrash(param);
+        convert(param, wrapper);
+//        return R.ok(orderDetlService.getPakoutPage(toPage(curr, limit, param, OrderDetl.class)));
+        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakin", 1));
+        List<Long> docIds = new ArrayList<>();
+        List<Long> unDocIds = new ArrayList<>();
+        unDocIds.add(19L);
+        unDocIds.add(30L);
+        unDocIds.add(32L);
+        unDocIds.add(36L);
+        for (DocType pakin : pakins) {
+            if (!unDocIds.contains(pakin.getDocId())) {
+                docIds.add(pakin.getDocId());
+            }
+        }
+
+        if (docIds.size() > 0) {
+            if (docType > 0) {
+                wrapper.in("source",docType);
+            } else {
+                wrapper.in("source",docIds);
+            }
+
+        } else {
+            wrapper.in("source",0);
+        }
+
+        return R.ok(orderDetlService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    @RequestMapping(value = "/order/wait/detls/pakin/page/auth")
+    @ManagerAuth
+    public R waitOrderDetls(@RequestParam(defaultValue = "1")Integer curr,
+                        @RequestParam(defaultValue = "100")Integer limit,
+                        @RequestParam(required = false)String orderByField,
+                        @RequestParam(required = false)String orderByType,
+                        @RequestParam Map<String, Object> param){
+        EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+//        return R.ok(orderDetlService.getPakoutPage(toPage(curr, limit, param, OrderDetl.class)));
+        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakin", 1));
+        List<Long> docIds = new ArrayList<>();
+        for (DocType pakin : pakins) {
+            if (pakin.getDocId() == 36) {
+                docIds.add(pakin.getDocId());
+            }
+        }
+        wrapper.in("source",docIds);
+        return R.ok(orderDetlService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    //  鎵�鏈夊叆搴撹鍗曟槑缁�
+    @RequestMapping(value = "/order/bcp/detls/pakin/page/auth")
+    @ManagerAuth
+    public R bcpOrderDetls(@RequestParam(defaultValue = "1")Integer curr,
+                        @RequestParam(defaultValue = "100")Integer limit,
+                        @RequestParam(required = false)String orderByField,
+                        @RequestParam(required = false)String orderByType,
+                        @RequestParam Map<String, Object> param){
+        EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+//        return R.ok(orderDetlService.getPakoutPage(toPage(curr, limit, param, OrderDetl.class)));
+        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakin", 1));
+        List<Long> docIds = new ArrayList<>();
+        for (DocType pakin : pakins) {
+            if (pakin.getDocId() == 32) {
+                docIds.add(pakin.getDocId());
+            }
+        }
+        wrapper.in("source",docIds);
+        return R.ok(orderDetlService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    @RequestMapping(value = "/order/bcpDb/detls/pakin/page/auth")
+    @ManagerAuth
+    public R bcpDbOrderDetls(@RequestParam(defaultValue = "1")Integer curr,
+                           @RequestParam(defaultValue = "100")Integer limit,
+                           @RequestParam(required = false)String orderByField,
+                           @RequestParam(required = false)String orderByType,
+                           @RequestParam Map<String, Object> param){
+        EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+//        return R.ok(orderDetlService.getPakoutPage(toPage(curr, limit, param, OrderDetl.class)));
+        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
+        List<Long> docIds = new ArrayList<>();
+        for (DocType pakin : pakins) {
+            if (pakin.getDocId() == 33) {
+                docIds.add(pakin.getDocId());
+            }
+        }
+        wrapper.in("source",docIds);
+        Page<OrderDetl> page = orderDetlService.selectPage(new Page<>(curr, limit), wrapper);
+        for (OrderDetl record : page.getRecords()) {
+            Double sumAnfme = agvLocDetlService.getSumAnfmeDb(record.getMatnr(), record.getThreeCode(),1);
+            record.setStock(sumAnfme == null ? 0 : sumAnfme);
+        }
+        return R.ok(page);
+    }
+    @RequestMapping(value = "/order/backStocks/detls/pakin/page/auth")
+    @ManagerAuth
+    public R backStocksOrderDetls(@RequestParam(defaultValue = "1")Integer curr,
+                             @RequestParam(defaultValue = "100")Integer limit,
+                             @RequestParam(required = false)String orderByField,
+                             @RequestParam(required = false)String orderByType,
+                             @RequestParam Map<String, Object> param){
+        EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+//        return R.ok(orderDetlService.getPakoutPage(toPage(curr, limit, param, OrderDetl.class)));
+        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
+        List<Long> docIds = new ArrayList<>();
+        for (DocType pakin : pakins) {
+            if (pakin.getDocId() == 17) {
+                docIds.add(pakin.getDocId());
+            }
+        }
+        wrapper.in("source",docIds);
+        Page<OrderDetl> page = orderDetlService.selectPage(new Page<>(curr, limit), wrapper);
+        for (OrderDetl record : page.getRecords()) {
+            Double sumAnfme = agvLocDetlService.getSumAnfmeback(record.getMatnr(), record.getThreeCode(),1);
+            record.setStock(sumAnfme == null ? 0 : sumAnfme);
+        }
+        return R.ok(page);
+    }
+
     @RequestMapping(value = "/order/detl/all/auth")
     @ManagerAuth
     public R head(@RequestParam Long orderId){
@@ -163,6 +361,7 @@
     @Transactional
     public R formAdd(@RequestBody OrderDomainParam param){
         Order order = orderService.selectByNo(param.getOrderNo());
+        long flowId = snowflakeIdWorker.nextId();
         if (order != null) {
             return R.error("鍗曟嵁缂栧彿宸插瓨鍦�");
         }
@@ -207,18 +406,52 @@
             throw new CoolException("淇濆瓨璁㈠崟涓绘。澶辫触");
         }
         List<DetlDto> list = new ArrayList<>();
+        Boolean flag = false;
         for (OrderDetl orderDetl : param.getOrderDetlList()) {
+            if (Cools.isEmpty(orderDetl.getProcessSts())) {
+                orderDetl.setProcessSts(3);
+            }
+            if (orderDetl.getProcessSts() == 1) {
+                flag = true;
+            }
+            if (param.getDocType() != 32) {
+                orderDetl.setProcessSts(3);
+            }
             DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
             if (DetlDto.has(list, dto)) {
-                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode(),orderDetl.getDeadTime());
+                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode().trim(),orderDetl.getDeadTime());
+                Double anfme = item.getAnfme();
                 item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
                 if (!orderDetlService.updateById(item)) {
                     throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
                 }
+                // 娴佹按 -- 鏂板璁㈠崟鏄庣粏
+//                FlowLog flowLog = new FlowLog();
+//                flowLog.setFid(String.valueOf(flowId));
+//                flowLog.setOpType(2L);
+//                flowLog.setOrderNo(param.getOrderNo());
+//                flowLog.setThreeCode(orderDetl.getThreeCode().trim());
+//                flowLog.setMatnr(orderDetl.getMatnr());
+//                flowLog.setMaktx(orderDetl.getMaktx());
+//                flowLog.setOrderPrevious(anfme);
+//                flowLog.setOrderCurrent(anfme + orderDetl.getAnfme());
+//                flowLog.setOrderChanged(orderDetl.getAnfme());
+//                flowLog.setQtyPrevious(orderDetl.getQty());
+//                flowLog.setQtyCurrent(orderDetl.getQty());
+//                flowLog.setQtyChanged(0.0D);
+//                flowLog.setUserId(getUserId());
+//                flowLog.setAppeTime(now);
+//                if (!flowLogService.insert(flowLog)) {
+//                    throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触");
+//                }
             } else {
                 list.add(dto);
+                if (!Cools.isEmpty(orderDetl.getThreeCode())){
+                    orderDetl.setThreeCode(orderDetl.getThreeCode().trim());
+                }
                 orderDetl.setOrderId(order.getId());
                 orderDetl.setOrderNo(order.getOrderNo());
+                orderDetl.setSource(param.getDocType().intValue());
                 orderDetl.setCreateBy(getUserId());
                 orderDetl.setCreateTime(now);
                 orderDetl.setUpdateBy(getUserId());
@@ -228,8 +461,193 @@
                 if (!orderDetlService.insert(orderDetl)) {
                     throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
                 }
+//                // 娴佹按 -- 鏂板璁㈠崟鏄庣粏
+//                FlowLog flowLog = new FlowLog();
+//                flowLog.setFid(String.valueOf(flowId));
+//                flowLog.setOpType(1L);
+//                flowLog.setOrderNo(param.getOrderNo());
+//                flowLog.setThreeCode(orderDetl.getThreeCode().trim());
+//                flowLog.setMatnr(orderDetl.getMatnr());
+//                flowLog.setMaktx(orderDetl.getMaktx());
+//                flowLog.setOrderPrevious(0.0D);
+//                flowLog.setOrderCurrent(orderDetl.getAnfme());
+//                flowLog.setOrderChanged(orderDetl.getAnfme());
+//                flowLog.setQtyPrevious(0.0D);
+//                flowLog.setQtyCurrent(0.0D);
+//                flowLog.setQtyChanged(0.0D);
+//                flowLog.setUserId(getUserId());
+//                flowLog.setAppeTime(now);
+//                if (!flowLogService.insert(flowLog)) {
+//                    throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触");
+//                }
             }
         }
+        if (param.getDocType().intValue() == 32) {
+            order = new Order(
+                    String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
+                    "DB" + param.getOrderNo(),    // 璁㈠崟缂栧彿
+                    DateUtils.convert(now),    // 鍗曟嵁鏃ユ湡
+                    33L,    // 鍗曟嵁绫诲瀷
+                    null,    // 椤圭洰缂栧彿
+                    null,    //
+                    null,    // 璋冩嫧椤圭洰缂栧彿
+                    null,    // 鍒濆绁ㄦ嵁鍙�
+                    null,    // 绁ㄦ嵁鍙�
+                    null,    // 瀹㈡埛缂栧彿
+                    null,    // 瀹㈡埛
+                    null,    // 鑱旂郴鏂瑰紡
+                    null,    // 鎿嶄綔浜哄憳
+                    null,    // 鍚堣閲戦
+                    null,    // 浼樻儬鐜�
+                    null,    // 浼樻儬閲戦
+                    null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
+                    null,    // 瀹炰粯閲戦
+                    null,    // 浠樻绫诲瀷
+                    null,    // 涓氬姟鍛�
+                    null,    // 缁撶畻澶╂暟
+                    null,    // 閭垂鏀粯绫诲瀷
+                    null,    // 閭垂
+                    null,    // 浠樻鏃堕棿
+                    null,    // 鍙戣揣鏃堕棿
+                    null,    // 鐗╂祦鍚嶇О
+                    null,    // 鐗╂祦鍗曞彿
+                    1L,    // 璁㈠崟鐘舵��
+                    1,    // 鐘舵��
+                    getUserId(),    // 娣诲姞浜哄憳
+                    now,    // 娣诲姞鏃堕棿
+                    getUserId(),    // 淇敼浜哄憳
+                    now,    // 淇敼鏃堕棿
+                    null    // 澶囨敞
+            );
+            if (!orderService.insert(order)) {
+                throw new CoolException("鐢熸垚鍗婃垚鍝佽皟鎷ㄥ崟澶辫触");
+            }
+            List<DetlDto> dbList = new ArrayList<>();
+            for (OrderDetl orderDetl : param.getOrderDetlList()) {
+                DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
+                if (DetlDto.has(dbList, dto)) {
+                    OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode().trim(),orderDetl.getDeadTime());
+                    item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
+                    if (!orderDetlService.updateById(item)) {
+                        throw new CoolException("鐢熸垚鍗婃垚鍝佽皟鎷ㄥ崟鏄庣粏妗eけ璐�");
+                    }
+                } else {
+                    dbList.add(dto);
+                    if (!Cools.isEmpty(orderDetl.getThreeCode())){
+                        orderDetl.setThreeCode(orderDetl.getThreeCode().trim());
+                    }
+                    orderDetl.setOrderId(order.getId());
+                    orderDetl.setOrderNo(order.getOrderNo());
+                    orderDetl.setSource(33);
+                    orderDetl.setCreateBy(getUserId());
+                    orderDetl.setCreateTime(now);
+                    orderDetl.setUpdateBy(getUserId());
+                    orderDetl.setUpdateTime(now);
+                    orderDetl.setStatus(1);
+                    orderDetl.setQty(0.0D);
+                    if (!orderDetlService.insert(orderDetl)) {
+                        throw new CoolException("鐢熸垚鍗婃垚鍝佽皟鎷ㄥ崟鏄庣粏妗eけ璐�");
+                    }
+                }
+            }
+
+        }
+        // 宸ュ簭涓�1锛氬緟鍔犲伐 鐢熸垚鍔犲伐鍗�
+        if (flag) {
+            if (param.getDocType().intValue() == 32) {
+                order = new Order(
+                        String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
+                        "JG" + param.getOrderNo(),    // 璁㈠崟缂栧彿
+                        DateUtils.convert(now),    // 鍗曟嵁鏃ユ湡
+                        35L,    // 鍗曟嵁绫诲瀷
+                        null,    // 椤圭洰缂栧彿
+                        null,    //
+                        null,    // 璋冩嫧椤圭洰缂栧彿
+                        null,    // 鍒濆绁ㄦ嵁鍙�
+                        null,    // 绁ㄦ嵁鍙�
+                        null,    // 瀹㈡埛缂栧彿
+                        null,    // 瀹㈡埛
+                        null,    // 鑱旂郴鏂瑰紡
+                        null,    // 鎿嶄綔浜哄憳
+                        null,    // 鍚堣閲戦
+                        null,    // 浼樻儬鐜�
+                        null,    // 浼樻儬閲戦
+                        null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
+                        null,    // 瀹炰粯閲戦
+                        null,    // 浠樻绫诲瀷
+                        null,    // 涓氬姟鍛�
+                        null,    // 缁撶畻澶╂暟
+                        null,    // 閭垂鏀粯绫诲瀷
+                        null,    // 閭垂
+                        null,    // 浠樻鏃堕棿
+                        null,    // 鍙戣揣鏃堕棿
+                        null,    // 鐗╂祦鍚嶇О
+                        null,    // 鐗╂祦鍗曞彿
+                        1L,    // 璁㈠崟鐘舵��
+                        1,    // 鐘舵��
+                        getUserId(),    // 娣诲姞浜哄憳
+                        now,    // 娣诲姞鏃堕棿
+                        getUserId(),    // 淇敼浜哄憳
+                        now,    // 淇敼鏃堕棿
+                        null    // 澶囨敞
+                );
+                if (!orderService.insert(order)) {
+                    throw new CoolException("鐢熸垚鍗婃垚鍝佽皟鎷ㄥ崟澶辫触");
+                }
+                List<DetlDto> dbList = new ArrayList<>();
+                for (OrderDetl orderDetl : param.getOrderDetlList()) {
+                    if (orderDetl.getProcessSts() != 1) continue;
+                    DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
+                    if (DetlDto.has(dbList, dto)) {
+                        OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode().trim(),orderDetl.getDeadTime());
+                        item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
+                        if (!orderDetlService.updateById(item)) {
+                            throw new CoolException("鐢熸垚鍗婃垚鍝佽皟鎷ㄥ崟鏄庣粏妗eけ璐�");
+                        }
+                    } else {
+                        dbList.add(dto);
+                        if (!Cools.isEmpty(orderDetl.getThreeCode())){
+                            orderDetl.setThreeCode(orderDetl.getThreeCode().trim());
+                        }
+                        orderDetl.setOrderId(order.getId());
+                        orderDetl.setOrderNo(order.getOrderNo());
+                        orderDetl.setSource(35);
+                        orderDetl.setCreateBy(getUserId());
+                        orderDetl.setCreateTime(now);
+                        orderDetl.setUpdateBy(getUserId());
+                        orderDetl.setUpdateTime(now);
+                        orderDetl.setStatus(1);
+                        orderDetl.setQty(0.0D);
+                        if (!orderDetlService.insert(orderDetl)) {
+                            throw new CoolException("鐢熸垚鍗婃垚鍝佽皟鎷ㄥ崟鏄庣粏妗eけ璐�");
+                        }
+//                        // 娴佹按 -- 鏂板璁㈠崟鏄庣粏
+//                        FlowLog flowLog = new FlowLog();
+//                        flowLog.setFid(String.valueOf(flowId));
+//                        flowLog.setOpType(1L);
+//                        flowLog.setOrderNo(param.getOrderNo());
+//                        flowLog.setThreeCode(orderDetl.getThreeCode().trim());
+//                        flowLog.setMatnr(orderDetl.getMatnr());
+//                        flowLog.setMaktx(orderDetl.getMaktx());
+//                        flowLog.setOrderPrevious(0.0D);
+//                        flowLog.setOrderCurrent(orderDetl.getAnfme());
+//                        flowLog.setOrderChanged(orderDetl.getAnfme());
+//                        flowLog.setQtyPrevious(0.0D);
+//                        flowLog.setQtyCurrent(0.0D);
+//                        flowLog.setQtyChanged(0.0D);
+//                        flowLog.setUserId(getUserId());
+//                        flowLog.setAppeTime(now);
+//                        if (!flowLogService.insert(flowLog)) {
+//                            throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触");
+//                        }
+
+                    }
+
+                }
+
+            }
+        }
+
         return R.ok("璁㈠崟娣诲姞鎴愬姛");
     }
 
@@ -238,6 +656,8 @@
     @Transactional
     public R formModify(@RequestBody OrderDomainParam param){
         Order order = orderService.selectById(param.getOrderId());
+        long flowId = snowflakeIdWorker.nextId();
+        int docType = param.getDocType().intValue();
         if (order == null || order.getStatus() == 0) {
             return R.error("璁㈠崟涓嶅瓨鍦�");
         }
@@ -261,17 +681,51 @@
         // 2.閲嶇粍鏁版嵁
         List<DetlDto> list = new ArrayList<>();
         for (OrderDetl orderDetl : param.getOrderDetlList()) {
-            DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
+            DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getAnfme(), orderDetl.getProcessSts());
             if (DetlDto.has(list, dto)) {
-                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode(),orderDetl.getDeadTime());
+                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode().trim(),orderDetl.getDeadTime());
+                Double anfme = item.getAnfme();
                 item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
                 if (!orderDetlService.updateById(item)) {
                     throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
                 }
+//                // 娴佹按 -- 鏂板璁㈠崟鏄庣粏
+//                FlowLog flowLog = new FlowLog();
+//                flowLog.setFid(String.valueOf(flowId));
+//                flowLog.setOpType(2L);
+//                flowLog.setOrderNo(param.getOrderNo());
+//                flowLog.setThreeCode(orderDetl.getThreeCode().trim());
+//                flowLog.setMatnr(orderDetl.getMatnr());
+//                flowLog.setMaktx(orderDetl.getMaktx());
+//                flowLog.setOrderPrevious(anfme);
+//                flowLog.setOrderCurrent(anfme + orderDetl.getAnfme());
+//                flowLog.setOrderChanged(orderDetl.getAnfme());
+//                flowLog.setQtyPrevious(orderDetl.getQty());
+//                flowLog.setQtyCurrent(orderDetl.getQty());
+//                flowLog.setQtyChanged(0.0D);
+//                flowLog.setUserId(getUserId());
+//                flowLog.setAppeTime(now);
+//                if (!flowLogService.insert(flowLog)) {
+//                    throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触");
+//                }
             } else {
+                if (docType == 35 && orderDetl.getProcessSts() == 1) {
+                    List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>()
+                            .eq("matnr", orderDetl.getMatnr())
+                            .eq("order_no", orderDetl.getOrderNo())
+                            .eq("process_sts", 3));
+                    for (AgvLocDetl agvLocDetl : agvLocDetls) {
+                        agvLocDetl.setProcessSts(1);
+                        agvLocDetlService.updateById(agvLocDetl);
+                    }
+                }
                 list.add(dto);
+                if (!Cools.isEmpty(orderDetl.getThreeCode())){
+                    orderDetl.setThreeCode(orderDetl.getThreeCode().trim());
+                }
                 orderDetl.setOrderId(order.getId());
                 orderDetl.setOrderNo(order.getOrderNo());
+                orderDetl.setSource(docType);
                 orderDetl.setCreateBy(getUserId());
                 orderDetl.setCreateTime(now);
                 orderDetl.setUpdateBy(getUserId());
@@ -281,6 +735,25 @@
                 if (!orderDetlService.insert(orderDetl)) {
                     throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
                 }
+                // 娴佹按 -- 鏂板璁㈠崟鏄庣粏
+//                FlowLog flowLog = new FlowLog();
+//                flowLog.setFid(String.valueOf(flowId));
+//                flowLog.setOpType(2L);
+//                flowLog.setOrderNo(param.getOrderNo());
+//                flowLog.setThreeCode(orderDetl.getThreeCode().trim());
+//                flowLog.setMatnr(orderDetl.getMatnr());
+//                flowLog.setMaktx(orderDetl.getMaktx());
+//                flowLog.setOrderPrevious(0.0D);
+//                flowLog.setOrderCurrent(orderDetl.getAnfme());
+//                flowLog.setOrderChanged(orderDetl.getAnfme());
+//                flowLog.setQtyPrevious(orderDetl.getQty());
+//                flowLog.setQtyCurrent(orderDetl.getQty());
+//                flowLog.setQtyChanged(0.0D);
+//                flowLog.setUserId(getUserId());
+//                flowLog.setAppeTime(now);
+//                if (!flowLogService.insert(flowLog)) {
+//                    throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触");
+//                }
             }
         }
         return R.ok("璁㈠崟淇敼鎴愬姛");
@@ -492,22 +965,24 @@
         Date now = new Date();
         DataFormatter dataFormatter = new DataFormatter();
         for (int i = 1; i < totalRows; i++) {
+            Integer proSts = 0;
             Row row = sheet.getRow(i);
             //鍗曟嵁绫诲瀷
-            String docName =  dataFormatter.formatCellValue(row.getCell(0));
+            String docName =  dataFormatter.formatCellValue(row.getCell(0)).trim();
             //鍗曟嵁缂栧彿
-            String uuid = dataFormatter.formatCellValue(row.getCell(1));
+            String uuid = dataFormatter.formatCellValue(row.getCell(1)).trim();
             //鐗╂枡鍙�
-            String matnr = dataFormatter.formatCellValue(row.getCell(2));
+            String matnr = dataFormatter.formatCellValue(row.getCell(2)).trim();
             //閿�鍞崟鍙�
-            String csocode = dataFormatter.formatCellValue(row.getCell(3));
+            String csocode = dataFormatter.formatCellValue(row.getCell(3)).trim();
             //鑷敱椤�
-            String isocode = dataFormatter.formatCellValue(row.getCell(4));
+            String isocode = dataFormatter.formatCellValue(row.getCell(4)).trim();
             // 鏁伴噺
             if(Cools.isEmpty(dataFormatter.formatCellValue(row.getCell(5)))){
                 continue;
             }
             Double anfme = Double.parseDouble(dataFormatter.formatCellValue(row.getCell(5)));
+
             Mat mat = matService.selectByMatnr(matnr);
             if (null == mat) {
                 throw new CoolException(matnr + "鍟嗗搧缂栫爜鐨勫晢鍝佷笉瀛樺湪锛岃閲嶆柊瀵煎叆锛�");
@@ -517,17 +992,39 @@
 
             DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", docName));
 
-            if(docType.getPakin() == 1){
-                uuid += "_I";
-            }else {
-                uuid += "_O";
+            // 鍗曟嵁绫诲瀷涓� 鍗婃垚鍝佸叆搴撳崟鎵嶆湁宸ュ簭
+            if (docType.getDocId().intValue() == 32) {
+                //宸ュ簭
+                if (Cools.isEmpty(dataFormatter.formatCellValue(row.getCell(6)))) {
+                    // 宸ュ簭涓虹┖锛岄粯璁や负鏃犻渶鍔犲伐
+                    proSts = 3;
+                } else {
+                    String processSts = dataFormatter.formatCellValue(row.getCell(6));
+                    //1: 寰呭姞宸� 2锛氬凡鍔犲伐 3锛氭棤闇�鍔犲伐
+                    if ("寰呭姞宸�".equals(processSts)) {
+                        proSts = 1;
+                    } else if ("宸插姞宸�".equals(processSts)) {
+                        proSts = 2;
+                    } else {
+                        proSts = 3;
+                    }
+                }
+            } else {
+                proSts = 3;
             }
 
-            Order order = orderService.selectByNo(uuid);
+            String odNo = uuid;
+            if(docType.getPakin() == 1){
+                odNo += "_I";
+            }else {
+                odNo += "_O";
+            }
+
+            Order order = orderService.selectByNo(odNo);
             if (null == order) {
                 order = new Order(
                         String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
-                        uuid,    // 璁㈠崟缂栧彿
+                        odNo,    // 璁㈠崟缂栧彿
                         null,    // 鍗曟嵁鏃ユ湡
                         docType.getDocId(),    // 鍗曟嵁绫诲瀷
                         null,    // 椤圭洰缂栧彿
@@ -565,6 +1062,11 @@
                     throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃閲嶆柊瀵煎叆锛�");
                 }
             }else {
+                //  鏈夊師璁㈠崟鍦ㄧ殑鎯呭喌
+                DocType orderType = docTypeService.selectById(order.getDocType());
+                if (!orderType.getDocName().equals(docName)) {
+                    throw new CoolException("鏂拌鍗曪細" + uuid + " 涓庣郴缁熷唴鐨勮鍗曞彿鐩稿悓锛屽崟鎹被鍨嬩笉鍚屻�傝纭鏂拌鍗曞崟鎹被鍨嬶紒");
+                }
                 order.setSettle(order.getSettle() == 1L ? 1L : 2L );
                 orderService.updateById(order);
             }
@@ -573,6 +1075,7 @@
             if (orderDetl == null) {
                 orderDetl = new OrderDetl();
                 orderDetl.sync(mat);
+                orderDetl.setSource(docType.getDocId().intValue());
                 orderDetl.setBatch(null);
                 orderDetl.setAnfme(anfme);
                 orderDetl.setOrderId(order.getId());
@@ -585,14 +1088,174 @@
                 orderDetl.setDeadTime(isocode);
                 orderDetl.setStatus(1);
                 orderDetl.setQty(0.0D);
+                orderDetl.setProcessSts(proSts);
                 if (!orderDetlService.insert(orderDetl)) {
                     throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃閲嶆柊瀵煎叆锛�");
                 }
             } else {
+                if (anfme < 0)  {
+                    throw new CoolException("璁㈠崟鏁伴噺涓嶅厑璁镐负璐熸暟锛�");
+                }
                 if(!orderDetlService.increaseAnfme(order.getId(), matnr, null, anfme,csocode,isocode)) {
                     throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃閲嶆柊瀵煎叆锛�");
                 }
             }
+            // 鐢熸垚璋冩嫧鍗�
+            if (docType.getDocId().intValue() == 32) {
+                String dbUuid = "DB" + odNo;
+                Order order2 = orderService.selectByNo(dbUuid);
+                if (null == order2) {
+                    order2 = new Order(
+                            String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
+                            dbUuid,    // 璁㈠崟缂栧彿
+                            null,    // 鍗曟嵁鏃ユ湡
+                            33L,    // 鍗曟嵁绫诲瀷
+                            null,    // 椤圭洰缂栧彿
+                            null,    //
+                            null,    // 璋冩嫧椤圭洰缂栧彿
+                            null,    // 鍒濆绁ㄦ嵁鍙�
+                            null,    // 绁ㄦ嵁鍙�
+                            null,    // 瀹㈡埛缂栧彿
+                            null,    // 瀹㈡埛
+                            null,    // 鑱旂郴鏂瑰紡
+                            null,    // 鎿嶄綔浜哄憳
+                            null,    // 鍚堣閲戦
+                            null,    // 浼樻儬鐜�
+                            null,    // 浼樻儬閲戦
+                            null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
+                            null,    // 瀹炰粯閲戦
+                            null,    // 浠樻绫诲瀷
+                            null,    // 涓氬姟鍛�
+                            null,    // 缁撶畻澶╂暟
+                            null,    // 閭垂鏀粯绫诲瀷
+                            null,    // 閭垂
+                            null,    // 浠樻鏃堕棿
+                            null,    // 鍙戣揣鏃堕棿
+                            null,    // 鐗╂祦鍚嶇О
+                            null,    // 鐗╂祦鍗曞彿
+                            1L,    // 璁㈠崟鐘舵��
+                            1,    // 鐘舵��
+                            userId,    // 娣诲姞浜哄憳
+                            now,    // 娣诲姞鏃堕棿
+                            userId,    // 淇敼浜哄憳
+                            now,    // 淇敼鏃堕棿
+                            null    // 澶囨敞
+                    );
+                    if (!orderService.insert(order2)) {
+                        throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃閲嶆柊瀵煎叆锛�");
+                    }
+                }else {
+                    order2.setSettle(order2.getSettle() == 1L ? 1L : 2L );
+                    orderService.updateById(order2);
+                }
+
+                OrderDetl orderDetl2 = orderDetlService.selectItem(order2.getId(), matnr, null,csocode,isocode);
+                if (orderDetl2 == null) {
+                    orderDetl2 = new OrderDetl();
+                    orderDetl2.sync(mat);
+                    orderDetl2.setSource(33);
+                    orderDetl2.setBatch(null);
+                    orderDetl2.setAnfme(anfme);
+                    orderDetl2.setOrderId(order2.getId());
+                    orderDetl2.setOrderNo(order2.getOrderNo());
+                    orderDetl2.setCreateBy(userId);
+                    orderDetl2.setCreateTime(now);
+                    orderDetl2.setUpdateBy(userId);
+                    orderDetl2.setUpdateTime(now);
+                    orderDetl2.setThreeCode(csocode);
+                    orderDetl2.setDeadTime(isocode);
+                    orderDetl2.setStatus(1);
+                    orderDetl2.setQty(0.0D);
+                    orderDetl2.setProcessSts(proSts);
+                    if (!orderDetlService.insert(orderDetl2)) {
+                        throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃閲嶆柊瀵煎叆锛�");
+                    }
+                } else {
+                    if(!orderDetlService.increaseAnfme(order2.getId(), matnr, null, anfme,csocode,isocode)) {
+                        throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃閲嶆柊瀵煎叆锛�");
+                    }
+                }
+            }
+
+            // 宸ュ簭涓�1锛氬緟鍔犲伐 鐢熸垚鍔犲伐鍗�
+            if (proSts == 1) {
+                if (docType.getDocId().intValue() == 32) {
+                    String dbUuid = "JG" + odNo;
+                    Order order3 = orderService.selectByNo(dbUuid);
+                    if (null == order3) {
+                        order3 = new Order(
+                                String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
+                                dbUuid,    // 璁㈠崟缂栧彿
+                                null,    // 鍗曟嵁鏃ユ湡
+                                35L,    // 鍗曟嵁绫诲瀷
+                                null,    // 椤圭洰缂栧彿
+                                null,    //
+                                null,    // 璋冩嫧椤圭洰缂栧彿
+                                null,    // 鍒濆绁ㄦ嵁鍙�
+                                null,    // 绁ㄦ嵁鍙�
+                                null,    // 瀹㈡埛缂栧彿
+                                null,    // 瀹㈡埛
+                                null,    // 鑱旂郴鏂瑰紡
+                                null,    // 鎿嶄綔浜哄憳
+                                null,    // 鍚堣閲戦
+                                null,    // 浼樻儬鐜�
+                                null,    // 浼樻儬閲戦
+                                null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
+                                null,    // 瀹炰粯閲戦
+                                null,    // 浠樻绫诲瀷
+                                null,    // 涓氬姟鍛�
+                                null,    // 缁撶畻澶╂暟
+                                null,    // 閭垂鏀粯绫诲瀷
+                                null,    // 閭垂
+                                null,    // 浠樻鏃堕棿
+                                null,    // 鍙戣揣鏃堕棿
+                                null,    // 鐗╂祦鍚嶇О
+                                null,    // 鐗╂祦鍗曞彿
+                                1L,    // 璁㈠崟鐘舵��
+                                1,    // 鐘舵��
+                                userId,    // 娣诲姞浜哄憳
+                                now,    // 娣诲姞鏃堕棿
+                                userId,    // 淇敼浜哄憳
+                                now,    // 淇敼鏃堕棿
+                                null    // 澶囨敞
+                        );
+                        if (!orderService.insert(order3)) {
+                            throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃閲嶆柊瀵煎叆锛�");
+                        }
+                    }else {
+                        order3.setSettle(order3.getSettle() == 1L ? 1L : 2L );
+                        orderService.updateById(order3);
+                    }
+
+                    OrderDetl orderDetl3 = orderDetlService.selectItem(order3.getId(), matnr, null,csocode,isocode);
+                    if (orderDetl3 == null) {
+                        orderDetl3 = new OrderDetl();
+                        orderDetl3.sync(mat);
+                        orderDetl3.setSource(35);
+                        orderDetl3.setBatch(null);
+                        orderDetl3.setAnfme(anfme);
+                        orderDetl3.setOrderId(order3.getId());
+                        orderDetl3.setOrderNo(order3.getOrderNo());
+                        orderDetl3.setCreateBy(userId);
+                        orderDetl3.setCreateTime(now);
+                        orderDetl3.setUpdateBy(userId);
+                        orderDetl3.setUpdateTime(now);
+                        orderDetl3.setThreeCode(csocode);
+                        orderDetl3.setDeadTime(isocode);
+                        orderDetl3.setStatus(1);
+                        orderDetl3.setQty(0.0D);
+                        orderDetl3.setProcessSts(proSts);
+                        if (!orderDetlService.insert(orderDetl3)) {
+                            throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃閲嶆柊瀵煎叆锛�");
+                        }
+                    } else {
+                        if(!orderDetlService.increaseAnfme(order3.getId(), matnr, null, anfme,csocode,isocode)) {
+                            throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃閲嶆柊瀵煎叆锛�");
+                        }
+                    }
+                }
+            }
+
         }
         return R.ok("瀵煎叆鎴愬姛");
     }

--
Gitblit v1.9.1