From cb865364d29991abf85b7694a16d359dc7af913c Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期三, 10 七月 2024 15:40:22 +0800
Subject: [PATCH] 提交发货计算方式修改订单右键递增功能
---
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