From 2f640b1038fa331954f78ed1f4317212cf5bb34d Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期五, 07 六月 2024 16:56:06 +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 |  324 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 307 insertions(+), 17 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 0c16451..ff634d8 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,12 +1,11 @@
 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.MaterialInventory;
-import com.example.erp.entity.mm.MaterialOutbound;
-import com.example.erp.entity.mm.MaterialOutboundDetail;
-import com.example.erp.entity.mm.MaterialStore;
+import com.example.erp.entity.mm.*;
+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;
@@ -19,10 +18,14 @@
 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")
@@ -30,6 +33,8 @@
 public class MaterialInventoryService {
     @Autowired
     MaterialInventoryMapper materialInventoryMapper;
+    @Autowired
+    MaterialStoreMapper materialStoreMapper;
     @Autowired
     BasicWarehouseTypeMapper basicWarehouseTypeMapper;
     @Autowired
@@ -56,6 +61,14 @@
                     for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailLists) {
                         //杩樺師鐗╂枡搴撳瓨鏁�
                         materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
+                        /*if(materialOutboundDetail.getUseId()!=null){
+                            //杩樺師浼樺寲宸ョ▼搴撳瓨鏁�
+                            materialInventoryMapper.updateMaterialInventoryAvailableOptInt(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity());
+                        }else{
+                            //杩樺師鐗╂枡搴撳瓨鏁�
+                            materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
+                        }*/
+
                     }
                 }
                 //鍒犻櫎鏉愭枡鍑哄簱鏄庣粏鐨勬暟鎹�
@@ -65,7 +78,7 @@
                 //鑾峰彇鍗曞彿
                 oddNumber = orderNumberSetting("鍑哄簱");
                 //鏂板鏉愭枡鍑哄簱琛ㄦ暟鎹�
-                materialInventoryMapper.insertMaterialInventoryMapper(materialOutbound, oddNumber);
+                materialInventoryMapper.insertMaterialOutbound(materialOutbound, oddNumber);
             }
 
             //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
@@ -77,8 +90,15 @@
                     //鏂板鏉愭枡鍑哄簱鏄庣粏鏁版嵁
                     materialInventoryMapper.insertMaterialOutboundDetail(materialOutboundDetail, oddNumber, materialOutboundDetailMaximum + 1);
                     //淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲�
-                    System.out.println(materialOutboundDetail.getInventoryId());
                     materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
+                    /*if(materialOutboundDetail.getUseId()!=null){
+                        //淇敼浼樺寲宸ョ▼琛ㄥ嚭搴撴暟閲�
+                        materialInventoryMapper.updateMaterialInventoryAvailableOptOut(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity());
+                    }else{
+                        //淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲�
+                        materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
+                    }*/
+
 
                 }
 
@@ -149,12 +169,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;
     }
 
@@ -213,12 +273,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;
@@ -243,8 +312,11 @@
                 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 +324,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);
@@ -275,15 +350,206 @@
 
     }
 
+    public Boolean saveReturningWarehouse(Map<String,Object> object) {
+        boolean saveState = true;
+        //璁剧疆鍥炴粴鐐�
+        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+        String returningId = "";
+        String oddNumber;
+        if (object.get("returningId") != null) {
+            returningId = object.get("returningId").toString();
+        }
+            ReturningWarehouse returningWarehouse = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), ReturningWarehouse.class);
+            List<ReturningWarehouseDetail> returningWarehouseDetailList = JSONArray.parseArray(JSONObject.toJSONString(object.get("returningWarehouseDetail")), ReturningWarehouseDetail.class);
+            //鏌ヨ鍑哄簱鍗曟槸鍚﹀瓨鍦�
+            Integer ReturningWarehouseConut = materialInventoryMapper.getReturningWarehouseCount(returningId);
+            if (ReturningWarehouseConut != 0) {
+
+                List<ReturningWarehouseDetail> returningWarehouseDetailLists = materialInventoryMapper.getIsNotReturningWarehouseDetail(returningId);
+                if (!returningWarehouseDetailLists.isEmpty()) {
+                    for (ReturningWarehouseDetail returningWarehouseDetail : returningWarehouseDetailLists) {
+                        //杩樺師鐗╂枡搴撳瓨鏁�
+                        materialInventoryMapper.updateMaterialInventoryAvailableOut(returningWarehouseDetail.getInventoryId(), returningWarehouseDetail.getReturnQuantity());
+                    }
+                }
+                //鍒犻櫎鏉愭枡鍑哄簱鏄庣粏鐨勬暟鎹�
+                materialInventoryMapper.deleteReturningWarehouseDetail(returningId);
+                oddNumber = returningId;
+            } else {
+                //鑾峰彇鍗曞彿
+                oddNumber = orderNumberSetting("杩斿簱");
+                //鏂板鏉愭枡鍑哄簱琛ㄦ暟鎹�
+                materialInventoryMapper.insertReturningWarehouse(returningWarehouse, oddNumber);
+            }
+
+
+            //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+            if (!returningWarehouseDetailList.isEmpty()) {
+                for (ReturningWarehouseDetail returningWarehouseDetail : returningWarehouseDetailList) {
+
+                    Integer returningWarehouseDetailMaximum = materialInventoryMapper.getReturningWarehouseDetailMaximum(oddNumber);
+                    //鏂板鏉愭枡鍑哄簱鏄庣粏鏁版嵁
+                    materialInventoryMapper.insertReturningWarehouseDetail(returningWarehouseDetail, oddNumber, returningWarehouseDetailMaximum + 1);
+
+                    double singlePieceArea=0.0;
+                    double totalArea=0.0;
+                    String json="";
+                    MaterialStore materialStore=materialStoreMapper.getSelectMaterialStoreById(returningWarehouseDetail.getId());
+                    json=materialStore.getJson().substring(1, materialStore.getJson().length() - 1);
+
+
+                    double width= convert(json,"\"width\"");
+                    double height=convert(json,"\"height\"");
+                    DecimalFormat decimalFormat = new DecimalFormat("#0.00");
+                    singlePieceArea= Double.parseDouble(decimalFormat.format(width * height / 100000));
+                    totalArea= Double.parseDouble(decimalFormat.format(singlePieceArea * returningWarehouseDetail.getReturnQuantity()));
+
+
+                    //鏌ヨ鐗╂枡鏄惁瀛樺湪
+                    Integer MaterialInventoryCount=0;
+                    if (returningWarehouseDetail.getDateOfManufacture()!=null){
+                        MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCount(returningWarehouseDetail.getId(),returningWarehouseDetail.getDateOfManufacture());
+                    }else{
+                        MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCountNull(returningWarehouseDetail.getId());
+                    }
+
+
+                    if(MaterialInventoryCount>0){
+                        if (returningWarehouseDetail.getDateOfManufacture()!=null){
+                            materialInventoryMapper.updateMaterialInventoryReturning(returningWarehouseDetail.getId(),singlePieceArea,totalArea,returningWarehouseDetail);
+                        }else{
+                            materialInventoryMapper.updateMaterialInventoryReturningNull(returningWarehouseDetail.getId(),singlePieceArea,totalArea,returningWarehouseDetail);
+                        }
+
+                    }else {
+                        materialInventoryMapper.insertMaterialInventoryReturning(returningWarehouseDetail.getId(),singlePieceArea,totalArea,returningWarehouseDetail);
+                    }
+
+                    //鑾峰彇搴撳瓨缂栧彿娣诲姞鍒拌繑搴撴槑缁嗚〃
+                    List<MaterialInventory> MaterialInventoryId;
+                    if (returningWarehouseDetail.getDateOfManufacture()!=null){
+                        MaterialInventoryId = materialInventoryMapper.getMaterialInventoryCountId(returningWarehouseDetail.getId(),returningWarehouseDetail.getDateOfManufacture());
+                    }else{
+                        MaterialInventoryId = materialInventoryMapper.getMaterialInventoryCountNullId(returningWarehouseDetail.getId());
+                    }
+                    materialInventoryMapper.updateReturningWarehouseDetail(oddNumber, returningWarehouseDetailMaximum + 1,MaterialInventoryId.get(0).getId());
+
+
+
+                }
+
+            }
+
+
+        return saveState;
+
+    }
+
+
+    public Map<String, Object> getSelectReturningWarehouse(Integer pageNum, Integer pageSize, ReturningWarehouseDetail returningWarehouseDetail) {
+        Integer offset = (pageNum - 1) * pageSize;
+        Map<String, Object> map = new HashMap<>();
+        map.put("returningWarehouse", materialInventoryMapper.getSelectReturningWarehouse(offset, pageSize, returningWarehouseDetail));
+        map.put("data", materialInventoryMapper.getSelectReturningWarehouseDetail(offset, pageSize, returningWarehouseDetail));
+        map.put("total", materialInventoryMapper.getSelectReturningWarehouseDetailPageTotal(offset, pageSize, returningWarehouseDetail));
+        return map;
+    }
+
+
+    public Boolean updateReturningWarehouseToExamine(Map<String,Object> object) {
+        boolean saveState = true;
+        //璁剧疆鍥炴粴鐐�
+        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+        try {
+            String returningId = "";
+            String reviewed = "";
+            int type =0;
+            if (object.get("returningId") != null) {
+                returningId = object.get("returningId").toString();
+            }
+
+            if (object.get("type") != null) {
+                type = Integer.parseInt(object.get("type").toString());
+            }
+            if (object.get("reviewed") != null) {
+                reviewed = object.get("reviewed").toString();
+            }
+
+            if (type==1){
+                List<ReturningWarehouseDetail> returningWarehouseDetailList = materialInventoryMapper.getIsNotReturningWarehouseDetail(returningId);
+                if (!returningWarehouseDetailList.isEmpty()) {
+                    for (ReturningWarehouseDetail returningWarehouseDetail : returningWarehouseDetailList) {
+                        //淇敼鐗╂枡搴撳瓨鏁伴噺
+                        materialInventoryMapper.updateMaterialInventoryInventoryInt(returningWarehouseDetail.getInventoryId(), returningWarehouseDetail.getReturnQuantity());
+                    }
+                }
+                materialInventoryMapper.updateReturningWarehouseToExamine(returningId,type,reviewed);
+            }else{
+                List<ReturningWarehouseDetail> returningWarehouseDetailList = materialInventoryMapper.getIsNotReturningWarehouseDetail(returningId);
+                if (!returningWarehouseDetailList.isEmpty()) {
+                    for (ReturningWarehouseDetail returningWarehouseDetail : returningWarehouseDetailList) {
+                        //淇敼鐗╂枡搴撳瓨鏁伴噺
+                        materialInventoryMapper.updateMaterialInventoryInventoryOut(returningWarehouseDetail.getInventoryId(), returningWarehouseDetail.getReturnQuantity());
+                    }
+                }
+                materialInventoryMapper.updateReturningWarehouseCounterExamination(returningId,type,reviewed);
+            }
+
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+            //灏嗗紓甯镐紶鍏ユ暟鎹簱
+            SysError sysError = new SysError();
+            sysError.setError(e.toString());
+            sysError.setFunc("saveOrder");
+            sysErrorService.insert(sysError);
+            saveState = false;
+
+        }
+        return saveState;
+
+
+
+    }
+
+
+    public Map<String, Object> getSelectReturningWarehouseDate(Integer pageNum, Integer pageSize, List<String> selectDate, ReturningWarehouse returningWarehouse) {
+        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.getSelectReturningWarehouseDate(offset, pageSize,startDate, endDate, returningWarehouse));
+        map.put("total", materialInventoryMapper.getSelectReturningWarehouseDatePageTotal(offset, pageSize,startDate, endDate, returningWarehouse));
+        List<String> list = new ArrayList<>();
+        list.add(startDate);
+        list.add(endDate);
+        map.put("selectDate",list);
+        return map;
+    }
+
+
 
     public String orderNumberSetting(String type) {
         //鏍规嵁绫诲瀷鑷姩鐢熸垚涓嶅悓鐨勬搷浣滃崟鍙�
         String alias="";
+        Integer maximum=0;
         if(Objects.equals(type, "鍑哄簱")){
             alias="CK";
+             maximum=materialInventoryMapper.getMaximum(type);
+        }
+        if(Objects.equals(type, "杩斿簱")){
+            alias="FK";
+             maximum=materialInventoryMapper.getMaximums(type);
         }
         //鏌ヨ褰撳ぉ鐨勬渶澶ф暟閲�
-        Integer maximum=materialInventoryMapper.getmaximum(type);
+
         //璁剧疆涓や綅涓嶅琛�0
         String formattedNumber = String.format("%02d", maximum+1);
         //鏍煎紡鍖栧綋鍓嶆棩鏈�
@@ -295,6 +561,30 @@
     }
 
 
+    public double convert(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) {
+                if (!numberString.isEmpty()) {
+                    number= Double.parseDouble(numberString);
+                }
+            }
+        }
+
+
+        return number;
+    }
+
+
 
 
 

--
Gitblit v1.8.0