From 26633e17d9e9a612e4744405d214cf513d13bffd Mon Sep 17 00:00:00 2001
From: guoyuji <guoyujie@ng.com>
Date: 星期四, 26 九月 2024 13:56:34 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override

---
 north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java |  335 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 280 insertions(+), 55 deletions(-)

diff --git a/north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java b/north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
index 0383287..3d4c4e8 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
@@ -1,26 +1,34 @@
 package com.example.erp.service.mm;
 
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.example.erp.entity.mm.*;
+import com.example.erp.entity.pp.FlowCard;
+import com.example.erp.entity.pp.OptimizeUse;
 import com.example.erp.entity.sd.Delivery;
 import com.example.erp.entity.sd.DeliveryDetail;
 import com.example.erp.entity.sd.OrderDetail;
+import com.example.erp.entity.userInfo.Log;
 import com.example.erp.entity.userInfo.SysError;
 import com.example.erp.mapper.mm.BasicWarehouseTypeMapper;
 import com.example.erp.mapper.mm.MaterialInventoryMapper;
 import com.example.erp.mapper.mm.MaterialStoreMapper;
+import com.example.erp.service.userInfo.LogService;
 import com.example.erp.service.userInfo.SysErrorService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import java.util.List;
+import java.util.ArrayList;
 
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 @DS("mm")
@@ -34,9 +42,11 @@
     BasicWarehouseTypeMapper basicWarehouseTypeMapper;
     @Autowired
     SysErrorService sysErrorService;
+    @Autowired
+    LogService logService;
 
-    public Boolean saveMaterialOutbound(Map<String,Object> object) {
-        boolean saveState = true;
+    public String saveMaterialOutbound(Map<String,Object> object) {
+        String saveState = "true";
         //璁剧疆鍥炴粴鐐�
         Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
         String materialOutboundId = "";
@@ -44,6 +54,8 @@
         if (object.get("materialOutboundId") != null) {
             materialOutboundId = object.get("materialOutboundId").toString();
         }
+        Log log = new Log();
+        log.setContent(object.toString());
         try {
             MaterialOutbound materialOutbound = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), MaterialOutbound.class);
             List<MaterialOutboundDetail> materialOutboundDetailList = JSONArray.parseArray(JSONObject.toJSONString(object.get("materialOutboundDetail")), MaterialOutboundDetail.class);
@@ -55,43 +67,69 @@
                 if (!materialOutboundDetailLists.isEmpty()) {
                     for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailLists) {
                         //杩樺師鐗╂枡搴撳瓨鏁�
-                        materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
+                        materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity());
+                        /*if(materialOutboundDetail.getUseId()!=null){
+                            //杩樺師浼樺寲宸ョ▼搴撳瓨鏁�
+                            materialInventoryMapper.updateMaterialInventoryAvailableOptInt(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity());
+                        }else{
+                            //杩樺師鐗╂枡搴撳瓨鏁�
+                            materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
+                        }*/
+
                     }
                 }
                 //鍒犻櫎鏉愭枡鍑哄簱鏄庣粏鐨勬暟鎹�
                 materialInventoryMapper.deleteMaterialOutboundDetail(materialOutboundId);
+                materialInventoryMapper.updateMaterialOutbound(materialOutbound, materialOutboundId);
                 oddNumber = materialOutboundId;
+                log.setFunction("saveMaterialOutbound淇敼:"+oddNumber);
             } else {
                 //鑾峰彇鍗曞彿
                 oddNumber = orderNumberSetting("鍑哄簱");
                 //鏂板鏉愭枡鍑哄簱琛ㄦ暟鎹�
                 materialInventoryMapper.insertMaterialOutbound(materialOutbound, oddNumber);
+                log.setFunction("saveMaterialOutbound鏂板:"+oddNumber);
             }
 
             //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
 
             if (!materialOutboundDetailList.isEmpty()) {
                 for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailList) {
+                    MaterialInventory materialInventory = materialInventoryMapper.getMaterialInventoryById(materialOutboundDetail.getId());
+                    if(materialInventory.getAvailableQuantity()>=materialOutboundDetail.getOutboundQuantity()){
+                        Integer materialOutboundDetailMaximum = materialInventoryMapper.getMaterialOutboundDetailMaximum(oddNumber);
+                        //鏂板鏉愭枡鍑哄簱鏄庣粏鏁版嵁
+                        materialInventoryMapper.insertMaterialOutboundDetail(materialOutboundDetail, oddNumber, materialOutboundDetailMaximum + 1);
+                        //淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲�
+                        materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
+                    /*if(materialOutboundDetail.getUseId()!=null){
+                        //淇敼浼樺寲宸ョ▼琛ㄥ嚭搴撴暟閲�
+                        materialInventoryMapper.updateMaterialInventoryAvailableOptOut(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity());
+                    }else{
+                        //淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲�
+                        materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
+                    }*/
+                    }else{
+                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+                        return "false1";
+                    }
 
-                    Integer materialOutboundDetailMaximum = materialInventoryMapper.getMaterialOutboundDetailMaximum(oddNumber);
-                    //鏂板鏉愭枡鍑哄簱鏄庣粏鏁版嵁
-                    materialInventoryMapper.insertMaterialOutboundDetail(materialOutboundDetail, oddNumber, materialOutboundDetailMaximum + 1);
-                    //淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲�
-                    System.out.println(materialOutboundDetail.getInventoryId());
-                    materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
+
+
 
                 }
 
             }
+            logService.saveLog(log);
 
         } catch (Exception e) {
             TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
             //灏嗗紓甯镐紶鍏ユ暟鎹簱
             SysError sysError = new SysError();
-            sysError.setError(e.toString());
-            sysError.setFunc("saveOrder");
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("saveMaterialOutbound");
             sysErrorService.insert(sysError);
-            saveState = false;
+            saveState = "false1";
 
         }
         return saveState;
@@ -100,28 +138,46 @@
 
     public Boolean saveMaterialInventory(Map<String,Object> object) {
         boolean saveState = true;
-        Double singlePieceArea = 0.0;
-        Double totalArea = 0.0;
-        Long materialCode = 0L;
-        if (object.get("singlePieceArea") != null) {
-            singlePieceArea = Double.valueOf(object.get("singlePieceArea").toString());
-        }
-        if (object.get("totalArea") != null) {
-            totalArea = Double.valueOf(object.get("totalArea").toString());
-        }
-        if (object.get("materialCode") != null) {
-            materialCode = Long.valueOf(object.get("materialCode").toString());
-        }
+        //璁剧疆鍥炴粴鐐�
+        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+        try {
+            Double singlePieceArea = 0.0;
+            Double totalArea = 0.0;
+            Long materialCode = 0L;
+            if (object.get("singlePieceArea") != null) {
+                singlePieceArea = Double.valueOf(object.get("singlePieceArea").toString());
+            }
+            if (object.get("totalArea") != null) {
+                totalArea = Double.valueOf(object.get("totalArea").toString());
+            }
+            if (object.get("materialCode") != null) {
+                materialCode = Long.valueOf(object.get("materialCode").toString());
+            }
+            Log log = new Log();
+            log.setContent(object.toString());
 
-        MaterialInventory materialInventory = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), MaterialInventory.class);
+            MaterialInventory materialInventory = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), MaterialInventory.class);
 
-        //鏌ヨ鐗╂枡鏄惁瀛樺湪
-        Integer MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCount(materialCode,materialInventory.getDateOfManufacture());
+            //鏌ヨ鐗╂枡鏄惁瀛樺湪
+            Integer MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCount(materialCode,materialInventory.getDateOfManufacture());
 
-        if(MaterialInventoryCount>0){
-            materialInventoryMapper.updateMaterialInventory(materialCode,singlePieceArea,totalArea,materialInventory);
-        }else {
-            materialInventoryMapper.insertMaterialInventory(materialCode,singlePieceArea,totalArea,materialInventory);
+            if(MaterialInventoryCount>0){
+                materialInventoryMapper.updateMaterialInventory(materialCode,singlePieceArea,totalArea,materialInventory);
+                log.setFunction("saveMaterialInventory淇敼");
+            }else {
+                materialInventoryMapper.insertMaterialInventory(materialCode,singlePieceArea,totalArea,materialInventory);
+                log.setFunction("saveMaterialInventory鏂板");
+            }
+            logService.saveLog(log);
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+            //灏嗗紓甯镐紶鍏ユ暟鎹簱
+            SysError sysError = new SysError();
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("saveMaterialInventory");
+            sysErrorService.insert(sysError);
+            saveState = false;
+
         }
         return saveState;
 
@@ -149,12 +205,52 @@
         return map;
     }
 
+    public Map<String, Object> getSelectMaterialInventoryEngineeringDate(Integer pageNum, Integer pageSize, List<String> selectDate, MaterialInventory materialInventory) {
+        Integer offset = (pageNum - 1) * pageSize;
+        String endDate = LocalDate.now().toString();
+        String startDate = LocalDate.now().minusDays(15).toString();
+        if(selectDate !=null && selectDate.size()==2){
+            if(!selectDate.get(0).isEmpty()){
+                startDate = selectDate.get(0);
+            }
+            if(!selectDate.get(1).isEmpty()){
+                endDate = selectDate.get(1);
+            }
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", materialInventoryMapper.getSelectMaterialInventoryEngineeringDate(offset, pageSize,startDate, endDate, materialInventory));
+        map.put("total", materialInventoryMapper.getSelectMaterialInventoryEngineeringDatePageTotal(offset, pageSize,startDate, endDate, materialInventory));
+        List<String> list = new ArrayList<>();
+        list.add(startDate);
+        list.add(endDate);
+        map.put("selectDate",list);
+        return map;
+    }
+
     public Map<String, Object> getSelectMaterialInventory(Integer pageNum, Integer pageSize, MaterialInventory materialInventory) {
         Integer offset = (pageNum - 1) * pageSize;
 
         Map<String, Object> map = new HashMap<>();
-        map.put("data", materialInventoryMapper.getSelectMaterialInventory(offset, pageSize, materialInventory));
-        map.put("total", materialInventoryMapper.getSelectMaterialInventoryPageTotal(offset, pageSize, materialInventory));
+        List<Long> ids=new ArrayList<>();;
+        if(materialInventory.getStockId()!=null && !materialInventory.getStockId().isEmpty()){
+            List<String> result = StrUtil.split(materialInventory.getStockId(), '|');
+            ids=result.stream().map(Long::valueOf).collect(Collectors.toList());
+        }
+        map.put("data", materialInventoryMapper.getSelectMaterialInventory(offset, pageSize, materialInventory,ids));
+        map.put("total", materialInventoryMapper.getSelectMaterialInventoryPageTotal(offset, pageSize, materialInventory,ids));
+        return map;
+    }
+
+    public Map<String, Object> getSelectMaterialInventoryEngineering(Integer pageNum, Integer pageSize, OptimizeUse optimizeUse) {
+        Integer offset = (pageNum - 1) * pageSize;
+        Map<String, Object> map = new HashMap<>();
+        List<Long> ids=new ArrayList<>();;
+        if(optimizeUse.getRawStockCode()!=null && !optimizeUse.getRawStockCode().isEmpty()){
+            List<String> result = StrUtil.split(optimizeUse.getRawStockCode(), '|');
+            ids=result.stream().map(Long::valueOf).collect(Collectors.toList());
+        }
+        map.put("data", materialInventoryMapper.getSelectMaterialInventoryEngineering(offset, pageSize, optimizeUse,ids));
+        map.put("total", materialInventoryMapper.getSelectMaterialInventoryEngineeringPageTotal(offset, pageSize, optimizeUse,ids));
         return map;
     }
 
@@ -171,15 +267,18 @@
                 materialInventoryMapper.deleteMaterialOutboundDetail(materialOutboundId);
                 materialInventoryMapper.deleteMaterialOutbound(materialOutboundId);
             }
-
+            Log log = new Log();
+            log.setContent(object.toString());
+            log.setFunction("deleteMaterialOutbound鍒犻櫎:"+materialOutboundId);
+            logService.saveLog(log);
 
 
         } catch (Exception e) {
             TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
             //灏嗗紓甯镐紶鍏ユ暟鎹簱
             SysError sysError = new SysError();
-            sysError.setError(e.toString());
-            sysError.setFunc("saveOrder");
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("deleteMaterialOutbound");
             sysErrorService.insert(sysError);
             saveState = false;
 
@@ -213,12 +312,21 @@
     public Map<String, Object> getSelectMaterialOutbound(Integer pageNum, Integer pageSize, MaterialOutboundDetail materialOutboundDetail) {
         Integer offset = (pageNum - 1) * pageSize;
         Map<String, Object> map = new HashMap<>();
-        System.out.println("鏁版嵁"+materialOutboundDetail);
-        map.put("materialOutbound", materialInventoryMapper.getSelectMaterialOutbound(offset, pageSize, materialOutboundDetail));
-        map.put("data", materialInventoryMapper.getSelectMaterialOutboundDetail(offset, pageSize, materialOutboundDetail));
-        map.put("total", materialInventoryMapper.getSelectMaterialOutboundDetailPageTotal(offset, pageSize, materialOutboundDetail));
+        List<MaterialOutboundDetail> materialOutboundDetailList= materialInventoryMapper.SelectMaterialOutboundDetail(offset, pageSize, materialOutboundDetail);
+        if(materialOutboundDetailList.get(0).getUseId()==null){
+            map.put("materialOutbound", materialInventoryMapper.getSelectMaterialOutbound(offset, pageSize, materialOutboundDetail));
+            map.put("data", materialInventoryMapper.getSelectMaterialOutboundDetail(offset, pageSize, materialOutboundDetail));
+            map.put("total", materialInventoryMapper.getSelectMaterialOutboundDetailPageTotal(offset, pageSize, materialOutboundDetail));
+        }else{
+            map.put("materialOutbound", materialInventoryMapper.getSelectMaterialOutbound(offset, pageSize, materialOutboundDetail));
+            map.put("data", materialInventoryMapper.getSelectMaterialOutboundEngineering(offset, pageSize, materialOutboundDetail));
+            map.put("total", materialInventoryMapper.getSelectMaterialOutboundDetailPageTotal(offset, pageSize, materialOutboundDetail));
+        }
+
         return map;
     }
+
+
 
     public Boolean updateMaterialOutboundToExamine(Map<String,Object> object) {
         boolean saveState = true;
@@ -238,13 +346,21 @@
             if (object.get("reviewed") != null) {
                 reviewed = object.get("reviewed").toString();
             }
+            Log log = new Log();
+            log.setOperator(reviewed);
+            log.setContent(object.toString());
+            log.setFunction("updateMaterialOutboundToExamine锛�"+type);
+            logService.saveLog(log);
 
             if (type==1){
                 List<MaterialOutboundDetail> materialOutboundDetailList = materialInventoryMapper.getIsNotMaterialOutboundDetail(materialOutboundId);
                 if (!materialOutboundDetailList.isEmpty()) {
                     for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailList) {
-                        //淇敼鐗╂枡搴撳瓨鏁伴噺
-                        materialInventoryMapper.updateMaterialInventoryInventoryOut(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity());
+
+                            //淇敼鐗╂枡搴撳瓨鏁伴噺
+                            materialInventoryMapper.updateMaterialInventoryInventoryOut(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity());
+
+
                     }
                 }
                 materialInventoryMapper.updateMaterialOutboundToExamine(materialOutboundId,type,reviewed);
@@ -252,8 +368,11 @@
                 List<MaterialOutboundDetail> materialOutboundDetailList = materialInventoryMapper.getIsNotMaterialOutboundDetail(materialOutboundId);
                 if (!materialOutboundDetailList.isEmpty()) {
                     for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailList) {
-                        //淇敼鐗╂枡搴撳瓨鏁伴噺
-                        materialInventoryMapper.updateMaterialInventoryInventoryInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity());
+
+                            //淇敼鐗╂枡搴撳瓨鏁伴噺
+                            materialInventoryMapper.updateMaterialInventoryInventoryInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity());
+
+
                     }
                 }
                 materialInventoryMapper.updateMaterialOutboundCounterExamination(materialOutboundId,type,reviewed);
@@ -263,8 +382,8 @@
             TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
             //灏嗗紓甯镐紶鍏ユ暟鎹簱
             SysError sysError = new SysError();
-            sysError.setError(e.toString());
-            sysError.setFunc("saveOrder");
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("updateMaterialOutboundToExamine");
             sysErrorService.insert(sysError);
             saveState = false;
 
@@ -279,11 +398,15 @@
         boolean saveState = true;
         //璁剧疆鍥炴粴鐐�
         Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
-        String returningId = "";
-        String oddNumber;
-        if (object.get("returningId") != null) {
-            returningId = object.get("returningId").toString();
-        }
+        try {
+            String returningId = "";
+            String oddNumber;
+            if (object.get("returningId") != null) {
+                returningId = object.get("returningId").toString();
+            }
+            Log log = new Log();
+            log.setContent(object.toString());
+
             ReturningWarehouse returningWarehouse = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), ReturningWarehouse.class);
             List<ReturningWarehouseDetail> returningWarehouseDetailList = JSONArray.parseArray(JSONObject.toJSONString(object.get("returningWarehouseDetail")), ReturningWarehouseDetail.class);
             //鏌ヨ鍑哄簱鍗曟槸鍚﹀瓨鍦�
@@ -300,11 +423,13 @@
                 //鍒犻櫎鏉愭枡鍑哄簱鏄庣粏鐨勬暟鎹�
                 materialInventoryMapper.deleteReturningWarehouseDetail(returningId);
                 oddNumber = returningId;
+                log.setFunction("saveReturningWarehouse淇敼锛�"+oddNumber);
             } else {
                 //鑾峰彇鍗曞彿
                 oddNumber = orderNumberSetting("杩斿簱");
                 //鏂板鏉愭枡鍑哄簱琛ㄦ暟鎹�
                 materialInventoryMapper.insertReturningWarehouse(returningWarehouse, oddNumber);
+                log.setFunction("saveReturningWarehouse鏂板锛�"+oddNumber);
             }
 
 
@@ -364,8 +489,18 @@
                 }
 
             }
+            logService.saveLog(log);
 
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+            //灏嗗紓甯镐紶鍏ユ暟鎹簱
+            SysError sysError = new SysError();
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("saveReturningWarehouse");
+            sysErrorService.insert(sysError);
+            saveState = false;
 
+        }
         return saveState;
 
     }
@@ -399,13 +534,18 @@
             if (object.get("reviewed") != null) {
                 reviewed = object.get("reviewed").toString();
             }
+            Log log = new Log();
+            log.setOperator(reviewed);
+            log.setContent(object.toString());
+            log.setFunction("updateReturningWarehouseToExamine锛�"+type);
+            logService.saveLog(log);
 
             if (type==1){
                 List<ReturningWarehouseDetail> returningWarehouseDetailList = materialInventoryMapper.getIsNotReturningWarehouseDetail(returningId);
                 if (!returningWarehouseDetailList.isEmpty()) {
                     for (ReturningWarehouseDetail returningWarehouseDetail : returningWarehouseDetailList) {
                         //淇敼鐗╂枡搴撳瓨鏁伴噺
-                        materialInventoryMapper.updateMaterialInventoryAvailableInt(returningWarehouseDetail.getInventoryId(), returningWarehouseDetail.getReturnQuantity());
+                        materialInventoryMapper.updateMaterialInventoryInventoryInt(returningWarehouseDetail.getInventoryId(), returningWarehouseDetail.getReturnQuantity());
                     }
                 }
                 materialInventoryMapper.updateReturningWarehouseToExamine(returningId,type,reviewed);
@@ -414,7 +554,7 @@
                 if (!returningWarehouseDetailList.isEmpty()) {
                     for (ReturningWarehouseDetail returningWarehouseDetail : returningWarehouseDetailList) {
                         //淇敼鐗╂枡搴撳瓨鏁伴噺
-                        materialInventoryMapper.updateMaterialInventoryAvailableOut(returningWarehouseDetail.getInventoryId(), returningWarehouseDetail.getReturnQuantity());
+                        materialInventoryMapper.updateMaterialInventoryInventoryOut(returningWarehouseDetail.getInventoryId(), returningWarehouseDetail.getReturnQuantity());
                     }
                 }
                 materialInventoryMapper.updateReturningWarehouseCounterExamination(returningId,type,reviewed);
@@ -424,8 +564,8 @@
             TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
             //灏嗗紓甯镐紶鍏ユ暟鎹簱
             SysError sysError = new SysError();
-            sysError.setError(e.toString());
-            sysError.setFunc("saveOrder");
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("updateReturningWarehouseToExamine");
             sysErrorService.insert(sysError);
             saveState = false;
 
@@ -459,6 +599,91 @@
         return map;
     }
 
+    public Map<String, Object> getSelectSurplusMaterialsDate(Integer pageNum, Integer pageSize, List<String> selectDate, SurplusMaterials surplusMaterials) {
+        Integer offset = (pageNum - 1) * pageSize;
+        String endDate = LocalDate.now().toString();
+        String startDate = LocalDate.now().minusDays(15).toString();
+        if(selectDate !=null && selectDate.size()==2){
+            if(!selectDate.get(0).isEmpty()){
+                startDate = selectDate.get(0);
+            }
+            if(!selectDate.get(1).isEmpty()){
+                endDate = selectDate.get(1);
+            }
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", materialInventoryMapper.getSelectSurplusMaterialsDate(offset, pageSize,startDate, endDate, surplusMaterials));
+        map.put("total", materialInventoryMapper.getSelectSurplusMaterialsDatePageTotal(offset, pageSize,startDate, endDate, surplusMaterials));
+        List<String> list = new ArrayList<>();
+        list.add(startDate);
+        list.add(endDate);
+        map.put("selectDate",list);
+        return map;
+    }
+
+    public Boolean addSelectSurplusMaterialsDate(Map<String,Object> object) {
+        boolean saveState = true;
+        //璁剧疆鍥炴粴鐐�
+        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+
+        String creator = "";
+        if (object.get("creator") != null) {
+            creator = object.get("creator").toString();
+        }
+        String type = "";
+        if (object.get("type") != null) {
+            type = object.get("type").toString();
+        }
+        int state = 0;
+        if (object.get("state") != null) {
+            state = Integer.parseInt(object.get("state").toString());
+        }
+        Log log = new Log();
+        log.setOperator(creator);
+        log.setContent(object.toString());
+        log.setFunction("addSelectSurplusMaterialsDate锛�"+state);
+        logService.saveLog(log);
+
+        if(state==1){
+            SurplusMaterials surplusMaterials = JSONObject.parseObject(JSONObject.toJSONString(object.get("surplusMaterials")), SurplusMaterials.class);
+            if(surplusMaterials!=null){
+                SurplusMaterials surplusMaterials1=materialInventoryMapper.selectSurplusMaterialsCount(surplusMaterials);
+                if(surplusMaterials1!=null){
+                    materialInventoryMapper.updateSurplusMaterialsIntQuantity(surplusMaterials1);
+                    materialInventoryMapper.insertSurplusMaterialsLog(surplusMaterials1,creator,type);
+                }else{
+                    materialInventoryMapper.insertSurplusMaterials(surplusMaterials);
+                    materialInventoryMapper.insertSurplusMaterialsLog(surplusMaterials,creator,type);
+                }
+            }
+        } else if (state==2) {
+            List<SurplusMaterials> surplusMaterialsList = JSONArray.parseArray(JSONObject.toJSONString(object.get("surplusMaterials")), SurplusMaterials.class);
+            if(!surplusMaterialsList.isEmpty()){
+                for(SurplusMaterials surplusMaterials:surplusMaterialsList){
+                    materialInventoryMapper.updateSurplusMaterialsOutQuantity(surplusMaterials);
+                    materialInventoryMapper.insertSurplusMaterialsLog(surplusMaterials,creator,type);
+                }
+
+            }
+        }
+
+
+
+        return saveState;
+
+
+
+    }
+
+    public Map<String, Object> printCreateOutbound(String materialOutboundId) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("createOutbound", materialInventoryMapper.getPrintCreateOutbound(materialOutboundId));
+        map.put("createOutboundDetail", materialInventoryMapper.getPrintCreateOutboundDetail(materialOutboundId));
+        return map;
+    }
+
+
+
 
 
     public String orderNumberSetting(String type) {

--
Gitblit v1.8.0