From 537a57d5e81d4c6da8a0eca1690f61644a1dc462 Mon Sep 17 00:00:00 2001
From: YYC <1833023622@qq.com>
Date: 星期四, 12 十月 2023 22:32:43 +0800
Subject: [PATCH] 出入库快速结束,异常终止

---
 igds-inout/src/main/java/com/ld/igds/inout/service/impl/InoutServiceImpl.java |  222 +++++++++++++++++++++----------------------------------
 1 files changed, 85 insertions(+), 137 deletions(-)

diff --git a/igds-inout/src/main/java/com/ld/igds/inout/service/impl/InoutServiceImpl.java b/igds-inout/src/main/java/com/ld/igds/inout/service/impl/InoutServiceImpl.java
index 66ea5e9..2ece18d 100644
--- a/igds-inout/src/main/java/com/ld/igds/inout/service/impl/InoutServiceImpl.java
+++ b/igds-inout/src/main/java/com/ld/igds/inout/service/impl/InoutServiceImpl.java
@@ -1,29 +1,23 @@
 package com.ld.igds.inout.service.impl;
 
 import com.bstek.dorado.data.entity.EntityUtils;
-import com.ld.igds.check.dto.CheckItemData;
-import com.ld.igds.common.CoreCommonService;
-import com.ld.igds.constant.BizType;
 import com.ld.igds.constant.Constant;
 import com.ld.igds.constant.RedisConst;
 import com.ld.igds.data.CommonData;
 import com.ld.igds.data.Page;
 import com.ld.igds.inout.InoutConstant;
-import com.ld.igds.inout.dto.InoutData;
-import com.ld.igds.inout.dto.InoutParam;
 import com.ld.igds.inout.dto.InoutCheckData;
 import com.ld.igds.inout.dto.InoutCheckParam;
+import com.ld.igds.inout.dto.InoutData;
+import com.ld.igds.inout.dto.InoutParam;
 import com.ld.igds.inout.mapper.InoutCheckMapper;
 import com.ld.igds.inout.mapper.InoutRecordMapper;
 import com.ld.igds.inout.service.InoutService;
-import com.ld.igds.io.constant.OrderRespEnum;
-import com.ld.igds.models.Depot;
+import com.ld.igds.models.InoutLossOver;
 import com.ld.igds.models.InoutPrice;
 import com.ld.igds.util.ContextUtil;
 import com.ld.igds.util.DateUtil;
 import com.ld.igds.util.RedisUtil;
-import com.ld.igds.websocket.WebSocketPacket;
-import com.ld.igds.websocket.WebSocketServer;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.DateFormatUtils;
@@ -32,9 +26,6 @@
 
 import javax.annotation.Resource;
 import java.util.*;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.FutureTask;
 
 @Slf4j
 @Component
@@ -46,8 +37,6 @@
     private InoutCheckMapper inoutCheckMapper;
     @Resource
     private RedisUtil redisUtil;
-    @Resource
-    private CoreCommonService commonService;
 
     @Override
     public InoutData inoutProgressQuery(InoutParam param) throws Exception {
@@ -60,8 +49,6 @@
         if (null != result) {
             return result;
         }
-
-
         List<InoutData> list = inoutMapper.inoutProgressQuery(param);
         if (null == list || list.size() == 0)
             return null;
@@ -103,22 +90,24 @@
 
         inoutMapper.deleteData(param);
 
-        delInoutFromCache(param.getDeptId(), param.getType(), param.getId());
+        delFromCache(param.getDeptId(), param.getType(), param.getId());
 
         return null;
     }
 
     @Override
-    public String inoutStop(InoutParam param) {
+    public String inoutStop(InoutParam param) throws Exception {
         if (StringUtils.isEmpty(param.getCompanyId())) {
-            param.setCompanyId(ContextUtil.getCompanyId());
+            param.setCompanyId(ContextUtil.getDefaultCompanyId());
         }
 
-        // 缂撳瓨涓垹闄�
-        delInoutFromCache(param.getDeptId(), param.getType(), param.getId());
 
         param.setProgress(InoutConstant.PROGRESS_RECORD);
-        param.setRecordStatus(InoutConstant.RECORD_STATUS_ERROR);
+        param.setRecordStatus(InoutConstant.RECORD_STATUS_DEL);
+
+
+        // 缂撳瓨涓垹闄�
+        delFromCache(param.getDeptId(), param.getType(), param.getId());
 
         inoutMapper.inoutStop(param);
 
@@ -156,9 +145,18 @@
                 data.setUserName("");
             }
 
-            inoutMapper.insertData(data);
+            InoutData newData;
+            if (EntityUtils.isEntity(data)) {
+                newData = new InoutData();
+                BeanUtils.copyProperties(data, newData, new String[]{"checkItems", "files"});
+            } else {
+                newData = data;
+            }
 
-            updateInoutCache(data);
+            inoutMapper.insertData(newData);
+
+
+            updateInoutCache(newData);
 
         } catch (Exception e) {
             log.error("------------鍑哄叆搴撴墽琛屼繚瀛樺嚭閿�---{}", e);
@@ -208,10 +206,12 @@
         }
 
         inoutMapper.updateDataByHandle(newData);
+        InoutParam param = new InoutParam();
+        param.setId(newData.getId());
 
         //鏇存柊缂撳瓨
-        updateInoutCache(newData);
-        
+        updateInoutCache(inoutMapper.inoutQueryById(param));
+
         return null;
     }
 
@@ -240,6 +240,10 @@
         // 璁剧疆韬唤璇佸彿鐨勬ā绯婃煡璇㈡潯浠�
         if (null != param.getUserId()) {
             param.setUserId("%" + param.getUserId() + "%");
+        }
+
+        if (null != param.getRecordStatus() && InoutConstant.RECORD_STATUS_NORMAL.equals(param.getRecordStatus())) {
+            param.setRecordStatus(null);
         }
 
         List<InoutData> records = inoutMapper.pageRecordData(page, param);
@@ -284,12 +288,15 @@
     @Override
     public String toComplete(InoutParam param) throws Exception {
 
+        param.setUpdateTime(new Date());
+
         if (null == param.getCompanyId()) {
-            param.setCompanyId(ContextUtil.getCompanyId());
+            param.setCompanyId(ContextUtil.getDefaultCompanyId());
         }
 
         // 娓呴櫎缂撳瓨
-        this.delInoutFromCache(param.getDeptId(), param.getType(), param.getId());
+//        this.delFromCache(param.getDeptId(), param.getType(), param.getId());
+
 
         inoutMapper.toComplete(param);
 
@@ -299,7 +306,7 @@
     @Override
     public String quickComplete(InoutData data) throws Exception {
         if (null == data.getCompanyId()) {
-            data.setCompanyId(ContextUtil.getCompanyId());
+            data.setCompanyId(ContextUtil.getDefaultCompanyId());
         }
         if (null == data.getCompleteTime()) {
             data.setCompleteTime(new Date());
@@ -310,7 +317,9 @@
         if (null == data.getEmptyWeightTime()) {
             data.setEmptyWeightTime(new Date());
         }
-
+        if (null == data.getFullWeightTime()) {
+            data.setFullWeightTime(new Date());
+        }
 
         //璋冩暣鏃堕棿宸�
         if (InoutConstant.TYPE_IN.equals(data.getType())) {
@@ -339,15 +348,10 @@
         // 璁剧疆娴佺▼缁撴潫
         data.setProgress(InoutConstant.PROGRESS_RECORD);
 
-
-        if (null == data.getFoodType()) {
-            // 鏍规嵁浠撳簱淇℃伅鑾峰彇缂撳瓨
-            Depot depot = commonService.getCacheDepot(data.getCompanyId(), data.getDepotId());
-            data.setFoodType(depot.getFoodType());
-        }
-
+        //鎵ц鏇存柊
         inoutMapper.updateData(data);
 
+        //鏇存柊缂撳瓨
         updateInoutCache(data);
 
         return null;
@@ -361,19 +365,17 @@
 
         if (InoutConstant.PROGRESS_RECORD.equals(data.getProgress())) {
 
-            delInoutFromCache(data.getDeptId(), data.getType(), data.getId());
+            delFromCache(data.getDeptId(), data.getType(), data.getId());
 
             setCompleteInoutCache(data.getDeptId(), data);
 
         } else {
             setInoutCache(data.getDeptId(), data);
         }
-        //鎺ㄩ�佸ぇ灞�
-        notifyToScreen(data.getCompanyId(), data.getDeptId(), data.getProgress());
     }
 
 
-    public void delInoutFromCache(String deptId, String type, String id) {
+    public void delFromCache(String deptId, String type, String id) {
         if (StringUtils.isEmpty(deptId)) {
             return;
         }
@@ -450,22 +452,6 @@
     }
 
     @Override
-    public void notifyWeb(InoutData result) {
-        // 濡傛灉褰撳墠涓烘弧杞︾О閲嶆墽琛屾帹閫�
-        if (result.getType().equals(InoutConstant.TYPE_IN) && result.getProgress().equals(InoutConstant.PROGRESS_WEIGHT_FULL)) {
-            WebSocketPacket packet = new WebSocketPacket();
-            packet.setBizType(BizType.SCREEN_CHECK.getCode());
-            packet.setCompanyId(result.getCompanyId());
-            packet.setOrderResp(OrderRespEnum.MSG_SUCCESS.getCode());
-            packet.setData(result);
-            packet.setBizTag(InoutConstant.PROGRESS_WEIGHT_FULL);
-            log.debug("----鍚戝寲楠屽ぇ灞忔帹閫佹弧杞︾О閲嶄俊鎭� ----{}", result.getPlateNum());
-            WebSocketServer.sendByBizTag(packet);
-        }
-
-    }
-
-    @Override
     public Page<InoutData> pageUnCompleteData(InoutParam param) {
 
         if (StringUtils.isEmpty(param.getCompanyId())) {
@@ -498,10 +484,7 @@
     }
 
     @Override
-    public InoutData getLastRecord(String companyId, String depotId) {
-        InoutParam param = new InoutParam();
-        param.setCompanyId(companyId);
-        param.setDepotId(depotId);
+    public InoutData getLastRecord(InoutParam param) {
         return inoutMapper.getLastRecord(param);
     }
 
@@ -509,7 +492,7 @@
     public String addInoutDataByLossOver(InoutData data) {
 
         // 鑾峰彇涓婁竴杞︾殑娴佹按鏁版嵁
-        InoutData inoutData = this.getLastRecord(data.getCompanyId(), data.getDepotId());
+        //    InoutData inoutData = this.getLastRecord(data.getCompanyId(), data.getDepotId());
 
 //        // 璁剧疆娴佹按鐨勫簱瀛�
 //        if (InoutConstant.TYPE_IN.equals(inoutData.getType())) {
@@ -529,22 +512,6 @@
     @Override
     public void delInoutDataByLossOver(InoutParam param) {
         inoutMapper.deleteData(param);
-    }
-
-    @Override
-    public void setCheckCache(InoutData data) {
-
-        String cacheKey = RedisConst.buildKey(data.getCompanyId(), data.getCheckId());
-
-        //鍖栭獙缁撴灉瀛樺叆缂撳瓨3澶�
-        redisUtil.set(cacheKey, data.getCheckItems(), 60 * 60 * 24 * 3);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public List<CheckItemData> getCheckCache(String companyId, String checkId) {
-        String cacheKey = RedisConst.buildKey(companyId, checkId);
-        return (List<CheckItemData>) redisUtil.get(cacheKey);
     }
 
     /**
@@ -650,53 +617,6 @@
     }
 
     /**
-     * 鎺ㄩ�佸埌澶у睆锛屽垽鏂彧鏈夊綋澶у睆鍦ㄧ嚎鏃跺�欐墠澶勭悊褰撳墠閫昏緫锛岄伩鍏嶉〉闈㈠崱椤匡紝璋冪敤瀛愪换鍔″畬鎴愭帹閫�
-     *
-     * @param companyId 缁勭粐缂栧彿
-     * @param deptId    鍒嗗簱缂栧彿
-     * @param progress  娴佽浆鑺傜偣
-     */
-    public void notifyToScreen(String companyId, String deptId, String progress) {
-
-        // 鎺ㄩ�佸埌澶у睆
-        List<InoutData> curList = this.getListInoutCache(deptId);
-
-        List<InoutData> completeList = this.getCompleteListInoutCache(deptId);
-
-
-        if (null == WebSocketServer.contextOnLineMap.get(BizType.SCREEN
-                .getCode())) {
-            WebSocketServer.contextOnLineMap.put(BizType.SCREEN.getCode(),
-                    false);
-        }
-        if (null == WebSocketServer.contextOnLineMap.get(BizType.SCREEN_INOUT
-                .getCode())) {
-            WebSocketServer.contextOnLineMap.put(
-                    BizType.SCREEN_INOUT.getCode(), false);
-        }
-        if (null == WebSocketServer.contextOnLineMap.get(BizType.SCREEN_CHECK
-                .getCode())) {
-            WebSocketServer.contextOnLineMap.put(
-                    BizType.SCREEN_CHECK.getCode(), false);
-        }
-
-        if (WebSocketServer.contextOnLineMap.get(BizType.SCREEN.getCode())
-                || WebSocketServer.contextOnLineMap.get(BizType.SCREEN_INOUT
-                .getCode())
-                || WebSocketServer.contextOnLineMap.get(BizType.SCREEN_CHECK
-                .getCode())) {
-
-
-            // 鍒涘缓涓�涓瓙浠诲姟杩涜鎺ㄩ�佷俊鎭�
-            FutureTask<String> futureTask = new FutureTask<>(new NotifyScreenTask(curList, completeList, deptId));
-
-            ExecutorService executorService = Executors.newCachedThreadPool();
-            executorService.submit(futureTask);
-            executorService.shutdown();
-        }
-    }
-
-    /**
      * 鍒涘缓鍑哄叆搴搆ey
      *
      * @param deptId
@@ -743,10 +663,11 @@
             data.setCompanyId(ContextUtil.getCompanyId());
         }
         if (StringUtils.isEmpty(data.getDeptId())) {
-            data.setCompanyId(ContextUtil.subDeptId(null));
+            data.setDeptId(ContextUtil.subDeptId(null));
         }
 
-        int num = inoutCheckMapper.updateSampleData(data);
+        inoutCheckMapper.updateSampleData(data);
+
         return null;
     }
 
@@ -776,26 +697,53 @@
     }
 
     @Override
-    public String updateCheckData(InoutCheckData data) {
-        if (StringUtils.isEmpty(data.getCompanyId())) {
-            data.setCompanyId(ContextUtil.getCompanyId());
-        }
-        if (StringUtils.isEmpty(data.getDeptId())) {
-            data.setCompanyId(ContextUtil.subDeptId(null));
-        }
+    public String updateCheckData(InoutData data) {
+        data.setUpdateTime(new Date());
 
-        int num = inoutCheckMapper.updateCheckData(data);
+        inoutCheckMapper.updateCheckData(data);
+
+        //鏇存柊缂撳瓨
+        updateInoutCache(data);
+
         return null;
     }
 
     @Override
     public List<InoutPrice> getPrice(InoutCheckParam param) {
-        if(null == param.getStart()){
+        if (null == param.getStart()) {
             param.setStart(new Date());
         }
-        if(null == param.getEnd()){
+        if (null == param.getEnd()) {
             param.setEnd(new Date());
         }
         return inoutCheckMapper.getPrice(param);
     }
+
+    @Override
+    public InoutCheckData inoutDataByCheckId(InoutCheckParam param) throws Exception {
+        List<InoutCheckData> list = inoutCheckMapper.inoutDataByCheckId(param);
+        if (null == list || list.size() == 0)
+            return null;
+        if (list.size() == 1) {
+            return list.get(0);
+        } else {
+            throw new Exception("褰撳墠鏉′欢涓嬪瓨鍦ㄥ涓弧瓒虫潯浠剁殑鏁版嵁锛岃鏍告煡锛侊紒");
+        }
+    }
+
+    @Override
+    public List<InoutLossOver> listLossOver(InoutParam param) {
+        if (StringUtils.isEmpty(param.getCompanyId())) {
+            param.setCompanyId(ContextUtil.getCompanyId());
+        }
+        List<InoutLossOver> list = inoutMapper.listLossOver(param);
+
+        return list;
+    }
+
+    @Override
+    public double sumLossOverWeight(InoutParam param) {
+        CommonData result = inoutMapper.sumLossOverWeight(param);
+        return result.getNumValue1();
+    }
 }

--
Gitblit v1.9.3