From ee516213153df61431fa40e3d723de743b945796 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期四, 06 二月 2025 16:26:50 +0800
Subject: [PATCH] 增加配置发货默认出库

---
 north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java |  255 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 232 insertions(+), 23 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 bb9e466..ed75d99 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
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.dto.mm.FinishedOperateLogDTO;
 import com.example.erp.entity.mm.*;
 import com.example.erp.entity.pp.FlowCard;
 import com.example.erp.entity.pp.OptimizeUse;
@@ -14,6 +15,7 @@
 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.MaterialLogMapper;
 import com.example.erp.mapper.mm.MaterialStoreMapper;
 import com.example.erp.service.userInfo.LogService;
 import com.example.erp.service.userInfo.SysErrorService;
@@ -44,9 +46,11 @@
     SysErrorService sysErrorService;
     @Autowired
     LogService logService;
+    @Autowired
+    MaterialLogMapper materialLogMapper;
 
-    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 = "";
@@ -55,6 +59,8 @@
             materialOutboundId = object.get("materialOutboundId").toString();
         }
         Log log = new Log();
+        log.setOperatorId(object.get("userId").toString());
+        log.setOperator(object.get("userName").toString());
         log.setContent(object.toString());
         try {
             MaterialOutbound materialOutbound = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), MaterialOutbound.class);
@@ -67,7 +73,7 @@
                 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());
@@ -95,12 +101,13 @@
 
             if (!materialOutboundDetailList.isEmpty()) {
                 for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailList) {
-
-                    Integer materialOutboundDetailMaximum = materialInventoryMapper.getMaterialOutboundDetailMaximum(oddNumber);
-                    //鏂板鏉愭枡鍑哄簱鏄庣粏鏁版嵁
-                    materialInventoryMapper.insertMaterialOutboundDetail(materialOutboundDetail, oddNumber, materialOutboundDetailMaximum + 1);
-                    //淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲�
-                    materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
+                    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());
@@ -108,6 +115,34 @@
                         //淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲�
                         materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
                     }*/
+                        String json="";
+                        MaterialStore materialStore=materialStoreMapper.getSelectMaterialStoreById(Long.valueOf(materialOutboundDetail.getMaterialCode()));
+                        json=materialStore.getJson().substring(1, materialStore.getJson().length() - 1);
+                        MaterialLog materialLog=new MaterialLog();
+                        materialLog.setOperationOrderNumber(oddNumber);
+                        materialLog.setOperationNumber(materialOutboundDetailMaximum + 1);
+                        materialLog.setOperateType("鐗╂枡鍑哄簱");
+                        materialLog.setMaterialCode(Long.valueOf(materialOutboundDetail.getMaterialCode()));
+                        materialLog.setMaterialName(convertString(json,"\"name\""));
+                        materialLog.setProducer(materialInventory.getProducer());
+                        materialLog.setUnit(convertString(json,"\"unit\""));
+                        materialLog.setWidth(convertDouble(json,"\"width\""));
+                        materialLog.setHeight(convertDouble(json,"\"height\""));
+                        materialLog.setThickness(convertDouble(json,"\"thickness\""));
+                        materialLog.setQuantity(materialOutboundDetail.getOutboundQuantity());
+                        materialLog.setSinglePieceArea(materialOutboundDetail.getSinglePieceArea());
+                        materialLog.setInventoryId(materialOutboundDetail.getId());
+                        materialLog.setInventoryArea(materialInventory.getInventoryArea());
+                        materialLog.setRemarks(materialOutboundDetail.getRemarks());
+                        materialLog.setOperator(object.get("userName").toString());
+                        materialLog.setOperateTime(LocalDate.now());
+                        materialLogMapper.insert(materialLog);
+                    }else{
+                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+                        return "false1";
+                    }
+
+
 
 
                 }
@@ -122,15 +157,15 @@
             sysError.setError(e+Arrays.toString(e.getStackTrace()));
             sysError.setFunc("saveMaterialOutbound");
             sysErrorService.insert(sysError);
-            saveState = false;
+            saveState = "false1";
 
         }
         return saveState;
 
     }
 
-    public Boolean saveMaterialInventory(Map<String,Object> object) {
-        boolean saveState = true;
+    public String saveMaterialInventory(Map<String,Object> object) {
+        String saveState = "true";
         //璁剧疆鍥炴粴鐐�
         Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
         try {
@@ -147,20 +182,55 @@
                 materialCode = Long.valueOf(object.get("materialCode").toString());
             }
             Log log = new Log();
+            log.setOperatorId(object.get("userId").toString());
+            log.setOperator(object.get("userName").toString());
             log.setContent(object.toString());
 
             MaterialInventory materialInventory = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), MaterialInventory.class);
 
-            //鏌ヨ鐗╂枡鏄惁瀛樺湪
-            Integer MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCount(materialCode,materialInventory.getDateOfManufacture());
 
-            if(MaterialInventoryCount>0){
-                materialInventoryMapper.updateMaterialInventory(materialCode,singlePieceArea,totalArea,materialInventory);
+            //鏌ヨ鐗╂枡鏄惁瀛樺湪
+            Integer MaterialInventoryCount=0;
+            if (materialInventory.getDateOfManufacture()!=null){
+                MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCount(materialCode,materialInventory.getDateOfManufacture());
+            }else{
+                MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCountNull(materialCode);
+            }
+
+            if(MaterialInventoryCount==1){
+                if (materialInventory.getDateOfManufacture()!=null){
+                    materialInventoryMapper.updateMaterialInventory(materialCode,singlePieceArea,totalArea,materialInventory);
+                }else{
+                    materialInventoryMapper.updateMaterialInventoryNull(materialCode,singlePieceArea,totalArea,materialInventory);
+                }
                 log.setFunction("saveMaterialInventory淇敼");
-            }else {
+            }else if(MaterialInventoryCount==0) {
                 materialInventoryMapper.insertMaterialInventory(materialCode,singlePieceArea,totalArea,materialInventory);
                 log.setFunction("saveMaterialInventory鏂板");
+            }else {
+                return "false1";
             }
+
+            String json="";
+            MaterialStore materialStore=materialStoreMapper.getSelectMaterialStoreById(materialCode);
+            json=materialStore.getJson().substring(1, materialStore.getJson().length() - 1);
+            MaterialLog materialLog=new MaterialLog();
+            materialLog.setOperateType("鐗╂枡鏂板");
+            materialLog.setMaterialCode(materialCode);
+            materialLog.setMaterialName(convertString(json,"\"name\""));
+            materialLog.setProducer(materialInventory.getProducer());
+            materialLog.setUnit(convertString(json,"\"unit\""));
+            materialLog.setWidth(convertDouble(json,"\"width\""));
+            materialLog.setHeight(convertDouble(json,"\"height\""));
+            materialLog.setThickness(convertDouble(json,"\"thickness\""));
+            materialLog.setQuantity(materialInventory.getInventoryQuantity());
+            materialLog.setSinglePieceArea(singlePieceArea);
+            materialLog.setInventoryId(materialInventory.getId());
+            materialLog.setInventoryArea(materialInventory.getInventoryArea());
+            materialLog.setRemarks(materialInventory.getRemarks());
+            materialLog.setOperator(object.get("userName").toString());
+            materialLog.setOperateTime(LocalDate.now());
+            materialLogMapper.insert(materialLog);
             logService.saveLog(log);
         } catch (Exception e) {
             TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
@@ -169,7 +239,7 @@
             sysError.setError(e+Arrays.toString(e.getStackTrace()));
             sysError.setFunc("saveMaterialInventory");
             sysErrorService.insert(sysError);
-            saveState = false;
+            saveState = "false";
 
         }
         return saveState;
@@ -257,12 +327,69 @@
                 materialOutboundId = object.get("materialOutboundId").toString();
             }
             if(materialOutboundId!=null){
+                List<MaterialOutboundDetail> materialOutboundDetailLists = materialInventoryMapper.getIsNotMaterialOutboundDetail(materialOutboundId);
+                if (!materialOutboundDetailLists.isEmpty()) {
+                    for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailLists) {
+                        //杩樺師鐗╂枡搴撳瓨鏁�
+                        materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity());
+
+                    }
+                }
+
                 materialInventoryMapper.deleteMaterialOutboundDetail(materialOutboundId);
                 materialInventoryMapper.deleteMaterialOutbound(materialOutboundId);
+                materialInventoryMapper.deleteMaterialLog(materialOutboundId);
             }
             Log log = new Log();
             log.setContent(object.toString());
+            log.setOperatorId(object.get("userId").toString());
+            log.setOperator(object.get("userName").toString());
             log.setFunction("deleteMaterialOutbound鍒犻櫎:"+materialOutboundId);
+            logService.saveLog(log);
+
+
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+            //灏嗗紓甯镐紶鍏ユ暟鎹簱
+            SysError sysError = new SysError();
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("deleteMaterialOutbound");
+            sysErrorService.insert(sysError);
+            saveState = false;
+
+        }
+        return saveState;
+
+    }
+
+    public Boolean deleteReturnToStorage(Map<String,Object> object) {
+        boolean saveState = true;
+        //璁剧疆鍥炴粴鐐�
+        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+        try {
+            String returningId = "";
+            if (object.get("returningId") != null) {
+                returningId = object.get("returningId").toString();
+            }
+            if(returningId!=null){
+
+                List<ReturningWarehouseDetail> returningWarehouseDetailLists = materialInventoryMapper.getIsNotReturningWarehouseDetail(returningId);
+                if (!returningWarehouseDetailLists.isEmpty()) {
+                    for (ReturningWarehouseDetail returningWarehouseDetail : returningWarehouseDetailLists) {
+                        //杩樺師鐗╂枡搴撳瓨鏁�
+                        materialInventoryMapper.updateMaterialInventoryAvailableOut(returningWarehouseDetail.getInventoryId(), returningWarehouseDetail.getReturnQuantity());
+                    }
+                }
+
+                materialInventoryMapper.deleteReturningWarehouseDetail(returningId);
+                materialInventoryMapper.deleteReturningWarehouse(returningId);
+                materialInventoryMapper.deleteMaterialLog(returningId);
+            }
+            Log log = new Log();
+            log.setContent(object.toString());
+            log.setOperatorId(object.get("userId").toString());
+            log.setOperator(object.get("userName").toString());
+            log.setFunction("deleteReturnToStorage:"+returningId);
             logService.saveLog(log);
 
 
@@ -398,6 +525,8 @@
                 returningId = object.get("returningId").toString();
             }
             Log log = new Log();
+            log.setOperatorId(object.get("userId").toString());
+            log.setOperator(object.get("userName").toString());
             log.setContent(object.toString());
 
             ReturningWarehouse returningWarehouse = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), ReturningWarehouse.class);
@@ -441,8 +570,8 @@
                     json=materialStore.getJson().substring(1, materialStore.getJson().length() - 1);
 
 
-                    double width= convert(json,"\"width\"");
-                    double height=convert(json,"\"height\"");
+                    double width= convertDouble(json,"\"width\"");
+                    double height= convertDouble(json,"\"height\"");
                     DecimalFormat decimalFormat = new DecimalFormat("#0.00");
                     singlePieceArea= Double.parseDouble(decimalFormat.format(width * height / 100000));
                     totalArea= Double.parseDouble(decimalFormat.format(singlePieceArea * returningWarehouseDetail.getReturnQuantity()));
@@ -478,6 +607,25 @@
                     materialInventoryMapper.updateReturningWarehouseDetail(oddNumber, returningWarehouseDetailMaximum + 1,MaterialInventoryId.get(0).getId());
 
 
+
+                    MaterialLog materialLog=new MaterialLog();
+                    materialLog.setOperationOrderNumber(oddNumber);
+                    materialLog.setOperationNumber(returningWarehouseDetailMaximum + 1);
+                    materialLog.setOperateType("鐗╂枡杩斿簱");
+                    materialLog.setMaterialCode(returningWarehouseDetail.getId());
+                    materialLog.setMaterialName(convertString(json,"\"name\""));
+                    materialLog.setProducer(returningWarehouseDetail.getProducer());
+                    materialLog.setUnit(convertString(json,"\"unit\""));
+                    materialLog.setWidth(convertDouble(json,"\"width\""));
+                    materialLog.setHeight(convertDouble(json,"\"height\""));
+                    materialLog.setThickness(convertDouble(json,"\"thickness\""));
+                    materialLog.setQuantity(returningWarehouseDetail.getReturnQuantity());
+                    materialLog.setSinglePieceArea(singlePieceArea);
+                    materialLog.setInventoryArea(returningWarehouseDetail.getInventoryArea());
+                    materialLog.setRemarks(returningWarehouseDetail.getRemarks());
+                    materialLog.setOperator(object.get("userName").toString());
+                    materialLog.setOperateTime(LocalDate.now());
+                    materialLogMapper.insert(materialLog);
 
                 }
 
@@ -642,7 +790,6 @@
             if(surplusMaterials!=null){
                 SurplusMaterials surplusMaterials1=materialInventoryMapper.selectSurplusMaterialsCount(surplusMaterials);
                 if(surplusMaterials1!=null){
-                    System.out.println(surplusMaterials1);
                     materialInventoryMapper.updateSurplusMaterialsIntQuantity(surplusMaterials1);
                     materialInventoryMapper.insertSurplusMaterialsLog(surplusMaterials1,creator,type);
                 }else{
@@ -676,6 +823,56 @@
         return map;
     }
 
+    public Map<String, Object> getMaterialLogReport(String type,Integer pageNum, Integer pageSize, List<String> selectDate, MaterialLog materialLog) {
+        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.getMaterialLogReport(offset, pageSize,startDate, endDate, materialLog,type));
+        map.put("total", materialInventoryMapper.getMaterialLogReportTotal(offset, pageSize,startDate, endDate, materialLog,type));
+        List<String> list = new ArrayList<>();
+        list.add(startDate);
+        list.add(endDate);
+        map.put("selectDate",list);
+        return map;
+    }
+
+    public List<MaterialLog> exportMaterialLogReport(List<LocalDate> dates, String type) {
+        return materialInventoryMapper.exportMaterialLogReport(dates,type);
+    }
+
+
+    public Boolean deleteMaterialInventory(Map<String,Object> object) {
+        String creator = "";
+        if (object.get("creator") != null) {
+            creator = object.get("creator").toString();
+        }
+        String ids = "";
+        if (object.get("ids") != null) {
+            ids = object.get("ids").toString();
+        }
+        List<Long> id=new ArrayList<>();
+        if(!ids.isEmpty()){
+            List<String> result = StrUtil.split(ids, '|');
+            id=result.stream().map(Long::valueOf).collect(Collectors.toList());
+        }
+        materialInventoryMapper.deleteMaterialInventory(id);
+        Log log = new Log();
+        log.setOperator(creator);
+        log.setContent(object.toString());
+        log.setFunction("deleteMaterialInventory锛�"+ids);
+        logService.saveLog(log);
+        return true;
+    }
 
 
 
@@ -705,7 +902,7 @@
     }
 
 
-    public double convert(String json,String string) {
+    public String convertString(String json,String string) {
         Map<String, Object> map = new HashMap<>();
         String[] keyValues = json.split(",");
         for (String keyValue : keyValues) {
@@ -714,7 +911,19 @@
                 map.put(pair[0], pair[1]);
             }
         }
-        double number=0.0;
+        return map.get(string).toString().replace("\"","");
+    }
+
+    public Double convertDouble(String json,String string) {
+        Map<String, Object> map = new HashMap<>();
+        String[] keyValues = json.split(",");
+        for (String keyValue : keyValues) {
+            String[] pair = keyValue.split(":");
+            if (pair.length == 2) {
+                map.put(pair[0], pair[1]);
+            }
+        }
+        Double number=0.0;
         if(map.get(string)!=null){
             String[] widthStrings = map.get(string).toString().split("\\D+");
             for (String numberString : widthStrings) {

--
Gitblit v1.8.0