From a99c1f36e52c75e0020127c62d39c1eddae4a036 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期一, 28 七月 2025 17:07:54 +0800
Subject: [PATCH] Merge branch 'master' of http://bore.pub:10439/r/ERP_override
---
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java | 281 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 254 insertions(+), 27 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 7f8ba77..d1863e6 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
@@ -201,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 {
@@ -226,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\""));
@@ -490,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());
-
+ }
}
}
@@ -502,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());
+ }
+
}
@@ -592,7 +602,7 @@
//鏌ヨ鐗╂枡鏄惁瀛樺湪
- Integer MaterialInventoryCount=0;
+ List<MaterialInventory> MaterialInventoryCount;
if (returningWarehouseDetail.getDateOfManufacture()!=null){
MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCount(returningWarehouseDetail.getId(),returningWarehouseDetail.getDateOfManufacture());
}else{
@@ -600,7 +610,7 @@
}
- if(MaterialInventoryCount>0){
+ if(!MaterialInventoryCount.isEmpty()){
if (returningWarehouseDetail.getDateOfManufacture()!=null){
materialInventoryMapper.updateMaterialInventoryReturning(returningWarehouseDetail.getId(),singlePieceArea,totalArea,returningWarehouseDetail);
}else{
@@ -968,28 +978,29 @@
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(),
+ if(optimizeUses.getNotUseCount()>0){
+ 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;
}
- }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);
}
- materialInventoryMapper.updateMaterialInventoryAvailableInventoryOutMes(Long.valueOf(optimizeUses.getRawStockCode()),quantity);
- materialInventoryMapper.updateOptimizeUsesMes(optimizeUses.getId(),quantity);
//淇濆瓨鏃ュ織
Log log = new Log();
@@ -1012,7 +1023,223 @@
}
+ 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;
+ }
+
+ public Map<String, Object> mesOriginalSelect() {
+ Map<String, Object> map = new HashMap<>();
+ map.put("data", materialInventoryMapper.getSelectMaterialInventoryMes());
+ return map;
+ }
+
+ public String saveToExamineMaterialOutbound(Map<String,Object> object) {
+ String saveState = "true";
+ //璁剧疆鍥炴粴鐐�
+ Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+ String materialOutboundId = "";
+ String oddNumber;
+ if (object.get("materialOutboundId") != null) {
+ 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);
+ List<MaterialOutboundDetail> materialOutboundDetailList = JSONArray.parseArray(JSONObject.toJSONString(object.get("materialOutboundDetail")), MaterialOutboundDetail.class);
+ //鏌ヨ鍑哄簱鍗曟槸鍚﹀瓨鍦�
+ Integer MaterialOutboundConut = materialInventoryMapper.getMaterialOutboundCount(materialOutboundId);
+ if (MaterialOutboundConut != 0) {
+
+ List<MaterialOutboundDetail> materialOutboundDetailLists = materialInventoryMapper.getIsNotMaterialOutboundDetail(materialOutboundId);
+ if (!materialOutboundDetailLists.isEmpty()) {
+ for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailLists) {
+ //杩樺師鐗╂枡搴撳瓨鏁�
+ 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);
+ materialInventoryMapper.deleteMaterialLog(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());
+
+ String projectNo="";
+ if(materialOutboundDetail.getUseId()!=null){
+ projectNo = materialInventoryMapper.selectProjectNo(materialOutboundDetail.getUseId());
+ //淇敼浼樺寲宸ョ▼琛ㄥ嚭搴撴暟閲�
+ materialInventoryMapper.updateMaterialInventoryAvailableOptOut(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity());
+
+ }/*else{
+ //淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲�
+ materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
+ }*/
+
+ if(materialOutboundDetail.getUseId()!=null){
+ //淇敼鐗╂枡搴撳瓨鏁伴噺
+ materialInventoryMapper.updateMaterialInventoryInventoryPlanQuantityOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
+ }else{
+ materialInventoryMapper.updateMaterialInventoryInventoryOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
+ }
+
+ materialInventoryMapper.updateMaterialOutboundToExamine(oddNumber,1,object.get("userName").toString());
+ 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.setProjectNo(projectNo);
+ materialLog.setOperator(object.get("userName").toString());
+ materialLog.setOperateTime(LocalDate.now());
+ materialLogMapper.insert(materialLog);
+ }else{
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ return "false1";
+ }
+
+
+
+
+ }
+
+ }
+ logService.saveLog(log);
+
+ } catch (Exception e) {
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ //灏嗗紓甯镐紶鍏ユ暟鎹簱
+ SysError sysError = new SysError();
+ sysError.setError(e+Arrays.toString(e.getStackTrace()));
+ sysError.setFunc("saveMaterialOutbound");
+ sysErrorService.insert(sysError);
+ saveState = "false";
+
+ }
+ return saveState;
+
+ }
}
--
Gitblit v1.8.0