From d5bb894f9be2e0a3b62d475b60b44f2ab138528c Mon Sep 17 00:00:00 2001 From: guoyujie <guoyujie@ng.com> Date: 星期四, 12 六月 2025 16:48:35 +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 | 221 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 202 insertions(+), 19 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 383554e..46dc82b 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,18 +1,22 @@ package com.example.erp.service.mm; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.example.erp.common.Constants; 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; +import com.example.erp.entity.pp.*; 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.sd.OrderProcessDetail; import com.example.erp.entity.userInfo.Log; import com.example.erp.entity.userInfo.SysError; +import com.example.erp.exception.ServiceException; import com.example.erp.mapper.mm.BasicWarehouseTypeMapper; import com.example.erp.mapper.mm.MaterialInventoryMapper; import com.example.erp.mapper.mm.MaterialLogMapper; @@ -23,6 +27,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import java.time.LocalDateTime; import java.util.List; import java.util.ArrayList; @@ -74,10 +80,10 @@ for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailLists) { //杩樺師鐗╂枡搴撳瓨鏁� materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); - /*if(materialOutboundDetail.getUseId()!=null){ + if(materialOutboundDetail.getUseId()!=null){ //杩樺師浼樺寲宸ョ▼搴撳瓨鏁� materialInventoryMapper.updateMaterialInventoryAvailableOptInt(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity()); - }else{ + }/*else{ //杩樺師鐗╂枡搴撳瓨鏁� materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); }*/ @@ -87,6 +93,7 @@ //鍒犻櫎鏉愭枡鍑哄簱鏄庣粏鐨勬暟鎹� materialInventoryMapper.deleteMaterialOutboundDetail(materialOutboundId); materialInventoryMapper.updateMaterialOutbound(materialOutbound, materialOutboundId); + materialInventoryMapper.deleteMaterialLog(materialOutboundId); oddNumber = materialOutboundId; log.setFunction("saveMaterialOutbound淇敼:"+oddNumber); } else { @@ -108,13 +115,16 @@ materialInventoryMapper.insertMaterialOutboundDetail(materialOutboundDetail, oddNumber, materialOutboundDetailMaximum + 1); //淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲� materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); - /*if(materialOutboundDetail.getUseId()!=null){ - //淇敼浼樺寲宸ョ▼琛ㄥ嚭搴撴暟閲� - materialInventoryMapper.updateMaterialInventoryAvailableOptOut(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity()); - }else{ + String projectNo=""; + if(materialOutboundDetail.getUseId()!=null){ + projectNo = materialInventoryMapper.selectProjectNo(materialOutboundDetail.getUseId()); + //淇敼浼樺寲宸ョ▼琛ㄥ嚭搴撴暟閲� + materialInventoryMapper.updateMaterialInventoryAvailableOptOut(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity()); + + }/*else{ //淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲� 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); @@ -134,6 +144,7 @@ materialLog.setInventoryId(materialOutboundDetail.getId()); materialLog.setInventoryArea(materialInventory.getInventoryArea()); materialLog.setRemarks(materialOutboundDetail.getRemarks()); + materialLog.setProjectNo(projectNo); materialLog.setOperator(object.get("userName").toString()); materialLog.setOperateTime(LocalDate.now()); materialLogMapper.insert(materialLog); @@ -157,7 +168,7 @@ sysError.setError(e+Arrays.toString(e.getStackTrace())); sysError.setFunc("saveMaterialOutbound"); sysErrorService.insert(sysError); - saveState = "false1"; + saveState = "false"; } return saveState; @@ -190,21 +201,22 @@ //鏌ヨ鐗╂枡鏄惁瀛樺湪 - Integer MaterialInventoryCount=0; + List<MaterialInventory> MaterialInventoryCount; if (materialInventory.getDateOfManufacture()!=null){ MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCount(materialCode,materialInventory.getDateOfManufacture()); }else{ MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCountNull(materialCode); } - if(MaterialInventoryCount==1){ + if(MaterialInventoryCount.size()==1){ + materialInventory.setId(MaterialInventoryCount.get(0).getId()); if (materialInventory.getDateOfManufacture()!=null){ materialInventoryMapper.updateMaterialInventory(materialCode,singlePieceArea,totalArea,materialInventory); }else{ materialInventoryMapper.updateMaterialInventoryNull(materialCode,singlePieceArea,totalArea,materialInventory); } log.setFunction("saveMaterialInventory淇敼"); - }else if(MaterialInventoryCount==0) { + }else if(MaterialInventoryCount.isEmpty()) { materialInventoryMapper.insertMaterialInventory(materialCode,singlePieceArea,totalArea,materialInventory); log.setFunction("saveMaterialInventory鏂板"); }else { @@ -215,6 +227,9 @@ MaterialStore materialStore=materialStoreMapper.getSelectMaterialStoreById(materialCode); json=materialStore.getJson().substring(1, materialStore.getJson().length() - 1); MaterialLog materialLog=new MaterialLog(); + if(materialInventory.getDateOfManufacture()!=null){ + materialLog.setOperationOrderNumber(materialInventory.getDateOfManufacture().toString()); + } materialLog.setOperateType("鐗╂枡鏂板"); materialLog.setMaterialCode(materialCode); materialLog.setMaterialName(convertString(json,"\"name\"")); @@ -332,7 +347,10 @@ for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailLists) { //杩樺師鐗╂枡搴撳瓨鏁� materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); - + if(materialOutboundDetail.getUseId()!=null){ + //杩樺師浼樺寲宸ョ▼搴撳瓨鏁� + materialInventoryMapper.updateMaterialInventoryAvailableOptInt(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity()); + } } } @@ -476,10 +494,12 @@ List<MaterialOutboundDetail> materialOutboundDetailList = materialInventoryMapper.getIsNotMaterialOutboundDetail(materialOutboundId); if (!materialOutboundDetailList.isEmpty()) { for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailList) { - + if(materialOutboundDetail.getUseId()!=null){ //淇敼鐗╂枡搴撳瓨鏁伴噺 + materialInventoryMapper.updateMaterialInventoryInventoryPlanQuantityOut(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); + }else{ materialInventoryMapper.updateMaterialInventoryInventoryOut(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); - + } } } @@ -488,9 +508,13 @@ List<MaterialOutboundDetail> materialOutboundDetailList = materialInventoryMapper.getIsNotMaterialOutboundDetail(materialOutboundId); if (!materialOutboundDetailList.isEmpty()) { for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailList) { - + if(materialOutboundDetail.getUseId()!=null){ //淇敼鐗╂枡搴撳瓨鏁伴噺 + materialInventoryMapper.updateMaterialInventoryInventoryPlanQuantityInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); + }else{ materialInventoryMapper.updateMaterialInventoryInventoryInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); + } + } @@ -578,7 +602,7 @@ //鏌ヨ鐗╂枡鏄惁瀛樺湪 - Integer MaterialInventoryCount=0; + List<MaterialInventory> MaterialInventoryCount; if (returningWarehouseDetail.getDateOfManufacture()!=null){ MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCount(returningWarehouseDetail.getId(),returningWarehouseDetail.getDateOfManufacture()); }else{ @@ -586,7 +610,7 @@ } - if(MaterialInventoryCount>0){ + if(!MaterialInventoryCount.isEmpty()){ if (returningWarehouseDetail.getDateOfManufacture()!=null){ materialInventoryMapper.updateMaterialInventoryReturning(returningWarehouseDetail.getId(),singlePieceArea,totalArea,returningWarehouseDetail); }else{ @@ -851,6 +875,29 @@ } + 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; + } + @@ -916,9 +963,145 @@ + @Transactional(rollbackFor = Exception.class) + public boolean mesMaterialOutbound(Map<String, Object> reportingWorkMap) { + boolean saveState=true; + Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); + try { + //鎺ユ敹瑙f瀽涓婚檮琛ㄤ俊鎭� + JSONObject reportingWorkJson = new JSONObject(reportingWorkMap); + String projectNo=reportingWorkJson.get("projectNo").toString(); + Double width= Double.valueOf(reportingWorkJson.get("width").toString()); + Double height= Double.valueOf(reportingWorkJson.get("height").toString()); + Integer quantity= Integer.valueOf(reportingWorkJson.get("quantity").toString()); + + List<MaterialOutbound> materialOutboundList=materialInventoryMapper.getSelectMaterialOutboundProjectNo(projectNo); + OptimizeUse optimizeUses=materialInventoryMapper.getSelectOptimizeUses(projectNo,width,height); + MaterialInventory materialInventory=materialInventoryMapper.getMaterialInventoryById(Long.valueOf(optimizeUses.getRawStockCode())); + if(materialOutboundList.size()==1){ + List<MaterialOutboundDetail> materialOutboundDetailList=materialInventoryMapper.getSelectMaterialOutboundOptimizeUses(materialOutboundList.get(0).getMaterialOutboundId(),optimizeUses.getId()); + List<MaterialOutboundDetail> materialOutboundDetailList1=materialInventoryMapper.getSelectMaterialOutboundOptimizeUses(materialOutboundList.get(0).getMaterialOutboundId(),null); + if(materialOutboundDetailList.size()==1){ + materialInventoryMapper.updateMaterialOutboundOptimizeUses(optimizeUses.getId(),quantity); + }else{ + materialInventoryMapper.insertMaterialOutboundDetailOptimizeUses(materialOutboundList.get(0).getMaterialOutboundId(), + materialOutboundDetailList1.size()+1,Long.valueOf(optimizeUses.getRawStockCode()),materialInventory.getMaterialCode(),materialInventory.getInventoryArea(), + optimizeUses.getId(),quantity,materialInventory.getSinglePieceArea(),materialInventory.getDateOfManufacture()); + } + }else if(materialOutboundList.isEmpty()){ + String oddNumber = orderNumberSetting("鍑哄簱"); + materialInventoryMapper.insertMaterialOutboundOptimizeUses(oddNumber,projectNo,reportingWorkJson.get("userName").toString()); + materialInventoryMapper.insertMaterialOutboundDetailOptimizeUses(oddNumber, 1,Long.valueOf(optimizeUses.getRawStockCode()),materialInventory.getMaterialCode(),materialInventory.getInventoryArea(), + optimizeUses.getId(),quantity,materialInventory.getSinglePieceArea(),materialInventory.getDateOfManufacture()); + }else{ + return false; + } + materialInventoryMapper.updateMaterialInventoryAvailableInventoryOutMes(Long.valueOf(optimizeUses.getRawStockCode()),quantity); + materialInventoryMapper.updateOptimizeUsesMes(optimizeUses.getId(),quantity); + + //淇濆瓨鏃ュ織 + Log log = new Log(); + log.setContent(reportingWorkMap.toString()); + log.setFunction("mesMaterialOutbound鎶ュ伐鏂板"); + log.setOperatorId((String) reportingWorkJson.get("userId")); + log.setOperator((String) reportingWorkJson.get("userName")); + logService.saveLog(log); + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); + //灏嗗紓甯镐紶鍏ユ暟鎹簱 + SysError sysError = new SysError(); + sysError.setError(e+Arrays.toString(e.getStackTrace())); + sysError.setFunc("mesMaterialOutbound鎶ュ伐鏂板"); + sysErrorService.insert(sysError); + saveState = false; + + } + return saveState; + } + public String cancelMaterialAdditionRecord(Map<String,Object> object) { + String saveState = "true"; + //璁剧疆鍥炴粴鐐� + Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); + try { + Log log = new Log(); + log.setOperatorId(object.get("userId").toString()); + log.setOperator(object.get("userName").toString()); + log.setFunction("cancelMaterialAdditionRecord鐗╂枡鏂板鎾ら攢"); + log.setContent(object.toString()); + //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼 + List<MaterialLog> materialLoglist = JSONArray.parseArray(JSONObject.toJSONString(object.get("materialAdd")), MaterialLog.class); + if (!materialLoglist.isEmpty()){ + for (MaterialLog materialLog : materialLoglist) { + //鏌ヨ鐗╂枡鏄惁瀛樺湪 + List<MaterialInventory> MaterialInventoryList; + if (materialLog.getOperationOrderNumber()!=null){ + MaterialInventoryList = materialInventoryMapper.getMaterialInventoryCount(materialLog.getMaterialCode(), LocalDate.parse(materialLog.getOperationOrderNumber())); + }else{ + MaterialInventoryList = materialInventoryMapper.getMaterialInventoryCountNull(materialLog.getMaterialCode()); + } + + if(MaterialInventoryList.size()==1){ + if(MaterialInventoryList.get(0).getAvailableQuantity()>=materialLog.getQuantity()){ + if (materialLog.getOperationOrderNumber()!=null){ + materialInventoryMapper.updateMaterialInventoryOut(materialLog.getMaterialCode(),materialLog.getQuantity(),materialLog.getOperationOrderNumber()); + }else{ + materialInventoryMapper.updateMaterialInventoryNullOut(materialLog.getMaterialCode(),materialLog.getQuantity()); + } + materialInventoryMapper.deleteMaterialLogById(materialLog.getId()); + }else{ + return "false1"; + } + + }else{ + return "false2"; + } + + + } + + } + logService.saveLog(log); + + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); + //灏嗗紓甯镐紶鍏ユ暟鎹簱 + SysError sysError = new SysError(); + sysError.setError(e+Arrays.toString(e.getStackTrace())); + sysError.setFunc("cancelFinishedGoodsInventoryStorage"); + sysErrorService.insert(sysError); + saveState = "false"; + + } + return saveState; + + } + + + public Map<String, Object> getOptimizeOutboundReport(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.getOptimizeOutboundReport(offset, pageSize,startDate, endDate, materialLog,type)); + map.put("total", materialInventoryMapper.getOptimizeOutboundReportTotal(offset, pageSize,startDate, endDate, materialLog,type)); + List<String> list = new ArrayList<>(); + list.add(startDate); + list.add(endDate); + map.put("selectDate",list); + return map; + } } -- Gitblit v1.8.0