From 48db618606f0f0cafd1ce795f8bf26a0bcec2581 Mon Sep 17 00:00:00 2001
From: zhangchao <zc857179121@qq.com>
Date: 星期六, 20 七月 2024 07:56:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/xgmFlasrs' into xgmFlasrs

---
 src/main/java/com/zy/third/lk/task/LKInTBScheduler.java |  240 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 240 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/third/lk/task/LKInTBScheduler.java b/src/main/java/com/zy/third/lk/task/LKInTBScheduler.java
new file mode 100644
index 0000000..a7de595
--- /dev/null
+++ b/src/main/java/com/zy/third/lk/task/LKInTBScheduler.java
@@ -0,0 +1,240 @@
+package com.zy.third.lk.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+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.common.service.erp.ErpSqlServer;
+import com.zy.third.lk.entity.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍏ュ簱鏇存柊瀹屾垚鍥炴姤
+ */
+@Slf4j
+@Component
+public class LKInTBScheduler {
+
+    @Autowired
+    private MatService matService;
+
+    @Autowired
+    private OrderService orderService;
+
+    @Autowired
+    private OrderDetlService orderDetlService;
+
+    @Autowired
+    private DocTypeService docTypeService;
+
+    @Autowired
+    private ErpSqlServer erpSqlServer;
+
+    @Transactional(rollbackFor = Throwable.class)
+    @Scheduled(cron = "${erp.refreshtime}")
+    public void pakinOrderComplete() {
+        log.info("寮�濮嬪叆搴撴洿鏂板畬鎴愬洖鎶�");
+        // 鎵�鏈夎鍗�
+        List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
+        DocType docType;
+        for (Order order : orders) {
+            System.out.println(order);
+            docType = docTypeService.selectById(order.getDocType());
+            if (docType == null) {
+                log.error("璇ヨ鍗曠被鍨嬩笉瀛樺湪:" + order.getDocType());
+                throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+            }
+            List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
+            if (docType.getPakin() == 1) {
+                //鍏ュ簱鍗�
+                for (OrderDetl orderDetl : orderDetls) {
+                    insertInDet(orderDetl);
+                }
+                insertInHed(order);
+            } else {
+                //鍑哄簱鍗�
+                for (OrderDetl orderDetl : orderDetls) {
+                    insertOutDet(orderDetl);
+                }
+                insertOutHed(order);
+            }
+            // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
+            if (!orderService.updateSettle(order.getId(), 6L, null)) {
+                throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+            }
+        }
+    }
+
+
+    /**
+     * 灏嗗叆搴撳崟鐨勪俊鎭彃鍏ュ埌ERP琛�
+     *
+     * @param orderDetl
+     * @return
+     */
+    @Transactional(rollbackFor = Throwable.class)
+    public boolean insertInDet(OrderDetl orderDetl) {
+        String sqlInDetTb = "select * from lk_InDetTB where BillNo='" + orderDetl.getOrderNo() + "' and " +
+                " ItemId='" + orderDetl.getMatnr() + "' and ItemBatch='" + orderDetl.getBatch() + "' and proType='" + orderDetl.getSpecs() + "'";
+        List<InDetTB> inDets = erpSqlServer.select(sqlInDetTb, InDetTB.class);
+        String sqlInDetTbBak = "select * from lk_InDetTB_Bak where BillNo='" + orderDetl.getOrderNo() + "' and " +
+                " ItemId='" + orderDetl.getMatnr() + "' and ItemBatch='" + orderDetl.getBatch() + "' and proType='" + orderDetl.getSpecs() + "'";
+        List<InDetTBBak> inDetBaks = erpSqlServer.select(sqlInDetTbBak, InDetTBBak.class);
+        if (!inDets.isEmpty() || !inDetBaks.isEmpty()) {
+            log.error("璇ュ崟鍙锋枡鍙蜂腑闂磋〃琛ㄨ韩宸插瓨鍦�:" + orderDetl.getOrderNo() + "==>>" + orderDetl.getOrderNo());
+            return true;
+        }
+        Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
+        Map<String, Object> content = getMap(orderDetl);
+        int insert = erpSqlServer.insert(InDetTB.class, content);
+
+        if (insert == 1) {
+            log.info("鍏ュ簱鍗曡〃韬洖浼犳垚鍔�:{}", content);
+            return true;
+        } else {
+            log.error("鍏ュ簱鍥炰紶澶辫触,瀹炰綋绫绘墦鍗�:{}", content);
+            return false;
+        }
+
+    }
+
+    /**
+     * 灏嗗叆搴撳崟鐨勮鎯呬俊鎭彃鍏ュ埌ERP琛�
+     *
+     * @param order
+     * @return
+     */
+    @Transactional(rollbackFor = Throwable.class)
+    public boolean insertInHed(Order order) {
+        String sqlInHedTb = "select * from lk_InHedTB where LKName='涓壃浜屾湡' and BillNo='" + order.getOrderNo() + "'";
+        List<InHedTB> outHeds = erpSqlServer.select(sqlInHedTb, InHedTB.class);
+        String sqlInHedTbBak = "select * from lk_InHedTB_Bak where LKName='涓壃浜屾湡' and BillNo='" + order.getOrderNo() + "'";
+        List<InHedTBBak> inHedBaks = erpSqlServer.select(sqlInHedTbBak, InHedTBBak.class);
+        if (!outHeds.isEmpty() || !inHedBaks.isEmpty()) {
+            log.error("璇ュ崟鍙锋枡鍙蜂腑闂磋〃琛ㄥご宸插瓨鍦�:" + order.getOrderNo());
+            return true;
+        }
+        HashMap<String, Object> content = new HashMap<>();
+        content.put("BillNo", "'" + order.getOrderNo() + "'");
+        content.put("IoKindID", "'" + order.getDocType() + "'");
+        content.put("ObjectId", "'" + order.getCstmr() + "'");
+        content.put("ObjectName", "'" + order.getCstmrName() + "'");
+        content.put("Remark", "'" + order.getMemo() + "'");
+        content.put("LKName", "'涓壃浜屾湡'");
+        int insert = erpSqlServer.insert(InHedTB.class, content);
+        String sql = "UPDATE lk_InHedTB SET bPass = 1, LKName='涓壃浜屾湡' WHERE BillNo = '" + order.getOrderNo() + "'";
+        int update = erpSqlServer.update(sql);
+        if (update == 1) {
+            log.info("鍏ュ簱鍗曡〃澶村洖浼犳垚鍔�:" + content);
+            return true;
+        } else {
+            log.error("鍏ュ簱鍗曡〃澶村洖浼犲け璐�:" + content);
+            return false;
+        }
+    }
+
+    /**
+     * 灏嗗叆搴撳崟鐨勪俊鎭彃鍏ュ埌ERP琛�
+     *
+     * @param orderDetl
+     * @return
+     */
+    @Transactional(rollbackFor = Throwable.class)
+    public boolean insertOutDet(OrderDetl orderDetl) {
+        String sqlInDetTb = "select * from lk_OutDetTB where BillNo='" + orderDetl.getOrderNo() + "' and " +
+                " ItemId='" + orderDetl.getMatnr() + "' and ItemBatch='" + orderDetl.getBatch() + "' and proType='" + orderDetl.getSpecs() + "'";
+        List<OutDetTB> inDets = erpSqlServer.select(sqlInDetTb, OutDetTB.class);
+        String sqlInDetTbBak = "select * from lk_OutDetTB_Bak where BillNo='" + orderDetl.getOrderNo() + "' and " +
+                " ItemId='" + orderDetl.getMatnr() + "' and ItemBatch='" + orderDetl.getBatch() + "' and proType='" + orderDetl.getSpecs() + "'";
+        List<OutDetTBBak> inDetBaks = erpSqlServer.select(sqlInDetTbBak, OutDetTBBak.class);
+        if (!inDets.isEmpty() || !inDetBaks.isEmpty()) {
+            log.error("璇ュ崟鍙锋枡鍙蜂腑闂磋〃琛ㄨ韩宸插瓨鍦�:" + orderDetl.getOrderNo() + "==>>" + orderDetl.getOrderNo());
+            return true;
+        }
+        Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
+        Map<String, Object> content = getMap(orderDetl);
+        int insert = erpSqlServer.insert(InDetTB.class, content);
+
+        if (insert == 1) {
+            log.info("鍏ュ簱鍗曡〃韬洖浼犳垚鍔�:" + content.toString());
+            return true;
+        } else {
+            log.error("鍏ュ簱鍥炰紶澶辫触,瀹炰綋绫绘墦鍗�:" + content.toString());
+            return false;
+        }
+
+    }
+
+    /**
+     * 灏嗗叆搴撳崟鐨勮鎯呬俊鎭彃鍏ュ埌ERP琛�
+     *
+     * @param order
+     * @return
+     */
+    @Transactional(rollbackFor = Throwable.class)
+    public boolean insertOutHed(Order order) {
+        String sqlInHedTb = "select * from lk_OutHedTB where LKName='涓壃浜屾湡' and BillNo='" + order.getOrderNo() + "'";
+        List<OutHedTB> outHeds = erpSqlServer.select(sqlInHedTb, OutHedTB.class);
+        String sqlInHedTbBak = "select * from lk_OutHedTB_Bak where LKName='涓壃浜屾湡' and BillNo='" + order.getOrderNo() + "'";
+        List<OutHedTBBak> inHedBaks = erpSqlServer.select(sqlInHedTbBak, OutHedTBBak.class);
+        if (!outHeds.isEmpty() || !inHedBaks.isEmpty()) {
+            log.error("璇ュ崟鍙锋枡鍙蜂腑闂磋〃琛ㄥご宸插瓨鍦�:" + order.getOrderNo());
+            return true;
+        }
+        HashMap<String, Object> content = new HashMap<>();
+        content.put("BillNo", "'" + order.getOrderNo() + "'");
+        content.put("IoKindID", "'" + order.getDocType() + "'");
+        content.put("ObjectId", "'" + order.getCstmr() + "'");
+        content.put("ObjectName", "'" + order.getCstmrName() + "'");
+        content.put("Remark", "'" + order.getMemo() + "'");
+        content.put("LKName", "'涓壃浜屾湡'");
+        int insert = erpSqlServer.insert(OutHedTB.class, content);
+        String sql = "UPDATE lk_OutHedTB SET bPass = 1, LKName='涓壃浜屾湡' WHERE BillNo = '" + order.getOrderNo() + "'";
+        int update = erpSqlServer.update(sql);
+        if (update == 1) {
+            log.info("鍏ュ簱鍗曡〃澶村洖浼犳垚鍔�:" + content);
+            return true;
+        } else {
+            log.error("鍏ュ簱鍗曡〃澶村洖浼犲け璐�:" + content);
+            return false;
+        }
+    }
+
+    private Map<String, Object> getMap(OrderDetl orderDetl) {
+        Map<String, Object> content = new HashMap<>();
+        content.put("BillNo", "'" + orderDetl.getOrderNo() + "'");
+        content.put("iNO", "'" + orderDetl.getINO() + "'");
+        content.put("detId", orderDetl.getThreeCode());
+        content.put("ItemId", "'" + orderDetl.getThreeCode() + "'");
+        content.put("ItemCode", "'" + orderDetl.getMatnr() + "'");
+        content.put("ItemBatch", "'" + orderDetl.getBatch() + "'");
+        content.put("proType", "'" + orderDetl.getProType() + "'");
+        content.put("remark", "'" + orderDetl.getMemo() + "'");
+        content.put("OrderNo", "'" + orderDetl.getOutOrderNo() + "'");
+        content.put("MainNum", orderDetl.getQty());
+        content.put("WareId", "'" + orderDetl.getWareId() + "'");
+        content.put("WareName", "'" + orderDetl.getWareName() + "'");
+        content.put("Packing", "'" + orderDetl.getPacking() + "'");
+        content.put("LuHao", "'" + orderDetl.getLuHao() + "'");
+        content.put("sPgNO", "'" + orderDetl.getSPgNO() + "'");
+        content.put("temp1", "'" + orderDetl.getTemp1() + "'");
+        content.put("temp2", "'" + orderDetl.getTemp2() + "'");
+        content.put("temp3", "'" + orderDetl.getTemp3() + "'");
+        content.put("LKName", "'涓壃浜屾湡'");
+        return content;
+    }
+}

--
Gitblit v1.9.1