From cad671a443f34b411ed4a69cb94490b1121102ce Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期二, 04 三月 2025 17:02:56 +0800
Subject: [PATCH] 优化版图显示、钢化模拟计算保存、结果显示
---
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java | 209 ++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 195 insertions(+), 14 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 39d7ce8..3f94c04 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,17 +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;
@@ -22,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;
@@ -73,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());
}*/
@@ -107,10 +114,10 @@
materialInventoryMapper.insertMaterialOutboundDetail(materialOutboundDetail, oddNumber, materialOutboundDetailMaximum + 1);
//淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲�
materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
- /*if(materialOutboundDetail.getUseId()!=null){
+ if(materialOutboundDetail.getUseId()!=null){
//淇敼浼樺寲宸ョ▼琛ㄥ嚭搴撴暟閲�
materialInventoryMapper.updateMaterialInventoryAvailableOptOut(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity());
- }else{
+ }/*else{
//淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲�
materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
}*/
@@ -163,8 +170,8 @@
}
- 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 {
@@ -187,15 +194,27 @@
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="";
@@ -226,7 +245,7 @@
sysError.setError(e+Arrays.toString(e.getStackTrace()));
sysError.setFunc("saveMaterialInventory");
sysErrorService.insert(sysError);
- saveState = false;
+ saveState = "false";
}
return saveState;
@@ -314,14 +333,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);
@@ -755,6 +829,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;
+ }
@@ -821,6 +945,63 @@
+ @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;
+ }
--
Gitblit v1.8.0