From f46f83ab2ce1bd2f34c81cb5750e6d5ce6ffb306 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期四, 12 十二月 2024 08:30:24 +0800
Subject: [PATCH] 工程创建界面功能完成
---
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java | 1
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue | 360 +++++++++++++++++++----------
north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml | 137 +++++++++--
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCardDetail.vue | 59 +++-
north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java | 31 ++
north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java | 12 +
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue | 25 +
north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java | 53 ++++
8 files changed, 509 insertions(+), 169 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue
index 9994920..e0bd895 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectCreate.vue
@@ -6,6 +6,20 @@
import {ref} from "vue";
import {useI18n} from "vue-i18n";
+let projectRow = ref({
+ processId:null,
+ technologyNumber:null
+})
+
+
+const handleProcessIdUpdate = newProcessId => {
+ projectRow.value.processId = newProcessId;
+};
+
+const handleTechnologyNumberUpdate = newTechnologyNumber => {
+ projectRow.value.technologyNumber = newTechnologyNumber;
+};
+
</script>
@@ -14,11 +28,16 @@
<div style="width: 100%; height: 100%;">
<div id="processCard">
- <process-card/>
+ <process-card :process-id="projectRow.processId===null?null:projectRow.processId"
+ :technology-number="projectRow.technologyNumber===null?null:projectRow.technologyNumber"
+ @updateProcessId="handleProcessIdUpdate"
+ @updateTechnologyNumber="handleTechnologyNumberUpdate"
+ />
</div>
- <div id="processCard-detail">
- <process-card-detail/>
+ <div id="processCard-detail" >
+ <process-card-detail :process-id="projectRow.processId===null?null:projectRow.processId"
+ :technology-number="projectRow.technologyNumber===null?null:projectRow.technologyNumber"/>
</div>
<div id="project-list">
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue
index 72b7383..5dedb14 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue
@@ -1,25 +1,93 @@
<script setup>
-import {reactive, ref} from "vue";
+import {onMounted, reactive, ref} from "vue";
import {useI18n} from "vue-i18n";
import {Search} from "@element-plus/icons-vue";
import request from "@/utils/request";
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
-const { t } = useI18n()
+import useUserInfoStore from "@/stores/userInfo";
+
+const {t} = useI18n()
+const userStore = useUserInfoStore()
+const username = userStore.user.userName
+let rowClickIndex = ref(null)
+
+let props = defineProps({
+ processId: null,
+ technologyNumber: null
+})
+
+//鑶滅郴
+const optionVal = ref()
+//鑶滅郴
+const projectNmae = ref()
+//宸ョ▼缂栧彿涓暟
+let projectId = ref()
+//宸ョ▼缂栧彿
+const Id = ref()
+let oddNumbers = ref()
+
+//瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
+const titleSelectJson = ref({
+ processType: [],
+})
+
+const selectGlassType = () => {
+ //鏌ヨ鑶滅郴
+ request.post(`/glassOptimize/selectGlassType`).then((res) => {
+ if (res.code == 200) {
+ titleSelectJson.value.processType = res.data.data
+ } else {
+ ElMessage.warning(res.msg)
+ }
+ })
+}
+//鏌ヨ鏈�鏂板伐绋嬪彿
+const getProjectId = () => {
+ request.post(`/glassOptimize/getProjectId`).then((res) => {
+ if (res.code == 200) {
+ projectId = res.data.data[0].project_no
+ // 鑾峰彇瀛楃涓茬殑鏈�鍚庝袱浣嶆暟瀛�
+ let maximum = projectId.slice(-2);
+ let lastTwoInteger = parseInt(maximum, 10);
+ // 璁剧疆涓や綅涓嶅琛�0
+ let formattedNumber = (lastTwoInteger + 1).toString().padStart(2, '0');
+ // 鏍煎紡鍖栧綋鍓嶆棩鏈熶负 "yyMMdd"
+ let currentDate = new Date();
+ let formattedDate = currentDate.getFullYear().toString().slice(-2) +
+ (currentDate.getMonth() + 1).toString().padStart(2, '0') +
+ currentDate.getDate().toString().padStart(2, '0');
+
+ // 鎷兼帴鎴愭渶缁堢殑瀛楃涓�
+ oddNumbers.value = 'P' + formattedDate + formattedNumber;
+
+ } else {
+ ElMessage.warning(res.msg)
+ }
+ })
+}
+
+
+onMounted(() => {
+ getProjectId();
+ selectGlassType();
+
+})
+
const xGrid = ref()
const gridOptions = reactive({
- height:'100%',
+ height: '100%',
loading: false,
- border: "full",//琛ㄦ牸鍔犺竟妗�
+ border: "full",//琛ㄦ牸鍔犺竟妗�
keepSource: true,//淇濇寔婧愭暟鎹�
align: 'center',//鏂囧瓧灞呬腑
- stripe:true,//鏂戦┈绾�
- rowConfig: {isCurrent: true, isHover: true,height: 30, useKey: true},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+ stripe: true,//鏂戦┈绾�
+ rowConfig: {isCurrent: true, isHover: true, height: 30, useKey: true},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
id: 'ProcessCard',
- scrollX:{enabled: true},
- scrollY:{ enabled: true ,gt:0},//寮�鍚櫄鎷熸粴鍔�
- showOverflow:true,
+ scrollX: {enabled: true},
+ scrollY: {enabled: true, gt: 0},//寮�鍚櫄鎷熸粴鍔�
+ showOverflow: true,
columnConfig: {
resizable: true,
useKey: true
@@ -35,156 +103,202 @@
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},
+ columns: [
+
{type: 'checkbox', fixed: "left", title: t('basicData.check'), width: 80},
- {field: 'process_id',width: 150, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'technology_number',width: 70, title: '灞�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'TotalFloors',width: 150, title: '鎬诲眰鏁�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'TotalNumber',width: 150, title: '瑙勬牸',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'quantity',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'shape',width: 150, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'glass_child',width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'project', width:150, title: t('order.project'), showOverflow: "ellipsis"},
- {field: 'area',width: 150, title: t('order.area'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+ {
+ field: 'process_id',
+ width: 150,
+ title: t('processCard.processId'),
+ filters: [{data: ''}],
+ slots: {filter: 'num1_filter'},
+ sortable: true
+ },
+ {
+ field: 'technology_number',
+ width: 70,
+ title: '灞�',
+ filters: [{data: ''}],
+ slots: {filter: 'num1_filter'},
+ sortable: true
+ },
+ {
+ field: 'TotalFloors',
+ width: 150,
+ title: '鎬诲眰鏁�',
+ filters: [{data: ''}],
+ slots: {filter: 'num1_filter'},
+ sortable: true
+ },
+ {
+ field: 'TotalNumber',
+ width: 150,
+ title: '瑙勬牸',
+ filters: [{data: ''}],
+ slots: {filter: 'num1_filter'},
+ sortable: true
+ },
+ {
+ field: 'quantity',
+ width: 150,
+ title: t('order.quantity'),
+ filters: [{data: ''}],
+ slots: {filter: 'num1_filter'},
+ sortable: true
+ },
+ {
+ field: 'shape',
+ width: 150,
+ title: t('order.shape'),
+ filters: [{data: ''}],
+ slots: {filter: 'num1_filter'},
+ sortable: true
+ },
+ {
+ field: 'glass_child',
+ width: 150,
+ title: t('order.product'),
+ filters: [{data: ''}],
+ slots: {filter: 'num1_filter'},
+ sortable: true
+ },
+ {field: 'project', width: 150, title: t('order.project'), showOverflow: "ellipsis"},
+ {
+ field: 'area',
+ width: 150,
+ title: t('order.area'),
+ filters: [{data: ''}],
+ slots: {filter: 'num1_filter'},
+ sortable: true
+ },
],//琛ㄥご鍙傛暟
- data:null,//琛ㄦ牸鏁版嵁
+ data: null,//琛ㄦ牸鏁版嵁
toolbarConfig: {
buttons: [],
- slots:{
+ slots: {
buttons: "toolbar_buttons"
},
},
+
})
-let emit = defineEmits([
- 'changeDialog'
-])
-//鑶滅郴鍒楄〃
-const optionVal = ref('')
-const options = [
- {
- value: '鐧界幓',
- label: '鐧界幓',
- },
- {
- value: '鐏伴暅',
- label: '鐏伴暅',
- },
- {
- value: 'Low-e',
- label: 'Low-e',
- },
-]
+
+const gridEvents = {
+ cellClick({row}) {
+ rowClickIndex.value = row
+ // Emit 浜嬩欢灏嗘洿鏂板悗鐨勫�间紶閫掔粰鐖剁粍浠�
+ emit('updateProcessId', rowClickIndex.value.process_id);
+ emit('updateTechnologyNumber', rowClickIndex.value.technology_number);
+ }
+}
+const emit = defineEmits(['updateProcessId', 'updateTechnologyNumber']);
+
//灏忓渾鐐瑰崟閫夋
let radio = ref(1);
-const selectFlowCardList = ()=>{
+const selectFlowCardList = () => {
request.post(`/glassOptimize/getFlowCardList/${optionVal.value}/${radio.value}`).then((res) => {
- if(res.code==200){
+ if (res.code == 200) {
xGrid.value.loadData(res.data.data)
- }else{
+ } else {
ElMessage.warning(res.msg)
}
})
}
+//鍒涘缓宸ョ▼
+const addProject = () => {
+ const $table = xGrid.value
+ if ($table) {
+ const selectRecords = $table.getCheckboxRecords()
+ if (selectRecords.length == 0) {
+ ElMessage.warning(t('reportingWorks.selectProcessCardData'))
+ return;
+ }
+ let projectData = ref({
+ projectdetail: selectRecords,
+ userName : username
+ })
+ request.post(`/glassOptimize/addProject/${optionVal.value}/${oddNumbers.value}/${projectNmae.value}`, projectData.value).then((res) => {
+ if (res.code == 200 && res.data === true) {
+ ElMessage.success(t('basicData.msg.saveSuccess'))
+ } else {
+ ElMessage.warning(res.msg)
+ }
+ })
+
+ }
+}
</script>
<template>
<div style="width: 100%;height: 110%; margin-top: -36px">
<h1>娴佺▼鍗″垪琛�
- <span style="margin-left: 140px;font-size: 14px">宸ョ▼缂栧彿锛�</span>
- <vxe-input disabled placeholder="" size="small"></vxe-input>
- <span style="font-size: 14px">宸ョ▼鍚嶇О锛�</span>
- <vxe-input placeholder="" size="small"></vxe-input>
- <el-button type="primary" style="margin-left: 20px">鍒涘缓</el-button>
+ <span style="margin-left: 140px;font-size: 14px">宸ョ▼缂栧彿锛�</span>
+<!-- <span>{{oddNumbers}}</span>-->
+ <el-input disabled v-model="oddNumbers" style="width: 100px"></el-input>
+<!-- <vxe-input :disabled="isDisabled" placeholder="" v-model="oddNumbers" size="small" style="color:black;"></vxe-input> -->
+ <span style="font-size: 14px">宸ョ▼鍚嶇О锛�</span>
+ <vxe-input placeholder="" v-model="projectNmae" size="small"></vxe-input>
+ <el-button style="margin-left: 20px" type="primary" @click="addProject">鍒涘缓</el-button>
</h1>
<vxe-grid
- size="small"
- @filter-change="filterChanged"
- height="100%"
- class="mytable-scrollbar"
- ref="xGrid"
- v-bind="gridOptions"
- v-on="gridEvents"
- >
- <template #num2_filter="{ column, $panel }">
- <div>
- <div v-for="(option, index) in column.filters" :key="index">
- <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')" @change="changeFilterEvent($event, option, $panel)">
- <vxe-option value="0" :label="$t('basicData.unchecked')"></vxe-option>
- <vxe-option value="1" :label="$t('basicData.selected')"></vxe-option>
- </vxe-select>
- </div>
+ ref="xGrid"
+ class="mytable-scrollbar"
+ height="100%"
+ size="small"
+ v-bind="gridOptions"
+ v-on="gridEvents"
+ @filter-change="filterChanged"
+ >
+ <template #num2_filter="{ column, $panel }">
+ <div>
+ <div v-for="(option, index) in column.filters" :key="index">
+ <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')"
+ @change="changeFilterEvent($event, option, $panel)">
+ <vxe-option :label="$t('basicData.unchecked')" value="0"></vxe-option>
+ <vxe-option :label="$t('basicData.selected')" value="1"></vxe-option>
+ </vxe-select>
</div>
- </template>
+ </div>
+ </template>
- <template #num1_filter="{ column, $panel }">
- <div>
- <div v-for="(option, index) in column.filters" :key="index">
- <input
+ <template #num1_filter="{ column, $panel }">
+ <div>
+ <div v-for="(option, index) in column.filters" :key="index">
+ <input
- type="type"
- v-model="option.data"
- @keyup.enter.native="$panel.confirmFilter()"
- @input="changeFilterEvent($event, option, $panel)"/>
- </div>
+ v-model="option.data"
+ type="type"
+ @input="changeFilterEvent($event, option, $panel)"
+ @keyup.enter.native="$panel.confirmFilter()"/>
</div>
- </template>
+ </div>
+ </template>
- <template #toolbar_buttons>
- <h1>鑶滅郴绛涢�夛細</h1>
- <el-select
- placeholder="閫夋嫨鑶滅郴"
- style="margin-left:10px; width: 170px "
- ref="getSelect"
- v-model="optionVal"
- clearable
- class="m-2"
- @change="getWorkOrder"
- >
-
- <el-option
- v-for="item in options"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- />
- </el-select>
- <el-button type="primary" :icon="Search" style="margin-left: 20px" @click="selectFlowCardList">鏌ヨ</el-button>
- <vxe-radio-group v-model="radio" style="margin-left: 20px">
- <vxe-radio label="1" content="鍏ㄩ儴"></vxe-radio>
- <vxe-radio label="2" content="姝e崟"></vxe-radio>
- <vxe-radio label="3" content="琛ュ崟"></vxe-radio>
- </vxe-radio-group>
- </template>
+ <template #toolbar_buttons>
+ <h1>鑶滅郴绛涢�夛細</h1>
+ <el-select v-model="optionVal" clearable default-value="default_city" placeholder="閫夋嫨鑶滅郴"
+ style="width: 120px">
+ <el-option
+ v-for="item in titleSelectJson['processType']"
+ :key="item.id"
+ :label="item.glassType"
+ :value="item.glassType"
+ />
+ </el-select>
+ <el-button :icon="Search" style="margin-left: 20px" type="primary" @click="selectFlowCardList">鏌ヨ</el-button>
+ <vxe-radio-group v-model="radio" style="margin-left: 20px">
+ <vxe-radio content="鍏ㄩ儴" label="1"></vxe-radio>
+ <vxe-radio content="姝e崟" label="2"></vxe-radio>
+ <vxe-radio content="琛ュ崟" label="3"></vxe-radio>
+ </vxe-radio-group>
+ </template>
</vxe-grid>
</div>
</template>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCardDetail.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCardDetail.vue
index 4a9e093..044e9f3 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCardDetail.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCardDetail.vue
@@ -1,8 +1,14 @@
<script setup>
-import {reactive, ref} from "vue";
+import {onMounted, reactive, ref, watch} from "vue";
import {useI18n} from "vue-i18n";
+import request from "@/utils/request";
+import {ElMessage} from "element-plus";
const { t } = useI18n()
+let props = defineProps({
+ processId:null,
+ technologyNumber:null
+})
const xGrid = ref()
const gridOptions = reactive({
@@ -54,34 +60,53 @@
]
},*/
columns:[
- {field: 'id',width: 70, title: '搴忓彿',filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }},
- {field:'state',width: 150,title: t('order.width'),filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }},
- {type: 'seq',width: 150,title: t('order.height')},
- {field: 'id',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'id',width: 150, title: t('order.buildingNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'id',width: 150, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'id',width: 150, title: t('order.grossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
- {field: 'id',width: 150, title: t('craft.TrademarkAttribute'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+ {field: 'order_number',width: 70, title: '搴忓彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+ {field:'child_width',width: 150,title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+ {field: 'child_height',width: 150,title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+ {field: 'quantity',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+ {field: 'building_number',width: 150, title: t('order.buildingNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+ {field: 'shape',width: 150, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+ {field: 'grossArea',width: 150, title: t('order.grossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+ {field: 'separation',width: 150, title: t('craft.TrademarkAttribute'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
],//琛ㄥご鍙傛暟
data:null,//琛ㄦ牸鏁版嵁
toolbarConfig: {
buttons: [],
slots:{
- buttons: "toolbar_buttons"
},
},
})
-let emit = defineEmits([
- 'changeDialog'
-])
-let ProjectName = ref('')
-const changeOrderType = async ()=>{
- await emit('changeDialog',ProjectName.value)
- ProjectName.value = null
+
+
+onMounted(()=>{
+
+})
+
+watch(
+
+ () => props.processId,
+ (newValue, oldValue) => {
+if (props.processId!=null){
+ getWorkOrder()
}
+ }
+);
+
+const getWorkOrder = () => {
+ if (props.processId!=null || props.processId!=""){
+ request.post(`/glassOptimize/getProcessCardDetail/${props.processId}/${props.technologyNumber}`).then((res) => {
+ if(res.code==200){
+ xGrid.value.loadData(res.data.data)
+ }else{
+ ElMessage.warning(res.msg)
+ }
+ })
+ }
+
+}
</script>
<template>
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 9484a42..19dc67d 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
@@ -1,5 +1,6 @@
package com.example.erp.controller.pp;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import com.example.erp.common.Constants;
import com.example.erp.common.Result;
import com.example.erp.entity.pp.OptimizeProjectMange;
@@ -11,6 +12,7 @@
import org.springframework.web.bind.annotation.*;
import java.sql.Date;
+import java.util.Map;
@RestController
@Api(value="浼樺寲绠$悊controller",tags={"浼樺寲绠$悊鎿嶄綔鎺ュ彛"})
@@ -102,4 +104,33 @@
return Result.seccess(glassOptimizeService.selectComputeDetailSv(processId));
}
+ //鍒涘缓宸ョ▼鏌ヨ娴佺▼鍗℃槑缁�
+ @ApiOperation("鍒涘缓宸ョ▼鏌ヨ娴佺▼鍗℃槑缁�")
+ @PostMapping ("/getProcessCardDetail/{processId}/{technologyNumber}")
+ public Result getProcessCardDetail(
+ @PathVariable String processId,
+ @PathVariable Integer technologyNumber){
+ return Result.seccess(glassOptimizeService.getProcessCardDetailSv(processId,technologyNumber));
+ }
+
+ @ApiOperation("鑶滅郴鏌ヨ")
+ @PostMapping ("/selectGlassType")
+ public Result selectGlassType(){
+ return Result.seccess(glassOptimizeService.selectGlassTypeSv());
+ }
+
+ @ApiOperation("鏈�鏂板伐绋嬪彿鏌ヨ")
+ @PostMapping ("/getProjectId")
+ public Result getProjectId(){
+ return Result.seccess(glassOptimizeService.getProjectIdSv());
+ }
+ @ApiOperation("鍒涘缓宸ョ▼鎺ュ彛")
+ @PostMapping("/addProject/{optionVal}/{projectId}/{projectNmae}")
+ public Result addProject(
+ @PathVariable String optionVal,
+ @PathVariable String projectId,
+ @PathVariable String projectNmae,
+ @RequestBody Map<String,Object> object){
+ return Result.seccess(glassOptimizeService.addProjectSv(optionVal,projectId,projectNmae,object));
+ }
}
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 6438c2f..91b894c 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
@@ -39,4 +39,16 @@
//妯℃嫙璁$畻娴佺▼鍗¤鎯�
List<Map<String, Object>> selectComputeDetailMp(String processId);
+
+ List<Map<String, Object>> getProcessCardDetailmMp(String processId, Integer technologyNumber);
+
+ List<Map<String, Object>> selectGlassTypeMp();
+
+ List<Map<String, Object>> getProjectIdSv();
+
+ Boolean updateFlowCardProject(String processId, String technologyNumber, String projectId);
+
+ Double getSelectArea(String processId, String technologyNumber);
+
+ Boolean addProjectMp(String projectId, String projectNmae, String glassThickness, String glassType, Integer sumQuantity, Double sumArea, String userName);
}
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 8a9cb51..a1690a1 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
@@ -1,7 +1,10 @@
package com.example.erp.service.pp;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.pp.OptimizeProjectMange;
import com.example.erp.mapper.pp.GlassOptimizeMapper;
import org.springframework.beans.factory.annotation.Autowired;
@@ -9,6 +12,7 @@
import java.sql.Date;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
@Service
@@ -86,4 +90,53 @@
return map;
}
+ public Map<String, Object> getProcessCardDetailSv(String processId, Integer technologyNumber) {
+ Map<String, Object> map = new HashMap<>();
+ map.put("data", glassOptimizeMapper.getProcessCardDetailmMp(processId,technologyNumber));
+ return map;
+ }
+
+ public Map<String, Object> selectGlassTypeSv() {
+ Map<String, Object> map = new HashMap<>();
+ map.put("data", glassOptimizeMapper.selectGlassTypeMp());
+ return map;
+ }
+
+
+ public Map<String, Object> getProjectIdSv() {
+ Map<String, Object> map = new HashMap<>();
+ map.put("data", glassOptimizeMapper.getProjectIdSv());
+ return map;
+ }
+
+ public Boolean addProjectSv(String optionVal, String projectId, String projectNmae, Map<String, Object> object) {
+ String userName = "";
+ if (object.get("userName") != null) {
+ userName = object.get("userName").toString();
+ }
+ Double sumArea = (double) 0;
+ Double area = (double) 0;
+ Integer sumQuantity = 0;
+ List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("projectdetail")), FlowCard.class);
+ if (!flowCardList.isEmpty()) {
+ for (FlowCard flowCard : flowCardList) {
+ //缁欐祦绋嬪崱琛ㄦ坊鍔犲搴旂殑宸ョ▼鍙�
+ glassOptimizeMapper.updateFlowCardProject(flowCard.getProcessId(),flowCard.getTechnologyNumber(),projectId);
+ area = glassOptimizeMapper.getSelectArea(flowCard.getProcessId(),flowCard.getTechnologyNumber());
+ sumArea += area;
+ sumQuantity +=flowCard.getQuantity();
+ }
+ int index = optionVal.indexOf("mm");
+ // 鑾峰彇 "mm" 鍓嶉潰鐨勯儴鍒�
+ String glass_thickness = optionVal.substring(0, index);
+ // 鑾峰彇 "mm" 鍚庨潰鐨勯儴鍒�
+ String glass_type = optionVal.substring(index + 2);
+ glassOptimizeMapper.addProjectMp(projectId,projectNmae,glass_thickness,glass_type,sumQuantity,sumArea,userName);
+ return true;
+ }
+ else {
+ return false;
+
+ }
+ }
}
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
index f77a9b7..fa93989 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -311,7 +311,6 @@
//鍒ゆ柇鏄惁澶т簬褰撳墠鏁伴噺骞朵笖鎶涘嚭寮傚父
if (processNum < (reportingWorkDetail.getBreakageQuantity() + reportingWorkDetail.getCompletedQuantity())) {
- System.out.println(processNum+"--"+reportingWorkDetail.getBreakageQuantity()+"--"+reportingWorkDetail.getCompletedQuantity());
Map<String, Object> map = new HashMap<>();
map.put("orderNumber", reportingWorkDetail.getOrderNumber());
map.put("technologyNumber", reportingWorkDetail.getOrderNumber());
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 c72d362..7fc144f 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -166,31 +166,48 @@
</select>
<select id="getFlowCardListMp">
- select fc.process_id,
- fc.technology_number,
- 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 position(#{optionVal} in ogd.glass_child)
- GROUP BY fc.process_id, fc.technology_number
- ORDER BY fc.process_id, fc.technology_number
+ SELECT
+ fc.process_id,
+ fc.technology_number,
+ 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,
+ CONCAT( JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.thickness' )), JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.color' )) ) AS glassType
+ 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
+ LEFT JOIN sd.product_detail AS pd ON pd.prod_id = od.product_id
+ AND pd.glass_sort = fc.technology_number
+ WHERE
+ CONCAT( JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.thickness' )), JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.color' )) )= #{optionVal}
+ and ISNULL(fc.project_no)
+ GROUP BY
+ fc.process_id,
+ fc.technology_number
+ ORDER BY
+ fc.process_id,
+ fc.technology_number
</select>
<!--宸ョ▼绠$悊-->
@@ -334,4 +351,74 @@
p.state IN (1, 2)
AND f.process_id = #{processId}
</select>
+
+ <select id="getProcessCardDetailmMp">
+ select fc.order_number,
+ ogd.child_width,
+ ogd.child_height,
+ fc.quantity,
+ od.building_number,IF(od.shape!=2,'鏅舰','寮傚舰') as shape,
+ ROUND(ogd.child_width*ogd.child_height*fc.quantity/1000000,2) as grossArea,
+ pd.separation
+ from pp.flow_card as fc
+ 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 sd.order_detail as od on od.order_id=ogd.order_id and od.order_number=ogd.order_number
+ left join sd.product_detail as pd on pd.prod_id=od.product_id and pd.glass_sort=fc.technology_number
+ where fc.process_id=#{processId} and fc.technology_number=#{technologyNumber}
+ group by fc.process_id,fc.order_number,fc.technology_number
+ order by fc.order_number,fc.technology_number
+ </select>
+
+ <select id="selectGlassTypeMp">
+ SELECT
+ JSON_UNQUOTE(JSON_EXTRACT(type, '$.lowE')) AS lowE,
+ JSON_UNQUOTE(JSON_EXTRACT(type, '$.color')) AS color,
+ JSON_UNQUOTE(JSON_EXTRACT(type, '$.thickness')) AS thickness,
+ JSON_UNQUOTE(JSON_EXTRACT(type, '$.craft')) AS craft,
+ JSON_UNQUOTE(JSON_EXTRACT(type, '$.position')) AS position,
+ CONCAT(
+ JSON_UNQUOTE(JSON_EXTRACT(type, '$.thickness')),
+ JSON_UNQUOTE(JSON_EXTRACT(type, '$.color'))
+ ) AS glassType
+ FROM pp.v_optimize_create_process_type
+ GROUP BY
+ thickness,
+ color
+ ORDER BY
+ CAST(REPLACE(JSON_UNQUOTE(JSON_EXTRACT(type, '$.thickness')), 'mm', '') AS UNSIGNED);
+ </select>
+
+ <select id="getProjectIdSv">
+ SELECT IFNULL(
+ (SELECT project_no
+ FROM pp.optimize_project
+ WHERE DATE(create_time) = CURDATE()
+ ORDER BY create_time DESC
+ LIMIT 1), '00') AS project_no;
+ </select>
+
+ <update id="updateFlowCardProject">
+ UPDATE pp.flow_card set project_no=#{projectId}
+ where process_id=#{processId} and technology_number=#{technologyNumber}
+ </update>
+
+ <select id="getSelectArea">
+ select
+ ROUND(SUM(ogd.child_width*ogd.child_height*fc.quantity)/1000000,2) as grossArea
+ from pp.flow_card as fc
+ 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 sd.order_detail as od on od.order_id=ogd.order_id and od.order_number=ogd.order_number
+ left join sd.product_detail as pd on pd.prod_id=od.product_id and pd.glass_sort=fc.technology_number
+ where fc.process_id=#{processId} and fc.technology_number=#{technologyNumber}
+ group by fc.process_id,fc.technology_number
+ </select>
+
+ <insert id="addProjectMp">
+ insert into pp.optimize_project (project_no, project_name, order_glass_type, order_glass_thickness)
+ values (#{projectId}, #{projectNmae}, #{glassType}, #{glassThickness})
+ </insert>
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0