From 1a2f494454d0da24bb9ca7ad7c0e91902819405a Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期五, 21 十一月 2025 13:18:42 +0800
Subject: [PATCH] 1.获取erp订单数据时过滤掉状态》5 2.同步erp删除数据时,只删除指定的订单明细 3.订单出库按批号排序

---
 src/main/java/com/zy/third/task/handler/OrderHandler.java |  164 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 154 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/zy/third/task/handler/OrderHandler.java b/src/main/java/com/zy/third/task/handler/OrderHandler.java
index b48cf7d..dcea148 100644
--- a/src/main/java/com/zy/third/task/handler/OrderHandler.java
+++ b/src/main/java/com/zy/third/task/handler/OrderHandler.java
@@ -1,22 +1,19 @@
 package com.zy.third.task.handler;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.DocType;
-import com.zy.asrs.entity.Mat;
-import com.zy.asrs.entity.Order;
-import com.zy.asrs.entity.OrderDetl;
-import com.zy.asrs.service.DocTypeService;
-import com.zy.asrs.service.MatService;
-import com.zy.asrs.service.OrderDetlService;
-import com.zy.asrs.service.OrderService;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.service.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.common.model.DetlDto;
 import com.zy.third.entity.ExdInstockSource;
 import com.zy.third.entity.ExdOutstockSource;
+import com.zy.third.entity.ExdStock;
+import com.zy.third.service.ExdStockService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -47,6 +44,13 @@
     @Autowired
     private MatService matService;
 
+    @Autowired
+    private ExdStockService exdStockService;
+    @Autowired
+    private Order1Service order1Service;
+    @Autowired
+    private OrderDetl1Service orderDetl1Service;
+
 
     @Transactional
     public ReturnT<String> readInOrder(List<ExdInstockSource> exdInstockSource) {
@@ -54,7 +58,15 @@
         Integer ftrantype = exdInstockSource.get(0).getFtrantype();
         Order order = orderService.selectByNo(fbillno);
         if (!Cools.isEmpty(order)) {
-            throw new CoolException(fbillno + "鍗曟嵁宸插瓨鍦紝璇峰嬁閲嶅鎻愪氦");
+            if (order.getSettle() > 1L) {
+                throw new CoolException(fbillno + "鍗曟嵁浣滀笟涓紝璇峰嬁閲嶅鎻愪氦");
+            }
+            orderService.remove(order.getId());
+            //鍒犻櫎鍏ュ簱瀛愬崟
+            Order1 order1 = order1Service.selectByNo(fbillno);
+            if (!Cools.isEmpty(order1)) {
+                order1Service.remove(order1.getId());
+            }
         }
         DocType docType = docTypeService.selectById(ftrantype);
         if (docType == null) {
@@ -102,12 +114,55 @@
         if (!orderService.insert(order)) {
             throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�");
         }
+
+        //鐢熸垚瀛愬崟涓昏〃
+        Order1 order1 = new Order1(
+                String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
+                fbillno,    // 璁㈠崟缂栧彿
+                DateUtils.convert(exdInstockSource.get(0).getFdate()),    // 鍗曟嵁鏃ユ湡
+                docType.getDocId(),    // 鍗曟嵁绫诲瀷
+                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,    // 鐘舵��
+                9527L,    // 娣诲姞浜哄憳
+                now,    // 娣诲姞鏃堕棿
+                9527L,    // 淇敼浜哄憳
+                now,    // 淇敼鏃堕棿
+                null    // 澶囨敞
+        );
+        if (!order1Service.insert(order1)) {
+            throw new CoolException("鐢熸垚瀛愬崟鎹富妗eけ璐ワ紝璇疯仈绯荤鐞嗗憳");
+        }
+
         // 鍗曟嵁鏄庣粏妗�
         List<DetlDto> list = new ArrayList<>();
         for (ExdInstockSource detail : exdInstockSource) {
             DetlDto dto = new DetlDto(detail.getFitemid() + "", detail.getFbatchno(), detail.getFqty());
             dto.setFrob(detail.getFrob());
             dto.setFInterID(detail.getFinterid());
+            dto.setProdInKind(detail.getFdcstockid()+"");
             if (DetlDto.has(list, dto)) {
                 DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
                 assert detlDto != null;
@@ -124,6 +179,9 @@
             OrderDetl orderDetl = new OrderDetl();
             orderDetl.sync(mat);
             orderDetl.setBatch(detlDto.getBatch());
+            if(detlDto.getAnfme() <0) {
+                detlDto.setAnfme(-detlDto.getAnfme());
+            }
             orderDetl.setAnfme(detlDto.getAnfme());
             orderDetl.setOrderId(order.getId());
             orderDetl.setOrderNo(order.getOrderNo());
@@ -135,13 +193,53 @@
             orderDetl.setQty(0.0D);
             orderDetl.setDeadWarn(detlDto.getFInterID());
             orderDetl.setBeBatch(detlDto.getFrob());
+            ExdStock id = exdStockService.selectOne(new EntityWrapper<ExdStock>().eq("ID", detlDto.getProdInKind()));
+            orderDetl.setBrand(id.getFname());//浠撳簱
             if (!orderDetlService.insert(orderDetl)) {
+                throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+            }
+
+            //鐢熸垚瀛愬崟鏄庣粏
+            OrderDetl1 orderDetl1 = new OrderDetl1();
+            orderDetl1.sync(orderDetl);
+            orderDetl1.setOrderId(order1.getId());
+            if (!orderDetl1Service.insert(orderDetl1)) {
                 throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
             }
         }
         return SUCCESS;
     }
 
+    @Transactional
+    public ReturnT<String> deletereadInOrder(ExdInstockSource exdInstockSource) {
+        String fbillno = exdInstockSource.getFbillno();
+        Order order = orderService.selectByNo(fbillno);
+        if (!Cools.isEmpty(order)) {
+            if (order.getSettle() > 1L) {
+                throw new CoolException(fbillno + "鍗曟嵁姝e湪浣滀笟涓紝鏃犳硶鍒犻櫎");
+            }
+            Mat mat = matService.selectBySku(exdInstockSource.getFitemid() + "");
+            boolean delete = orderDetlService.delete(new EntityWrapper<OrderDetl>()
+                    .eq("order_no", order.getOrderNo())
+                    .eq("matnr", mat.getMatnr())
+                    .eq("batch", exdInstockSource.getFbatchno())
+                    .eq("anfme", exdInstockSource.getFqty()));
+            if (delete) {
+                log.info("鍒犻櫎璁㈠崟鏄庣粏鎴愬姛锛岃鍗曞彿={},鐗╂枡鍙�={}锛屾壒鍙�={}锛屾暟閲�={}鎴愬姛",order.getOrderNo(),exdInstockSource.getFitemid(),exdInstockSource.getFbatchno(),exdInstockSource.getFqty());
+            }else {
+                log.error("鍒犻櫎璁㈠崟鏄庣粏澶辫触锛岃鍗曞彿={},鐗╂枡鍙�={}锛屾壒鍙�={}锛屾暟閲�={}",order.getOrderNo(),exdInstockSource.getFitemid(),exdInstockSource.getFbatchno(),exdInstockSource.getFqty());
+                throw new CoolException(fbillno + "鍗曟嵁鏄庣粏鍒犻櫎澶辫触");
+            }
+            int orderNo = orderDetlService.selectCount(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()));
+            if(orderNo==0){
+                orderService.remove(order.getId());
+                log.info("鍒犻櫎璁㈠崟涓昏〃鎴愬姛锛岃鍗�={}",order.getOrderNo());
+            }
+        }else if(Cools.isEmpty(order)){
+            throw new CoolException(fbillno + "鍗曟嵁涓哄湪WMS涓壘鍒�");
+        }
+        return SUCCESS;
+    }
 
     @Transactional
     public ReturnT<String> readOutOrder(List<ExdOutstockSource> exdOutstockSource) {
@@ -151,9 +249,16 @@
         // 濡傛灉鍗曟嵁涓嶅瓨鍦ㄥ垯娣诲姞锛涘鏋滃崟鎹瓨鍦紝浣滀笟涓棤娉曚慨鏀癸紝鍙嶄箣鍒欎慨鏀瑰崟鎹�
         if (!Cools.isEmpty(order)) {
             if (order.getSettle() > 1L) {
-                throw new CoolException(fbillno + "姝e湪鍑哄簱锛屾棤娉曚慨鏀瑰崟鎹�");
+                throw new CoolException(fbillno + "鍗曟嵁姝e湪浣滀笟涓紝璇峰嬁閲嶅鎻愪氦");
             }
             orderService.remove(order.getId());
+        }
+        if(ftrantype == 41){
+            ftrantype = 42;
+        }else if(ftrantype == 24){
+            ftrantype = 25;
+        }else if(ftrantype == 1){
+            ftrantype = 3;
         }
         DocType docType = docTypeService.selectById(ftrantype);
         Date now = new Date();
@@ -201,10 +306,12 @@
         List<DetlDto> list = new ArrayList<>();
         for (ExdOutstockSource detail : exdOutstockSource) {
             DetlDto dto = new DetlDto(detail.getFitemid()+"", detail.getFbatchno(), detail.getFqty());
+            dto.setFInterID(detail.getFinterid());
             if (DetlDto.has(list, dto)) {
                 DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
                 assert detlDto != null;
                 detlDto.setAnfme(detlDto.getAnfme() + detail.getFqty());
+
             } else {
                 list.add(dto);
             }
@@ -217,6 +324,9 @@
             OrderDetl orderDetl = new OrderDetl();
             orderDetl.sync(mat);
             orderDetl.setBatch(detlDto.getBatch());
+            if(detlDto.getAnfme() <0) {
+                detlDto.setAnfme(-detlDto.getAnfme());
+            }
             orderDetl.setAnfme(detlDto.getAnfme());
             orderDetl.setOrderId(order.getId());
             orderDetl.setOrderNo(order.getOrderNo());
@@ -224,6 +334,7 @@
             orderDetl.setCreateTime(now);
             orderDetl.setUpdateBy(9527L);
             orderDetl.setUpdateTime(now);
+            orderDetl.setDeadWarn(detlDto.getFInterID());//璁㈠崟鍐呯爜
             orderDetl.setStatus(1);
             orderDetl.setQty(0.0D);
             if (!orderDetlService.insert(orderDetl)) {
@@ -233,4 +344,37 @@
         return SUCCESS;
     }
 
+    @Transactional
+    public ReturnT<String> deletereadOutOrder(ExdOutstockSource exdInstockSource) {
+        String fbillno = exdInstockSource.getFbillno();
+        Order order = orderService.selectByNo(fbillno);
+        if (!Cools.isEmpty(order)) {
+            if (order.getSettle() > 1L) {
+                throw new CoolException(fbillno + "鍗曟嵁姝e湪浣滀笟涓紝鏃犳硶鍒犻櫎");
+            }
+            Mat mat = matService.selectBySku(exdInstockSource.getFitemid() + "");
+            boolean delete = orderDetlService.delete(new EntityWrapper<OrderDetl>()
+                    .eq("order_no", order.getOrderNo())
+                    .eq("matnr", mat.getMatnr())
+                    .eq("batch", exdInstockSource.getFbatchno())
+                    .eq("anfme", exdInstockSource.getFqty()));
+            if (delete) {
+                log.info("鍒犻櫎璁㈠崟鏄庣粏鎴愬姛锛岃鍗曞彿={},鐗╂枡鍙�={}锛屾壒鍙�={}锛屾暟閲�={}鎴愬姛",order.getOrderNo(),exdInstockSource.getFitemid(),exdInstockSource.getFbatchno(),exdInstockSource.getFqty());
+            }else {
+                log.error("鍒犻櫎璁㈠崟鏄庣粏澶辫触锛岃鍗曞彿={},鐗╂枡鍙�={}锛屾壒鍙�={}锛屾暟閲�={}",order.getOrderNo(),exdInstockSource.getFitemid(),exdInstockSource.getFbatchno(),exdInstockSource.getFqty());
+                throw new CoolException(fbillno + "鍗曟嵁鏄庣粏鍒犻櫎澶辫触");
+            }
+            int orderNo = orderDetlService.selectCount(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()));
+            if(orderNo==0){
+                orderService.remove(order.getId());
+                log.info("鍒犻櫎璁㈠崟涓昏〃鎴愬姛锛岃鍗�={}",order.getOrderNo());
+            }
+
+
+        }else if (Cools.isEmpty(order)) {
+            throw new CoolException(fbillno + "鍗曟嵁鏈湪WMS涓壘鍒�");
+        }
+        return SUCCESS;
+    }
+
 }

--
Gitblit v1.9.1