Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
| | |
| | | //返工管理 |
| | | path: 'rework', |
| | | name: 'rework', |
| | | component: () => import('../views/pp/Rework/Rework.vue'), |
| | | component: () => import('../views/pp/rework/Rework.vue'), |
| | | children:[ |
| | | |
| | | { |
| | |
| | | 'code':'add' |
| | | } |
| | | ], |
| | | import: false, |
| | | /*import: false, |
| | | export: true, |
| | | print: true, |
| | | print: true,*/ |
| | | zoom: true, |
| | | custom: true |
| | | } |
| | |
| | | },{ |
| | | 'name': '领出记录','code':'out', |
| | | }], |
| | | import: false, |
| | | /*import: false, |
| | | export: true, |
| | | print: true, |
| | | print: true,*/ |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | |
| | | status: 'primary', |
| | | 'code':'ver' |
| | | }], |
| | | import: false, |
| | | /*import: false, |
| | | export: true, |
| | | print: true, |
| | | print: true,*/ |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | |
| | | 'name': '返工记录', |
| | | 'code':'rework' |
| | | }], |
| | | import: false, |
| | | /*import: false, |
| | | export: true, |
| | | print: true, |
| | | print: true,*/ |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | |
| | | pageSize : 10 |
| | | }) |
| | | |
| | | |
| | | |
| | | //第一次调用 |
| | | //第一次调用1 |
| | | request.post(`/FinishedGoodsInventory/getSelectAllocate/1/${total.pageSize}`,filterData.value).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | |
| | | {'name': '确认调拨',status: 'primary','code':'edit'}, |
| | | {'name': '调拨记录','code':'record'} |
| | | ], |
| | | import: false, |
| | | /*import: false, |
| | | export: true, |
| | | print: true, |
| | | print: true,*/ |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | |
| | | { 'code' :'rework','name':'成品返工',status: 'primary'}, |
| | | |
| | | ], |
| | | import: false, |
| | | /*import: false, |
| | | export: true, |
| | | print: true, |
| | | print: true,*/ |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | |
| | | 'name': '反审',status: 'primary', |
| | | 'code':'add' |
| | | }], |
| | | import: false, |
| | | /*import: false, |
| | | export: true, |
| | | print: true, |
| | | print: true,*/ |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | |
| | | request.post(`/FinishedGoodsInventory/getSelectOperateRecord/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal= res.data.total.pageTotal |
| | | |
| | | selectDate.value = res.data.selectDate |
| | | pageNum.value=1 |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading=false |
| | |
| | | 'name': '反审',status: 'primary', |
| | | 'code':'rework' |
| | | }], |
| | | import: false, |
| | | /*import: false, |
| | | export: true, |
| | | print: true, |
| | | print: true,*/ |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | |
| | | <script setup> |
| | | |
| | | import {reactive, ref} from "vue"; |
| | | import {onMounted, reactive, ref} from "vue"; |
| | | import {useRouter} from 'vue-router' |
| | | import request from "@/utils/request"; |
| | | import {ElMessage} from "element-plus"; |
| | | import deepClone from "@/utils/deepClone"; |
| | | import {changeFilterEvent,filterChanged} from "@/hook" |
| | | import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove"; |
| | | |
| | | let router = useRouter() |
| | | const getTableRow = (row, type) => { |
| | | switch (type) { |
| | | case 'edit' : { |
| | | alert('我接收到子组件传送的编辑信息') |
| | | //router.push({path: '/main/processCard/AddProcessCard', query: { id: row.id }}) |
| | | break |
| | | } |
| | | case 'delete': { |
| | | alert('我接收到子组件传送的删除信息') |
| | | break |
| | | } |
| | | case 'setType': { |
| | | alert('我接收到子组件传送的排版状态') |
| | | break |
| | | } |
| | | } |
| | | } |
| | | |
| | | //定义页面总页数 |
| | | let pageTotal=ref('') |
| | |
| | | let produceList = ref([]) |
| | | //定义当前页数 |
| | | let pageNum=$ref(1) |
| | | const xGrid = ref(); |
| | | let cellArea = ref() |
| | | |
| | | const getRewokAddData = () => { |
| | | request.post(`/reportData/rework/add/query/${pageNum}/100`,filterData.value).then((res) => { |
| | | |
| | | MessageShow(filterData.value); |
| | | return ; |
| | | let filterData = ref({ |
| | | |
| | | if (res.code === 200) { |
| | | pageTotal.value = res.data.total |
| | | xGrid.value.loadData(res.data.data) |
| | | }) |
| | | |
| | | |
| | | //定义接收加载表头下拉数据 |
| | | const titleSelectJson = ref({ |
| | | }) |
| | | |
| | | //第一次调用 |
| | | request.post(`/rework/getSelectRework/${pageNum}/100`,filterData.value).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | |
| | | produceList = deepClone(res.data) |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | | |
| | | |
| | | MessageShow(res.msg,'warning'); |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | //表尾求和 |
| | |
| | | exportConfig: {}, |
| | | scrollY: {enabled: true},//开启虚拟滚动 |
| | | showOverflow: true, |
| | | menuConfig: { |
| | | body: { |
| | | options: [ |
| | | [ |
| | | { code: 'copyChecked', name: '选中相同', prefixIcon: 'vxe-icon-copy', visible: true, disabled: false }, |
| | | ] |
| | | ] |
| | | } |
| | | }, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | //remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {title: '操作', width: 70, slots: {default: 'button_slot'}, fixed: "left"}, |
| | | {field: 'select',type:'checkbox',title: '选择', width: 80,fixed:"left"}, |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | |
| | | {field: 'reworkTeams', width: 120, title: '返工班组', editRender: {name: 'input', attrs: {placeholder: ''}}}, |
| | | { |
| | | field: 'salesOrderNo', |
| | | width: 120, |
| | | title: '销售单号', |
| | | sortable: true, |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'} |
| | | }, |
| | | { |
| | | field: 'processCardNo', |
| | | width: 120, |
| | | title: '流程卡号', |
| | | sortable: true, |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'} |
| | | }, |
| | | { |
| | | field: 'entryName', |
| | | width: 120, |
| | | title: '项目名称', |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | {field: 'batch', width: 80, title: '批次', sortable: true, showOverflow: "ellipsis"}, |
| | | {field: 'serialNumber', width: 80, title: '序号', sortable: true}, |
| | | {field: 'singlePieceName', width: 120, title: '单片名称', sortable: true}, |
| | | {field: 'marking', width: 80, title: '标记', sortable: true, showOverflow: "ellipsis"}, |
| | | {field: 'pieces', width: 90, title: '片标记', sortable: true}, |
| | | {field: 'number', width: 80, title: '数量', sortable: true}, |
| | | {field: 'width', width: 80, title: '宽', sortable: true}, |
| | | {field: 'height', width: 80, title: '高', sortable: true}, |
| | | {field: 'shape', width: 80, title: '形状', sortable: true}, |
| | | {field: 'type', width: 100, title: '返工工序', sortable: true}, |
| | | {field: 'type', width: 100, title: '返工类型', sortable: true}, |
| | | {field: 'damage', width: 120, title: '返工原因', sortable: true}, |
| | | {field: 'device', width: 120, title: '责任设备', sortable: true}, |
| | | {field: 'teams', width: 120, title: '责任班组', sortable: true}, |
| | | {field: 'area', width: 120, title: '返工面积', sortable: true}, |
| | | {field: 'qualityInspector', width: 100, title: '质检员', sortable: true} |
| | | {field: 'reworkTeam', width: 120, title: '返工班组', slots: {default: 'responsibleTeam_default', edit: 'responsibleTeam'}, editRender: {}}, |
| | | {field: 'orderId', width: 120, title: '销售单号', sortable: true, showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'processId', width: 120, title: '流程卡号', sortable: true, filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'project', width: 120, title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'batch', width: 80, title: '批次', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged}, |
| | | {field: 'orderNumber', width: 80, title: '序号', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'productName', width: 120, title: '单片名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'technologyNumber', width: 80, title: '标记', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }, showOverflow: "ellipsis",filterMethod:filterChanged}, |
| | | {field: 'glassAddress', width: 90, title: '片标记', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'breakageQuantity', width: 120, title: '次破数量', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'reworkNum',width:120, title: '返工数量',editRender: { name: 'input', attrs: { placeholder: '' } },filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'width', width: 80, title: '宽', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'height', width: 80, title: '高', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'shape', width: 80, title: '形状', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'reworkProcesses', width: 100, title: '返工工序', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'reworkType', width: 100, title: '返工类型', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'reworkReason', width: 120, title: '返工原因', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'responsibleEquipment', width: 120, title: '责任设备', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'responsibleTeam', width: 120, title: '责任班组', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'area', width: 120, title: '返工面积', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'qualityInsPector', width: 100, title: '质检员', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged} |
| | | ],//表头按钮 |
| | | |
| | | toolbarConfig: { |
| | | // buttons: [{ |
| | | // name:'保存' |
| | | // }], |
| | | buttons: [ |
| | | {'code': 'add', 'name': '保存',status: 'primary',icon: 'vxe-icon-save'} |
| | | ], |
| | | import: false, |
| | | export: true, |
| | | print: true, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | data: [ |
| | | { |
| | | |
| | | reworkNumber: 'FG20202020', |
| | | salesOrderNo: 'NG23010101', |
| | | processCardNo: 'NG23010101A01', |
| | | entryName: 'xxxx', |
| | | batch: '二批三', |
| | | serialNumber: '1', |
| | | area: '23.11', |
| | | qualityInspector: "张三", |
| | | number: '1', |
| | | singlePieceName: '6mm白玻平钢(外)', |
| | | marking: '1', |
| | | pieces: '(外)', |
| | | width: '575', |
| | | height: "2241", |
| | | shape: '普形', |
| | | type: '机器', |
| | | damage: '气泡超标', |
| | | device: 'XXX', |
| | | reworkProcess: '切割', |
| | | }, |
| | | { |
| | | |
| | | reworkNumber: 'FG20203333', |
| | | salesOrderNo: 'NG23010101', |
| | | processCardNo: 'NG23010101A01', |
| | | entryName: 'xxxx', |
| | | batch: '二批三', |
| | | serialNumber: '1', |
| | | area: '23.11', |
| | | qualityInspector: "张三", |
| | | number: '1', |
| | | singlePieceName: '6mm白玻平钢(外)', |
| | | marking: '1', |
| | | pieces: '(外)', |
| | | width: '575', |
| | | height: "2241", |
| | | shape: '普形', |
| | | type: '机器', |
| | | damage: '气泡超标', |
| | | reworkProcess: '磨边', |
| | | device: 'XXX' |
| | | }, |
| | | ],//table body实际数据 |
| | | //脚部求和 |
| | | footerMethod({columns, data}) {//页脚函数 |
| | | let footList = ['total', 'TotalArea'] |
| | |
| | | |
| | | }) |
| | | |
| | | //筛选条件,有外键需要先定义明细里面的数据 |
| | | let filterData = ref({ |
| | | const gridEvents = { |
| | | async toolbarButtonClick({code}) { |
| | | const $grid = xGrid.value |
| | | if ($grid) { |
| | | switch (code) { |
| | | case 'add': { |
| | | const selectRecords = $grid.getCheckboxRecords() |
| | | |
| | | }) |
| | | |
| | | |
| | | /*使用筛选,后端获取数据*/ |
| | | const changeFilterEvent = (event, option, $panel,) => { |
| | | // 手动触发筛选 |
| | | $panel.changeOption(event, !!option.data, option) |
| | | } |
| | | |
| | | function filterChanged(column) { |
| | | gridOptions.loading = true |
| | | //筛选条件发生变化条件发生变化 |
| | | let value = column.datas[0] !== undefined ? column.datas[0] : '' |
| | | value = value.trim() |
| | | //判断是否存在外键 |
| | | if (column.property.indexOf('.') > -1) { |
| | | const columnArr = column.property.split('.') |
| | | filterData.value[columnArr[0]] = { |
| | | [columnArr[1]]: value |
| | | if (selectRecords.length > 0) { |
| | | const errMap = await $grid.validate(selectRecords) |
| | | if (errMap) { |
| | | return |
| | | } |
| | | } else { |
| | | filterData.value[column.property] = value |
| | | ElMessage.warning("未选中数据") |
| | | return |
| | | } |
| | | request.post(`/reportData/rework/add/query/1/100`,filterData.value).then((res) => { |
| | | if (res.code === 200) { |
| | | pageTotal.value = res.data.total |
| | | pageNum = 1 |
| | | |
| | | |
| | | let flowData = ref({ |
| | | rework: selectRecords |
| | | |
| | | }) |
| | | request.post("/rework/saveRework", flowData.value).then((res) => { |
| | | if(res.code==200){ |
| | | ElMessage.success("返工单提交成功") |
| | | location.reload(); |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | break |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | }, |
| | | menuClick ({ menu, row, column }) { |
| | | const $grid = xGrid.value |
| | | if ($grid) { |
| | | switch (menu.code) { |
| | | |
| | | case 'copyChecked' :{ |
| | | let result = toolbarButtonClickEvent() |
| | | if(result){ |
| | | const dataList = xGrid.value.getTableData().visibleData |
| | | let firstVal=null; |
| | | if(result.cell.indexOf('.')>-1){ |
| | | firstVal = eval("dataList["+result.start +"]."+result.cell) |
| | | }else { |
| | | firstVal=dataList[result.start][result.cell]; |
| | | } |
| | | dataList.forEach((item,index) =>{ |
| | | if(index>=result.start && index<=result.end){ |
| | | if(result.cell.indexOf('.')>-1){ |
| | | const columnArr = result.cell.split('.') |
| | | item[columnArr[0]][columnArr[1]] = firstVal |
| | | }else{ |
| | | item[result.cell] = firstVal |
| | | } |
| | | |
| | | } |
| | | }) |
| | | } |
| | | break |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | const selectOrderList = ()=>{ |
| | | request.post(`/rework/SelectRework/${pageNum.value}/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => { |
| | | if(res.code==200){ |
| | | selectDate.value = res.data.selectDate |
| | | |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | | MessageShow(res.msg,'warning'); |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | } |
| | | const MessageShow = (content, type = 'success') => { |
| | | ElMessage({ |
| | | message: content, |
| | | type: type, |
| | | showClose: true, |
| | | }) |
| | | |
| | | |
| | | //页脚跳转 |
| | | const handlePageChange = ({ currentPage, pageSize }) => { |
| | | total.pageTotal = pageSize |
| | | pageNum.value=currentPage |
| | | |
| | | selectOrderList() |
| | | } |
| | | |
| | | /*数据校验*/ |
| | | const validRules = ref({ |
| | | reworkTeam: [ |
| | | { required: true, message: '请选择返工班组' } |
| | | ], |
| | | |
| | | reworkNum: [{ |
| | | validator (e) { |
| | | if (e.row.reworkNum > e.row.breakageQuantity) { |
| | | return new Error('返工数量不能大于次破数量') |
| | | }else if (e.row.reworkNum ==="") { |
| | | return new Error('返工数量不能为空或者是0') |
| | | } |
| | | const regex = /^[1-9]\d*$/g |
| | | if ( !regex.test(e.row.reworkNum) ) { |
| | | return new Error('请输入正整数') |
| | | } |
| | | |
| | | } |
| | | |
| | | }] |
| | | |
| | | }) |
| | | |
| | | |
| | | onMounted(()=>{ |
| | | //启用表格拖动选中 |
| | | addListener(xGrid.value,gridOptions,cellArea.value) |
| | | }) |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | </script> |
| | |
| | | <div class="main-div-customer"> |
| | | <vxe-grid |
| | | max-height="100%" |
| | | @filter-change="filterChanged" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | :edit-rules="validRules" |
| | | |
| | | > |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | |
| | | </div> |
| | | </template> |
| | | |
| | | <!-- 返工班组--> |
| | | <template #responsibleTeam="{ row }"> |
| | | <vxe-select v-model="row.reworkTeam" transfer > |
| | | <vxe-option v-for="item in row.basicCategory" :key="item.basicName" :label="item.basicName" :value="item.basicName"/> |
| | | </vxe-select> |
| | | </template> |
| | | <template #responsibleTeam_default="{ row }"> |
| | | <span>{{ row.reworkTeam }}</span> |
| | | </template> |
| | | |
| | | |
| | | |
| | | |
| | | </vxe-grid> |
| | | </div> |
| | | <div class="vxe-table--cell-area" ref="cellArea" > |
| | | <span class="vxe-table--cell-main-area" ></span> |
| | | |
| | | <span class="vxe-table--cell-active-area" ></span> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | |
| | | import {useRouter} from 'vue-router' |
| | | import request from "@/utils/request"; |
| | | import {ElMessage} from "element-plus"; |
| | | import deepClone from "@/utils/deepClone"; |
| | | import {Search} from "@element-plus/icons-vue"; |
| | | import useUserInfoStore from "@/stores/userInfo"; |
| | | import {changeFilterEvent,filterChanged} from "@/hook" |
| | | |
| | | const userStore = useUserInfoStore() |
| | | const username = userStore.user.userName |
| | | const userid = userStore.user.userId |
| | | let router = useRouter() |
| | | const dateValue = ref("");//查询日期 |
| | | let produceList = ref([]) |
| | | const dialogFormVisible = ref(false) |
| | | const formLabelWidth = '140px' |
| | | /*编辑弹窗显示数据*/ |
| | |
| | | resource: '', |
| | | desc: '', |
| | | }) |
| | | |
| | | |
| | | const getTableRow = (row, type) => { |
| | | switch (type) { |
| | | case 'edit' : { |
| | |
| | | } |
| | | } |
| | | } |
| | | let pageNum=ref(1) |
| | | let total = reactive({ |
| | | pageTotal : 0, |
| | | dataTotal : 0, |
| | | pageSize : 10 |
| | | }) |
| | | |
| | | let selectDate = ref(["",""]) |
| | | |
| | | //筛选条件,有外键需要先定义明细里面的数据 |
| | | let filterData = ref({ |
| | | |
| | | |
| | | }) |
| | | |
| | | //第一次调用 |
| | | request.post(`/rework/SelectRework/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal= res.data.total.pageTotal |
| | | |
| | | selectDate.value = res.data.selectDate |
| | | pageNum.value=1 |
| | | |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading=false |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | // remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {title: '操作', width: 110, slots: {default: 'button_slot'}, fixed: "left"}, |
| | | {type:'checkbox',title: '选择', width: 80,fixed:"left"}, |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | {field: 'reworkTeam', width: 120, title: '返工班组'}, |
| | | { |
| | | field: 'order.orderId', |
| | | width: 120, |
| | | title: '销售单号', |
| | | showOverflow: "ellipsis", |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'} |
| | | }, |
| | | { |
| | | field: 'reportingWork.processId', |
| | | width: 120, |
| | | title: '流程卡号', |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'} |
| | | }, |
| | | {field: 'order.project', width: 120, title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'}}, |
| | | {field: 'order.batch', width: 80, title: '批次', showOverflow: "ellipsis"}, |
| | | {field: 'orderNumber', width: 80, title: '序号'}, |
| | | {field: 'orderGlassDetail.glassChild', width: 120, title: '单片名称'}, |
| | | {field: 'orderGlassDetail.technologyNumber', width: 80, title: '标记', showOverflow: "ellipsis"}, |
| | | {field: 'orderGlassDetail.glassAddress', width: 90, title: '片标记'}, |
| | | {field: 'breakageNumber', width: 80, title: '数量'}, |
| | | {field: 'orderGlassDetail.childWidth', width: 80, title: '宽'}, |
| | | {field: 'orderGlassDetail.childHeight', width: 80, title: '高'}, |
| | | {field: 'orderDetail.shape', width: 80, title: '形状'}, |
| | | {field: 'breakageType', width: 100, title: '返工类型'}, |
| | | {field: 'breakageReason', width: 120, title: '返工原因'}, |
| | | {field: 'responsibleEquipment', width: 120, title: '责任设备'}, |
| | | {field: 'responsibleTeam', width: 120, title: '责任班组'}, |
| | | {field: 'reworkArea', width: 120, title: '返工面积'}, |
| | | {field: 'returnProcess', width: 120, title: '返工工序'}, |
| | | {field: 'qualityInspector', width: 100, title: '质检员'}, |
| | | {field: 'reworkTime', width: 100, title: '返工时间'}, |
| | | {field: 'reworkUpdateTime', width: 120, title: '返工审核时间'} |
| | | {field: 'review_status',title: '审核', width: 40, slots: { default: 'state' }}, |
| | | {field: 'rework_id', width: 120, title: '返工单号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'rework_team', width: 120, title: '返工班组', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'order_id', width: 120, title: '销售单号', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'process_id', width: 120, title: '流程卡号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'project', width: 120, title: '项目名称', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'batch', width: 80, title: '批次', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'order_sort', width: 80, title: '序号', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'product_name', width: 120, title: '单片名称', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'technology_number', width: 80, title: '标记', showOverflow: "ellipsis", filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'glass_address', width: 90, title: '片标记', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'rework_num', width: 80, title: '数量', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'width', width: 80, title: '宽', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'height', width: 80, title: '高', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'shape', width: 80, title: '形状', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'rework_type', width: 100, title: '返工类型', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'rework_reason', width: 120, title: '返工原因', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'responsible_equipment', width: 120, title: '责任设备', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'responsible_team', width: 120, title: '责任班组', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'rework_area', width: 120, title: '返工面积', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'rework_processes', width: 120, title: '返工工序', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'quality_inspector', width: 100, title: '质检员', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'reviewer', width: 100, title: '审核员', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged}, |
| | | {field: 'create_time', width: 100, title: '返工时间'}, |
| | | {field: 'update_time', width: 120, title: '返工审核时间'} |
| | | ],//表头按钮 |
| | | |
| | | toolbarConfig: { |
| | | // buttons: [{ |
| | | // |
| | | // }], |
| | | import: false, |
| | | buttons: [{ |
| | | 'name': '审核',status: 'primary', |
| | | 'code':'add' |
| | | }], |
| | | /*import: false, |
| | | export: true, |
| | | print: true, |
| | | print: true,*/ |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | data: null,//table body实际数据 |
| | | //脚部求和 |
| | | footerMethod({columns, data}) {//页脚函数 |
| | | let footList = ['number', 'area'] |
| | | return [ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | return `合计` |
| | | } |
| | | if (footList.includes(column.field)) { |
| | | return sumNum(data, column.field) |
| | | } |
| | | // if (props.tableProp.footList.includes(column.field)) { |
| | | // return sumNum(data, column.field) |
| | | // } |
| | | return '' |
| | | }) |
| | | ] |
| | | }, mergeFooterItems: [ |
| | | {row: 0, col: 0, rowspan: 1, colspan: 2} |
| | | ],//合并脚 |
| | | } |
| | | |
| | | }) |
| | | |
| | | const gridEvents = { |
| | | toolbarButtonClick ({ code }) { |
| | | const $grid = xGrid.value |
| | | if ($grid) { |
| | | switch (code) { |
| | | case 'add': { |
| | | const $table = xGrid.value |
| | | //gridOptions.columns.unshift(a) |
| | | if ($table) { |
| | | const selectRecords = $table.getCheckboxRecords() |
| | | |
| | | /*查询*/ |
| | | const queryData = () => { |
| | | let flowData = ref({ |
| | | |
| | | if (dateValue.value === "") { |
| | | MessageShow("未选择时间,请选择时间后再次进行查询", "warning"); |
| | | return; |
| | | } |
| | | userId:userid, |
| | | userName:username, |
| | | rework:selectRecords |
| | | |
| | | request.post(`/reportData/rework/manage/query/1/100/${dateValue.value[0]}/${dateValue.value[1]}`).then((res) => { |
| | | }) |
| | | request.post("/rework/updateRework",flowData.value).then((res) => { |
| | | if(res.code==200){ |
| | | ElMessage.success("审核成功") |
| | | location.reload(); |
| | | |
| | | |
| | | console.log(res); |
| | | //MessageShow(res); |
| | | if (res.code === 200 || res.code === '200') { |
| | | pageTotal.value = res.data.total |
| | | |
| | | MessageShow(res.data.data.total) |
| | | xGrid.value.loadData(res.data.data) |
| | | |
| | | |
| | | gridOptions.loading = false |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | } |
| | | return; |
| | | |
| | | } |
| | | |
| | | //筛选条件,有外键需要先定义明细里面的数据 |
| | | let filterData = ref({}) |
| | | |
| | | //定义页面总页数 |
| | | let pageTotal = ref('') |
| | | //定义数据返回结果 |
| | | let produceList = ref([]) |
| | | //定义当前页数 |
| | | let pageNum = $ref(1) |
| | | let pageState = null |
| | | |
| | | //定义滚动条高度 |
| | | let scrollTop = ref(null) |
| | | let scrollHeight = ref(null) |
| | | let clientHeight = ref(null) |
| | | const scrollEvnt = (row) => { |
| | | // 内容高度 |
| | | scrollTop.value = row.$event.target.scrollTop |
| | | scrollHeight.value = row.$event.target.scrollHeight |
| | | clientHeight.value = row.$event.target.clientHeight |
| | | } |
| | | } |
| | | }, |
| | | |
| | | /*时间框快速选择*/ |
| | | const shortcuts = [ |
| | | { |
| | | text: '近一周', |
| | | value: () => { |
| | | const end = new Date() |
| | | const start = new Date() |
| | | start.setTime(start.getTime() - 3600 * 1000 * 24 * 7) |
| | | return [start, end] |
| | | }, |
| | | }, |
| | | { |
| | | text: '近一个月', |
| | | value: () => { |
| | | const end = new Date() |
| | | const start = new Date() |
| | | start.setTime(start.getTime() - 3600 * 1000 * 24 * 30) |
| | | return [start, end] |
| | | }, |
| | | }, |
| | | { |
| | | text: '近三个月', |
| | | value: () => { |
| | | const end = new Date() |
| | | const start = new Date() |
| | | start.setTime(start.getTime() - 3600 * 1000 * 24 * 90) |
| | | return [start, end] |
| | | }, |
| | | }, |
| | | ] |
| | | |
| | | const MessageShow = (content, type = 'success') => { |
| | | ElMessage({ |
| | | message: content, |
| | | type: type, |
| | | showClose: true, |
| | | }) |
| | | } |
| | | |
| | | |
| | | /*使用筛选,后端获取数据*/ |
| | | const changeFilterEvent = (event, option, $panel,) => { |
| | | // 手动触发筛选 |
| | | $panel.changeOption(event, !!option.data, option) |
| | | } |
| | | |
| | | function filterChanged(column) { |
| | | /*gridOptions.loading=true |
| | | //筛选条件发生变化条件发生变化 |
| | | let value = column.datas[0]!=undefined?column.datas[0]:'' |
| | | value = value.trim() |
| | | //判断是否存在外键 |
| | | if (column.property.indexOf('.')>-1){ |
| | | const columnArr = column.property.split('.') |
| | | filterData.value[columnArr[0]] = { |
| | | [columnArr[1]]:value |
| | | } |
| | | }else{ |
| | | filterData.value[column.property] = value |
| | | } |
| | | request.post("/product/1/100/"+productGlassTypeStore.GlassType,filterData.value).then((res) => { |
| | | const selectOrderList = ()=>{ |
| | | request.post(`/rework/SelectRework/${pageNum.value}/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => { |
| | | if(res.code==200){ |
| | | pageTotal.value=res.data.total |
| | | pageNum=1 |
| | | selectDate.value = res.data.selectDate |
| | | |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading=false |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | })*/ |
| | | }) |
| | | } |
| | | |
| | | const changeDate = ()=>{ |
| | | selectOrderList() |
| | | } |
| | | |
| | | //页脚跳转 |
| | | const handlePageChange = ({ currentPage, pageSize }) => { |
| | | total.pageTotal = pageSize |
| | | pageNum.value=currentPage |
| | | |
| | | selectOrderList() |
| | | } |
| | | |
| | | const checkBoxConfig = { |
| | | checkMethod: ({ row }) => { |
| | | if (row['review_status']===1){ |
| | | return row.disable |
| | | }else{ |
| | | return !row.disable |
| | | } |
| | | |
| | | }, |
| | | reserve:true |
| | | } |
| | | |
| | | |
| | | |
| | | </script> |
| | |
| | | <template> |
| | | <div class="main-div-customer"> |
| | | <el-header height="auto" style="padding: 0;margin:0"> |
| | | <el-row :gutter="0" style="margin-bottom: 5px"> |
| | | <el-col :span="7"> |
| | | <el-date-picker |
| | | v-model="dateValue" |
| | | v-model="selectDate" |
| | | type="daterange" |
| | | unlink-panels |
| | | range-separator="-" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | :shortcuts="shortcuts" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | format="YYYY-MM-DD" |
| | | value-format="YYYY-MM-DD" |
| | | width:99% |
| | | /> |
| | | </el-col> |
| | | |
| | | <el-col :span="2"> |
| | | <el-button type="primary" @click="queryData()">查询</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | /> |
| | | <el-button @click="changeDate" style="margin-top: -5px" id="searchButton" type="primary" :icon="Search">查询</el-button> |
| | | </el-header> |
| | | |
| | | |
| | | <vxe-grid |
| | | max-height="100%" |
| | | @filter-change="filterChanged" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | @scroll="scrollEvnt" |
| | | v-on="gridEvents" |
| | | :checkbox-config="checkBoxConfig" |
| | | |
| | | > |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | |
| | | </div> |
| | | </template> |
| | | |
| | | <template #state="{ row,column}"> |
| | | <el-checkbox @click.native.prevent :checked="row[column.field]===1"/> |
| | | </template> |
| | | |
| | | <template #pager> |
| | | <!--使用 pager 插槽--> |
| | | <vxe-pager |
| | | @page-change="handlePageChange" |
| | | :layouts="[ 'PrevPage', 'Jump','PageCount', 'NextPage', 'Total']" |
| | | v-model:current-page="pageNum" |
| | | v-model:page-size="total.pageSize" |
| | | v-model:pager-count="total.pageTotal" |
| | | :total="total.dataTotal" |
| | | > |
| | | </vxe-pager> |
| | | </template> |
| | | |
| | | |
| | | </vxe-grid> |
| | | |
| | |
| | | ],//表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | import: false, |
| | | /*import: false, |
| | | export: true, |
| | | print: true, |
| | | print: true,*/ |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | |
| | | {'code': 'toExamine', 'name': '审核',status: 'primary'}, |
| | | {'code': 'CounterExamination', 'name': '反审',status: 'primary'} |
| | | ], |
| | | import: false, |
| | | /*import: false, |
| | | export: true, |
| | | print: true, |
| | | print: true,*/ |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | |
| | | request.post(`/Delivery/getseletShippingOrder/1/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | console.log(res.data.data) |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal= res.data.total.pageTotal |
| | | |
| | |
| | | ],//表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | import: false, |
| | | /*import: false, |
| | | export: true, |
| | | print: true, |
| | | print: true,*/ |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | |
| | | buttons: [ |
| | | {'code': 'add', 'name': '发货',status: 'primary',icon: 'vxe-icon-add'} |
| | | ], |
| | | import: false, |
| | | /*import: false, |
| | | export: true, |
| | | print: true, |
| | | print: true,*/ |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | |
| | | package com.example.erp.controller.pp; |
| | | |
| | | import com.example.erp.common.Constants; |
| | | import com.example.erp.common.Result; |
| | | import com.example.erp.entity.pp.Rework; |
| | | import com.example.erp.entity.sd.Delivery; |
| | | import com.example.erp.entity.sd.OrderDetail; |
| | | import com.example.erp.exception.ServiceException; |
| | | import com.example.erp.service.pp.ReworkService; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.PathVariable; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @RestController |
| | | @RequestMapping("/rework") |
| | |
| | | @Autowired |
| | | ReworkService reworkService; |
| | | |
| | | @PostMapping("/query/{pageNum}/{pageSize}/{startTime}/{endTime}") |
| | | public Result queryRework(@PathVariable Integer pageNum, @PathVariable Integer pageSize, |
| | | @PathVariable String startTime,@PathVariable String endTime |
| | | ){ |
| | | |
| | | return Result.seccess(reworkService.queryRework(pageNum,pageSize,startTime,endTime,null)); |
| | | |
| | | /*发货订单查询*/ |
| | | @ApiOperation("发货订单查询接口") |
| | | @PostMapping("/getSelectRework/{pageNum}/{pageSize}") |
| | | public Result getSelectRework(@PathVariable Integer pageNum, @PathVariable Integer pageSize){ |
| | | return Result.seccess(reworkService.getSelectRework(pageNum,pageSize)); |
| | | } |
| | | |
| | | @ApiOperation("发货订单查询接口") |
| | | @PostMapping("/SelectRework/{pageNum}/{pageSize}/{selectDate}") |
| | | public Result SelectRework(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate,@RequestBody Rework rework){ |
| | | return Result.seccess(reworkService.SelectRework(pageNum,pageSize,selectDate,rework)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation("订单调拨接口") |
| | | @PostMapping("/saveRework") |
| | | public Result updateFinishedGoodsInventoryAllocate( @RequestBody Map<String,Object> object){ |
| | | if(reworkService.saveRework(object)){ |
| | | |
| | | return Result.seccess(); |
| | | |
| | | }else { |
| | | throw new ServiceException(Constants.Code_500,"返工失败"); |
| | | |
| | | } |
| | | } |
| | | |
| | | @ApiOperation("订单调拨接口") |
| | | @PostMapping("/updateRework") |
| | | public Result updateRework( @RequestBody Map<String,Object> object){ |
| | | if(reworkService.updateRework(object)){ |
| | | |
| | | return Result.seccess(); |
| | | |
| | | }else { |
| | | throw new ServiceException(Constants.Code_500,"审核失败"); |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.example.erp.entity.sd.BasicData; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDate; |
| | |
| | | private String basicCategory; |
| | | private LocalDate createTime; |
| | | private LocalDate updateTime; |
| | | private BasicData basicData; |
| | | |
| | | } |
| | |
| | | //修改时间 |
| | | private LocalDate updateTime; |
| | | |
| | | private String orderId; |
| | | private String responsiblePersonnel; |
| | | private String orderSort; |
| | | private Integer technologyNumber; |
| | | private String responsibleTeam; |
| | | private String qualityInspector; |
| | | private String responsibleEquipment; |
| | | private String reportingWorkId; |
| | | |
| | | //外键流程卡表 |
| | | private FlowCard flowCard; |
| | | } |
| | |
| | | List<BasicDataProduce> SelectWorkBasicDeviceMp(String process); |
| | | |
| | | List<BasicDataProduce> SelectWorkBasicTeamsMp(String process); |
| | | |
| | | List<BasicDataProduce> SelectWorkBasicTeams(); |
| | | } |
| | |
| | | package com.example.erp.mapper.pp; |
| | | |
| | | import com.example.erp.entity.mm.FinishedGoodsInventory; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.entity.pp.ReportingWorkDetail; |
| | | import com.example.erp.entity.pp.Rework; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Mapper |
| | | public interface ReworkMapper { |
| | | |
| | | List<Rework> queryRework(@Param("offset") Integer offset,@Param("pageSize") Integer pageSiz,String startTime,String endTime,Rework rework); |
| | | List<Map<String,Object>> SelectRework(@Param("offset") Integer offset,@Param("pageSize") Integer pageSiz,String startDate,String endDate,Rework rework); |
| | | |
| | | Map<String,Integer> SelectReworkPageTotal(@Param("offset") Integer offset,@Param("pageSize") Integer pageSiz,String startDate,String endDate,Rework rework); |
| | | |
| | | List<Map<String,Object>> getSelectRework(@Param("offset") Integer offset, @Param("pageSize") Integer pageSiz); |
| | | |
| | | |
| | | Integer getMaximum(); |
| | | |
| | | Boolean insertRework(@Param("rework") Rework rework , @Param("oddNumber") String oddNumber); |
| | | |
| | | Boolean updateReportingWorkDetail(@Param("rework") Rework rework); |
| | | |
| | | Boolean updateRework(@Param("rework") Rework rework , @Param("userName") String userName); |
| | | } |
| | | |
| | |
| | | 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.BasicDataProduce; |
| | | import com.example.erp.entity.pp.Rework; |
| | | import com.example.erp.entity.sd.Delivery; |
| | | import com.example.erp.entity.sd.OrderDetail; |
| | | import com.example.erp.entity.userInfo.SysError; |
| | | import com.example.erp.mapper.pp.BasicDateProduceMapper; |
| | | import com.example.erp.mapper.pp.ReworkMapper; |
| | | import com.example.erp.service.userInfo.SysErrorService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.util.*; |
| | | |
| | | |
| | | @Service |
| | |
| | | public class ReworkService { |
| | | @Autowired |
| | | ReworkMapper reworkMapper; |
| | | @Autowired |
| | | BasicDateProduceMapper basicDateProduceMapper; |
| | | @Autowired |
| | | SysErrorService sysErrorService; |
| | | |
| | | /*查询返工数据*/ |
| | | public Map<String,Object> queryRework(Integer pageNum, Integer pageSize,String startTime,String endTime,Rework rework) { |
| | | |
| | | public List<Map<String, Object>> getSelectRework(Integer pageNum, Integer pageSize) { |
| | | Integer offset = (pageNum-1)*pageSize; |
| | | |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("data",reworkMapper.queryRework(offset,pageSize,startTime,endTime,rework)); |
| | | List<Map<String, Object>> listMap = new ArrayList<>(); |
| | | |
| | | |
| | | List<Map<String, Object>> ReworkMap =reworkMapper.getSelectRework(offset,pageSize); |
| | | List<BasicDataProduce> basicDataProduceList=basicDateProduceMapper.SelectWorkBasicTeams(); |
| | | |
| | | for (Map<String, Object> item:ReworkMap){ |
| | | item.put("reworkTeam",""); |
| | | List<BasicDataProduce> basicCategory=new ArrayList<>(); |
| | | for (BasicDataProduce basicDataProduce:basicDataProduceList){ |
| | | if(Objects.equals(basicDataProduce.getBasicData().getBasicName(),item.get("reworkProcesses"))){ |
| | | basicCategory.add(basicDataProduce); |
| | | } |
| | | } |
| | | item.put("basicCategory",basicCategory); |
| | | listMap.add(item); |
| | | } |
| | | return listMap; |
| | | } |
| | | |
| | | public Map<String, Object> SelectRework(Integer pageNum, Integer pageSize,List<String> selectDate,Rework rework) { |
| | | 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",reworkMapper.SelectRework(offset,pageSize,startDate,endDate,rework)); |
| | | map.put("total",reworkMapper.SelectReworkPageTotal(offset,pageSize,startDate,endDate,rework)); |
| | | |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(startDate); |
| | | list.add(endDate); |
| | | map.put("selectDate",list); |
| | | return map; |
| | | } |
| | | |
| | | public Boolean saveRework(Map<String,Object> object) { |
| | | boolean saveState = true; |
| | | |
| | | |
| | | String userName = ""; |
| | | String userId = ""; |
| | | if (object.get("userName") != null) { |
| | | userName = object.get("userName").toString(); |
| | | } |
| | | if (object.get("userId") != null) { |
| | | userId = object.get("userId").toString(); |
| | | } |
| | | //获取对象集合循环进行新增修改 |
| | | List<Rework> reworklist = JSONArray.parseArray(JSONObject.toJSONString(object.get("rework")), Rework.class); |
| | | if (!reworklist.isEmpty()){ |
| | | for (Rework rework : reworklist) { |
| | | //获取单号 |
| | | String oddNumber= orderNumberSetting("返工"); |
| | | //添加出入库记录 |
| | | reworkMapper.insertRework(rework,oddNumber); |
| | | reworkMapper.updateReportingWorkDetail(rework); |
| | | } |
| | | } |
| | | |
| | | |
| | | return saveState; |
| | | |
| | | } |
| | | |
| | | public Boolean updateRework(Map<String,Object> object) { |
| | | boolean saveState = true; |
| | | |
| | | String userName = ""; |
| | | String userId = ""; |
| | | if (object.get("userName") != null) { |
| | | userName = object.get("userName").toString(); |
| | | } |
| | | if (object.get("userId") != null) { |
| | | userId = object.get("userId").toString(); |
| | | } |
| | | //获取对象集合循环进行新增修改 |
| | | List<Rework> reworklist = JSONArray.parseArray(JSONObject.toJSONString(object.get("rework")), Rework.class); |
| | | if (!reworklist.isEmpty()){ |
| | | for (Rework rework : reworklist) { |
| | | //审核 |
| | | reworkMapper.updateRework(rework,userName); |
| | | } |
| | | } |
| | | |
| | | |
| | | return saveState; |
| | | |
| | | } |
| | | |
| | | public String orderNumberSetting(String type) { |
| | | //根据类型自动生成不同的操作单号 |
| | | String alias=""; |
| | | if(Objects.equals(type, "返工")){ |
| | | alias="FG"; |
| | | } |
| | | //查询当天的最大数量 |
| | | Integer maximum=reworkMapper.getMaximum(); |
| | | //设置两位不够补0 |
| | | String formattedNumber = String.format("%02d", maximum+1); |
| | | //格式化当前日期 |
| | | Date currentDate = new Date(); |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd"); |
| | | String formattedDate = dateFormat.format(currentDate); |
| | | String oddNumbers = alias+formattedDate+formattedNumber; |
| | | return oddNumbers; |
| | | } |
| | | } |
| | | |
| | |
| | | </where> |
| | | order by fgi.id |
| | | |
| | | limit #{offset},#{pageSize} |
| | | ; |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | | |
| | | |
| | |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.example.erp.mapper.pp.BasicDateProduceMapper"> |
| | | <resultMap id="selectBasicDataProduce" type="com.example.erp.entity.pp.BasicDataProduce"> |
| | | <id column="id" property="id"/> |
| | | <result column="basic_type" property="basicType"/> |
| | | <result column="basic_name" property="basicName"/> |
| | | <result column="basic_category" property="basicCategory"/> |
| | | |
| | | |
| | | <result column="d_basic_type" property="basicData.basicType"/> |
| | | <result column="d_basic_name" property="basicData.basicName"/> |
| | | <result column="d_basic_category" property="basicData.basicCategory"/> |
| | | |
| | | |
| | | |
| | | </resultMap> |
| | | <select id="SelectWorkBasicDeviceMp"> |
| | | select |
| | | * |
| | |
| | | basic_data_produce as a |
| | | where a.basic_category=#{process} and a.basic_type='班组' |
| | | </select> |
| | | |
| | | <select id="SelectWorkBasicTeams" resultMap="selectBasicDataProduce"> |
| | | select bdp.basic_name ,bd.basic_name as d_basic_name |
| | | from pp.basic_data_produce bdp |
| | | left join sd.basic_data bd on bdp.basic_category = bd.id |
| | | where bd.basic_name = "切割" |
| | | and bdp.basic_type = "teamsgroups" |
| | | </select> |
| | | </mapper> |
| | |
| | | <!--返工数据--> |
| | | |
| | | <mapper namespace="com.example.erp.mapper.pp.ReworkMapper"> |
| | | <resultMap id="reworkDataTitle" type="com.example.erp.entity.pp.Rework"> |
| | | |
| | | |
| | | </resultMap> |
| | | |
| | | |
| | | <!--获取返工数据--> |
| | | <select id="queryRework" resultMap="reworkDataTitle"> |
| | | select * from rework |
| | | <!--<where> |
| | | |
| | | create_time <![CDATA[>=]]> #{startTime} and create_time <![CDATA[<=]]> #{endTime}} |
| | | <!–返工编号–> |
| | | <if test="rework_id!=null and rework != ''"> |
| | | and rework_id = #{reworkId} |
| | | </if> |
| | | <!–流程卡号–> |
| | | <if test="process_id != null and process_id != ''"> |
| | | and process_id=#{processId} |
| | | </if> |
| | | <!–返工类型–> |
| | | <if test="rework_Type != null and rework_Type!=''"> |
| | | and rework_Type=#{rework_Type} |
| | | </if> |
| | | <!–返工原因–> |
| | | <if test="rework_Reason != null and rework_Reason!=''"> |
| | | and rework_Reason=#{rework_Reason} |
| | | </if> |
| | | <!–返工工序–> |
| | | <if test="rework_Processes != null and rework_Processes!=''"> |
| | | and rework_Processes=#{rework_Processes} |
| | | </if> |
| | | <!–返工数量–> |
| | | <if test="rework_Num != null and rework_Num!=''"> |
| | | and rework_Num=#{rework_Num} |
| | | </if> |
| | | <!–返工班组–> |
| | | <if test="rework_Team != null and rework_Team!=''"> |
| | | and rework_Team=#{rework_Team} |
| | | </if> |
| | | <!–审核人–> |
| | | <if test="reviewer != null and reviewer!=''"> |
| | | and reviewer=#{reviewer} |
| | | </if> |
| | | <!–审核状态–> |
| | | <if test="review_Status != null and review_Status!=''"> |
| | | and review_Status=#{review_Status} |
| | | </if> |
| | | <!–返工面积–> |
| | | <if test="rework_Area != null and rework_Area!=''"> |
| | | and rework_Area=#{rework_Area} |
| | | </if> |
| | | |
| | | </where>--> |
| | | |
| | | <select id="SelectRework" > |
| | | select |
| | | r.review_status, |
| | | r.rework_team, |
| | | r.rework_id, |
| | | r.process_id, |
| | | r.order_id, |
| | | r.order_sort, |
| | | o.project, |
| | | o.batch, |
| | | od.product_name, |
| | | ogd.technology_number, |
| | | ogd.glass_address, |
| | | r.rework_num, |
| | | od.width, |
| | | od.height, |
| | | od.shape, |
| | | r.rework_type, |
| | | r.rework_reason, |
| | | r.responsible_team, |
| | | r.responsible_personnel, |
| | | r.responsible_equipment, |
| | | r.rework_area, |
| | | r.quality_inspector, |
| | | r.rework_processes, |
| | | r.reviewer, |
| | | date(r.create_time) as create_time, |
| | | date(r.update_time) as update_time |
| | | from pp.rework r left join sd.order_detail od on r.order_id=od.order_id and r.order_sort=od.order_number |
| | | left join sd.`order` o on r.order_id = o.order_id |
| | | left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd |
| | | on r.order_id = ogd.order_id and r.order_sort = ogd.order_number |
| | | <where> |
| | | date(r.create_time)>=#{startDate} and date(r.create_time) <= #{endDate} |
| | | </where> |
| | | order by r.review_status |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | | |
| | | <select id="SelectReworkPageTotal" > |
| | | select CEILING(count(zu.id)/#{pageSize}) as 'pageTotal', |
| | | count(zu.id) as 'total' |
| | | from (select r.id as id |
| | | from pp.rework r |
| | | left join sd.order_detail od on r.order_id = od.order_id and r.order_sort = od.order_number |
| | | left join sd.`order` o on r.order_id = o.order_id |
| | | left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd |
| | | on r.order_id = ogd.order_id and r.order_sort = ogd.order_number |
| | | <where> |
| | | date(r.create_time)>=#{startDate} and date(r.create_time) <= #{endDate} |
| | | </where> |
| | | ) as zu |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | | |
| | | <select id="getSelectRework"> |
| | | select o.order_id as orderId, |
| | | rwd.reporting_work_id as reportingWorkId, |
| | | rw.process_id as processId, |
| | | o.project, |
| | | o.batch, |
| | | rwd.order_number as orderSort, |
| | | od.product_name as productName, |
| | | ogd.technology_number as technologyNumber, |
| | | ogd.glass_address as glassAddress, |
| | | rwd.wait_rework_quantity as reworkNum, |
| | | od.width, |
| | | od.height, |
| | | od.shape, |
| | | rwd.breakage_quantity as breakageQuantity, |
| | | rwd.return_process as reworkProcesses, |
| | | rwd.breakage_reason as reworkReason, |
| | | rwd.breakage_type as reworkType, |
| | | rwd.responsible_personnel as responsiblePersonnel, |
| | | rwd.responsible_equipment as responsibleEquipment, |
| | | rwd.responsible_team as responsibleTeam, |
| | | ROUND(rwd.wait_rework_quantity * od.width * od.height / 1000000, 2) as reworkArea, |
| | | rw.qualityIns_pector as qualityInsPector |
| | | from pp.reporting_work_detail rwd |
| | | left join pp.reporting_work rw on rwd.reporting_work_id = rw.reporting_work_id |
| | | left join sd.`order` o on rw.order_id = o.order_id |
| | | left join sd.order_detail od on rw.order_id = od.order_id and rwd.order_number = od.order_number |
| | | left join sd.order_glass_detail ogd |
| | | on rw.order_id = ogd.order_id and rwd.order_number = ogd.order_number |
| | | where rwd.wait_rework_quantity>0 |
| | | |
| | | group by ogd.order_id, ogd.order_number |
| | | </select> |
| | | |
| | | |
| | | <select id="getMaximum" > |
| | | select count(*) from pp.rework where date(create_time)=CURDATE() |
| | | </select> |
| | | |
| | | <insert id="insertRework" useGeneratedKeys="true" > |
| | | insert into pp.rework(rework_id,reporting_work_id, process_id,order_id, order_sort, technology_number, responsible_team, |
| | | responsible_personnel, rework_type, rework_reason, rework_processes, rework_num, |
| | | rework_area, rework_team,responsible_equipment,quality_inspector, reviewer, review_status, create_time) |
| | | values ( |
| | | #{oddNumber}, #{rework.reportingWorkId},#{rework.processId},#{rework.orderId},#{rework.orderSort},#{rework.technologyNumber},#{rework.responsibleTeam}, |
| | | #{rework.responsiblePersonnel},#{rework.reworkType},#{rework.reworkReason},#{rework.reworkProcesses},#{rework.reworkNum}, |
| | | #{rework.reworkArea},#{rework.reworkTeam},#{rework.responsibleEquipment},#{rework.qualityInspector},"",0,now() |
| | | ) |
| | | </insert> |
| | | |
| | | <update id="updateRework" > |
| | | update pp.rework set reviewer=#{userName},review_status=1,update_time=now() where rework_id=#{rework.reworkId} |
| | | </update> |
| | | |
| | | <update id="updateReportingWorkDetail" > |
| | | update pp.reporting_work_detail set wait_rework_quantity=wait_rework_quantity-#{rework.reworkNum} |
| | | where reporting_work_id=#{rework.reportingWorkId} and order_number=#{rework.orderSort} and technology_number=#{rework.technologyNumber} |
| | | </update> |
| | | |
| | | |
| | | </mapper> |
| | |
| | | </where> |
| | | order by fgi.id |
| | | |
| | | limit #{offset},#{pageSize} |
| | | ; |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | | |
| | | |
| | |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.example.erp.mapper.pp.BasicDateProduceMapper"> |
| | | <resultMap id="selectBasicDataProduce" type="com.example.erp.entity.pp.BasicDataProduce"> |
| | | <id column="id" property="id"/> |
| | | <result column="basic_type" property="basicType"/> |
| | | <result column="basic_name" property="basicName"/> |
| | | <result column="basic_category" property="basicCategory"/> |
| | | |
| | | |
| | | <result column="d_basic_type" property="basicData.basicType"/> |
| | | <result column="d_basic_name" property="basicData.basicName"/> |
| | | <result column="d_basic_category" property="basicData.basicCategory"/> |
| | | |
| | | |
| | | |
| | | </resultMap> |
| | | <select id="SelectWorkBasicDeviceMp"> |
| | | select |
| | | * |
| | |
| | | basic_data_produce as a |
| | | where a.basic_category=#{process} and a.basic_type='班组' |
| | | </select> |
| | | |
| | | <select id="SelectWorkBasicTeams" resultMap="selectBasicDataProduce"> |
| | | select bdp.basic_name ,bd.basic_name as d_basic_name |
| | | from pp.basic_data_produce bdp |
| | | left join sd.basic_data bd on bdp.basic_category = bd.id |
| | | where bd.basic_name = "切割" |
| | | and bdp.basic_type = "teamsgroups" |
| | | </select> |
| | | </mapper> |
| | |
| | | <!--返工数据--> |
| | | |
| | | <mapper namespace="com.example.erp.mapper.pp.ReworkMapper"> |
| | | <resultMap id="reworkDataTitle" type="com.example.erp.entity.pp.Rework"> |
| | | |
| | | |
| | | </resultMap> |
| | | |
| | | |
| | | <!--获取返工数据--> |
| | | <select id="queryRework" resultMap="reworkDataTitle"> |
| | | select * from rework |
| | | <!--<where> |
| | | |
| | | create_time <![CDATA[>=]]> #{startTime} and create_time <![CDATA[<=]]> #{endTime}} |
| | | <!–返工编号–> |
| | | <if test="rework_id!=null and rework != ''"> |
| | | and rework_id = #{reworkId} |
| | | </if> |
| | | <!–流程卡号–> |
| | | <if test="process_id != null and process_id != ''"> |
| | | and process_id=#{processId} |
| | | </if> |
| | | <!–返工类型–> |
| | | <if test="rework_Type != null and rework_Type!=''"> |
| | | and rework_Type=#{rework_Type} |
| | | </if> |
| | | <!–返工原因–> |
| | | <if test="rework_Reason != null and rework_Reason!=''"> |
| | | and rework_Reason=#{rework_Reason} |
| | | </if> |
| | | <!–返工工序–> |
| | | <if test="rework_Processes != null and rework_Processes!=''"> |
| | | and rework_Processes=#{rework_Processes} |
| | | </if> |
| | | <!–返工数量–> |
| | | <if test="rework_Num != null and rework_Num!=''"> |
| | | and rework_Num=#{rework_Num} |
| | | </if> |
| | | <!–返工班组–> |
| | | <if test="rework_Team != null and rework_Team!=''"> |
| | | and rework_Team=#{rework_Team} |
| | | </if> |
| | | <!–审核人–> |
| | | <if test="reviewer != null and reviewer!=''"> |
| | | and reviewer=#{reviewer} |
| | | </if> |
| | | <!–审核状态–> |
| | | <if test="review_Status != null and review_Status!=''"> |
| | | and review_Status=#{review_Status} |
| | | </if> |
| | | <!–返工面积–> |
| | | <if test="rework_Area != null and rework_Area!=''"> |
| | | and rework_Area=#{rework_Area} |
| | | </if> |
| | | |
| | | </where>--> |
| | | |
| | | <select id="SelectRework" > |
| | | select |
| | | r.review_status, |
| | | r.rework_team, |
| | | r.rework_id, |
| | | r.process_id, |
| | | r.order_id, |
| | | r.order_sort, |
| | | o.project, |
| | | o.batch, |
| | | od.product_name, |
| | | ogd.technology_number, |
| | | ogd.glass_address, |
| | | r.rework_num, |
| | | od.width, |
| | | od.height, |
| | | od.shape, |
| | | r.rework_type, |
| | | r.rework_reason, |
| | | r.responsible_team, |
| | | r.responsible_personnel, |
| | | r.responsible_equipment, |
| | | r.rework_area, |
| | | r.quality_inspector, |
| | | r.rework_processes, |
| | | r.reviewer, |
| | | date(r.create_time) as create_time, |
| | | date(r.update_time) as update_time |
| | | from pp.rework r left join sd.order_detail od on r.order_id=od.order_id and r.order_sort=od.order_number |
| | | left join sd.`order` o on r.order_id = o.order_id |
| | | left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd |
| | | on r.order_id = ogd.order_id and r.order_sort = ogd.order_number |
| | | <where> |
| | | date(r.create_time)>=#{startDate} and date(r.create_time) <= #{endDate} |
| | | </where> |
| | | order by r.review_status |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | | |
| | | <select id="SelectReworkPageTotal" > |
| | | select CEILING(count(zu.id)/#{pageSize}) as 'pageTotal', |
| | | count(zu.id) as 'total' |
| | | from (select r.id as id |
| | | from pp.rework r |
| | | left join sd.order_detail od on r.order_id = od.order_id and r.order_sort = od.order_number |
| | | left join sd.`order` o on r.order_id = o.order_id |
| | | left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd |
| | | on r.order_id = ogd.order_id and r.order_sort = ogd.order_number |
| | | <where> |
| | | date(r.create_time)>=#{startDate} and date(r.create_time) <= #{endDate} |
| | | </where> |
| | | ) as zu |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | | |
| | | <select id="getSelectRework"> |
| | | select o.order_id as orderId, |
| | | rwd.reporting_work_id as reportingWorkId, |
| | | rw.process_id as processId, |
| | | o.project, |
| | | o.batch, |
| | | rwd.order_number as orderSort, |
| | | od.product_name as productName, |
| | | ogd.technology_number as technologyNumber, |
| | | ogd.glass_address as glassAddress, |
| | | rwd.wait_rework_quantity as reworkNum, |
| | | od.width, |
| | | od.height, |
| | | od.shape, |
| | | rwd.breakage_quantity as breakageQuantity, |
| | | rwd.return_process as reworkProcesses, |
| | | rwd.breakage_reason as reworkReason, |
| | | rwd.breakage_type as reworkType, |
| | | rwd.responsible_personnel as responsiblePersonnel, |
| | | rwd.responsible_equipment as responsibleEquipment, |
| | | rwd.responsible_team as responsibleTeam, |
| | | ROUND(rwd.wait_rework_quantity * od.width * od.height / 1000000, 2) as reworkArea, |
| | | rw.qualityIns_pector as qualityInsPector |
| | | from pp.reporting_work_detail rwd |
| | | left join pp.reporting_work rw on rwd.reporting_work_id = rw.reporting_work_id |
| | | left join sd.`order` o on rw.order_id = o.order_id |
| | | left join sd.order_detail od on rw.order_id = od.order_id and rwd.order_number = od.order_number |
| | | left join sd.order_glass_detail ogd |
| | | on rw.order_id = ogd.order_id and rwd.order_number = ogd.order_number |
| | | where rwd.wait_rework_quantity>0 |
| | | |
| | | group by ogd.order_id, ogd.order_number |
| | | </select> |
| | | |
| | | |
| | | <select id="getMaximum" > |
| | | select count(*) from pp.rework where date(create_time)=CURDATE() |
| | | </select> |
| | | |
| | | <insert id="insertRework" useGeneratedKeys="true" > |
| | | insert into pp.rework(rework_id,reporting_work_id, process_id,order_id, order_sort, technology_number, responsible_team, |
| | | responsible_personnel, rework_type, rework_reason, rework_processes, rework_num, |
| | | rework_area, rework_team,responsible_equipment,quality_inspector, reviewer, review_status, create_time) |
| | | values ( |
| | | #{oddNumber}, #{rework.reportingWorkId},#{rework.processId},#{rework.orderId},#{rework.orderSort},#{rework.technologyNumber},#{rework.responsibleTeam}, |
| | | #{rework.responsiblePersonnel},#{rework.reworkType},#{rework.reworkReason},#{rework.reworkProcesses},#{rework.reworkNum}, |
| | | #{rework.reworkArea},#{rework.reworkTeam},#{rework.responsibleEquipment},#{rework.qualityInspector},"",0,now() |
| | | ) |
| | | </insert> |
| | | |
| | | <update id="updateRework" > |
| | | update pp.rework set reviewer=#{userName},review_status=1,update_time=now() where rework_id=#{rework.reworkId} |
| | | </update> |
| | | |
| | | <update id="updateReportingWorkDetail" > |
| | | update pp.reporting_work_detail set wait_rework_quantity=wait_rework_quantity-#{rework.reworkNum} |
| | | where reporting_work_id=#{rework.reportingWorkId} and order_number=#{rework.orderSort} and technology_number=#{rework.technologyNumber} |
| | | </update> |
| | | |
| | | |
| | | </mapper> |