From 1e1c416c6aa6596feb333b75d882ffeede73d3c9 Mon Sep 17 00:00:00 2001
From: guoyujie <guoyujie@ng.com>
Date: 星期二, 08 四月 2025 17:37:34 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
---
north-glass-erp/northglass-erp/src/router/index.js | 5
north-glass-erp/northglass-erp/src/views/mm/stockReport/OptimizeOutboundReport.vue | 43 ++++
north-glass-erp/northglass-erp/src/lang/en.js | 2
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetAmount.vue | 88 ++++++++-
north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java | 7
north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml | 50 +++++
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue | 48 +++-
north-glass-erp/northglass-erp/src/lang/zh.js | 2
north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java | 11 +
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue | 2
north-glass-erp/src/main/java/com/example/erp/entity/mm/MaterialLog.java | 3
north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue | 1
north-glass-erp/northglass-erp/src/lang/ar.js | 2
north-glass-erp/northglass-erp/src/lang/ru.js | 2
north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java | 11
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java | 23 ++
north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml | 81 +++++++++
north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java | 3
north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java | 52 ++++
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetTrimming.vue | 73 +++++++-
20 files changed, 456 insertions(+), 53 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/lang/ar.js b/north-glass-erp/northglass-erp/src/lang/ar.js
index bc23913..61d0ae7 100644
--- a/north-glass-erp/northglass-erp/src/lang/ar.js
+++ b/north-glass-erp/northglass-erp/src/lang/ar.js
@@ -1116,6 +1116,8 @@
materialAdditionReport:"鐗╂枡鏂板鎶ヨ〃",
materialOutboundReport:"鐗╂枡鍑哄簱鎶ヨ〃",
materialReturnReport:"鐗╂枡杩斿簱鎶ヨ〃",
+ optimizeOutboundReport:"浼樺寲鍑哄簱鎶ヨ〃",
+ optimizeQuantity:"浼樺寲浣跨敤鏁伴噺",
},
components:{
addNewSignature :'兀囟賮 丕爻賲 噩丿賷丿',
diff --git a/north-glass-erp/northglass-erp/src/lang/en.js b/north-glass-erp/northglass-erp/src/lang/en.js
index ffa28f8..dd387e8 100644
--- a/north-glass-erp/northglass-erp/src/lang/en.js
+++ b/north-glass-erp/northglass-erp/src/lang/en.js
@@ -1116,6 +1116,8 @@
materialAdditionReport:"Material addition report",
materialOutboundReport:"Material delivery report",
materialReturnReport:"Material return report",
+ optimizeOutboundReport:"浼樺寲鍑哄簱鎶ヨ〃",
+ optimizeQuantity:"浼樺寲浣跨敤鏁伴噺",
},
components:{
addNewSignature :'Add label name',
diff --git a/north-glass-erp/northglass-erp/src/lang/ru.js b/north-glass-erp/northglass-erp/src/lang/ru.js
index a8eab33..37d09c1 100644
--- a/north-glass-erp/northglass-erp/src/lang/ru.js
+++ b/north-glass-erp/northglass-erp/src/lang/ru.js
@@ -1115,6 +1115,8 @@
materialAdditionReport:"鐗╂枡鏂板鎶ヨ〃",
materialOutboundReport:"鐗╂枡鍑哄簱鎶ヨ〃",
materialReturnReport:"鐗╂枡杩斿簱鎶ヨ〃",
+ optimizeOutboundReport:"浼樺寲鍑哄簱鎶ヨ〃",
+ optimizeQuantity:"浼樺寲浣跨敤鏁伴噺",
},
components:{
addNewSignature :'袛芯斜邪胁懈褌褜 懈屑褟 屑械褌泻懈',
diff --git a/north-glass-erp/northglass-erp/src/lang/zh.js b/north-glass-erp/northglass-erp/src/lang/zh.js
index 13c0e91..c7e6b2e 100644
--- a/north-glass-erp/northglass-erp/src/lang/zh.js
+++ b/north-glass-erp/northglass-erp/src/lang/zh.js
@@ -1126,6 +1126,8 @@
materialAdditionReport:"鐗╂枡鏂板鎶ヨ〃",
materialOutboundReport:"鐗╂枡鍑哄簱鎶ヨ〃",
materialReturnReport:"鐗╂枡杩斿簱鎶ヨ〃",
+ optimizeOutboundReport:"浼樺寲鍑哄簱鎶ヨ〃",
+ optimizeQuantity:"浼樺寲浣跨敤鏁伴噺",
},
components:{
addNewSignature :'鏂板鏍囩鍚�',
diff --git a/north-glass-erp/northglass-erp/src/router/index.js b/north-glass-erp/northglass-erp/src/router/index.js
index 187bd23..f85f0b3 100644
--- a/north-glass-erp/northglass-erp/src/router/index.js
+++ b/north-glass-erp/northglass-erp/src/router/index.js
@@ -1122,6 +1122,11 @@
component: () => import('../views/mm/stockReport/MaterialOutboundReport.vue'),
},
{
+ path: 'optimizeOutboundReport',
+ name: 'optimizeOutboundReport',
+ component: () => import('../views/mm/stockReport/OptimizeOutboundReport.vue'),
+ },
+ {
path: 'materialReturnReport',
name: 'materialReturnReport',
component: () => import('../views/mm/stockReport/MaterialReturnReport.vue'),
diff --git a/north-glass-erp/northglass-erp/src/views/mm/stockReport/OptimizeOutboundReport.vue b/north-glass-erp/northglass-erp/src/views/mm/stockReport/OptimizeOutboundReport.vue
new file mode 100644
index 0000000..73b72cc
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/stockReport/OptimizeOutboundReport.vue
@@ -0,0 +1,43 @@
+<script setup>
+
+import BasicTable from "@/components/BasicTable.vue"
+import request from "@/utils/request"
+import { ref} from "vue"
+import { useI18n } from 'vue-i18n'
+
+//璇█鑾峰彇
+const { t } = useI18n()
+
+const childrenData = ref({
+ columns:[
+ {type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
+ {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+ {field: 'projectNo', width: '120',title:t('ingredientsStock.projectNo'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+ {field: 'quantity', width: '140',title: t('ingredientsStock.outboundQuantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+ {field: 'useCount', width: '140',title: t('stockReport.optimizeQuantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+ {field: 'inventoryId',width: '100', title: t('ingredientsStock.id'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+ {field: 'materialName',width: '140', title: t('ingredientsStock.materialName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+ {field: 'width', width: '100',title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+ {field: 'height',width: '100', title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+ {field: 'thickness', width: '100',title: t('order.totalThickness'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+ {field: 'unit', width:'140', title: t('ingredients.unit'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+ {field: 'operator', width: '100',title: t('productStock.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+ {field: 'operateTime', width:'140', title: t('productStock.productionDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+
+ ],//琛ㄦ牸琛ㄥご瀛楁
+ data:[],//琛ㄦ牸鏁版嵁
+ url :'/materialInventory/getOptimizeOutboundReport/鐗╂枡鍑哄簱',
+ exportUrl :'/materialInventory/exportMaterialLogReport/鐗╂枡鍑哄簱',
+ exportName:t('stockReport.materialOutboundReport'),
+ footList:['quantity']
+})
+
+</script>
+
+<template>
+ <basic-table
+ :childrenData="childrenData"/>
+</template>
+
+<style scoped>
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue b/north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue
index 18408db..c27cc52 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue
@@ -65,6 +65,7 @@
<el-dropdown-item command="/main/stockReport/materialAdditionReport" >{{$t('stockReport.materialAdditionReport')}}</el-dropdown-item>
<el-dropdown-item command="/main/stockReport/materialOutboundReport" >{{ $t('stockReport.materialOutboundReport') }}</el-dropdown-item>
<el-dropdown-item command="/main/stockReport/materialReturnReport" >{{ $t('stockReport.materialReturnReport') }}</el-dropdown-item>
+ <el-dropdown-item command="/main/stockReport/optimizeOutboundReport" >{{ $t('stockReport.optimizeOutboundReport') }}</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue
index 16a748b..e0a7005 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue
@@ -45,10 +45,10 @@
{field: 'model', title: t('warehouseBasicData.type'),},
{field: 'leftTrim', title: '宸︿慨杈�',},
{field: 'downTrim', title: '涓嬩慨杈�',},
- {field: 'rigthTrim', title: '鍙充慨杈�',},
+ {field: 'rightTrim', title: '鍙充慨杈�',},
{field: 'upTrim', title: '涓婁慨杈�',},
{field: 'available_quantity', title: '搴撳瓨鏁伴噺',},
- {field: '', title: '鍔犲伐鏁伴噺',},
+ {field: 'processingQuantity', title: '鍔犲伐鏁伴噺',},
{field: 'name', title: '鍚嶇О',},
{field: 'producer', title: '渚涘簲鍟�',}
],//琛ㄥご鍙傛暟
@@ -131,12 +131,13 @@
const thickness = ref(route.params.thickNess);
const model = ref(route.params.model);
+let projectNo = ref(null);
-
-const selectMaterialStore = () =>{
- request.post(`/glassOptimize/materialStore/${thickness.value}/${model.value}`).then((res) => {
+const selectMaterialStore = async () =>{
+ request.post(`/glassOptimize/materialStore/${thickness.value}/${model.value}/${projectNo}`).then((res) => {
if (Number(res.code) === 200) {
const rawData = res.data.data;
+ const edgeTrimming = res.data.edgeTrimming;
if (Array.isArray(rawData) && rawData.length > 0) {
const formattedData = rawData.map(item => {
const formattedItem = {};
@@ -150,13 +151,28 @@
}
return formattedItem;
});
- const data = formattedData;
- data.forEach(item => {
- item.leftTrim = 0;
- item.downTrim = 0;
- item.rigthTrim = 0;
- item.upTrim = 0;
- });
+ if(edgeTrimming!=null){
+ const edgeTrimmingData = edgeTrimming.map(item => {
+ const edgeTrimmingItem = {};
+ for (const key in item) {
+ if (typeof item[key] === 'string') {
+ //鍘婚櫎瀛楃涓插睘鎬у�煎紑澶村拰缁撳熬鐨勫弻寮曞彿
+ edgeTrimmingItem[key] = item[key].replace(/^\"|\"$/g, '');
+ } else {
+ edgeTrimmingItem[key] = item[key];
+ }
+ }
+ return edgeTrimmingItem;
+ });
+ console.log(edgeTrimmingData)
+ formattedData.forEach(item => {
+ item.leftTrim = edgeTrimmingData[0].leftTrim;
+ item.downTrim = edgeTrimmingData[0].downTrim;
+ item.rightTrim = edgeTrimmingData[0].rightTrim;
+ item.upTrim = edgeTrimmingData[0].upTrim;
+ });
+ }
+
xGrid.value.loadData(formattedData);
gridOptions.data = formattedData;
} else {
@@ -169,7 +185,11 @@
};
onMounted(() => {
- selectMaterialStore();
+ if(route.params.projectNo!=null){
+ projectNo=route.params.projectNo
+ selectMaterialStore();
+ }
+
});
watch(() => props.receivedData, (newData) => {
@@ -222,7 +242,7 @@
// 浠� receivedData 涓幏鍙栧搴旂殑鍊兼潵鏇存柊琛ㄦ牸鏁版嵁椤�
leftTrim: Number(receivedData.quicksetLeft),
downTrim: Number(receivedData.quicksetBottom),
- rigthTrim: Number(receivedData.quicksetRight),
+ rightTrim: Number(receivedData.quicksetRight),
upTrim: Number(receivedData.quicksetTop),
};
updatedData.push(updatedItem);
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetAmount.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetAmount.vue
index 0928d90..10fccb5 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetAmount.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetAmount.vue
@@ -1,7 +1,48 @@
<script setup>
-import {ref} from "vue";
+import {onMounted, ref} from "vue";
import {defineEmits} from 'vue';
+import request from "@/utils/request";
+import {ElMessage} from "element-plus";
+onMounted(async() => {
+ await firstLoading()
+})
+
+const firstLoading = async() => {
+ request.post(`/glassOptimize/getConfiguration/纾ㄩ噺`).then((res) => {
+ if (res.code == "200") {
+ const rawData = res.data.data;
+ if (Array.isArray(rawData) && rawData.length > 0) {
+ const formattedData = rawData.map(item => {
+ const formattedItem = {};
+ for (const key in item) {
+ if (typeof item[key] === 'string') {
+ //鍘婚櫎瀛楃涓插睘鎬у�煎紑澶村拰缁撳熬鐨勫弻寮曞彿
+ formattedItem[key] = item[key].replace(/^\"|\"$/g, '');
+ } else {
+ formattedItem[key] = item[key];
+ }
+ }
+ return formattedItem;
+ });
+ quicksetLeft.value=formattedData[0].leftEdge
+ quicksetTop.value=formattedData[0].upEdge
+ quicksetRight.value=formattedData[0].rightEdge
+ quicksetBottom.value=formattedData[0].downEdge
+ controlValue.value=formattedData[0].quickEdge
+ if(formattedData[0].autoFillEdge=="true"){
+ check.value=true
+ }else{
+ check.value=false
+ }
+ minAutoLenght.value=formattedData[0].minAutoLenght
+
+ }
+ } else {
+ ElMessage.warning(res.msg)
+ }
+ });
+};
function setupComponent() {
// 鍚勪釜杈撳叆妗嗙粦瀹氱殑鍊硷紝鍒濆鍖栦负0
const quicksetTop = ref('0');
@@ -10,6 +51,7 @@
const quicksetLeft = ref('0');
// 鐢ㄤ簬鎺у埗鐨勮緭鍏ュ�硷紝鍒濆鍖栦负1
const controlValue = ref('1');
+ const minAutoLenght = ref('0');
const syncValues = () => {
// 灏嗘帶鍒跺�艰祴缁欏叾浠栧洓涓粍浠�
@@ -24,6 +66,7 @@
quicksetBottom,
quicksetLeft,
controlValue,
+ minAutoLenght,
syncValues
};
}
@@ -33,10 +76,11 @@
quicksetBottom,
quicksetLeft,
controlValue,
+ minAutoLenght,
syncValues
} = setupComponent();
-const check = ref(true)
+const check = ref()
const emit = defineEmits(['set-amount']);
const props = defineProps({
@@ -44,14 +88,36 @@
});
const setAmount = () => {
- const amountData = {
- quicksetTop: quicksetTop.value,
- quicksetRight: quicksetRight.value,
- quicksetBottom: quicksetBottom.value,
- quicksetLeft: quicksetLeft.value
- };
- emit('set-amount', amountData);
- props.closeDialog(2);
+ let json = "{"
+ json+='"left_edge":"'+quicksetLeft.value+'",'
+ json+='"up_edge":"'+quicksetTop.value+'",'
+ json+='"right_edge":"'+quicksetRight.value+'",'
+ json+='"down_edge":"'+quicksetBottom.value+'",'
+ json+='"auto_fill_edge":"'+check.value+'",'
+ json+='"quick_edge":"'+controlValue.value+'",'
+ json+='"min_auto_lenght":"'+minAutoLenght.value+'"'
+ json+="}"
+
+ let configuration={
+ json:json,
+ }
+
+ request.post(`/glassOptimize/saveConfiguration/纾ㄩ噺`,configuration).then((res) => {
+ if(res.code==200 && res.data===true){
+ const amountData = {
+ quicksetTop: quicksetTop.value,
+ quicksetRight: quicksetRight.value,
+ quicksetBottom: quicksetBottom.value,
+ quicksetLeft: quicksetLeft.value,
+ controlValue:controlValue.value,
+ minAutoLenght:minAutoLenght.value,
+ };
+ emit('set-amount', amountData);
+ props.closeDialog(2);
+ } else {
+ ElMessage.warning(res.msg)
+ }
+ });
};
</script>
@@ -81,7 +147,7 @@
<div style="margin-top: 30px">
<span>鎴愬搧杈归暱澶т簬绛変簬澶氬皯鏃惰嚜鍔ㄥ~鍏�(鍗曚綅: mm)</span>
<el-checkbox v-model="check" style="margin: 5px 0 0 12px;"/>
- <vxe-input style="width: 100px; height: 40px; margin-left: 5px" placeholder="0"/>
+ <vxe-input style="width: 100px; height: 40px; margin-left: 5px" v-model="minAutoLenght" placeholder=""/>
</div>
</div>
</div>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetTrimming.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetTrimming.vue
index f23bb1f..f12748d 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetTrimming.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetTrimming.vue
@@ -1,7 +1,42 @@
<script setup>
-import {ref} from "vue";
+import {onMounted, ref} from "vue";
import {defineEmits} from 'vue';
+import request from "@/utils/request";
+import {ElMessage} from "element-plus";
+
+onMounted(async() => {
+ await firstLoading()
+})
+
+const firstLoading = async() => {
+ request.post(`/glassOptimize/getConfiguration/淇竟`).then((res) => {
+ if (res.code == "200") {
+ const rawData = res.data.data;
+ if (Array.isArray(rawData) && rawData.length > 0) {
+ const formattedData = rawData.map(item => {
+ const formattedItem = {};
+ for (const key in item) {
+ if (typeof item[key] === 'string') {
+ //鍘婚櫎瀛楃涓插睘鎬у�煎紑澶村拰缁撳熬鐨勫弻寮曞彿
+ formattedItem[key] = item[key].replace(/^\"|\"$/g, '');
+ } else {
+ formattedItem[key] = item[key];
+ }
+ }
+ return formattedItem;
+ });
+ quicksetLeft.value=formattedData[0].leftTrim
+ quicksetTop.value=formattedData[0].upTrim
+ quicksetRight.value=formattedData[0].rightTrim
+ quicksetBottom.value=formattedData[0].downTrim
+
+ }
+ } else {
+ ElMessage.warning(res.msg)
+ }
+ });
+};
function setupComponent() {
// 鍚勪釜杈撳叆妗嗙粦瀹氱殑鍊硷紝鍒濆鍖栦负0
@@ -46,14 +81,34 @@
});
const setTrimming = () => {
- const dataToSend = {
- quicksetTop: quicksetTop.value,
- quicksetRight: quicksetRight.value,
- quicksetBottom: quicksetBottom.value,
- quicksetLeft: quicksetLeft.value
- };
- emit('send-data-event', dataToSend);
- props.closeDialog(3);
+ let json = "{"
+ json+='"left_trim":"'+quicksetLeft.value+'",'
+ json+='"up_trim":"'+quicksetTop.value+'",'
+ json+='"right_trim":"'+quicksetRight.value+'",'
+ json+='"down_trim":"'+quicksetBottom.value+'",'
+ json+='"auto_fill_trim":"'+true+'",'
+ json+='"quick_trim":"'+15+'"'
+ json+="}"
+
+ let configuration={
+ json:json,
+ }
+
+ request.post(`/glassOptimize/saveConfiguration/淇竟`,configuration).then((res) => {
+ if(res.code==200 && res.data===true){
+ const dataToSend = {
+ quicksetTop: quicksetTop.value,
+ quicksetRight: quicksetRight.value,
+ quicksetBottom: quicksetBottom.value,
+ quicksetLeft: quicksetLeft.value
+ };
+ emit('send-data-event', dataToSend);
+ props.closeDialog(3);
+ } else {
+ ElMessage.warning(res.msg)
+ }
+ });
+
};
</script>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
index 1b806bb..71f17f3 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
@@ -342,7 +342,7 @@
{title: t('basicData.operate'), width: 140, slots: { default: 'button_slot' },fixed:"left"},
{ type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 },
{field: 'reportingWorkId', width: 120, title: t('reportingWorks.reportingWorkId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
- {field: 'reportingWorkTime',width: 120, title: t('reportingWorks.reportingWorkTime') ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+ {field: 'reportingWorkTime',width: 120, title: t('reportingWorks.reportingWorkTime') ,showOverflow:"ellipsis" ,},
{field: 'orderId', width: 130,title: t('order.orderId') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
{field: 'processId', width: 160,title: t('processCard.processId') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
{field: 'order.project',width: 150, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java b/north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java
index 13617d9..02ccdce 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java
@@ -194,7 +194,12 @@
return Result.seccess(materialInventoryService.cancelMaterialAdditionRecord(object));
}
-
+ @ApiOperation("浼樺寲鐗╂枡搴撳瓨璁板綍鏌ヨ鎺ュ彛")
+ @SaCheckPermission("warehouseReport.search")
+ @PostMapping("/getOptimizeOutboundReport/{type}/{pageNum}/{pageSize}/{selectDate}")
+ public Result getOptimizeOutboundReport(@PathVariable String type,@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody MaterialLog materialLog){
+ return Result.seccess(materialInventoryService.getOptimizeOutboundReport(type,pageNum,pageSize,selectDate,materialLog));
+ }
}
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java b/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
index d7eb966..b970adf 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
@@ -49,11 +49,11 @@
//搴撳瓨淇℃伅
@ApiOperation("搴撳瓨淇℃伅鎺ュ彛")
- @PostMapping ("/materialStore/{thickness}/{model}")
+ @PostMapping ("/materialStore/{thickness}/{model}/{projectNumber}")
public Result materialStore(
@PathVariable String thickness,
- @PathVariable String model ){
- return Result.seccess(glassOptimizeService.materialStoreSv(thickness,model));
+ @PathVariable String model,@PathVariable String projectNumber ){
+ return Result.seccess(glassOptimizeService.materialStoreSv(thickness,model,projectNumber));
}
@@ -257,6 +257,11 @@
return Result.seccess(glassOptimizeService.getConfiguration(type));
}
+ @ApiOperation("淇墖纾ㄩ噺淇敼")
+ @PostMapping("/saveConfiguration/{type}")
+ public Result saveConfiguration(@PathVariable String type, @RequestBody Map<String,Object> object){
+ return Result.seccess(glassOptimizeService.saveConfiguration(object,type));
+ }
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/mm/MaterialLog.java b/north-glass-erp/src/main/java/com/example/erp/entity/mm/MaterialLog.java
index 5d74b7a..3ecc6bb 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/mm/MaterialLog.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/mm/MaterialLog.java
@@ -50,5 +50,8 @@
@ExcelProperty("鍒涘缓鏃堕棿")
private LocalDate operateTime;
+ @ExcelProperty("浼樺寲浣跨敤鏁伴噺")
+ private Integer useCount;
+
}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java
index 6efb6fe..af97ddb 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java
@@ -266,4 +266,7 @@
String selectProjectNo(@Param("useId") Integer useId);
+ List<MaterialLog> getOptimizeOutboundReport(Integer offset, Integer pageSize, String startDate, String endDate, MaterialLog materialLog, String type);
+
+ Map<String,Integer> getOptimizeOutboundReportTotal(Integer offset, Integer pageSize, String startDate, String endDate, MaterialLog materialLog, String type);
}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java
index a2f73b3..ec119fb 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java
@@ -3,6 +3,7 @@
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.pp.OptimizeProjectMange;
+import com.example.erp.entity.pp.OptimizeUse;
import com.example.erp.entity.sd.OrderGlassDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -24,8 +25,10 @@
//搴撳瓨淇℃伅
List<Map<String, Object>> materialStoreMp(String thickness, String model);
+ List<Map<String, Object>> materialStoreOptimizeUse(String projectNumber);
+
//宸ュ崟绠$悊鏌ヨ鏈浆宸ュ崟鏁版嵁
- List<OrderGlassDetail> selectWordOrder(Date selectTime1, Date selectTime2, OrderGlassDetail orderGlassDetail);
+ List<Map<String, Object>> selectWordOrder(Date selectTime1, Date selectTime2, OrderGlassDetail orderGlassDetail);
//鍒涘缓宸ョ▼鑶滅郴鏌ヨ
List<Map<String, Object>> getFlowCardListMp(String optionVal, Integer radio);
@@ -90,4 +93,10 @@
Integer sumQuantity, Double sumArea, String userName,Integer processIdCount, String processId, Integer type);
List<Map<String, Object>> getTemperedConfiguration();
+
+ List<Map<String, Object>> getGrindingTrimming();
+
+ List<Map<String, Object>> getEdgeTrimming();
+
+ Boolean updateOptimizeConfig(String json,Integer type);
}
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 59a3aa2..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
@@ -1082,7 +1082,26 @@
}
+ 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;
+ }
}
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
index b80c6b2..8c480d4 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
@@ -7,18 +7,20 @@
import com.example.erp.common.RabbitMQUtil;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.pp.OptimizeProjectMange;
+import com.example.erp.entity.userInfo.Log;
+import com.example.erp.entity.userInfo.SysError;
import com.example.erp.mapper.pp.GlassOptimizeMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.io.IOException;
import java.math.BigDecimal;
import java.sql.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.text.DecimalFormat;
+import java.util.*;
import java.util.concurrent.TimeoutException;
@Service
@@ -126,8 +128,18 @@
//宸ョ▼淇℃伅
public Map<String, Object> projectInfoSv(String projectNo) {
+ Map<String, Object> stringObjectMap = glassOptimizeMapper.selectProjectCount(projectNo);
Map<String, Object> map = new HashMap<>();
- map.put("data", glassOptimizeMapper.projectInfoMp(projectNo));
+ if(Integer.parseInt(stringObjectMap.get("state").toString())<10){
+ map.put("data", glassOptimizeMapper.projectInfoMp(projectNo));
+ map.put("grindingTrimming", glassOptimizeMapper.getEdgeTrimming());
+ }else if(stringObjectMap.get("state").equals(10)){
+ map.put("data", glassOptimizeMapper.projectInfoMp(projectNo));
+ map.put("grindingTrimming", glassOptimizeMapper.getEdgeTrimming());
+ }else{
+ map.put("data", glassOptimizeMapper.projectInfoMp(projectNo));
+ map.put("grindingTrimming", null);
+ }
return map;
}
@@ -140,9 +152,17 @@
}
//搴撳瓨淇℃伅
- public Map<String, Object> materialStoreSv(String thickness, String model) {
+ public Map<String, Object> materialStoreSv(String thickness, String model, String projectNumber) {
+ Map<String, Object> stringObjectMap = glassOptimizeMapper.selectProjectCount(projectNumber);
Map<String, Object> map = new HashMap<>();
- map.put("data", glassOptimizeMapper.materialStoreMp(thickness,model));
+ if(Integer.parseInt(stringObjectMap.get("state").toString())<=10){
+ map.put("data", glassOptimizeMapper.materialStoreMp(thickness,model));
+ map.put("edgeTrimming", glassOptimizeMapper.getEdgeTrimming());
+ }else{
+ map.put("data", glassOptimizeMapper.materialStoreOptimizeUse(projectNumber));
+ map.put("edgeTrimming", null);
+ }
+
return map;
}
@@ -306,11 +326,27 @@
if(type.equals("閽㈠寲")){
map.put("data", glassOptimizeMapper.getTemperedConfiguration());
}else if(type.equals("纾ㄩ噺")){
- map.put("data", glassOptimizeMapper.getTemperedConfiguration());
+ map.put("data", glassOptimizeMapper.getGrindingTrimming());
}else if(type.equals("淇竟")){
- map.put("data", glassOptimizeMapper.getTemperedConfiguration());
+ map.put("data", glassOptimizeMapper.getEdgeTrimming());
}
return map;
}
+
+ public Boolean saveConfiguration(Map<String,Object> object,String type) {
+ String json = "";
+ if (object.get("json") != null) {
+ json = object.get("json").toString();
+ }
+ if(type.equals("閽㈠寲")){
+ glassOptimizeMapper.updateOptimizeConfig(json,1);
+ } else if (type.equals("淇竟")) {
+ glassOptimizeMapper.updateOptimizeConfig(json,5);
+ }else if (type.equals("纾ㄩ噺")) {
+ glassOptimizeMapper.updateOptimizeConfig(json,4);
+ }
+ return true;
+
+ }
}
diff --git a/north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml b/north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml
index fc889c2..0a1965e 100644
--- a/north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml
+++ b/north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml
@@ -1149,5 +1149,86 @@
select project_no from pp.optimize_use where id=#{useId};
</select>
+ <select id="getOptimizeOutboundReport">
+ SELECT
+ ml.operation_order_number,
+ ml.project_no,
+ ml.inventory_id,
+ ml.material_name,
+ ml.unit,
+ ml.width,
+ ml.height,
+ ml.thickness,
+ ml.quantity,
+ round(ml.width*ml.height*ml.quantity/1000000,2) as area,
+ ou.use_count,
+ ou.not_use_count,
+ ml.operator,
+ ml.operate_time
+ FROM
+ mm.material_log AS ml
+ LEFT JOIN pp.optimize_use AS ou ON ou.project_no = ml.project_no
+ AND ou.raw_stock_code = ml.inventory_id
+ WHERE
+ ou.project_no IS NOT NULL
+ AND date( ml.operate_time )>= #{startDate} and date(ml.operate_time) <= #{endDate}
+ and ml.operate_type=#{type}
+
+ <if test="materialLog.operationOrderNumber != null and materialLog.operationOrderNumber != ''">
+ and ml.operation_order_number regexp #{materialLog.operationOrderNumber}
+ </if>
+ <if test="materialLog.useCount != null and materialLog.useCount != ''">
+ and ou.use_count regexp #{materialLog.useCount}
+ </if>
+ <if test="materialLog.quantity != null and materialLog.quantity != ''">
+ and ml.quantity regexp #{materialLog.quantity}
+ </if>
+ <if test="materialLog.width != null and materialLog.width != ''">
+ and ml.width regexp REGEXP_REPLACE(#{materialLog.width},'\\.0+$','')
+ </if>
+ <if test="materialLog.height != null and materialLog.height != ''">
+ and ml.height regexp REGEXP_REPLACE(#{materialLog.height},'\\.0+$','')
+ </if>
+ <if test="materialLog.thickness != null and materialLog.thickness != ''">
+ and ml.thickness regexp REGEXP_REPLACE(#{materialLog.thickness},'\\.0+$','')
+ </if>
+
+ <if test="materialLog.inventoryId != null and materialLog.inventoryId != ''">
+ and ml.inventory_id regexp #{materialLog.inventoryId}
+ </if>
+
+ <if test="materialLog.materialName != null and materialLog.materialName != ''">
+ and ml.material_name regexp #{materialLog.materialName}
+ </if>
+ <if test="materialLog.producer != null and materialLog.producer != ''">
+ and ml.producer regexp #{materialLog.producer}
+ </if>
+ <if test="materialLog.unit != null and materialLog.unit != ''">
+ and ml.unit regexp #{materialLog.unit}
+ </if>
+ <if test="materialLog.operator != null and materialLog.operator != ''">
+ and ml.operator regexp #{materialLog.operator}
+ </if>
+ <if test="materialLog.remarks != null and materialLog.remarks != ''">
+ and ml.remarks regexp #{materialLog.remarksr}
+ </if>
+ order by ml.id desc
+ limit #{offset},#{pageSize};
+ </select>
+
+ <select id="getOptimizeOutboundReportTotal">
+ SELECT
+ CEILING(count(ml.id)/#{pageSize}) as 'pageTotal',
+ count(ml.id) as 'total'
+
+ FROM
+ mm.material_log AS ml
+ LEFT JOIN pp.optimize_use AS ou ON ou.project_no = ml.project_no
+ AND ou.raw_stock_code = ml.inventory_id
+ WHERE
+ ou.project_no IS NOT NULL
+ AND date( ml.operate_time )>= #{startDate} and date(ml.operate_time) <= #{endDate}
+ and ml.operate_type=#{type}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
index 69d1eab..6f27e16 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -76,7 +76,8 @@
f.technology_number ,
g.glass_child ,
g.icon,
- op.project_name
+ op.project_name,
+ d.processing_note
FROM
((pp.flow_card AS f
LEFT JOIN sd.order_detail AS d ON (((f.order_id = d.order_id) AND (f.order_number = d.order_number))))
@@ -126,7 +127,7 @@
SELECT
i.id AS id,
i.producer AS producer,
- i.available_quantity AS available_quantity,
+ i.available_quantity-i.plan_quantity AS available_quantity,
JSON_EXTRACT(s.json, '$.width') AS width,
JSON_EXTRACT(s.json, '$.height') AS height,
JSON_EXTRACT(s.json, '$.thickness') AS thickness,
@@ -142,12 +143,29 @@
(
(`s`.`type` = '鍘熺墖')
AND (`i`.`optimize_state` = 1)
- AND (`i`.`available_quantity` > 0)
+ AND (`i`.`available_quantity`-i.plan_quantity > 0)
AND JSON_EXTRACT(s.json, '$.thickness') = #{thickness}
AND JSON_EXTRACT(s.json, '$.model') = #{model}
)
ORDER BY
`i`.`available_quantity` DESC ;
+ </select>
+
+
+ <select id="materialStoreOptimizeUse">
+ select ms.id AS id,
+ ou.use_count AS processingQuantity,
+ ou.width,
+ ou.height,
+ ou.left_trim as leftTrim,
+ ou.down_trim as downTrim,
+ ou.up_trim as upTrim,
+ ou.right_trim as rightTrim,
+ JSON_EXTRACT(ms.json, '$.thickness') AS thickness,
+ JSON_EXTRACT(ms.json, '$.name') AS name,
+ JSON_EXTRACT(ms.json, '$.model') AS model
+ from pp.optimize_use ou
+ left join mm.material_store ms on ou.raw_stock_code=ms.id where project_no=#{projectNumber} and state=1
</select>
<select id="selectWordOrder" resultMap="wordOrderMap">
@@ -684,4 +702,30 @@
JSON_EXTRACT( oc.config_detail, '$.y_space' ) as y_space
from pp.optimize_admin oa left join pp.optimize_config oc on oa.h_id=oc.id where name='admin'
</select>
+
+ <select id="getEdgeTrimming">
+ select JSON_EXTRACT( oc.config_detail, '$.left_trim' ) as leftTrim,
+ JSON_EXTRACT( oc.config_detail, '$.up_trim' ) as upTrim,
+ JSON_EXTRACT( oc.config_detail, '$.right_trim' ) as rightTrim,
+ JSON_EXTRACT( oc.config_detail, '$.down_trim' ) as downTrim,
+ JSON_EXTRACT( oc.config_detail, '$.auto_fill_trim' ) as autoFillTrim,
+ JSON_EXTRACT( oc.config_detail, '$.quick_trim' ) as quickTrim
+ from pp.optimize_config oc where config_type=5
+ </select>
+
+ <select id="getGrindingTrimming">
+ select JSON_EXTRACT( oc.config_detail, '$.left_edge' ) as leftEdge,
+ JSON_EXTRACT( oc.config_detail, '$.up_edge' ) as upEdge,
+ JSON_EXTRACT( oc.config_detail, '$.right_edge' ) as rightEdge,
+ JSON_EXTRACT( oc.config_detail, '$.down_edge' ) as downEdge,
+ JSON_EXTRACT( oc.config_detail, '$.auto_fill_edge' ) as autoFillEdge,
+ JSON_EXTRACT( oc.config_detail, '$.quick_edge' ) as quickEdge,
+ JSON_EXTRACT( oc.config_detail, '$.min_auto_lenght' ) as minAutoLenght
+ from pp.optimize_config oc where config_type=4
+ </select>
+
+ <update id="updateOptimizeConfig">
+ UPDATE pp.optimize_config set config_detail=#{json},create_time=now()
+ where config_type=#{type}
+ </update>
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0