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