Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
| | |
| | | sum:sum |
| | | }) |
| | | }) |
| | | console.log(orderDetailList.value) |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | |
| | | |
| | | <template> |
| | | <div > |
| | | <div v-for="(page,pageIndex) in pageData" class="content1"> |
| | | <div v-for="(page,pageIndex) in pageData" class="content1" > |
| | | <table> |
| | | <thead> |
| | | <tr style="height: 3.6cm"><td></td></tr> |
| | |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | <table class="foot"> |
| | | <table class="foot" > |
| | | <tr > |
| | | <td style="width: 5cm"></td> |
| | | <td style="width: 150px" ></td> |
| | |
| | | :value="getMoneySum(pageIndex)" |
| | | style="font-size: 17px;border: 0;width: 100%"/> |
| | | </td> |
| | | <td></td> |
| | | </tr> |
| | | <tr style="height: 0.65cm"><td></td></tr> |
| | | <tr> |
| | |
| | | |
| | | <el-col :span="5" style="font-size: 16px;white-space: nowrap;"> |
| | | <input v-model="delivery.project" |
| | | style="border: 0;width: 100%; |
| | | style="border: 0;width: 250%; |
| | | height: 100%;font-size:16px;white-space: nowrap; "/> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | }*/ |
| | | .foot{ |
| | | position: absolute; |
| | | bottom: 1cm; |
| | | bottom: 0.1cm; |
| | | //transform: translateY(8cm); |
| | | } |
| | | /*#table-sum { |
| | |
| | | gridOptions.columns.forEach(item =>{ |
| | | item.filterMethod = filterChanged |
| | | }) |
| | | list.value = ['quantity','Storage','gross_area','shippedQuantity','shippedArea','glassQuantity','StorageArea'] |
| | | list.value = ['quantity','Storage','grossArea','shippedQuantity','shippedArea','glassQuantity','StorageArea','broken_num'] |
| | | title.value = res.data.title |
| | | res.data.title.forEach((item,index) =>{ |
| | | list.value.push('reportWorkQuantity.'+item.process) |
| | |
| | | mergeCells:[], |
| | | toolbarConfig: { |
| | | zoom: true, |
| | | /*custom: true*/ |
| | | // custom: true |
| | | }, |
| | | cellClassName ({ row, column,columnIndex}) { |
| | | if (columnIndex>10 && row.thisQuantity*1 === row.reportWorkQuantity[column.title]*1){ |
| | |
| | | orderId:null |
| | | }) |
| | | const columns = [ |
| | | {field: 'order_number',fixed:"left", width: 90,title: t('order.OrderNum'),showOverflow:"ellipsis"}, |
| | | // {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {field: 'product_name', width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'glass_child',width: 130, title: t('reportingWorks.glassChild') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'order_type', width: 120,title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'process_id',width: 110, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'technology_number', width: 90,title: t('processCard.technologyNumber'),showOverflow:"ellipsis"}, |
| | | {field: 'child_width', width: 90,title: t('order.width'),showOverflow:"ellipsis"}, |
| | | {field: 'child_height', width: 90,title: t('order.height'),showOverflow:"ellipsis"}, |
| | | {field: 'quantity', width: 90,title: t('order.quantity')}, |
| | | {field: 'glassQuantity', width: 90,title: t('order.glassQuantity')}, |
| | | {field: 'gross_area', width: 90,title: t('order.area')}, |
| | | {field: 'shippedQuantity',width: 120, title: t('delivery.deliveryQuantity')}, |
| | | {field: 'inventory',width: 120, title: t('productStock.inventoryQuantity')}, |
| | | {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')}, |
| | | {field: 'technology_number', width: 90,title: t('processCard.technologyNumber'),showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'quantity',slots: { default: 'show'}, width: 90,title: t('order.quantity')}, |
| | | {field: 'thisQuantity', width: 90,title: t('order.glassQuantity')}, |
| | | {field: 'gross_area',slots: { default: 'show'}, width: 90,title: t('order.area')}, |
| | | {field: 'inventory',slots: { default: 'show'},width: 120, title: t('report.inventoryNum')}, |
| | | {field: 'inventoryArea',slots: { default: 'show'},width: 120, title: t('report.StorageArea')}, |
| | | {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')}, |
| | | ] |
| | | let column = [0,1,3,6,7,8,10,11,12,13] |
| | | let column = [0,2,3,5,7,8,9] |
| | | |
| | | |
| | | onMounted(()=>{ |
| | |
| | | watch(()=>props.orderId,(newValue)=>{ |
| | | getWorkOrder() |
| | | }) |
| | | |
| | | const show = (row,column ) =>{ |
| | | return row[column.field+'Show'] |
| | | } |
| | | |
| | | let mergeCells = ref() |
| | | const getWorkOrder = () => { |
| | |
| | | gridOptions.columns.forEach(item =>{ |
| | | item.filterMethod = filterChanged |
| | | }) |
| | | list.value = ['quantity','inventory','inventoryArea','gross_area','shippedQuantity','glassQuantity'] |
| | | console.log(res) |
| | | |
| | | list.value = ['quantity','thisQuantity','inventory','inventoryArea','gross_area','glassQuantity','broken_num'] |
| | | res.data.title.forEach((item,index) =>{ |
| | | list.value.push('reportWorkQuantity.'+item.process) |
| | | let column = {slots: { default: 'quantitySum'}, |
| | |
| | | res.data.data.forEach(item => { |
| | | item.reportWorkQuantity=JSON.parse(item.reportWorkQuantity) |
| | | item.reportWorkQuantityCount=JSON.parse(item.reportWorkQuantityCount) |
| | | item.reportWorkQuantityShow=JSON.parse(item.reportWorkQuantityShow) |
| | | item.reportWorkQuantityShow=JSON.parse(item.reportWorkQuantityShow) |
| | | }) |
| | | |
| | | await xGrid.value.loadData(res.data.data) |
| | |
| | | |
| | | } |
| | | const footSum =(list, field) => { |
| | | if(xGrid.value.isFilter()){ |
| | | return |
| | | } |
| | | let count = 0 |
| | | list.forEach(item => { |
| | | if(field.indexOf('.')>-1){ |
| | | let array = field.split('.') |
| | | count += Number(item[array[0]][array[1]]) || 0 |
| | | //判断是否为筛选状态和非订单合并状态 |
| | | if(xGrid.value.isFilter() ){ |
| | | count += Number(item[array[0]+'Show'][array[1]]) || 0 |
| | | }else{ |
| | | count += Number(item[array[0]][array[1]]) || 0 |
| | | } |
| | | |
| | | }else { |
| | | count += Number(item[field]) || 0 |
| | | } |
| | | }) |
| | | return count.toFixed(2) |
| | | return count.toFixed(2).replace(/\.?0+$/, ''); |
| | | } |
| | | |
| | | const quantitySum = ( row,column )=>{ |
| | |
| | | <template #quantitySum="{ row,column }"> |
| | | <span>{{ quantitySum(row,column) }} </span> |
| | | </template> |
| | | <template #show="{ row,column }"> |
| | | <span>{{ show(row,column) }} </span> |
| | | </template> |
| | | |
| | | |
| | | </vxe-grid> |
| | | </div> |
| | |
| | | glassQuantity:'小片数量', |
| | | merge:'完整模式', |
| | | layer:'单片模式', |
| | | notFinish:'待完成' |
| | | notFinish:'待完成', |
| | | processCardCollect:'流程卡汇总', |
| | | |
| | | }, |
| | | searchOrder:{ |
| | |
| | | pleaseNumber12:'本工序报工数:', |
| | | pleaseNumber13:'下工序报工数:', |
| | | pleaseNumber14:'本工序修改数不能小于下工序报工数', |
| | | pleaseNumber15:'已入库数量不能大于已完工数量', |
| | | }, |
| | | productStock:{ |
| | | page:{ |
| | |
| | | glassQuantity:'小片数量', |
| | | merge:'完整模式', |
| | | layer:'单片模式', |
| | | notFinish:'待完成' |
| | | notFinish:'待完成', |
| | | processCardCollect:'流程卡汇总', |
| | | |
| | | }, |
| | | searchOrder:{ |
| | |
| | | pleaseNumber12:'本工序报工数:', |
| | | pleaseNumber13:'下工序报工数:', |
| | | pleaseNumber14:'本工序修改数不能小于下工序报工数', |
| | | |
| | | pleaseNumber15:'已入库数量不能大于已完工数量', |
| | | }, |
| | | productStock:{ |
| | | page:{ |
| | |
| | | glassQuantity:'小片数量', |
| | | merge:'完整模式', |
| | | layer:'单片模式', |
| | | notFinish:'待完成' |
| | | notFinish:'待完成', |
| | | processCardCollect:'流程卡汇总', |
| | | |
| | | }, |
| | | searchOrder:{ |
| | |
| | | pleaseNumber12:'本工序报工数:', |
| | | pleaseNumber13:'下工序报工数:', |
| | | pleaseNumber14:'本工序修改数不能小于下工序报工数', |
| | | pleaseNumber15:'已入库数量不能大于已完工数量', |
| | | }, |
| | | productStock:{ |
| | | page:{ |
| | |
| | | glassQuantity:'小片数量', |
| | | merge:'完整模式', |
| | | layer:'单片模式', |
| | | notFinish:'待完成' |
| | | |
| | | notFinish:'待完成', |
| | | processCardCollect:'流程卡汇总', |
| | | }, |
| | | searchOrder:{ |
| | | createOrder:'Выписать заказ', |
| | |
| | | pleaseNumber12:'本工序报工数:', |
| | | pleaseNumber13:'下工序报工数:', |
| | | pleaseNumber14:'本工序修改数不能小于下工序报工数', |
| | | pleaseNumber15:'已入库数量不能大于已完工数量', |
| | | }, |
| | | productStock:{ |
| | | page:{ |
| | |
| | | glassQuantity:'小片数量', |
| | | merge:'完整模式', |
| | | layer:'单片模式', |
| | | notFinish:'待完成' |
| | | notFinish:'待完成', |
| | | processCardCollect:'流程卡汇总', |
| | | |
| | | }, |
| | | searchOrder:{ |
| | |
| | | pleaseNumber12:'本工序报工数:', |
| | | pleaseNumber13:'下工序报工数:', |
| | | pleaseNumber14:'本工序修改数不能小于下工序报工数', |
| | | pleaseNumber15:'已入库数量不能大于已完工数量', |
| | | }, |
| | | productStock:{ |
| | | page:{ |
| | |
| | | produce:'生产', |
| | | traveler:'流程卡', |
| | | warehousing:'入库', |
| | | unpaidQuantity:"未发数量 ", |
| | | unpaidQuantity:"订单未发数量 ", |
| | | availableStock:'可用库存', |
| | | deliveryQuantity:'发货数量', |
| | | pleaseEnterTheAmountOfFunds:'请输入项目名称', |
| | |
| | | container: container.value, |
| | | flowCard: selectRecords |
| | | }) |
| | | |
| | | request.post("/finishedGoodsInventory/addSelectWarehousing",flowData.value).then((res) => { |
| | | if(res.code==200 && res.data==="true"){ |
| | | ElMessage.success(t('productStock.receivedSuccessfully')) |
| | |
| | | import { useI18n } from 'vue-i18n' |
| | | import footSum from "@/hook/footSum"; |
| | | import {addListener} from "@/hook/mouseMove"; |
| | | import useUserInfoStore from '@/stores/userInfo' |
| | | |
| | | //语言获取 |
| | | const { t } = useI18n() |
| | | const userStore = useUserInfoStore() |
| | | let router=useRouter() |
| | | let produceList = ref([]) |
| | | let dialogTableVisible = ref(false) |
| | | const getTableRow = (row,type) =>{ |
| | | switch (type) { |
| | | case 'edit' :{ |
| | |
| | | filterData.value[column.property] = value |
| | | } |
| | | request.post(`/finishedGoodsInventory/getSelect/1/${total.pageSize}`,filterData.value).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal= res.data.total.pageTotal |
| | |
| | | const selectOrderList = ()=>{ |
| | | |
| | | request.post(`/finishedGoodsInventory/getSelect/${pageNum.value}/${total.pageSize}`,filterData.value).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | if (res.data.total!=null){ |
| | | total.dataTotal = res.data.total.total*1 |
| | |
| | | { 'code' :'issue','name':t('productStock.orderTransfer'),status: 'primary'}, |
| | | { 'code' :'out','name':t('productStock.finishedProductPickup'),status: 'primary'}, |
| | | /*{ 'code' :'rework','name':t('productStock.finishedProductRework'),status: 'primary'},*/ |
| | | { 'code' :'changeRack','name':'装箱调架',status: 'primary'}, |
| | | |
| | | ], |
| | | /*import: false, |
| | |
| | | }) |
| | | |
| | | |
| | | |
| | | let currentRecord = ref(null) |
| | | const xGrid = ref(); |
| | | const gridEvents = { |
| | | toolbarButtonClick({ code }) { |
| | |
| | | switch (code){ |
| | | case 'issue':{ |
| | | /*VXETable.modal.confirm('点击了库存调拨');*/ |
| | | router.push({path: '/main/productStock/OrderAllocation'}); |
| | | return; |
| | | router.push({path: '/main/productStock/OrderAllocation'}) |
| | | break |
| | | } |
| | | case 'out':{ |
| | | router.push({path: '/main/productStock/FinishedGoodsIssue'}); |
| | | return; |
| | | break; |
| | | router.push({path: '/main/productStock/FinishedGoodsIssue'}) |
| | | break |
| | | } |
| | | case 'rework':{ |
| | | router.push({path: '/main/productStock/FinishedProductRework'}); |
| | | return; |
| | | break; |
| | | router.push({path: '/main/productStock/FinishedProductRework'}) |
| | | break |
| | | } |
| | | case 'changeRack':{ |
| | | currentRecord.value = null |
| | | if(xGrid.value.getCurrentRecord()===null){ |
| | | ElMessage.warning(t('productStock.unselectedData')) |
| | | return |
| | | } |
| | | currentRecord.value = JSON.parse(JSON.stringify(xGrid.value.getCurrentRecord())) |
| | | dialogTableVisible.value = true |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | const changeRack =async () => { |
| | | const max = xGrid.value.getCurrentRecord().quantityAvailable*1 || 0 |
| | | if(currentRecord.value.quantityAvailable<=0 || parseInt(currentRecord.value.quantityAvailable)>max){ |
| | | ElMessage.warning(`0<value<=${xGrid.value.getCurrentRecord().quantityAvailable}`) |
| | | return |
| | | } |
| | | if(currentRecord.value.boxNo.length>255 || currentRecord.value.remark.length>255){ |
| | | ElMessage.warning('箱号或备注'+t('basicData.msg.max255')) |
| | | return |
| | | } |
| | | await request.post(`/finishedGoodsInventory/changeRack/${userStore.user.userName}`,currentRecord.value).then((res) => { |
| | | if(res.code==200 ){ |
| | | ElMessage.success('装箱调架成功') |
| | | router.push({path: '/main/productStock/productStockList', query:{random:Math.random()}}) |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | |
| | | </template> |
| | | |
| | | </vxe-grid> |
| | | |
| | | <el-dialog v-model="dialogTableVisible" style="width: 400px;height:250px;margin-top: 25vh"> |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-text>箱号:</el-text> |
| | | </el-col> |
| | | <el-col :span="16"> |
| | | <el-input v-model="currentRecord.boxNo"/> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-text>数量:</el-text> |
| | | </el-col> |
| | | <el-col :span="16"> |
| | | <el-input v-model="currentRecord.quantityAvailable" type="number"/> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-text>备注:</el-text> |
| | | </el-col> |
| | | <el-col :span="16"> |
| | | <el-input v-model="currentRecord.remark"/> |
| | | </el-col> |
| | | </el-row> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary" @click="changeRack"> |
| | | 调架 |
| | | </el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | .el-row { |
| | | margin-bottom: 10px; |
| | | } |
| | | </style> |
| | |
| | | |
| | | }else if(res.data==="false1"){ |
| | | ElMessage.warning("发货单已创建") |
| | | }else if(res.data==="false2"){ |
| | | ElMessage.warning("物料可能存在装箱调架,无法退回") |
| | | }else{ |
| | | ElMessage.warning(t('productStock.cancellationFailed')) |
| | | } |
| | |
| | | const dialogTableVisible = ref(false) |
| | | const dialogTableVisible1 = ref(false) |
| | | let produceList = ref([]) |
| | | const getTableRow = (row,type) =>{ |
| | | switch (type) { |
| | | case 'add' :{ |
| | | alert('我接收到子组件传送的编辑信息') |
| | | break |
| | | } |
| | | case 'delete':{ |
| | | alert('我接收到子组件传送的删除信息') |
| | | break |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | //打印 |
| | | let printRow = ref({ |
| | |
| | | downGrind: item.downGrind, |
| | | leftGrind: item.leftGrind, |
| | | rightGrind:item.rightGrind, |
| | | layoutId:item.layoutId, |
| | | heatLayoutId:item.heatLayoutId, |
| | | process:item.process, |
| | | orderNo:item.orderNo, |
| | | customerName:item.customerName, |
| | | processingNote:item.processingNote, |
| | | projectName:item.projectName, |
| | | productName:item.productName, |
| | | buildingNumber:item.buildingNumber, |
| | | rackNo: rackNoValue |
| | | }; |
| | | }); |
| | |
| | | }else if(row.quantity_card<row.completedQuantity){ |
| | | return new Error(t('reportingWorks.pleaseNumber10')) |
| | | } |
| | | const nextProcess = titleUploadData.value.nextProcess//下工序 |
| | | |
| | | const completedSum = Number(row.thisQuantitySum) //总完工数量 |
| | | const nextQuantitySum = Number(row.nextQuantitySum) //总下工序完工数量 |
| | | let nextQuantitySum = '' |
| | | if (nextProcess!=''){ |
| | | nextQuantitySum = Number(row.nextQuantitySum) //总下工序完工数量 |
| | | }else { |
| | | nextQuantitySum = Number(row.received_quantity) //总下工序完工数量 |
| | | } |
| | | const totalQuantity = Number(row.quantity) //可完工数量 |
| | | const val = Number(cellValue) //输入值 |
| | | |
| | |
| | | `) |
| | | } |
| | | if(titleUploadData.value.reportingWorkId!=null){ |
| | | if(row.completedQuantityComputed>=row.minQuantity ){ |
| | | if((val<(row.completedQuantityComputed-row.minQuantity || val>=row.completedQuantityComputed))){ |
| | | return new Error(`${row.completedQuantityComputed-row.minQuantity} |
| | | if (nextProcess!=''){//非最后一道工序 |
| | | if(row.completedQuantityComputed>=row.minQuantity ){ |
| | | if((val<(row.completedQuantityComputed-row.minQuantity || val>=row.completedQuantityComputed))){ |
| | | return new Error(`${row.completedQuantityComputed-row.minQuantity} |
| | | <=val<= |
| | | ${row.completedQuantityComputed}`) |
| | | } |
| | | }else{ |
| | | if((val>row.completedQuantityComputed)){ |
| | | return new Error(`val |
| | | } |
| | | }else{ |
| | | if((val>row.completedQuantityComputed)){ |
| | | return new Error(`val |
| | | <= |
| | | ${row.completedQuantityComputed}`) |
| | | } |
| | | } |
| | | }else {//最后一道工序 |
| | | if (val<row.completedQuantityComputed){ |
| | | //库存数量、已入库数量 |
| | | if (val>(row.inventory_quantity-row.received_quantity)){ |
| | | return new Error(`val |
| | | <= |
| | | ${row.inventory_quantity-row.received_quantity}`) |
| | | }else { |
| | | if (val < (row.inventory_quantity-row.received_quantity)){ |
| | | //完工总数、本次完工数、已入库数量 |
| | | if (completedSum-row.completedQuantityComputed <row.received_quantity){ |
| | | return new Error(`${t('reportingWorks.pleaseNumber15')}`) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | orderId: titleUploadData.value.orderId |
| | | }, |
| | | processId:processIdStr, |
| | | orderNumber:item.order_number |
| | | orderNumber:item.order_number, |
| | | inventoryQuantity:item.completedQuantity |
| | | })); |
| | | let flowData = ref({ |
| | | decValue:company.decValue, |
| | |
| | | columns:[ |
| | | {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",}, |
| | | {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left",}, |
| | | |
| | | {field:'createOrder',title: t('searchOrder.createOrder'), width: 40, slots: { default: 'state' }}, |
| | | {field:'processReview',title: t('order.technology'), width: 40, filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {field:'orderReview',title: t('basicData.review'), width: 40, filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {field:'productionOrder',title: t('searchOrder.production'), width: 40, filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {field:'processingCard',title: t('searchOrder.process'), width: 40, filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {field:'warehousing',title: t('searchOrder.storage'), width: 40, filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | {field:'delivery',title: t('searchOrder.delivery'), width: 40,filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }}, |
| | | |
| | | |
| | | {field: 'orderId',width:120, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'customerId',width:120, title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'customerName',width:120, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'project',width:120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'batch',width:120, title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'quantity',width:120, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'goodsQuantity',width:120, title: t('searchOrder.inventoryNum'), sortable: true}, |
| | | // {field: 'goodsQuantity',width:120, title: t('searchOrder.inventoryNum'), sortable: true}, |
| | | {field: 'area',width:120, title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'bomPrice',width:120, title: 'BOM成本',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'money',width:120, title: t('order.money'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'createTime',width:120,filters:[{ data: '' }],slots: { filter: 'num1_filter' }, title: t('basicData.reportData'), sortable: true}, |
| | | {field: 'updateTime',width:120, title: t('productStock.approvedDate'), sortable: true}, |
| | | {field: 'packType',width:120, title: t('order.packType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'orderType',width:120, title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'salesman',width:120, title: t('order.salesman'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'creator',width:120, title: t('product.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'verifier',width:120, title: t('basicData.review'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | //{field: 'verifier',width:120, title: t('basicData.review'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'perimeter',width:120, title: t('searchOrder.perimeter'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'deliveryDate',width:120, title: t('order.deliveryDate'), sortable: true}, |
| | | {field: 'customerBatch',width:120, title: t('order.customerBatch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | |
| | | //{field: '14',width:120, title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'deliveryAddress',width:120, title: t('order.deliveryAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | //{field: 'deliveryAddress',width:120, title: t('order.deliveryAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'processingNote',width:120, title: t('order.processingNote'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true} |
| | | |
| | | ], |
| | |
| | | if (columnIndex === 0) { |
| | | return t('basicData.total') |
| | | } |
| | | const List = ["quantity",'goodsQuantity','area','perimeter','money'] |
| | | const List = ["quantity",'goodsQuantity','area','perimeter','money','bomPrice'] |
| | | if (List.includes(column.field)) { |
| | | //return footSum(data, column.field) |
| | | return total.value[column.field] |
| | | return footSum(data, column.field) |
| | | //return total.value[column.field] |
| | | } |
| | | return '' |
| | | }) |
| | |
| | | /*total.dataTotal = res.data.total.dataTotal*1 |
| | | total.pageTotal= res.data.total.pageTotal*/ |
| | | orderInfo.selectDate = res.data.selectDate |
| | | res.data.data.forEach((item)=>{ |
| | | item.bomPrice=(item.money/1.3).toFixed(2) |
| | | }) |
| | | orderList.value = deepClone(res.data.data) |
| | | xGrid.value.loadData(orderList.value) |
| | | }else{ |
| | |
| | | link |
| | | type="primary" |
| | | size="small"> |
| | | 生成BOM |
| | | BOM查询 |
| | | </el-button> |
| | | |
| | | </template> |
| | |
| | | <el-col :span="8">其他:</el-col> |
| | | <el-col :span="8">5</el-col> |
| | | </el-row> |
| | | <template #footer>合计xxx元</template> |
| | | </el-card> |
| | | |
| | | |
| | |
| | | <el-col :span="8">5</el-col> |
| | | </el-row> |
| | | |
| | | <!-- <template #footer>合计xx元</template>--> |
| | | <template #footer>合计xxx元</template> |
| | | </el-card> |
| | | |
| | | <el-card style="max-width: 480px;margin-left: 45px;margin-top: 20px"> |
| | |
| | | <el-col :span="8">853.11㎡</el-col> |
| | | </el-row> |
| | | |
| | | <!-- <template #footer>合计xx元</template>--> |
| | | <template #footer>合计xxx元</template> |
| | | </el-card> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary">转采购单</el-button> |
| | | <el-button type="primary"> |
| | | 领料 |
| | | </el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | |
| | |
| | | {field: 'select',type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"}, |
| | | {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left"}, |
| | | {field: 'orderId',width:120, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'orderNumber',width:120, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'finishedGoodsInventory.boxNo',width:120, title: t('箱号'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'width',width:120, title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'height',width:120, title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'deliveryDetail.quantity',width:120, title: t('delivery.deliveryQuantity'),editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'finishedGoodsInventory.quantityAvailable',width:120, title: t('delivery.availableStock'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'order.quantity',width:120, title: t('delivery.unpaidQuantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'order.quantity',width:160, title: t('delivery.unpaidQuantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'quantity',width:120, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | //{field: 'buildingNumber',width:120, title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'productId',width:120, title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | |
| | | import PrintSheet3 from "@/components/sd/order/PrintSheet3.vue" |
| | | import PrintSheet4 from "@/components/sd/order/PrintSheet4.vue" |
| | | import PrintSheet5 from "@/components/sd/order/PrintSheet5.vue" |
| | | import OrderProcessCollect from "@/components/sd/order/OrderProcessCollect.vue"; |
| | | const { t } = useI18n() |
| | | const orderInfo = useOrderInfoStore() |
| | | const userStore = useUserInfoStore() |
| | |
| | | :row="rowClickIndex===null?{}:rowClickIndex" |
| | | /> |
| | | </el-tab-pane> |
| | | <el-tab-pane :label="$t('order.processCardCollect')" name="4"> |
| | | <order-process-collect |
| | | v-if="tabsValue==='4'" |
| | | :orderId="rowClickIndex===null?null:rowClickIndex.orderId" |
| | | :row="rowClickIndex===null?{}:rowClickIndex" |
| | | /> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | |
| | | </div> |
| | |
| | | public Result getSelectPrints( @RequestBody Map<String, Object> object){ |
| | | return Result.seccess(finishedGoodsInventoryService.getSelectPrintSvs(object)); |
| | | } |
| | | |
| | | @ApiOperation("成品装箱调架") |
| | | @SaCheckPermission("createProductStock.add") |
| | | @PostMapping("/changeRack/{user}") |
| | | public Result changeRack( @RequestBody FinishedGoodsInventory finishedGoodsInventory,@PathVariable String user){ |
| | | return Result.seccess(finishedGoodsInventoryService.changeRack(finishedGoodsInventory,user)); |
| | | |
| | | } |
| | | } |
| | |
| | | package com.example.erp.entity.mm; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.example.erp.entity.sd.*; |
| | | import lombok.Data; |
| | |
| | | private LocalDate endTime; |
| | | private String processId; |
| | | private String boxNo; |
| | | @TableField(select = false,exist = false) |
| | | private Order order; |
| | | @TableField(select = false,exist = false) |
| | | private OrderDetail orderDetail; |
| | | @TableField(select = false,exist = false) |
| | | private Double weight; |
| | | |
| | | } |
| | |
| | | package com.example.erp.mapper.mm; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.example.erp.dto.otherSystem.GlassDetailList; |
| | | import com.example.erp.entity.mm.FinishedGoodsInventory; |
| | | import com.example.erp.entity.mm.FinishedOperateLog; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.entity.sd.*; |
| | | import com.example.erp.entity.userInfo.User; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.springframework.data.repository.CrudRepository; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Mapper |
| | | public interface FinishedGoodsInventoryMapper extends CrudRepository<FinishedGoodsInventory,Long> { |
| | | public interface FinishedGoodsInventoryMapper extends BaseMapper<FinishedGoodsInventory> { |
| | | |
| | | |
| | | |
| | |
| | | Map<String,Integer> getSelectWarehousingPageTotal(Integer offset, Integer pageSize,FlowCard flowCard); |
| | | |
| | | Integer findOrderNumberdcount(@Param("orderId") String orderId, |
| | | @Param("orderNumber") Integer orderNumber); |
| | | @Param("orderNumber") Integer orderNumber, String boxNo); |
| | | |
| | | FinishedGoodsInventory findOrderNumberd(@Param("orderId") String orderId, |
| | | @Param("orderNumber") Integer orderNumber); |
| | |
| | | Boolean updateDeliveryDeliveryState(String deliveryId,Integer state); |
| | | |
| | | Boolean updateDeliveryDetailState(@Param("orderId") String orderId, |
| | | @Param("orderNumber") Integer orderNumber,@Param("deliveryId") String deliveryId,Integer state); |
| | | @Param("orderNumber") Integer orderNumber, @Param("deliveryId") String deliveryId, Integer state, String remarks); |
| | | |
| | | Boolean insertFinishedGoodsInventory(@Param("flowCard") FlowCard flowCard, |
| | | @Param("storageRegion") String storageRegion, |
| | |
| | | @Param("quantity") Integer quantity); |
| | | |
| | | Boolean updateInventoryquantityOut(@Param("orderId") String orderId, |
| | | @Param("orderNumber") Integer orderNumber, |
| | | @Param("quantity") Integer quantity); |
| | | @Param("orderNumber") Integer orderNumber, |
| | | @Param("quantity") Integer quantity, |
| | | @Param("boxNo") String boxNo); |
| | | Boolean updateInventoryquantityInt(@Param("orderId") String orderId, |
| | | @Param("orderNumber") Integer orderNumber, |
| | | @Param("quantity") Integer quantity); |
| | | @Param("orderNumber") Integer orderNumber, |
| | | @Param("quantity") Integer quantity); |
| | | Boolean updateInventoryquantityIntBybox(@Param("orderId") String orderId, |
| | | @Param("orderNumber") Integer orderNumber, |
| | | @Param("quantity") Integer quantity, String boxNo); |
| | | |
| | | Boolean updateInventoryInventoryOut(@Param("orderId") String orderId, |
| | | @Param("orderNumber") Integer orderNumber, |
| | | @Param("quantity") Integer quantity); |
| | | @Param("orderNumber") Integer orderNumber, |
| | | @Param("quantity") Integer quantity, String boxNo); |
| | | Boolean updateInventoryInventoryInt(@Param("orderId") String orderId, |
| | | @Param("orderNumber") Integer orderNumber, |
| | | @Param("quantity") Integer quantity); |
| | | @Param("orderNumber") Integer orderNumber, |
| | | @Param("quantity") Integer quantity, String remarks); |
| | | |
| | | List<OrderDetail> getSelectOrderDetail(String orderId); |
| | | |
| | |
| | | FlowCard findFlowCard(FlowCard flowCard); |
| | | |
| | | DeliveryDetail findDeliverydetail(@Param("orderId") String orderId, |
| | | @Param("orderNumber") Integer orderNumber,@Param("deliveryId") String deliveryId); |
| | | @Param("orderNumber") Integer orderNumber, @Param("deliveryId") String deliveryId, String boxNo); |
| | | |
| | | |
| | | Integer findOrderNumberdContainercount(String orderId, Integer orderNumber, String container); |
| | |
| | | package com.example.erp.mapper.mm; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.example.erp.dto.mm.FinishedOperateLogDTO; |
| | | import com.example.erp.entity.mm.FinishedGoodsInventory; |
| | | import com.example.erp.entity.mm.FinishedOperateLog; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.entity.sd.OrderDetail; |
| | |
| | | import java.util.Map; |
| | | |
| | | @Mapper |
| | | public interface FinishedOperateLogMapper extends CrudRepository<FinishedOperateLog,Long> { |
| | | public interface FinishedOperateLogMapper extends BaseMapper<FinishedOperateLog> { |
| | | FinishedOperateLog getselectFinishedOperateLog(); |
| | | |
| | | Boolean insertIntFinishedOperateLog(@Param("flowCard") FlowCard flowCard ,@Param("userName") String userName, |
| | | @Param("oddNumber") String oddNumber,@Param("container") String container, |
| | | @Param("deliveryDetailMoney") Double deliveryDetailMoney,@Param("deliveryDetailArea") Double deliveryDetailArea); |
| | | |
| | | Boolean insertOutFinishedOperateLog(@Param("orderDetail") OrderDetail orderDetail,@Param("userName") String userName,@Param("oddNumber") String oddNumber); |
| | | Boolean insertOutFinishedOperateLog(@Param("orderDetail") OrderDetail orderDetail, @Param("userName") String userName, @Param("oddNumber") String oddNumber, String boxNo); |
| | | |
| | | Boolean insertFinishedOperateLogAllocate(@Param("orderDetail") OrderDetail orderDetail,@Param("userName") String userName,@Param("oddNumber") String oddNumber); |
| | | |
| | |
| | | package com.example.erp.mapper.pp; |
| | | |
| | | import com.baomidou.mybatisplus.core.assist.ISqlRunner; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.example.erp.entity.pp.DamageDetails; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | public interface DamageDetailsMapper extends BaseMapper<DamageDetails> { |
| | | Integer getBehindDamageSum(String processId, String orderNumber, String technologyNumber, String behindProcess); |
| | | Integer getBehindDamageSum(String processId, String orderNumber, String technologyNumber, String behindProcess,Integer needOrderNumber); |
| | | |
| | | List<DamageDetails> getNotReview(String processId, String orderNumber,String technologyNumber); |
| | | } |
| | |
| | | List<Map<String,String>> filterOrderProcess(String orderId); |
| | | |
| | | List<Map<String,Object>> getGlassLRow(String orderId); |
| | | List<Map<String,Object>> getProcessGlassLRow(String orderId); |
| | | |
| | | List<Map<String, String>> filterLastProcess(String orderId, String orderNumber, String technologyNumber,String id); |
| | | |
| | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.example.erp.dto.mm.FinishedOperateLogDTO; |
| | | import com.example.erp.entity.mm.FinishedGoodsInventory; |
| | | import com.example.erp.entity.mm.FinishedOperateLog; |
| | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.sql.SQLException; |
| | | import java.sql.Wrapper; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | | @DS("mm") |
| | |
| | | //添加领出记录 |
| | | finishedOperateLogMapper.insertFinishedOperateLogTakeOut(orderDetail,userName,oddNumber,operateType,remarks); |
| | | //修改库存数量 |
| | | finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity())); |
| | | finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()), orderDetail.getDeliveryDetail().getBoxNo()); |
| | | //修改订单明细表数量 |
| | | finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity())); |
| | | if (Objects.equals(oldordersum, oldordernumbersum)){ |
| | |
| | | //添加领出记录 |
| | | finishedOperateLogMapper.insertFinishedOperateLogRework(orderDetail,userName,oddNumber,operateType,remarks); |
| | | //修改库存数量 |
| | | finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity())); |
| | | finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()), orderDetail.getDeliveryDetail().getBoxNo()); |
| | | //修改订单明细表数量 |
| | | finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity())); |
| | | if (Objects.equals(oldordersum, oldordernumbersum)){ |
| | |
| | | //审核修改领出记录 |
| | | finishedOperateLogMapper.updateToExamine(finishedOperateLog,userName,"已审核"); |
| | | //审核修改库存数量 |
| | | finishedGoodsInventoryMapper.updateInventoryInventoryOut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),Math.toIntExact(finishedOperateLog.getQuantity())); |
| | | finishedGoodsInventoryMapper.updateInventoryInventoryOut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),Math.toIntExact(finishedOperateLog.getQuantity()),finishedOperateLog.getRemarks()); |
| | | log.setFunction("updateFinishedGoodsInventoryToExamine审核"); |
| | | } else if (Objects.equals(type, "反审")) { |
| | | //审核修改领出记录 |
| | | finishedOperateLogMapper.updateToExamine(finishedOperateLog,userName,"未审核"); |
| | | //审核修改库存数量 |
| | | finishedGoodsInventoryMapper.updateInventoryInventoryInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),Math.toIntExact(finishedOperateLog.getQuantity())); |
| | | finishedGoodsInventoryMapper.updateInventoryInventoryInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),Math.toIntExact(finishedOperateLog.getQuantity()), finishedOperateLog.getRemarks()); |
| | | log.setFunction("updateFinishedGoodsInventoryToExamine反审"); |
| | | } |
| | | |
| | |
| | | alias="LC"; |
| | | }else if(Objects.equals(type, "返工")){ |
| | | alias="FG"; |
| | | }else if(Objects.equals(type, "调架")){ |
| | | alias="TJ"; |
| | | } |
| | | //查询当天的最大数量 |
| | | Integer maximum=finishedOperateLogMapper.getmaximum(type); |
| | |
| | | } |
| | | |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | itemmap.put("detail", finishedOperateLogMapper.getPrimaryListLimts(finishedOperateLog.getOrder().getCustomerName(),finishedOperateLog.getOrder().getProject(),finishedOperateLog.getRemarks())); |
| | | itemmap.put("detail", finishedOperateLogMapper.getPrimaryListLimts( |
| | | finishedOperateLog.getOrder().getCustomerName(), |
| | | finishedOperateLog.getOrder().getProject(), |
| | | finishedOperateLog.getRemarks())); |
| | | |
| | | List<Map<String, Object>> detailList = finishedOperateLogMapper.getDetailList2(finishedOperateLog.getOrderId(),finishedOperateLog.getProcessId(),finishedOperateLog.getRemarks()); |
| | | |
| | |
| | | String oddNumber= orderNumberSetting("出库"); |
| | | OrderDetail orderDetailNew= finishedGoodsInventoryMapper.findOrderDetailNumberd(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber()); |
| | | //添加出入库记录 |
| | | finishedOperateLogMapper.insertOutFinishedOperateLog(orderDetail,userName,oddNumber); |
| | | Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber()); |
| | | finishedOperateLogMapper.insertOutFinishedOperateLog(orderDetail,userName,oddNumber,orderDetail.getDeliveryDetail().getBoxNo()); |
| | | |
| | | //判断发货单的库存是否存在 |
| | | Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getBoxNo()); |
| | | |
| | | //获取订单总数量 |
| | | Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(orderDetail.getDeliveryDetail().getOrderId()); |
| | | //获取库存总数量 |
| | | Integer orderNumberdsum = finishedGoodsInventoryMapper.findOrderNumberdsum(orderDetail.getDeliveryDetail().getOrderId()); |
| | | //获取发货总数量 |
| | | Integer orderNumberdDeliverysum = finishedGoodsInventoryMapper.findOrderDeliveryQuantitySum(orderDetail.getDeliveryDetail().getOrderId()); |
| | | |
| | | //获取此发货单 发货总数量 |
| | | Integer deliverysum = finishedGoodsInventoryMapper.findDeliveryQuantity(orderDetail.getDeliveryDetail().getDeliveryId()); |
| | | //获取已经出库的数量 |
| | | Integer deliverydetailsum = finishedGoodsInventoryMapper.findDeliverydetailsum(orderDetail.getDeliveryDetail().getDeliveryId(),0); |
| | | if(deliverydetailsum==null){ |
| | | deliverydetailsum=0; |
| | | } |
| | | |
| | | DeliveryDetail deliveryDetail=finishedGoodsInventoryMapper.findDeliverydetail(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId()); |
| | | DeliveryDetail deliveryDetail=finishedGoodsInventoryMapper. |
| | | findDeliverydetail(orderDetail.getDeliveryDetail().getOrderId(), |
| | | orderDetail.getDeliveryDetail().getOrderNumber(), |
| | | orderDetail.getDeliveryDetail().getDeliveryId(), |
| | | orderDetail.getDeliveryDetail().getBoxNo() |
| | | |
| | | ); |
| | | /*System.out.println("订单总数:" + ordersum + "订单库存数:" + orderNumberdsum + "准备出库数量" + |
| | | orderDetail.getWarehouseNum()+ "发货数量" + orderDetail.getDeliveryDetail().getQuantity()+ "发货总数" + |
| | | deliverysum+ "已发数量" + deliverydetailsum);*/ |
| | |
| | | if(deliveryDetail==null){ |
| | | if(orderDetailNew.getWarehouseNum()>=orderDetail.getDeliveryDetail().getQuantity()){ |
| | | //修改库存表库存数量 |
| | | finishedGoodsInventoryMapper.updateInventoryInventoryOut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity()); |
| | | finishedGoodsInventoryMapper.updateInventoryInventoryOut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity(),orderDetail.getDeliveryDetail().getBoxNo()); |
| | | //修改发货明细表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDetailState(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId(),0); |
| | | finishedGoodsInventoryMapper.updateDeliveryDetailState(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId(),0, orderDetail.getDeliveryDetail().getBoxNo()); |
| | | //修改发货表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),1); |
| | | //修改订单明细表发货数量 |
| | |
| | | |
| | | if(Objects.equals(finishedOperateLog.getOperateType(), "入库")){ |
| | | Delivery delivery = finishedGoodsInventoryMapper.findOrderDelivery(finishedOperateLog.getOrderId()); |
| | | if(delivery==null){ |
| | | FinishedGoodsInventory existFinishedGoodsInventory = finishedGoodsInventoryMapper. |
| | | selectOne(new LambdaQueryWrapper<FinishedGoodsInventory>() |
| | | .eq(FinishedGoodsInventory::getOrderId, finishedOperateLog.getOrderId()) |
| | | .eq(FinishedGoodsInventory::getOrderNumber, finishedOperateLog.getOperationNumber()) |
| | | .eq(FinishedGoodsInventory::getBoxNo, finishedOperateLog.getRemarks()) |
| | | ); |
| | | if(delivery!=null){ |
| | | return "false1"; |
| | | } |
| | | if(existFinishedGoodsInventory.getQuantityAvailable()<finishedOperateLog.getQuantity()){ |
| | | return "false2"; |
| | | } |
| | | |
| | | //修改记录表 |
| | | finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"已作废"); |
| | | //修改库存表入库数量 |
| | |
| | | finishedGoodsInventoryMapper.updateOrderWarehousingState(finishedOperateLog.getOrderId(),0); |
| | | } |
| | | log.setFunction("cancelFinishedGoodsInventoryStorage入库"); |
| | | }else{ |
| | | return "false1"; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | |
| | | //修改记录表 |
| | | finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"已作废"); |
| | | //修改库存表库存数量 |
| | | finishedGoodsInventoryMapper.updateInventoryInventoryInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getQuantity()); |
| | | finishedGoodsInventoryMapper.updateInventoryInventoryInt( |
| | | finishedOperateLog.getOrderId(), |
| | | finishedOperateLog.getOperationNumber(), |
| | | finishedOperateLog.getQuantity(), |
| | | finishedOperateLog.getRemarks() |
| | | ); |
| | | //修改发货明细表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDetailState(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getOperationOrderNumber(),1); |
| | | finishedGoodsInventoryMapper.updateDeliveryDetailState( |
| | | finishedOperateLog.getOrderId(), |
| | | finishedOperateLog.getOperationNumber(), |
| | | finishedOperateLog.getOperationOrderNumber(), |
| | | 1, |
| | | finishedOperateLog.getRemarks()); |
| | | //修改发货表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDeliveryState(finishedOperateLog.getOperationOrderNumber(),1); |
| | | //修改订单明细表库内数量 |
| | |
| | | } |
| | | return "true"; |
| | | } |
| | | |
| | | public Map<String,Object> changeRack(FinishedGoodsInventory finishedGoodsInventory, String user) { |
| | | Long id = finishedGoodsInventory.getId(); |
| | | Map<String,Object> map = new HashMap<>(); |
| | | FinishedGoodsInventory oldFinishedGoodsInventory = finishedGoodsInventoryMapper.selectById(finishedGoodsInventory.getId()); |
| | | |
| | | //查询此此序号箱号的库存是否存在 |
| | | FinishedGoodsInventory existFinishedGoodsInventory = finishedGoodsInventoryMapper |
| | | .selectOne(new LambdaQueryWrapper<FinishedGoodsInventory>() |
| | | .eq(FinishedGoodsInventory::getOrderId, finishedGoodsInventory.getOrderId()) |
| | | .eq(FinishedGoodsInventory::getOrderNumber, finishedGoodsInventory.getOrderNumber()) |
| | | .eq(FinishedGoodsInventory::getBoxNo, finishedGoodsInventory.getBoxNo()) |
| | | .last("limit 1") |
| | | ); |
| | | String operationOrderNumber = orderNumberSetting("调架"); |
| | | FinishedOperateLog finishedOperateLog = new FinishedOperateLog(); |
| | | finishedOperateLog.setOperationOrderNumber(operationOrderNumber); |
| | | finishedOperateLog.setOrderId(oldFinishedGoodsInventory.getOrderId()); |
| | | finishedOperateLog.setOperationNumber(oldFinishedGoodsInventory.getOrderNumber()); |
| | | finishedOperateLog.setProcessId(oldFinishedGoodsInventory.getProcessId()); |
| | | finishedOperateLog.setOperateType("调架"); |
| | | finishedOperateLog.setOperator(user); |
| | | //当成品箱号不存在,则新增 |
| | | if(existFinishedGoodsInventory==null){ |
| | | //当转移数量大于实际库存箱号时,则不能转移 |
| | | if(oldFinishedGoodsInventory.getQuantityAvailable()<finishedGoodsInventory.getQuantityAvailable()){ |
| | | map.put("code",0); |
| | | return map; |
| | | } |
| | | //原库存 数量面积减少 |
| | | oldFinishedGoodsInventory.setInventory(oldFinishedGoodsInventory.getInventory()-finishedGoodsInventory.getQuantityAvailable()); |
| | | oldFinishedGoodsInventory.setQuantityAvailable(oldFinishedGoodsInventory.getQuantityAvailable()-finishedGoodsInventory.getQuantityAvailable()); |
| | | oldFinishedGoodsInventory.setArea(oldFinishedGoodsInventory.getInventory()*oldFinishedGoodsInventory.getActualSignalArea()); |
| | | |
| | | //新库存数据增加 |
| | | finishedGoodsInventory.setId(null); |
| | | finishedGoodsInventory.setInventory(finishedGoodsInventory.getQuantityAvailable()); |
| | | finishedGoodsInventory.setArea(finishedGoodsInventory.getQuantityAvailable()*finishedGoodsInventory.getActualSignalArea()); |
| | | |
| | | finishedGoodsInventoryMapper. |
| | | update(oldFinishedGoodsInventory, |
| | | new LambdaUpdateWrapper<FinishedGoodsInventory>() |
| | | .eq(FinishedGoodsInventory::getId,id) |
| | | ) ; |
| | | finishedGoodsInventoryMapper.insert(finishedGoodsInventory); |
| | | |
| | | |
| | | //往操作日志表添加数据 |
| | | finishedOperateLog.setQuantity(finishedGoodsInventory.getQuantityAvailable()); |
| | | finishedOperateLog.setRemarks(oldFinishedGoodsInventory.getBoxNo()+"->"+finishedGoodsInventory.getBoxNo()); |
| | | finishedOperateLogMapper.insert(finishedOperateLog); |
| | | |
| | | map.put("code",1); |
| | | return map;//库存转移成功,新增箱号 |
| | | |
| | | }else{ |
| | | //当id不变时,修改备注 |
| | | if(Objects.equals(id, existFinishedGoodsInventory.getId())){ |
| | | finishedGoodsInventoryMapper. |
| | | update(null,new LambdaUpdateWrapper<FinishedGoodsInventory>() |
| | | .eq(FinishedGoodsInventory::getId,id) |
| | | .set(FinishedGoodsInventory::getRemark,finishedGoodsInventory.getRemark())); |
| | | map.put("code",2); |
| | | return map;//库存备注修改成功 |
| | | }else{ |
| | | //原库存 数量面积减少 |
| | | oldFinishedGoodsInventory.setInventory(oldFinishedGoodsInventory.getInventory()-finishedGoodsInventory.getQuantityAvailable()); |
| | | oldFinishedGoodsInventory.setQuantityAvailable(oldFinishedGoodsInventory.getQuantityAvailable()-finishedGoodsInventory.getQuantityAvailable()); |
| | | oldFinishedGoodsInventory.setArea(oldFinishedGoodsInventory.getInventory()*oldFinishedGoodsInventory.getActualSignalArea()); |
| | | |
| | | existFinishedGoodsInventory.setInventory(existFinishedGoodsInventory.getInventory()+finishedGoodsInventory.getQuantityAvailable()); |
| | | existFinishedGoodsInventory.setQuantityAvailable(existFinishedGoodsInventory.getQuantityAvailable()+finishedGoodsInventory.getQuantityAvailable()); |
| | | existFinishedGoodsInventory.setArea(existFinishedGoodsInventory.getInventory()*existFinishedGoodsInventory.getActualSignalArea()); |
| | | |
| | | finishedGoodsInventoryMapper. |
| | | update(oldFinishedGoodsInventory, |
| | | new LambdaUpdateWrapper<FinishedGoodsInventory>() |
| | | .eq(FinishedGoodsInventory::getId,id) |
| | | ) ; |
| | | finishedGoodsInventoryMapper. |
| | | update(existFinishedGoodsInventory, |
| | | new LambdaUpdateWrapper<FinishedGoodsInventory>() |
| | | .eq(FinishedGoodsInventory::getId,existFinishedGoodsInventory.getId()) |
| | | ) ; |
| | | |
| | | //往操作日志表添加数据 |
| | | finishedOperateLog.setQuantity(finishedGoodsInventory.getQuantityAvailable()); |
| | | finishedOperateLog.setRemarks(oldFinishedGoodsInventory.getBoxNo()+"->"+existFinishedGoodsInventory.getBoxNo()); |
| | | finishedOperateLogMapper.insert(finishedOperateLog); |
| | | |
| | | map.put("code",3); |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(oldFinishedGoodsInventory.getBoxNo()); |
| | | list.add(existFinishedGoodsInventory.getBoxNo()); |
| | | map.put("msg",list); |
| | | return map;//库存转移成功,修改箱号 |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | }); |
| | | //判断后工序此流程卡号是否有次破 |
| | | List<DamageDetails> hasBreak = damageDetailsMapper |
| | | .selectList(new LambdaQueryWrapper<DamageDetails>() |
| | | .eq(DamageDetails::getProcessId, dataList.get(i).get("processId")) |
| | | .eq(DamageDetails::getOrderNumber, dataList.get(i).get("order_number")) |
| | | .eq(DamageDetails::getTechnologyNumber, dataList.get(i).get("technology_number")) |
| | | .eq(DamageDetails::getPatchStatus, 0) |
| | | .gt(DamageDetails::getBreakageQuantity,0) |
| | | |
| | | .getNotReview(dataList.get(i).get("process_id"), |
| | | String.valueOf(dataList.get(i).get("order_number")), |
| | | String.valueOf(dataList.get(i).get("technology_number")) |
| | | ); |
| | | |
| | | if(!hasBreak.isEmpty()){ |
| | | int finalI = i; |
| | | data.forEach((thisProcess, index)->{ |
| | |
| | | dataList.get(finalI).get("processId"), |
| | | String.valueOf(dataList.get(finalI).get("order_number")), |
| | | String.valueOf(dataList.get(finalI).get("technology_number")), |
| | | behindProcess |
| | | behindProcess,1 |
| | | ); |
| | | if(behindDamageSum>0){ |
| | | data.put(thisProcess, String.valueOf(Integer.parseInt(data.get(thisProcess) )- behindDamageSum)); |
| | |
| | | List<Map<String, String>> dataList = reportMapper.processCardProgressCollectMp(orderId); |
| | | //获取表头工序筛选数据 |
| | | List<Map<String, String>> uniqueList = orderProcessDetailMapper.filterOrderProcess(orderId); |
| | | |
| | | map.put("title", uniqueList); |
| | | return null; |
| | | Map<String,Map<String,Object>> clos = new HashMap<>(); |
| | | for (int i=0;i<uniqueList.size();i++){ |
| | | //根据流程查询基础数据 |
| | | BasicData basicData = basicDataMapper.selectOne( |
| | | new QueryWrapper<BasicData>() |
| | | .eq("basic_category","process") |
| | | .eq("basic_name",uniqueList.get(i).get("process")) |
| | | .last("limit 1") |
| | | ); |
| | | Map<String,Object> getCol = new HashMap<>(); |
| | | //判断夹胶和夹胶后工序 |
| | | //Objects.equals(basicData.getNickname(), "stepA") || Objects.equals(basicData.getNickname(), "stepC") |
| | | if(Objects.equals(basicData.getNickname(), "stepA") || Objects.equals(basicData.getNickname(), "stepC")){ |
| | | getCol.put("col", 11+i); |
| | | getCol.put("step","stepA"); |
| | | clos.put(uniqueList.get(i).get("process"), getCol); |
| | | } |
| | | //判断中空和中空后工序 |
| | | //Objects.equals(basicData.getNickname(), "stepB") || Objects.equals(basicData.getNickname(), "stepD") |
| | | if(Objects.equals(basicData.getNickname(), "stepB") || Objects.equals(basicData.getNickname(), "stepD")){ |
| | | columns.add(11+i); |
| | | getCol.put("col", 11+i); |
| | | getCol.put("step","stepB"); |
| | | clos.put(uniqueList.get(i).get("process"), getCol); |
| | | } |
| | | } |
| | | List<Map<String, Object>> getRowCount = orderProcessDetailMapper.getGlassLRow(orderId); |
| | | List<Map<String, Integer>> rowCount = new ArrayList<>(); |
| | | columns.forEach(col -> { |
| | | getRowCount.forEach(row -> { |
| | | Map<String, Integer> getRow = new HashMap<>(); |
| | | // { row: 0, col: 1, rowspan: 3, colspan: 0}, |
| | | getRow.put("row", ((Number) row.get("RowNum")).intValue()); |
| | | getRow.put("col", col); |
| | | getRow.put("rowspan", ((Number) row.get("rowCount")).intValue()); |
| | | getRow.put("colspan", 0); |
| | | rowCount.add(getRow); |
| | | }); |
| | | }); |
| | | |
| | | //循环结果 |
| | | for (int i=0;i<dataList.size();i++ ) { |
| | | dataList.get(i).put("reportWorkQuantityShow",dataList.get(i).get("reportWorkQuantity")); |
| | | Map<String, String> data = JSON.parseObject(dataList.get(i).get("reportWorkQuantity"), |
| | | new TypeReference<Map<String, String>>() { |
| | | }); |
| | | Map<String, String> dataShow = JSON.parseObject(dataList.get(i).get("reportWorkQuantityShow"), |
| | | new TypeReference<Map<String, String>>() { |
| | | }); |
| | | //判断后工序此流程卡号是否有次破 |
| | | List<DamageDetails> hasBreak = damageDetailsMapper |
| | | .getNotReview(dataList.get(i).get("process_id"), |
| | | null, |
| | | String.valueOf(dataList.get(i).get("technology_number")) |
| | | ); |
| | | |
| | | if(!hasBreak.isEmpty()){ |
| | | int finalI = i; |
| | | data.forEach((thisProcess, index)->{ |
| | | String behindProcess = orderProcessDetailMapper.getBehindProcess( |
| | | dataList.get(finalI).get("process_id"), |
| | | String.valueOf(dataList.get(finalI).get("order_number")), |
| | | String.valueOf(dataList.get(finalI).get("technology_number")), |
| | | thisProcess, |
| | | orderId |
| | | ); |
| | | |
| | | if(behindProcess!=null &&!behindProcess.isEmpty()){ |
| | | Integer behindDamageSum = damageDetailsMapper.getBehindDamageSum( |
| | | dataList.get(finalI).get("process_id"), |
| | | String.valueOf(dataList.get(finalI).get("order_number")), |
| | | String.valueOf(dataList.get(finalI).get("technology_number")), |
| | | behindProcess, |
| | | null |
| | | ); |
| | | if(behindDamageSum>0){ |
| | | data.put(thisProcess, String.valueOf(Integer.parseInt(data.get(thisProcess) )- behindDamageSum)); |
| | | dataShow.put(thisProcess, String.valueOf(Integer.parseInt(dataShow.get(thisProcess) )- behindDamageSum)); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | if(!clos.isEmpty()){ |
| | | Integer max = orderGlassDetailMapper |
| | | .getMaxTechnologyNumberByGroup(dataList.get(i).get("order_id"), |
| | | String.valueOf(dataList.get(i).get("order_number")), |
| | | String.valueOf(dataList.get(i).get("group")) |
| | | ); |
| | | Integer min = orderGlassDetailMapper |
| | | .getMinTechnologyNumberByGroup(dataList.get(i).get("order_id"), |
| | | String.valueOf(dataList.get(i).get("order_number")), |
| | | String.valueOf(dataList.get(i).get("group")) |
| | | ); |
| | | |
| | | for (String key : clos.keySet()) { |
| | | if(data.get(key) != null){ |
| | | //判断是夹胶工序 |
| | | if( clos.get(key).get("step")=="stepA"){ |
| | | if(min == Integer.parseInt(String.valueOf(dataList.get(i).get("technology_number"))) ){ |
| | | Map<String, Integer> getRow = new HashMap<>(); |
| | | getRow.put("row", i ); |
| | | getRow.put("col", (Integer) clos.get(key).get("col")); |
| | | getRow.put("rowspan", max-min+1); |
| | | getRow.put("colspan", 0); |
| | | rowCount.add(getRow); |
| | | }else{ |
| | | data.put(key,"0"); |
| | | } |
| | | }else{//中空,中空后工序 |
| | | //小片序号不是1 的时候赋值0 |
| | | if(Integer.parseInt(String.valueOf(dataList.get(i).get("technology_number"))) !=1){ |
| | | data.put(key,"0"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | dataList.get(i).put("reportWorkQuantity",JSON.toJSONString(data)); |
| | | dataList.get(i).put("reportWorkQuantityShow",JSON.toJSONString(dataShow)); |
| | | |
| | | } |
| | | |
| | | map.put("mergeCells", rowCount); |
| | | |
| | | map.put("data",dataList); |
| | | |
| | | |
| | | return map; |
| | | } |
| | | |
| | | public Map<String, Object> processCardProgressReportSv(String orderId, List<Integer> columns) { |
| | |
| | | log.setFunction("deleteWork报工删除"); |
| | | log.setOperatorId(userId); |
| | | log.setOperator(userName); |
| | | if(reportingWork.getReviewedState()==0){ |
| | | //查询当前报工编号完工次破数量的数据 |
| | | List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId); |
| | | for (Map<String, Object> item : workDateList) { |
| | | //更新报工流程表数据 |
| | | reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess); |
| | | } |
| | | //删除报工,将审核状态改为-1 |
| | | reportingWorkMapper.deleteWork(reportingWorkId); |
| | | logService.saveLog(log); |
| | | return true; |
| | | } |
| | | |
| | | |
| | | //判断是否是入库工序 |
| | | if (lastProcess.equals(thisProcess)) {//是入库工序 |
| | |
| | | } |
| | | |
| | | } else {//不是入库工序 |
| | | if(reportingWork.getReviewedState()==0){ |
| | | //查询当前报工编号完工次破数量的数据 |
| | | List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId); |
| | | for (Map<String, Object> item : workDateList) { |
| | | //更新报工流程表数据 |
| | | reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess); |
| | | } |
| | | //删除报工,将审核状态改为-1 |
| | | reportingWorkMapper.deleteWork(reportingWorkId); |
| | | logService.saveLog(log); |
| | | return true; |
| | | } |
| | | |
| | | if (count == 0) { |
| | | //查询当前报工编号完工次破数量的数据 |
| | | List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId); |
| | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.fastjson.TypeReference; |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.example.erp.dto.mm.FinishedOperateLogDTO; |
| | | import com.example.erp.dto.sd.DeliveryDetailDTO; |
| | | import com.example.erp.dto.sd.DeliveryDetailProductDTO; |
| | | import com.example.erp.entity.mm.FinishedOperateLog; |
| | | import com.example.erp.entity.pp.BasicDataProduce; |
| | | import com.example.erp.entity.sd.*; |
| | | import com.example.erp.entity.userInfo.Log; |
| | | import com.example.erp.entity.userInfo.SysError; |
| | |
| | | import com.example.erp.service.userInfo.LogService; |
| | | import com.example.erp.service.userInfo.SysErrorService; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import java.io.BufferedReader; |
| | | import java.io.InputStreamReader; |
| | | import java.io.OutputStream; |
| | | import java.lang.reflect.Field; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.net.HttpURLConnection; |
| | | import java.net.URL; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.util.*; |
| | |
| | | if (!deliveryDetaillist.isEmpty()) { |
| | | for (DeliveryDetail deliveryDetail : deliveryDetaillist) { |
| | | //还原库存数以及订单明细的发货数 |
| | | finishedGoodsInventoryMapper.updateInventoryquantityInt(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity()); |
| | | finishedGoodsInventoryMapper.updateInventoryquantityIntBybox(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity(),deliveryDetail.getBoxNo()); |
| | | deliveryDetailMapper.updateIsNotOrderDetailDeliveryNum(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity()); |
| | | } |
| | | } |
| | |
| | | //修改订单明细 |
| | | deliveryDetailMapper.updateOrderDetailDeliveryNum(orderDetail); |
| | | //修改库存表出库数量 |
| | | finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getOrderId(), orderDetail.getOrderNumber(), orderDetail.getDeliveryDetail().getQuantity()); |
| | | finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getOrderId(), orderDetail.getOrderNumber(), orderDetail.getDeliveryDetail().getQuantity(),orderDetail.getFinishedGoodsInventory().getBoxNo()); |
| | | }else{ |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | return "false2"; |
| | |
| | | if (!deliveryDetaillist.isEmpty()) { |
| | | for (DeliveryDetail deliveryDetail : deliveryDetaillist) { |
| | | //还原库存数以及订单明细的发货数 |
| | | finishedGoodsInventoryMapper.updateInventoryquantityInt(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity()); |
| | | finishedGoodsInventoryMapper.updateInventoryquantityIntBybox(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity(), deliveryDetail.getBoxNo()); |
| | | deliveryDetailMapper.updateIsNotOrderDetailDeliveryNum(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity()); |
| | | } |
| | | } |
| | |
| | | <!--映射成品库存--> |
| | | <resultMap id="selectFinishedGoodsInventory" type="com.example.erp.entity.mm.FinishedGoodsInventory"> |
| | | <id column="fid" property="id"/> |
| | | <result column="id" property="id"/> |
| | | <result column="order_id" property="orderId"/> |
| | | <result column="order_number" property="orderNumber"/> |
| | | <result column="process_id" property="processId"/> |
| | | <result column="inventory" property="inventory"/> |
| | | <result column="area" property="area"/> |
| | | <result column="actual_signal_area" property="actualSignalArea"/> |
| | |
| | | <result column="order_id" property="deliveryDetail.orderId"/> |
| | | <result column="create_time" property="deliveryDetail.createTime"/> |
| | | <result column="dd_quantity" property="deliveryDetail.quantity"/> |
| | | <result column="box_no" property="deliveryDetail.boxNo"/> |
| | | |
| | | <result column="project" property="order.project"/> |
| | | |
| | |
| | | update_time=now(),area=actual_signal_area*quantity_available |
| | | where order_number=#{orderNumber} and order_id=#{orderId} |
| | | </update> |
| | | <update id="updateInventoryquantityIntBybox"> |
| | | update mm.finished_goods_inventory |
| | | set quantity_available=quantity_available+#{quantity}, |
| | | update_time=now(),area=actual_signal_area*quantity_available |
| | | where order_number=#{orderNumber} and order_id=#{orderId} and trim(box_no) = trim(#{boxNo}) |
| | | </update> |
| | | |
| | | <update id="updateInventoryquantityOut"> |
| | | update mm.finished_goods_inventory |
| | | set quantity_available=quantity_available-#{quantity}, |
| | | update_time=now(),area=actual_signal_area*quantity_available |
| | | where order_number=#{orderNumber} and order_id=#{orderId} |
| | | where order_id=#{orderId} and order_number=#{orderNumber} and trim(box_no) = trim(#{boxNo}) |
| | | </update> |
| | | |
| | | <update id="updateInventoryInventoryInt"> |
| | | update mm.finished_goods_inventory |
| | | set inventory=inventory+#{quantity} |
| | | where order_number=#{orderNumber} and order_id=#{orderId} |
| | | where order_number=#{orderNumber} and order_id=#{orderId} and trim(box_no) = trim(#{remarks}) |
| | | </update> |
| | | |
| | | <update id="updateInventoryInventoryOut"> |
| | | update mm.finished_goods_inventory |
| | | set inventory=inventory-#{quantity} |
| | | where order_number=#{orderNumber} and order_id=#{orderId} |
| | | where order_number=#{orderNumber} and order_id=#{orderId} and trim(box_no) = trim(#{boxNo}) |
| | | </update> |
| | | |
| | | <select id="getSelectAllocate" resultMap="selectDeliveryFinishedGoodsInventory"> |
| | |
| | | and fgi.storage_region regexp #{orderDetail.finishedGoodsInventory.storageRegion} |
| | | </if> |
| | | </where> |
| | | group by fgi.order_id, fgi.order_number |
| | | group by fgi.order_id, fgi.order_number,fgi.box_no |
| | | |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | |
| | | <update id="updateDeliveryDetailState"> |
| | | update sd.delivery_detail |
| | | set delivery_detail_state=#{state} |
| | | where order_number=#{orderNumber} and order_id=#{orderId} and delivery_id=#{deliveryId} |
| | | where order_number=#{orderNumber} and order_id=#{orderId} and delivery_id=#{deliveryId} and trim(box_no) = trim(#{remarks}) |
| | | </update> |
| | | |
| | | <update id="updateInventoryquantityavailable"> |
| | |
| | | od.building_number, |
| | | d.creator, |
| | | dd.delivery_detail_remakes, |
| | | dd.create_time |
| | | dd.create_time, |
| | | dd.box_no |
| | | from sd.delivery_detail dd |
| | | left join sd.delivery d on dd.delivery_id = d.delivery_id |
| | | left join sd.order_detail od on od.order_id = dd.order_id and dd.order_number = od.order_number |
| | |
| | | set inventory=inventory-${finishedOperateLog.quantity},quantity_available=quantity_available-${finishedOperateLog.quantity}, |
| | | update_time=now(),area=actual_signal_area*quantity_available |
| | | where order_number=#{finishedOperateLog.operationNumber} and order_id=#{finishedOperateLog.orderId} |
| | | and box_no=#{finishedOperateLog.remarks} |
| | | </update> |
| | | |
| | | <insert id="insertFinishedGoodsInventory" useGeneratedKeys="true" > |
| | |
| | | <select id="findOrderNumberdcount" > |
| | | select count(*) |
| | | from mm.`finished_goods_inventory` |
| | | where order_number = #{orderNumber} and order_id=#{orderId}; |
| | | where order_number = #{orderNumber} and order_id=#{orderId} and box_no=#{boxNo}; |
| | | |
| | | </select> |
| | | |
| | |
| | | |
| | | |
| | | <select id="defaultfinishedGoods" resultMap="selectFinishedGoodsInventory"> |
| | | select od.order_number, |
| | | select |
| | | fgi.id, |
| | | fgi.process_id, |
| | | od.order_number, |
| | | o.order_id, |
| | | o.project, |
| | | o.order_type, |
| | |
| | | |
| | | <select id="findDeliverydetail"> |
| | | select * from sd.delivery_detail |
| | | where order_number=#{orderNumber} and order_id=#{orderId} and delivery_id=#{deliveryId} and delivery_detail_state=0 |
| | | where order_number=#{orderNumber} |
| | | and order_id=#{orderId} |
| | | and delivery_id=#{deliveryId} |
| | | and delivery_detail_state=0 |
| | | and trim(#{boxNo}) =box_no |
| | | </select> |
| | | |
| | | <select id="getSelectDeliveryDetailDeliveryId" resultMap="selectDelivery"> |
| | |
| | | operator, |
| | | quantity, |
| | | operate_time, |
| | | status |
| | | status, |
| | | remarks |
| | | ) |
| | | values ( |
| | | #{orderDetail.deliveryDetail.deliveryId} ,#{orderDetail.deliveryDetail.orderId},#{orderDetail.deliveryDetail.orderNumber} |
| | | ,"出库",#{userName},#{orderDetail.deliveryDetail.quantity},now(),"未审核" |
| | | ,"出库",#{userName},#{orderDetail.deliveryDetail.quantity},now(),"未审核",#{boxNo} |
| | | ) |
| | | </insert> |
| | | |
| | |
| | | and fol.remarks regexp #{finishedOperateLog.remarks} |
| | | </if> |
| | | </where> |
| | | group by fol.remarks,od.order_id,fol.process_id) as zu |
| | | group by fol.remarks,od.order_id |
| | | -- ,fol.process_id |
| | | ) as zu |
| | | |
| | | </select> |
| | | |
| | |
| | | left join pp.reporting_work as b |
| | | on a.reporting_work_id = b.reporting_work_id |
| | | WHERE a.process_id = #{processId} |
| | | <if test="needOrderNumber!=null"> |
| | | and a.order_number = #{orderNumber} |
| | | </if> |
| | | and a.technology_number =#{technologyNumber} |
| | | and a.breakage_quantity>0 |
| | | and a.patch_status=0 |
| | |
| | | WHERE REGEXP_SUBSTR(#{behindProcess}, '[^,]+', 1, n) IS NOT NULL) |
| | | |
| | | </select> |
| | | <select id="getNotReview"> |
| | | select a.* |
| | | from damage_details as a |
| | | left join reporting_work as b |
| | | on a.reporting_work_id = b.reporting_work_id |
| | | where a.process_id=#{processId} |
| | | and b.reviewed_state>=0 |
| | | <if test="orderNumber!=null"> |
| | | and a.order_number = #{orderNumber} |
| | | </if> |
| | | and a.technology_number = #{technologyNumber} |
| | | and a.patch_status=0 |
| | | and a.breakage_quantity>0 |
| | | |
| | | </select> |
| | | </mapper> |
| | |
| | | op.project_name, |
| | | 0 as patchState, |
| | | c.rack AS rackNo, |
| | | 0 as layoutId |
| | | 0 as heatLayoutId, |
| | | d.process, |
| | | o.order_id AS orderNo, |
| | | o.customer_name AS customerName, |
| | | o.processing_note AS processingNote, |
| | | o.project AS projectName, |
| | | od.product_name AS productName, |
| | | od.building_number AS buildingNumber |
| | | FROM |
| | | pp.flow_card c |
| | | LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id |
| | | AND c.order_number = d.order_number |
| | | AND c.technology_number = d.technology_number |
| | | INNER JOIN pp.optimize_project AS op ON op.project_no = c.project_no |
| | | LEFT JOIN sd.ORDER o ON o.order_id = c.order_id |
| | | LEFT JOIN order_detail od ON c.order_id = od.order_id |
| | | WHERE |
| | | c.project_no IS NOT NULL |
| | | and c.project_no = #{projectNo} |
| | |
| | | op.project_name, |
| | | 1 as patch_state, |
| | | a.id as rackNo, |
| | | 0 as layoutId |
| | | 0 as heatLayoutId, |
| | | d.process, |
| | | o.order_id AS orderNo, |
| | | o.customer_name AS customerName, |
| | | o.processing_note AS processingNote, |
| | | o.project AS projectName, |
| | | od.product_name AS productName, |
| | | od.building_number AS buildingNumber |
| | | FROM |
| | | pp.patch_log c |
| | | LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id |
| | |
| | | AND c.technology_number = d.technology_number |
| | | INNER JOIN pp.optimize_project AS op ON op.project_no = c.project_no |
| | | LEFT JOIN pp.flow_card fc ON c.process_id = fc.process_id and fc.technology_number=c.technology_number |
| | | LEFT JOIN sd.ORDER o ON o.order_id = c.order_id |
| | | LEFT JOIN order_detail od ON c.order_id = od.order_id |
| | | left join |
| | | (select (@row_number := @row_number + 1) as id,process_id as process_id,technology_number as technology_number from (select process_id,technology_number from pp.flow_card tt where project_no =#{projectNo} group by process_id,technology_number) tt,(select @row_number := 0) as t) a |
| | | on a.process_id=c.process_id and a.technology_number=c.technology_number |
| | |
| | | <select id="computeAndOptimization"> |
| | | SELECT |
| | | c.rack AS rackNo, |
| | | h.layout_id as layoutId, |
| | | h.layout_id as heatLayoutId, |
| | | h.width AS width, |
| | | h.height AS height, |
| | | count( 1 ) AS quantity, |
| | |
| | | c.order_number, |
| | | h.order_sort AS orderSort, |
| | | d.icon AS markIcon, |
| | | h.patch_state AS patchState |
| | | h.patch_state AS patchState, |
| | | d.process, |
| | | o.order_id AS orderNo, |
| | | o.customer_name AS customerName, |
| | | o.processing_note AS processingNote, |
| | | o.project AS projectName, |
| | | od.product_name AS productName, |
| | | od.building_number AS buildingNumber |
| | | from |
| | | pp.`optimize_heat_detail` h |
| | | LEFT JOIN pp.flow_card c ON h.process_id = c.process_id |
| | |
| | | LEFT JOIN sd.order_glass_detail d ON c.order_id = d.order_id |
| | | AND c.order_number = d.order_number |
| | | AND c.technology_number = d.technology_number |
| | | LEFT JOIN sd.order o on o.order_id = c.order_id |
| | | LEFT JOIN order_detail od on c.order_id = od.order_id |
| | | WHERE |
| | | h.project_no = #{projectNo} |
| | | GROUP BY |
| | |
| | | |
| | | |
| | | <select id="processCardProgressCollectMp"> |
| | | select * from (select b.product_name, |
| | | c.detail as 'glassName', |
| | | select * from (select |
| | | a.order_id, |
| | | a.order_number, |
| | | c.glass_group as 'group', |
| | | a.technology_number, |
| | | b.product_name, |
| | | c.detail as glass_child, |
| | | d.order_type, |
| | | concat(a.process_id,'/',a.technology_number) as processID, |
| | | a.process_id, |
| | | a.quantity, |
| | | a.received_quantity, |
| | | round(sum(a.received_quantity*b.area),2) as received_area, |
| | | if(a.technology_number=1,sum(a.quantity-ifnull(a.termination_quantity,0)),0) as quantity, |
| | | sum(a.quantity)-ifnull(a.termination_quantity,0) as thisQuantity,/*用于判断是否改变颜色*/ |
| | | if(a.technology_number=1, round(sum((a.quantity-ifnull(a.termination_quantity,0)))*b.compute_area,2),0) as gross_area, |
| | | if(a.technology_number=1, sum(a.received_quantity),0) as inventory, |
| | | if(a.technology_number=1, round(sum(a.received_quantity*b.area),2),0) as inventoryArea, |
| | | |
| | | a.technology_number |
| | | -- show |
| | | sum(a.quantity-ifnull(a.termination_quantity,0)) as quantityShow , |
| | | round(sum((a.quantity-ifnull(a.termination_quantity,0)))*b.compute_area,2) as gross_areaShow, |
| | | sum(a.received_quantity) as inventoryShow, |
| | | round(sum(a.received_quantity*b.area),2) as inventoryAreaShow |
| | | |
| | | |
| | | |
| | | |
| | | from pp.flow_card as a |
| | | left join sd.order_detail as b |
| | | on a.order_id = b.order_id and a.order_number = b.order_number |
| | | left join sd.product_detail as c |
| | | on c.prod_id = b.product_id and c.glass_sort = a.technology_number |
| | | LEFT JOIN sd.`order` as d |
| | | on a.order_id = d.order_id |
| | | where a.order_id = #{orderId} group by processID |
| | | ) as a |
| | | left join (SELECT process_id, |
| | | technology_number, |
| | | sum(broken_num) as broken_num, |
| | | concat('{',GROUP_CONCAT(reporting_work_nums),'}') as reporting_work_num |
| | | concat('{',GROUP_CONCAT(reporting_work_nums),'}') as reportWorkQuantity, |
| | | concat('{',GROUP_CONCAT(reporting_work_counts),'}') as reportWorkQuantityCount |
| | | from (select |
| | | opd.process_id, |
| | | opd.technology_number, |
| | | concat("\"", process, "\":\"", SUM(reporting_work_num), "\"") as reporting_work_nums, |
| | | concat("\"", process, "\":\"", SUM(reporting_work_num_count), "\"") as reporting_work_counts, |
| | | sum(broken_num) as broken_num |
| | | from sd.order_process_detail as opd |
| | | where opd.order_id = #{orderId} |
| | |
| | | ) as minQuantity -- 修改最小数 |
| | | </if> |
| | | <if test="nextProcess == null or nextProcess == ''"> -- 最后一道工序 |
| | | # c.received_quantity, -- 已入库数量 |
| | | # c.inventory_quantity, -- 库存数量 |
| | | c.received_quantity, -- 已入库数量 |
| | | c.inventory_quantity, -- 库存数量 |
| | | if(ifnull(inventory_quantity,0) |
| | | -ifnull(c.received_quantity,0) |
| | | >= a.completed_quantity,0, |
| | | (a.completed_quantity-(ifnull(c.inventory_quantity,0) |
| | | -ifnull(c.received_quantity,0))) |
| | | >= a.completed_quantity,a.completed_quantity, |
| | | (ifnull(c.inventory_quantity,0) |
| | | -ifnull(c.received_quantity,0)) |
| | | ) |
| | | as minQuantity -- 修改最小数 |
| | | </if> |
| | |
| | | <result column="storage_region" property="finishedGoodsInventory.storageRegion"/> |
| | | <result column="actual_signal_area" property="finishedGoodsInventory.actualSignalArea"/> |
| | | <result column="box_no" property="finishedGoodsInventory.boxNo"/> |
| | | <result column="id" property="finishedGoodsInventory.id"/> |
| | | |
| | | |
| | | </resultMap> |
| | |
| | | fgi.quantity_available + dd.quantity as quantity_available, |
| | | od.order_number, |
| | | od.quantity-od.delivery_num as t_quantity, |
| | | od.quantity as o_quantity, |
| | | (fgi.quantity_available+ifnull(dd1.sumQuantity,0)) as o_quantity, |
| | | dd.quantity as d_quantity, |
| | | od.building_number, |
| | | od.product_id, |
| | |
| | | left join sd.delivery d on dd.delivery_id=d.delivery_id |
| | | left join sd.order_detail od on dd.order_id=od.order_id and dd.order_number=od.order_number |
| | | left join sd.`order` o on dd.order_id=o.order_id |
| | | left join mm.finished_goods_inventory fgi on dd.order_id=fgi.order_id and dd.order_number=fgi.order_number |
| | | left join mm.finished_goods_inventory fgi on dd.order_id=fgi.order_id and dd.order_number=fgi.order_number and fgi.box_no = dd.box_no |
| | | left join (SELECT IFNULL(sum(quantity),0) as sumQuantity,dd.* |
| | | from sd.delivery_detail dd |
| | | GROUP BY dd.order_id,dd.order_number,dd.box_no) AS dd1 |
| | | on od.order_id = dd1.order_id and od.order_number = dd1.order_number and dd1.box_no = fgi.box_no |
| | | <where> |
| | | <if test="orderDetail.deliveryDetail.deliveryId != null and orderDetail.deliveryDetail.deliveryId != ''"> |
| | | and dd.delivery_id regexp #{orderDetail.deliveryDetail.deliveryId} |
| | | and dd.delivery_id = #{orderDetail.deliveryDetail.deliveryId} |
| | | </if> |
| | | <if test="orderDetail.orderId != null and orderDetail.orderId != ''"> |
| | | and od.order_id regexp #{orderDetail.orderId} |
| | |
| | | </select> |
| | | |
| | | <select id="getSelectShippingOrderDetails" resultMap="selectDeliveryFinishedGoodsInventoryOrderDetail"> |
| | | select od.order_id, |
| | | select |
| | | fgi.id, |
| | | od.order_id, |
| | | od.order_number, |
| | | o.batch, |
| | | o.calculate_type, |
| | | fgi.quantity_available, |
| | | od.quantity- od.delivery_num as t_quantity, |
| | | od.quantity as o_quantity, |
| | | fgi.quantity_available as d_quantity, |
| | | od.quantity- od.delivery_num as t_quantity,-- 未发数量 |
| | | ifnull(dd1.sumQuantity,0)+fgi.quantity_available as o_quantity,-- 数量 |
| | | fgi.quantity_available as d_quantity,-- 发货数量 |
| | | od.building_number, |
| | | od.product_id, |
| | | od.product_name, |
| | |
| | | left join sd.`order` o on od.order_id = o.order_id |
| | | left join mm.finished_goods_inventory fgi |
| | | on od.order_id = fgi.order_id and od.order_number = fgi.order_number |
| | | left join (SELECT IFNULL(sum(quantity),0) as sumQuantity,dd.* |
| | | from sd.delivery_detail dd |
| | | where dd.order_id regexp #{orderDetail.orderId} |
| | | GROUP BY dd.order_id,dd.order_number,dd.box_no) AS dd1 |
| | | on od.order_id = dd1.order_id and od.order_number = dd1.order_number and dd1.box_no = fgi.box_no |
| | | |
| | | |
| | | <where> |
| | | fgi.quantity_available > 0 and od.quantity > od.delivery_num |
| | | <if test="orderDetail.orderId != null and orderDetail.orderId != ''"> |
| | |
| | | order by RowNum |
| | | |
| | | </select> |
| | | |
| | | <select id="getProcessGlassLRow"> |
| | | select |
| | | max(a.technology_number) as rowCount, |
| | | RowNum |
| | | from pp.flow_card as a |
| | | left join |
| | | (select min((@i:=@i+1)) AS RowNum,c.* |
| | | from pp.flow_card as c, |
| | | (SELECT @i:=-1) as d |
| | | where order_id = #{orderId} |
| | | GROUP BY process_id |
| | | ) as b |
| | | on b.id = a.id |
| | | where a.order_id = #{orderId} |
| | | group by a.process_id |
| | | order by RowNum |
| | | |
| | | </select> |
| | | <update id="insertByReportingWorkDetail"> |
| | | update sd.order_process_detail as a |
| | | set |