From e50c85b217446357771f99f34c0d3c5263a3759a Mon Sep 17 00:00:00 2001
From: guoyuji <guoyujie@ng.com>
Date: 星期一, 02 十二月 2024 11:03:49 +0800
Subject: [PATCH] Merge branch 'master' of http://bore.pub:10439/r/ERP_override
---
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/GlassComputed.vue | 31 +++++++
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeCard.vue | 88 ++++++++++++---------
north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml | 39 +++++++++
north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java | 8 ++
north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java | 4 +
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue | 20 +++-
north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java | 11 ++
7 files changed, 153 insertions(+), 48 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/GlassComputed.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/GlassComputed.vue
index d794264..f824caa 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/GlassComputed.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/GlassComputed.vue
@@ -2,6 +2,33 @@
import ComputeCard from "@/views/pp/glassOptimize/page/ComputeCard.vue";
import ComputeDetail from "@/views/pp/glassOptimize/page/ComputeDetail.vue";
import Compute from "@/views/pp/glassOptimize/page/Compute.vue";
+import { ref } from 'vue';
+import {ElMessage} from "element-plus";
+import request from "@/utils/request";
+
+
+// 鐢ㄤ簬瀛樺偍浠庡悗绔幏鍙栧埌鐨勬暟鎹紝鍒濆鍖栦负绌烘暟缁�
+const receivedData = ref([]);
+const handleFetchData = async (projectNumber) => {
+ try {
+ const res = await request.post(`/glassOptimize/selectProjectCompute/${projectNumber}`);
+ if (Number(res.code) === 200 && res.data && res.data.data) {
+ receivedData.value = res.data.data;
+ } else {
+ console.error('璇锋眰鍑虹幇闂锛岀姸鎬佺爜锛�', res.code, '锛岄敊璇俊鎭細', res.msg);
+ if (res.code === 404) {
+ ElMessage.error('鏈壘鍒板搴斿伐绋嬪彿鐨勬暟鎹紝璇锋鏌ヨ緭鍏ユ槸鍚︽纭�');
+ } else if (res.code === 500) {
+ ElMessage.error('鏈嶅姟鍣ㄥ唴閮ㄥ嚭鐜伴敊璇紝璇风◢鍚庡啀璇�');
+ } else {
+ ElMessage.warning(res.msg);
+ }
+ }
+ } catch (error) {
+ console.error('璇锋眰鍑洪敊', error);
+ ElMessage.error('缃戠粶杩炴帴鍑虹幇闂锛岃妫�鏌ョ綉缁滆缃�');
+ }
+};
</script>
@@ -9,11 +36,11 @@
<div style="width: 100%; height: 100%;">
<div id="compute">
- <compute/>
+ <compute @fetch-data="handleFetchData" />
</div>
<div id="computeCard">
- <compute-card/>
+ <compute-card :table-data="receivedData" />
</div>
<div id="computeDetail">
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
index 51999ee..ae83d7c 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
@@ -77,11 +77,8 @@
buttons: "toolbar_buttons"
},
},
-
})
-let emit = defineEmits([
- 'changeDialog'
-])
+
// 杩涘害鏉¢鑹插拰鎸夐挳鍔犲噺
const percentage1 = ref(80)
@@ -128,6 +125,16 @@
},
]
+// 瀹氫箟鍝嶅簲寮忔暟鎹紝鐢ㄤ簬缁戝畾宸ョ▼鍙疯緭鍏ユ鐨勫��
+const projectNumber = ref('');
+
+let emit = defineEmits(['changeDialog', 'fetch-data']);
+
+const handleSearchClick = () => {
+ // 閫氳繃 $emit 瑙﹀彂鑷畾涔変簨浠讹紝灏嗗伐绋嬪彿浼犻�掔粰鐖剁粍浠讹紝鐢辩埗缁勪欢鍘昏皟鐢ㄦ帴鍙h幏鍙栨暟鎹�
+ emit('fetch-data', projectNumber.value);
+};
+
</script>
@@ -137,12 +144,13 @@
<div id="title" style="margin-top: -10px">
<span>
宸ョ▼缂栧彿
- <vxe-select size="small" style="margin-left: 20px" clearable></vxe-select>
+ <vxe-input size="small" style="margin-left: 20px" clearable v-model="projectNumber"></vxe-input>
<el-button
type="primary"
:icon="Search"
style="margin-left: 20px"
- @click="">{{$t('basicData.search') }}
+ @click="handleSearchClick"
+ >{{$t('basicData.search') }}
</el-button>
</span>
<span style="float: right ; margin-right: 120px">
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeCard.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeCard.vue
index 9d44723..debeba0 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeCard.vue
@@ -1,9 +1,17 @@
<script setup>
-import {reactive, ref} from "vue";
+import {nextTick, onMounted, reactive, ref, watch} from "vue";
import {useI18n} from "vue-i18n";
const { t } = useI18n()
const xGrid = ref()
+
+const checkboxCellRender = reactive({
+ name: 'VxeCheckboxGroup',
+ options: [
+ { label: '鍏佽妯帓', value: '1' },
+ { label: '閽㈠寲', value: '2' },
+ ]
+})
const gridOptions = reactive({
@@ -33,39 +41,19 @@
mode: 'row',
showStatus: true
},
- /*formConfig: {
- data: {
- width: '',
- height: '',
- quantity: ''
- },
- items: [
- { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } },
- { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } },
- { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } },
- {
- itemRender: {
- name: 'VxeButtonGroup',
- options: [
- { type: 'submit', content: t('craft.sure'), status: 'primary' },
- { type: 'reset', content: t('product.msg.reset') }
- ]
- }
- }
- ]
- },*/
+
columns:[
{type:'expand',fixed:"left",slots: { content:'content' },width: 50},
- {field: 'checkbox', title: '鍏佽妯帓', width: 100},
- {field: 'checkbox', title: '閽㈠寲', width: 70},
- {field: 'processId',width: 150, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'id',width: 70, title: '灞�',filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }},
- {field: 'id',width: 150, title: '鎬诲眰鏁�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'id',width: 100, title: '瑙勬牸',filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }},
- {field: 'quantity',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'orderDetail.productName',width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'orderDetail.computeGrossArea',width: 150, title: t('order.area'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: '',width: 70, title: 'merge'}
+ {field: 'check', title: '閫夋嫨', width: 200, cellRender: checkboxCellRender },
+ {field: 'process_id',width: 150, title: t('processCard.processId'), sortable: true},
+ {field: 'technology_number',width: 70, title: '灞�', sortable: true},
+ {field: 'TotalFloors',width: 150, title: '鎬诲眰鏁�', sortable: true},
+ {field: 'TotalNumber',width: 150, title: '瑙勬牸', sortable: true},
+ {field: 'quantity',width: 150, title: t('order.quantity'), sortable: true},
+ {field: 'glass_child',width: 150, title: t('order.product'), sortable: true},
+ {field: 'project', width:150, title: t('order.project'), showOverflow: "ellipsis"},
+ {field: 'area',width: 150, title: t('order.area'), sortable: true},
+
],//琛ㄥご鍙傛暟
data:null,//琛ㄦ牸鏁版嵁
@@ -80,14 +68,37 @@
})
let emit = defineEmits([
'changeDialog'
-])
-let Membrane = ref('閫夋嫨鑶滅郴')
+]);
-const changeOrderType = async ()=>{
- await emit('changeDialog',Membrane.value)
- Membrane.value = null
-}
+const props = defineProps({
+ tableData: Array
+});
+onMounted(() => {
+ if (xGrid.value) {
+ const grid = xGrid.value;
+ if (typeof grid.setDirty === 'function') {
+ grid.setDirty(true);
+ }
+ } else {
+ console.error('vxe-grid 缁勪欢瀹炰緥鏈幏鍙栧埌锛屽彲鑳芥寕杞藉嚭鐜伴棶棰�');
+ }
+});
+
+watch(() => props.tableData, async (newData) => {
+ if (Array.isArray(newData)) {
+ gridOptions.data = newData;
+ await nextTick();
+ if (xGrid.value) {
+ const grid = xGrid.value;
+ if (typeof grid.refresh === 'function') {
+ grid.refresh();
+ }
+ }
+ } else {
+ console.error('浼犻�掔粰琛ㄦ牸鐨勬暟鎹牸寮忎笉绗﹀悎瑕佹眰锛屾湡鏈涙槸鏁扮粍鏍煎紡');
+ }
+});
</script>
<template>
@@ -100,7 +111,6 @@
class="mytable-scrollbar"
ref="xGrid"
v-bind="gridOptions"
- v-on="gridEvents"
>
<template #num2_filter="{ column, $panel }">
<div>
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 40a3a25..7022879 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
@@ -68,4 +68,12 @@
return Result.seccess(glassOptimizeService.deleteProject(projectNumber));
}
+ //妯℃嫙璁$畻宸ョ▼鍙锋煡璇�
+ @ApiOperation("妯℃嫙璁$畻宸ョ▼鍙锋煡璇�")
+ @PostMapping ("/selectProjectCompute/{projectNumber}")
+ public Result selectProjectCompute(
+ @PathVariable String projectNumber){
+ return Result.seccess(glassOptimizeService.selectProjectComputeSv(projectNumber));
+ }
+
}
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 2559086..c57fa23 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
@@ -4,6 +4,7 @@
import com.example.erp.entity.pp.OptimizeProjectMange;
import com.example.erp.entity.sd.OrderGlassDetail;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
import java.sql.Date;
import java.util.List;
@@ -26,4 +27,7 @@
//鍒犻櫎宸ョ▼
int deleteProjectMp(String projectNumber);
+
+ //妯℃嫙璁$畻宸ョ▼鍙锋煡璇�
+ List<Map<String, Object>> selectProjectComputeMp(@Param("projectNo")String projectNumber);
}
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 18b11ed..32e97d8 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
@@ -55,4 +55,13 @@
Map<String, Object> map = new HashMap<>();
map.put("data", glassOptimizeMapper.getProjectListMp());
return map;
- }}
+ }
+
+ //妯℃嫙璁$畻宸ョ▼鍙锋煡璇�
+ public Map<String, Object>selectProjectComputeSv(String projectNumber) {
+ Map<String, Object> map = new HashMap<>();
+ map.put("data", glassOptimizeMapper.selectProjectComputeMp(projectNumber));
+ return map;
+ }
+
+}
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 ffa719f..4d401ea 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -212,4 +212,43 @@
p.project_no
</select>
+ <!--妯℃嫙璁$畻鏌ヨ-->
+ <select id="selectProjectComputeMp">
+ SELECT
+ fc.process_id,
+ fc.technology_number,
+ fc.project_no,
+ fcss.TotalFloors,
+ COUNT(fc.order_number) AS TotalNumber,
+ SUM(fc.quantity) AS quantity,
+ ROUND(SUM(od.width * od.height * fc.quantity / 1000000), 2) AS area,
+ o.project,
+ ogd.glass_child,
+ od.shape
+ FROM
+ pp.flow_card AS fc
+ LEFT JOIN sd.`order` AS o ON fc.order_id = o.order_id
+ LEFT JOIN sd.order_detail AS od ON od.order_id = fc.order_id AND od.order_number = fc.order_number
+ LEFT JOIN sd.order_glass_detail AS ogd
+ ON ogd.order_id = fc.order_id AND ogd.order_number = fc.order_number AND
+ ogd.technology_number = fc.technology_number
+ LEFT JOIN (
+ SELECT
+ fcs.process_id,
+ fcs.order_number,
+ COUNT(DISTINCT fcs.technology_number) AS TotalFloors
+ FROM
+ pp.flow_card AS fcs
+ GROUP BY
+ fcs.process_id, fcs.order_number
+ ) AS fcss
+ ON fcss.process_id = fc.process_id AND fcss.order_number = fc.order_number
+ WHERE
+ fc.project_no = #{projectNo}
+ GROUP BY
+ fc.process_id, fc.technology_number
+ ORDER BY
+ fc.process_id, fc.technology_number;
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0