| | |
| | | import { getSystemInfo, getSystemDicts, tenants } from "@/api/auth"; |
| | | import chineseMessages from 'ra-language-chinese'; |
| | | import { createTheme, ThemeProvider } from '@mui/material/styles'; |
| | | import { zhCN } from '@mui/material/locale'; |
| | | import { zhCN, frFR, enUS } from '@mui/material/locale'; |
| | | |
| | | |
| | | const getMaterialUILocale = (locale) => { |
| | | switch (locale) { |
| | | case 'en': |
| | | return enUS; |
| | | case 'fr': |
| | | return frFR; |
| | | default: |
| | | return zhCN; |
| | | } |
| | | }; |
| | | |
| | | const i18nProvider = polyglotI18nProvider( |
| | | (locale) => { |
| | |
| | | { locale: "ru", name: "Russian" }, |
| | | { locale: "lk", name: "Русский" }, |
| | | { locale: "es", name: "Española" }, |
| | | |
| | | |
| | | ], |
| | | { |
| | | // msg in console |
| | |
| | | ); |
| | | |
| | | |
| | | const theme = createTheme( |
| | | { |
| | | palette: { main: '#1976d2' }, |
| | | }, |
| | | zhCN |
| | | ) |
| | | |
| | | |
| | | const store = localStorageStore(SPA_VERSION, SPA_NAME); |
| | | |
| | | const App = () => { |
| | | const [themeName] = useStore("themeName", DEFAULT_THEME_NAME); |
| | | const lightTheme = themes.find((theme) => theme.name === themeName)?.light; |
| | | const darkTheme = themes.find((theme) => theme.name === themeName)?.dark; |
| | | |
| | | const [locale, setLocale] = useState('zh'); |
| | | const theme = createTheme( |
| | | { |
| | | ...lightTheme |
| | | }, getMaterialUILocale(locale)) |
| | | useEffect(() => { |
| | | getSystemInfo().then((data) => { |
| | | localStorage.setItem("system", JSON.stringify(data)); |
| | |
| | | lightTheme={lightTheme} |
| | | darkTheme={darkTheme} |
| | | defaultTheme={DEFAULT_THEME_MODE} |
| | | theme={theme} |
| | | i18nProvider={i18nProvider} |
| | | dataProvider={DataProvider(DATA_PROVIDER_SPRING)} |
| | | loginPage={Login} |
| | |
| | | }; |
| | | |
| | | const AppWrapper = () => ( |
| | | <ThemeProvider theme={theme}> |
| | | <StoreContextProvider value={store}> |
| | | <App /> |
| | | </StoreContextProvider> |
| | | </ThemeProvider> |
| | | |
| | | <StoreContextProvider value={store}> |
| | | <App /> |
| | | </StoreContextProvider> |
| | | ); |
| | | |
| | | export default AppWrapper; |
| | |
| | | poDetlCode: "poDetlCode", |
| | | matnrId: "matnrId", |
| | | maktx: "maktx", |
| | | platOrderCode: 'Customer Order Code', |
| | | platWorkCode: 'Work Code', |
| | | projectCode: 'Project Code', |
| | | spec: "Spec", |
| | | model: "Model", |
| | | anfme: "anfme", |
| | |
| | | taskCode: "TaskCode", |
| | | taskStatus: "Status", |
| | | taskType: "Type", |
| | | warehType: "Warehouse Type", |
| | | orgLoc: "orgLoc", |
| | | orgSite: "orgSite", |
| | | targLoc: "targLoc", |
| | |
| | | batch: "batch", |
| | | spec: "spec", |
| | | model: "model", |
| | | }, |
| | | stock: { |
| | | code: "Code", |
| | | sourceCode: "Resource", |
| | | sourceId: "Resource ID", |
| | | type: "Order Type", |
| | | wkType: "Work Type", |
| | | anfme: "Qty", |
| | | }, |
| | | stockItem: { |
| | | orderId: "Order ID", |
| | | orderCode: "Order Code", |
| | | sourceItemId: "Resource Item ID", |
| | | matnrId: "Mat ID", |
| | | matnrCode: "Mat Code", |
| | | maktx: "Maktx", |
| | | anfme: "Anfme", |
| | | stockUnit: "Unit", |
| | | workQty: "Work Qty", |
| | | purQty: "Purchase Qty", |
| | | purUnit: "Purchase Unit", |
| | | qty: "Qty", |
| | | splrCode: "Supplier Code", |
| | | batch: "Batch", |
| | | splrBatch: "Supplier Batch", |
| | | splrName: "Supplier Name", |
| | | trackCode: "Track Code", |
| | | barcode: "Bar Code", |
| | | prodTime: "Prod Time", |
| | | packName: "Pakcage", |
| | | }, |
| | | taskItemLog: { |
| | | taskItemId: "taskItemId", |
| | |
| | | unit: 'Unit', |
| | | anfme: 'Stock Qty', |
| | | matnrCode: "Matnr Code", |
| | | warehouse: 'Warehouse', |
| | | workQty: 'Work Qty', |
| | | qty: 'Non Stock Qty', |
| | | splrId: 'supplier', |
| | |
| | | poDetlCode: "PO单", |
| | | platItemId: '行号', |
| | | matnrId: "物料标识", |
| | | platOrderCode: '客户单号', |
| | | platWorkCode: '工单号', |
| | | projectCode: '项目号', |
| | | maktx: "物料名称", |
| | | spec: "规格", |
| | | model: "型号", |
| | |
| | | task: { |
| | | taskCode: "任务号", |
| | | taskStatus: "状态", |
| | | taskType: "类型", |
| | | taskType: "作业类型", |
| | | warehType: "仓库类型", |
| | | orgLoc: "源库位", |
| | | orgSite: "源站点", |
| | | targLoc: "目标库位", |
| | |
| | | }, |
| | | stockItem: { |
| | | orderId: "主单ID", |
| | | orderCode: "单据编码", |
| | | orderCode: "单号", |
| | | sourceItemId: "源明细ID", |
| | | matnrId: "物料ID", |
| | | matnrCode: "物料编码", |
| | |
| | | workQty: '执行数', |
| | | qty: '不可用库存', |
| | | splrId: '供应商', |
| | | warehouse: '仓库', |
| | | batch: "批次", |
| | | splrBatch: "批次", |
| | | spec: "规格", |
| | |
| | | }; |
| | | |
| | | React.useEffect(() => { |
| | | if (record?.areaIds && record.areaIds.length > 0) { |
| | | if (record?.areaIds && record.areaIds.length !== 0 && record.areaIds.length > 0) { |
| | | fetchAreaNames(); |
| | | } |
| | | }, [record]); |
| | | }, [record]); |
| | | |
| | | if (loading) { |
| | | return <CircularProgress size={20} />; |
| | |
| | | <TextInput source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />, |
| | | <TextInput source="matnrId" label="table.field.asnOrderItem.matnrId" />, |
| | | <TextInput source="maktx" label="table.field.asnOrderItem.maktx" />, |
| | | <TextInput source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextInput source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextInput source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <NumberInput source="anfme" label="table.field.asnOrderItem.anfme" />, |
| | | <TextInput source="stockUnit" label="table.field.asnOrderItem.stockUnit" />, |
| | | <NumberInput source="purQty" label="table.field.asnOrderItem.purQty" />, |
| | |
| | | }} |
| | | title={"menu.asnOrderItem"} |
| | | empty={false} |
| | | filter={{ asnId: asnId}} |
| | | filter={{ asnId: asnId }} |
| | | filters={filters} |
| | | sort={{ field: "create_time", order: "desc" }} |
| | | actions={( |
| | |
| | | <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" />, |
| | | <TextField source="maktx" label="table.field.asnOrderItem.maktx" />, |
| | | <TextField source="splrBatch" label="table.field.asnOrderItem.splrBatch" />, |
| | | <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <TextField source="spec" label="table.field.asnOrderItem.spec" />, |
| | | <TextField source="model" label="table.field.asnOrderItem.model" />, |
| | | <NumberField source="anfme" label="table.field.asnOrderItem.anfme" />, |
| | |
| | | preferenceKey='asnOrderItem' |
| | | bulkActionButtons={false} |
| | | rowClick={(id, resource, record) => false} |
| | | omit={['id', 'asnId', 'poDetlId', 'poDetlCode', 'matnrId', 'purQty', 'purUnit', 'qrcode', 'trackCode']} |
| | | omit={['id', 'asnId', 'poDetlId', 'poDetlCode', 'matnrId', 'purQty', 'purUnit', 'qrcode', 'trackCode', 'splrCode', 'platWorkCode', 'projectCode']} |
| | | > |
| | | {columns.map((column) => column)} |
| | | </StyledDatagrid>} |
| | |
| | | <TextInput source="splrName" label="table.field.qlyIsptItem.splrName" />, |
| | | <TextInput source="splrBatch" label="table.field.qlyIsptItem.splrBatch" />, |
| | | <TextInput source="stockBatch" label="table.field.qlyIsptItem.stockBatch" />, |
| | | <TextInput source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextInput source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextInput source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <NumberInput source="rcptQty" label="table.field.qlyIsptItem.rcptQty" />, |
| | | <NumberInput source="dlyQty" label="table.field.qlyIsptItem.dlyQty" />, |
| | | <NumberInput source="disQty" label="table.field.qlyIsptItem.disQty" />, |
| | |
| | | <TextField source="label" label="table.field.qlyIsptItem.label" />, |
| | | <TextField source="splrBatch" label="table.field.qlyIsptItem.splrBatch" />, |
| | | <TextField source="stockBatch" label="table.field.qlyIsptItem.stockBatch" />, |
| | | <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <NumberField source="rcptQty" label="table.field.qlyIsptItem.rcptQty" />, |
| | | <NumberField source="dlyQty" label="table.field.qlyIsptItem.dlyQty" />, |
| | | <MyField source="anfme" label="table.field.qlyIsptItem.anfme" |
| | |
| | | preferenceKey='qlyIsptItem' |
| | | bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} |
| | | rowClick={false} |
| | | omit={['id', 'createTime', 'createBy', 'memo', 'dlyQty', 'label', 'stockBatch', 'picPath', 'ispectId', 'statusBool']} |
| | | omit={['id', 'createTime', 'createBy', 'memo', 'dlyQty', 'label', 'stockBatch', 'picPath', 'ispectId', 'statusBool', 'platWorkCode', 'projectCode']} |
| | | |
| | | > |
| | | {columns.map((column) => column)} |
| | |
| | | |
| | | |
| | | const WarehouseAside = () => { |
| | | const [isSelect, setIsSelect] = useState(false); |
| | | const isSelected = (value, filters) => { |
| | | const aggType = filters.aggType || []; |
| | | const aggType = filters.aggType || ["matnr"]; |
| | | return aggType.includes(value.aggType); |
| | | }; |
| | | |
| | |
| | | import { Dialog, DialogActions, DialogContent, DialogTitle, Box } from "@mui/material"; |
| | | import { Dialog, DialogActions, DialogContent, DialogTitle, Box, LinearProgress } from "@mui/material"; |
| | | import React, { useState, useRef, useEffect, useMemo } from "react"; |
| | | import { |
| | | List, |
| | |
| | | )} |
| | | perPage={DEFAULT_ITEM_PAGE_SIZE} |
| | | > |
| | | <StyledDatagrid |
| | | preferenceKey='stockHistories' |
| | | bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} |
| | | rowClick={(id, resource, record) => false} |
| | | expand={false} |
| | | expandSingle={true} |
| | | omit={['id', 'createTime', 'orderId', 'sourceItemId', 'matnrId', 'createBy', 'barcode', 'splrCode', 'splrBatch', 'updateBy$', 'createBy$', 'memo']} |
| | | > |
| | | <NumberField source="id" /> |
| | | <NumberField source="orderId" label="table.field.stockItem.orderId" /> |
| | | <TextField source="orderCode" label="table.field.stockItem.orderCode" /> |
| | | <TextField source="sourceItemId" label="table.field.stockItem.sourceItemId" /> |
| | | <TextField source="matnrId" label="table.field.stockItem.matnrId" /> |
| | | <TextField source="matnrCode" label="table.field.stockItem.matnrCode" /> |
| | | <TextField source="maktx" label="table.field.stockItem.maktx" /> |
| | | <NumberField source="anfme" label="table.field.stockItem.anfme" /> |
| | | <TextField source="stockUnit" label="table.field.stockItem.stockUnit" /> |
| | | <NumberField source="workQty" label="table.field.stockItem.workQty" /> |
| | | <NumberField source="qty" label="table.field.stockItem.qty" /> |
| | | <TextField source="splrCode" label="table.field.stockItem.splrCode" /> |
| | | <TextField source="batch" label="table.field.stockItem.batch" /> |
| | | <TextField source="splrBatch" label="table.field.stockItem.splrBatch" /> |
| | | <TextField source="splrName" label="table.field.stockItem.splrName" /> |
| | | <TextField source="trackCode" label="table.field.stockItem.trackCode" /> |
| | | <TextField source="barcode" label="table.field.stockItem.barcode" /> |
| | | <TextField source="prodTime" label="table.field.stockItem.prodTime" /> |
| | | <TextField source="packName" label="table.field.stockItem.packName" /> |
| | | <TextField source="updateBy$" label="common.field.updateBy" /> |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime /> |
| | | <TextField source="createBy$" label="common.field.createBy" /> |
| | | <DateField source="createTime" label="common.field.createTime" showTime /> |
| | | <TextField source="memo" label="common.field.memo" sortable={false} /> |
| | | </StyledDatagrid> |
| | | <DynamicFields /> |
| | | </List> |
| | | </Box> |
| | | </Grid> |
| | |
| | | <Button label={"toolbar.confirm"} variant="contained" color="primary" size="medium" startIcon={<SaveIcon />} onClick={confirmSelect} /> |
| | | ) |
| | | } |
| | | |
| | | |
| | | const DynamicFields = (props) => { |
| | | const { setDrawerVal, setCreateDialog, setSelect, filters } = props |
| | | const translate = useTranslate(); |
| | | const notify = useNotify(); |
| | | const [columns, setColumns] = useState([]); |
| | | const { isLoading } = useListContext(); |
| | | const refresh = useRefresh(); |
| | | useEffect(() => { |
| | | getDynamicFields(); |
| | | }, []); |
| | | |
| | | const getDynamicFields = async () => { |
| | | const { data: { code, data, msg }, } = await request.get("/fields/enable/list"); |
| | | if (code == 200) { |
| | | const arr = [ |
| | | <NumberField source="id" />, |
| | | <NumberField source="orderId" label="table.field.stockItem.orderId" />, |
| | | <TextField source="orderCode" label="table.field.stockItem.orderCode" />, |
| | | <TextField source="sourceItemId" label="table.field.stockItem.sourceItemId" />, |
| | | <TextField source="matnrId" label="table.field.stockItem.matnrId" />, |
| | | <TextField source="matnrCode" label="table.field.stockItem.matnrCode" />, |
| | | <TextField source="maktx" label="table.field.stockItem.maktx" />, |
| | | <NumberField source="anfme" label="table.field.stockItem.anfme" />, |
| | | <TextField source="stockUnit" label="table.field.stockItem.stockUnit" />, |
| | | <NumberField source="workQty" label="table.field.stockItem.workQty" />, |
| | | <NumberField source="qty" label="table.field.stockItem.qty" />, |
| | | <TextField source="splrCode" label="table.field.stockItem.splrCode" />, |
| | | <TextField source="batch" label="table.field.stockItem.batch" />, |
| | | <TextField source="splrBatch" label="table.field.stockItem.splrBatch" />, |
| | | <TextField source="splrName" label="table.field.stockItem.splrName" />, |
| | | <TextField source="trackCode" label="table.field.stockItem.trackCode" />, |
| | | <TextField source="barcode" label="table.field.stockItem.barcode" />, |
| | | <TextField source="prodTime" label="table.field.stockItem.prodTime" />, |
| | | <TextField source="packName" label="table.field.stockItem.packName" />, |
| | | ] |
| | | const fields = data.map(el => <TextField key={el.fields} source={`extendFields.[${el.fields}]`} label={el.fieldsAlise} />) |
| | | const lastArr = [ |
| | | <TextField source="updateBy$" label="common.field.updateBy" />, |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime />, |
| | | <TextField source="createBy$" label="common.field.createBy" />, |
| | | <DateField source="createTime" label="common.field.createTime" showTime />, |
| | | <TextField source="memo" label="common.field.memo" sortable={false} />, |
| | | ] |
| | | setColumns([...arr, ...fields, ...lastArr]); |
| | | |
| | | data.map(el => { |
| | | var i = 0; |
| | | filters.map((item) => { |
| | | if (item.key === el.fields) { |
| | | i = 1; |
| | | } |
| | | }) |
| | | i === 0 && filters.push(<TextInput key={el.fields} source={el.fields} label={el.fieldsAlise} />) |
| | | }) |
| | | // setFilters([...filters, ...inputFields]) |
| | | |
| | | } else { |
| | | notify(msg); |
| | | } |
| | | } |
| | | |
| | | return ( |
| | | <Box sx={{ position: 'relative', minHeight: "60vh", }}> |
| | | {isLoading && ( |
| | | <LinearProgress |
| | | sx={{ |
| | | height: "2px", |
| | | position: 'absolute', |
| | | top: 0, |
| | | left: 0, |
| | | right: 0, |
| | | }} |
| | | /> |
| | | )} |
| | | {columns.length > 0 && |
| | | <StyledDatagrid |
| | | preferenceKey='stockHistories' |
| | | bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} |
| | | rowClick={(id, resource, record) => false} |
| | | expand={false} |
| | | expandSingle={true} |
| | | omit={['id', 'createTime', 'orderId', 'sourceItemId', 'matnrId', 'createBy', 'barcode', 'splrCode', 'splrBatch', 'updateBy$', 'createBy$', 'memo']} |
| | | > |
| | | {columns.map((column) => column)} |
| | | </StyledDatagrid>} |
| | | </Box> |
| | | ) |
| | | } |
| | |
| | | const translate = useTranslate(); |
| | | const notify = useNotify(); |
| | | const refresh = useRefresh(); |
| | | const [page, setPage] = useState(0); |
| | | const [pageSize, setPageSize] = useState(100); |
| | | const [totalRowCount, setTotalRowCount] = useState(0); |
| | | const [disabled, setDisabled] = useState(false) |
| | | const [loading, setLoading] = useState(false); |
| | | const [createDialog, setCreateDialog] = useState(false); |
| | | const tableRef = useRef(); |
| | | |
| | | useEffect(() => { |
| | | if (open && record !== 0) { |
| | | requestGetBody() |
| | | } |
| | | setDisabled(false) |
| | | }, [open]) |
| | | requestGetBody() |
| | | // setDisabled(false) |
| | | }, [open, page, pageSize]) |
| | | |
| | | const handleClose = (event, reason) => { |
| | | if (reason !== "backdropClick") { |
| | |
| | | }; |
| | | |
| | | const requestGetBody = async () => { |
| | | const res = await request.post(`warehouse/stock/info`, { stock: record, aggType: record?.aggType }); |
| | | if (res?.data?.code === 200) { |
| | | setTableData(res.data.data.records) |
| | | } else { |
| | | notify(res.data.msg); |
| | | setLoading(true); |
| | | try { |
| | | const res = await request.post(`warehouse/stock/info`, { page: page + 1, pageSize: pageSize, stock: record, aggType: record?.aggType }); |
| | | if (res?.data?.code === 200) { |
| | | setTableData(res.data.data.records) |
| | | setTotalRowCount(res.data.data.total) |
| | | } else { |
| | | notify(res.data.msg); |
| | | } |
| | | } catch (error) { |
| | | |
| | | } finally { |
| | | setLoading(false); |
| | | } |
| | | |
| | | } |
| | | |
| | | const [selectedRows, setSelectedRows] = useState([]); |
| | |
| | | <DialogContent sx={{ mt: 2 }}> |
| | | <Box></Box> |
| | | <Box sx={{ mt: 2 }}> |
| | | <AsnOrderModalTable tabelData={tabelData} |
| | | <AsnOrderModalTable |
| | | tabelData={tabelData} |
| | | setTableData={setTableData} |
| | | record={record} |
| | | page={page} |
| | | pageSize={pageSize} |
| | | loading={loading} |
| | | setPage={setPage} |
| | | setPageSize={setPageSize} |
| | | totalRowCount={totalRowCount} |
| | | selectedRows={selectedRows} |
| | | setSelectedRows={setSelectedRows} |
| | | tableRef={tableRef} /> |
| | |
| | | ); |
| | | }; |
| | | |
| | | const AsnOrderModalTable = ({ tabelData, setTableData, record, selectedRows, setSelectedRows, tableRef }) => { |
| | | const AsnOrderModalTable = ({ tabelData, setTableData, record, selectedRows, setSelectedRows, tableRef, page, pageSize, totalRowCount, setPageSize, setPage, loading }) => { |
| | | const translate = useTranslate(); |
| | | const notify = useNotify(); |
| | | |
| | | const [columns, setColumns] = useState([ |
| | | { |
| | | field: 'warehouse', |
| | | field: 'warehouse$', |
| | | headerName: translate('table.field.warehouseStock.warehouse'), |
| | | width: 130, |
| | | editable: false, |
| | | }, |
| | | { |
| | | field: 'matnrCode', |
| | | headerName: translate('table.field.asnOrderItem.matnrCode'), |
| | | headerName: translate('table.field.warehouseStock.matnrCode'), |
| | | width: 130, |
| | | editable: false, |
| | | }, |
| | |
| | | }, |
| | | { |
| | | field: 'batch', |
| | | headerName: translate('table.field.warehouseStock.splrBatch'), |
| | | headerName: translate('table.field.warehouseStock.batch'), |
| | | minWidth: 100, |
| | | flex: 1, |
| | | editable: false, |
| | |
| | | |
| | | |
| | | return ( |
| | | <div style={{ height: 400, width: '100%' }}> |
| | | <div style={{ height: 500, width: '100%' }}> |
| | | <DataGrid |
| | | apiRef={tableRef} |
| | | rows={tabelData} |
| | | columns={columns} |
| | | disableRowSelectionOnClick |
| | | getRowId={(row) => row.id} |
| | | disableColumnFilter |
| | | disableColumnSelector |
| | | disableColumnSorting |
| | | rowCount={totalRowCount} |
| | | paginationMode="server" |
| | | page={page} |
| | | pageSize={pageSize} |
| | | onPageChange={(newPage) => { |
| | | setPage(newPage) |
| | | }} |
| | | onPageSizeChange={(newPageSize) => { |
| | | setPageSize(newPageSize) |
| | | }} |
| | | disableMultipleColumnsSorting |
| | | processRowUpdate={processRowUpdate} |
| | | initialState={{ |
| | |
| | | }, |
| | | }} |
| | | pageSizeOptions={[10, 25, 50, 100]} |
| | | editMode="row" |
| | | checkboxSelection |
| | | onRowSelectionModelChange={handleSelectionChange} |
| | | selectionModel={selectedRows} |
| | | loading={loading} |
| | | sx={{ |
| | | '& .MuiDataGrid-cell input': { |
| | | border: '1px solid #ccc' |
| | |
| | | })); |
| | | |
| | | |
| | | |
| | | const WarehouseStockList = () => { |
| | | const dict = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_stock_summary_code')) || []; |
| | | |
| | | const translate = useTranslate(); |
| | | const [createDialog, setCreateDialog] = useState(false); |
| | | const [select, setSelect] = useState({}); |
| | | const [drawerVal, setDrawerVal] = useState(false); |
| | | |
| | | const filters = [ |
| | | const [filters, setFilters] = useState([ |
| | | <SearchInput source="condition" alwaysOn />, |
| | | <NumberInput source="locId" label="table.field.locItem.locId" />, |
| | | <TextInput source="locCode" label="table.field.locItem.locCode" />, |
| | | <TextInput source="type" label="table.field.locItem.type" />, |
| | | <ReferenceInput source="aggType" reference="dictData" filter={{ dictTypeCode: 'sys_stock_summary_code' }} alwaysOn> |
| | | <AutocompleteInput optionText='label' optionValue="value" label="table.field.locItem.aggType" /> |
| | | </ReferenceInput>, |
| | | <AutocompleteInput choices={dict} optionText='label' optionValue="value" source="aggType" label="table.field.locItem.aggType" />, |
| | | <NumberInput source="orderItemId" label="table.field.locItem.orderItemId" />, |
| | | <NumberInput source="wkType" label="table.field.locItem.wkType" />, |
| | | <NumberInput source="matnrId" label="table.field.locItem.matnrId" />, |
| | |
| | | <TextInput source="spec" label="table.field.locItem.spec" />, |
| | | <TextInput source="model" label="table.field.locItem.model" />, |
| | | <TextInput source="fieldsIndex" label="table.field.locItem.fieldsIndex" />, |
| | | <TextInput label="common.field.memo" source="memo" />, |
| | | ] |
| | | <TextInput label="common.field.memo" source="memo" />,]); |
| | | const [select, setSelect] = useState({}); |
| | | const [drawerVal, setDrawerVal] = useState(false); |
| | | |
| | | return ( |
| | | <> |
| | |
| | | duration: theme.transitions.duration.enteringScreen, |
| | | }), |
| | | marginRight: 0, |
| | | '& .RaAutocompleteInput-textField.MuiFormControl-root.MuiTextField-root': { |
| | | width: '200px' |
| | | } |
| | | }} |
| | | resource="warehouse/stock" |
| | | title={"common.button.detail"} |
| | | empty={false} |
| | | // filter={{aggType: "matnr"}} |
| | | filters={filters} |
| | | sort={{ field: "create_time", order: "desc" }} |
| | | actions={( |
| | |
| | | setDrawerVal={setDrawerVal} |
| | | setCreateDialog={setCreateDialog} |
| | | setSelect={setSelect} |
| | | filters={filters} |
| | | /> |
| | | </List> |
| | | <WarehouseStockInfo |
| | |
| | | |
| | | export default WarehouseStockList; |
| | | |
| | | const PaginatedRowNumber = () => { |
| | | const record = useRecordContext(); |
| | | const { page, perPage } = useListContext(); |
| | | const index = record.__tmp_index !== undefined ? record.__tmp_index : 0; |
| | | // const index = record.__tmp_index; // react-admin 内部使用的临时索引 |
| | | return <span>{(page - 1) * perPage + index + 1}</span>; |
| | | }; |
| | | |
| | | |
| | | |
| | | const DynamicFields = (props) => { |
| | | const { setDrawerVal, setCreateDialog, setSelect } = props |
| | | const index = 1; |
| | | const { setDrawerVal, setCreateDialog, setSelect, filters } = props |
| | | const translate = useTranslate(); |
| | | const notify = useNotify(); |
| | | const [columns, setColumns] = useState([]); |
| | |
| | | <NumberField source="workQty" label="table.field.warehouseStock.qty" />, |
| | | <TextField source="spec" label="table.field.warehouseStock.spec" />, |
| | | <TextField source="model" label="table.field.warehouseStock.model" />, |
| | | <TextField source="warehouse$" label="table.field.warehouseStock.warehouse" />, |
| | | <TextField source="batch" label="table.field.warehouseStock.batch" />, |
| | | <TextField source="unit" label="table.field.warehouseStock.unit" />, |
| | | <TextField source="fieldsIndex" label="table.field.warehouseStock.fieldsIndex" />, |
| | |
| | | </WrapperField> |
| | | ] |
| | | setColumns([...arr, ...fields, ...lastArr]); |
| | | |
| | | data.map(el => { |
| | | var i = 0; |
| | | filters.map((item) => { |
| | | if (item.key === el.fields) { |
| | | i = 1; |
| | | } |
| | | }) |
| | | i === 0 && filters.push(<TextInput key={el.fields} source={el.fields} label={el.fieldsAlise} />) |
| | | }) |
| | | // setFilters([...filters, ...inputFields]) |
| | | |
| | | } else { |
| | | notify(msg); |
| | | } |
| | |
| | | const HistoriesButton = ({ setDrawerVal, setSelect }) => { |
| | | const record = useRecordContext(); |
| | | const { filterValues } = useListContext(); |
| | | |
| | | const historyClick = (event) => { |
| | | event.stopPropagation(); |
| | | setDrawerVal(true) |
| | |
| | | <TextInput source="matnrCode" label="table.field.taskItem.matnrCode" />, |
| | | <TextInput source="unit" label="table.field.taskItem.unit" />, |
| | | <NumberInput source="anfme" label="table.field.taskItem.anfme" />, |
| | | <TextInput source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextInput source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextInput source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <TextInput source="batch" label="table.field.taskItem.batch" />, |
| | | <TextInput source="spec" label="table.field.taskItem.spec" />, |
| | | <TextInput source="model" label="table.field.taskItem.model" />, |
| | |
| | | <TextField source="matnrCode" label="table.field.taskItem.matnrCode" />, |
| | | <TextField source="unit" label="table.field.taskItem.unit" />, |
| | | <NumberField source="anfme" label="table.field.taskItem.anfme" />, |
| | | <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <TextField source="batch" label="table.field.taskItem.batch" />, |
| | | <TextField source="isptResult$" label="table.field.taskItem.isptResult" />, |
| | | <TextField source="spec" label="table.field.taskItem.spec" />, |
| | |
| | | rowClick={false} |
| | | // expand={() => <TaskItemPanel />} |
| | | expandSingle={true} |
| | | omit={['id', 'createTime', 'createBy', 'memo', 'taskId', 'orderId', 'orderItemId', 'matnrId']} |
| | | omit={['id', 'createTime', 'createBy', 'memo', 'taskId', 'orderId', 'orderItemId', 'matnrId', 'platWorkCode', 'projectCode']} |
| | | > |
| | | {columns.map((column) => column)} |
| | | </StyledDatagrid>} |
| | |
| | | TextField, |
| | | NumberField, |
| | | DateField, |
| | | AutocompleteInput, |
| | | BooleanField, |
| | | TextInput, |
| | | DateInput, |
| | |
| | | }, |
| | | })); |
| | | |
| | | const filters = [ |
| | | <SearchInput source="condition" alwaysOn />, |
| | | <DateInput label='common.time.after' source="timeStart" />, |
| | | <DateInput label='common.time.before' source="timeEnd" />, |
| | | <TextInput source="taskCode" label="table.field.task.taskCode" />, |
| | | <NumberInput source="taskStatus" label="table.field.task.taskStatus" />, |
| | | <NumberInput source="taskType" label="table.field.task.taskType" />, |
| | | <TextInput source="orgLoc" label="table.field.task.orgLoc" />, |
| | | <TextInput source="orgSite" label="table.field.task.orgSite" />, |
| | | <TextInput source="targLoc" label="table.field.task.targLoc" />, |
| | | <TextInput source="targSite" label="table.field.task.targSite" />, |
| | | <TextInput source="barcode" label="table.field.task.barcode" />, |
| | | <TextInput source="robotCode" label="table.field.task.robotCode" />, |
| | | <NumberInput source="exceStatus" label="table.field.task.exceStatus" />, |
| | | <TextInput source="expDesc" label="table.field.task.expDesc" />, |
| | | <NumberInput source="sort" label="table.field.task.sort" />, |
| | | <TextInput source="expCode" label="table.field.task.expCode" />, |
| | | <DateInput source="startTime" label="table.field.task.startTime" />, |
| | | <DateInput source="endTime" label="table.field.task.endTime" />, |
| | | <TextInput label="common.field.memo" source="memo" />, |
| | | <SelectInput |
| | | label="common.field.status" |
| | | source="status" |
| | | choices={[ |
| | | { id: '1', name: 'common.enums.statusTrue' }, |
| | | { id: '0', name: 'common.enums.statusFalse' }, |
| | | ]} |
| | | resettable |
| | | />, |
| | | ] |
| | | |
| | | const TaskList = (props) => { |
| | | const translate = useTranslate(); |
| | | const [drawerVal, setDrawerVal] = useState(false); |
| | | const dict = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_warehouse_type')) || []; |
| | | |
| | | const filters = [ |
| | | <SearchInput source="condition" alwaysOn />, |
| | | <DateInput label='common.time.after' source="timeStart" />, |
| | | <DateInput label='common.time.before' source="timeEnd" />, |
| | | <TextInput source="taskCode" label="table.field.task.taskCode" />, |
| | | <NumberInput source="taskStatus" label="table.field.task.taskStatus" />, |
| | | <NumberInput source="taskType" label="table.field.task.taskType" />, |
| | | <AutocompleteInput choices={dict} optionText='label' optionValue="value" source="warehType" label="table.field.task.warehType" />, |
| | | <TextInput source="orgLoc" label="table.field.task.orgLoc" />, |
| | | <TextInput source="orgSite" label="table.field.task.orgSite" />, |
| | | <TextInput source="targLoc" label="table.field.task.targLoc" />, |
| | | <TextInput source="targSite" label="table.field.task.targSite" />, |
| | | <TextInput source="barcode" label="table.field.task.barcode" />, |
| | | <TextInput source="robotCode" label="table.field.task.robotCode" />, |
| | | <NumberInput source="exceStatus" label="table.field.task.exceStatus" />, |
| | | <TextInput source="expDesc" label="table.field.task.expDesc" />, |
| | | <NumberInput source="sort" label="table.field.task.sort" />, |
| | | <TextInput source="expCode" label="table.field.task.expCode" />, |
| | | <DateInput source="startTime" label="table.field.task.startTime" />, |
| | | <DateInput source="endTime" label="table.field.task.endTime" />, |
| | | <TextInput label="common.field.memo" source="memo" />, |
| | | <SelectInput |
| | | label="common.field.status" |
| | | source="status" |
| | | choices={[ |
| | | { id: '1', name: 'common.enums.statusTrue' }, |
| | | { id: '0', name: 'common.enums.statusFalse' }, |
| | | ]} |
| | | resettable |
| | | />, |
| | | ] |
| | | |
| | | |
| | | |
| | | return ( |
| | | <Box display="flex"> |
| | | <List |
| | |
| | | <TextField source="taskCode" label="table.field.task.taskCode" /> |
| | | <NumberField source="taskStatus$" label="table.field.task.taskStatus" /> |
| | | <NumberField source="taskType$" label="table.field.task.taskType" /> |
| | | <NumberField source="warehType$" label="table.field.task.taskType" /> |
| | | <TextField source="orgLoc" label="table.field.task.orgLoc" /> |
| | | <TextField source="orgSite" label="table.field.task.orgSite" /> |
| | | <TextField source="targLoc" label="table.field.task.targLoc" /> |
| | |
| | | <TextInput source="maktx" label="table.field.waitPakinItem.maktx" />, |
| | | <NumberInput source="matnrId" label="table.field.waitPakinItem.matnrId" />, |
| | | <TextInput source="matnrCode" label="table.field.waitPakinItem.matnrCode" />, |
| | | <TextInput source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextInput source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextInput source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <NumberInput source="anfme" label="table.field.waitPakinItem.anfme" />, |
| | | <NumberInput source="workQty" label="table.field.waitPakinItem.workQty" />, |
| | | <TextInput source="unit" label="table.field.waitPakinItem.unit" />, |
| | |
| | | <NumberField source="matnrId" label="table.field.waitPakinItem.matnrId" />, |
| | | <NumberField source="anfme" label="table.field.waitPakinItem.anfme" />, |
| | | <TextField source="unit" label="table.field.waitPakinItem.unit" />, |
| | | <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <NumberField source="workQty" label="table.field.waitPakinItem.workQty" />, |
| | | <NumberField source="qty" label="table.field.waitPakinItem.qty" />, |
| | | <TextField source="fieldsIndex" label="table.field.waitPakinItem.fieldsIndex" />, |
| | |
| | | preferenceKey='waitPakinItem' |
| | | bulkActionButtons={false} |
| | | rowClick={(id, resource, record) => false} |
| | | omit={['id', 'pakinId', 'createTime', 'matnrId', 'createBy', 'memo', 'fieldsIndex']} |
| | | omit={['id', 'pakinId', 'createTime', 'matnrId', 'createBy', 'memo', 'fieldsIndex', 'platWorkCode', 'projectCode']} |
| | | > |
| | | {columns.map((column) => column)} |
| | | </StyledDatagrid>} |
| | |
| | | <TextInput source="barcode" label="table.field.warehouseAreasItem.barcode" />, |
| | | <NumberInput source="anfme" label="table.field.warehouseAreasItem.anfme" />, |
| | | <TextInput source="batch" label="table.field.warehouseAreasItem.batch" />, |
| | | <TextInput source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextInput source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextInput source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <TextInput source="unit" label="table.field.warehouseAreasItem.unit" />, |
| | | <TextInput source="stockUnit" label="table.field.warehouseAreasItem.stockUnit" />, |
| | | <TextInput source="brand" label="table.field.warehouseAreasItem.brand" />, |
| | |
| | | <NumberField key="anfme" source="anfme" label="table.field.warehouseAreasItem.anfme" />, |
| | | <NumberField key="workQty" source="workQty" label="table.field.warehouseAreasItem.workQty" />, |
| | | <NumberField key="qty" source="qty" label="table.field.warehouseAreasItem.qty" />, |
| | | <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | // <MyField source="isptQty" label="table.field.qlyIsptItem.anfme" |
| | | // onClick={(event, record, val) => { |
| | | // event.stopPropagation(); |
| | |
| | | setColumns([...arr, ...fields, ...lastArr]); |
| | | //filters添加过滤字段 |
| | | data.map(el => { |
| | | var i =0; |
| | | filters.map((item) =>{ |
| | | if(item.key === el.fields){ |
| | | i = 1; |
| | | var i = 0; |
| | | filters.map((item) => { |
| | | if (item.key === el.fields) { |
| | | i = 1; |
| | | } |
| | | }) |
| | | i===0 && filters.push(<TextInput key={el.fields} source={el.fields} label={el.fieldsAlise} />) |
| | | i === 0 && filters.push(<TextInput key={el.fields} source={el.fields} label={el.fieldsAlise} />) |
| | | }) |
| | | } else { |
| | | notify(msg); |
| | |
| | | preferenceKey='warehouseAreasItem' |
| | | bulkActionButtons={false} |
| | | rowClick={(id, resource, record) => false} |
| | | omit={['id', 'createTime', 'memo', 'areaId', 'brand', 'createBy$', 'weight', 'matnrId', 'batch', 'shipperId', 'splrId']} |
| | | omit={['id', 'createTime', 'memo', 'areaId', 'brand', 'createBy$', 'weight', 'matnrId', 'batch', 'shipperId', 'splrId', 'platWorkCode', 'projectCode']} |
| | | > |
| | | {columns.map((column) => column)} |
| | | </StyledDatagrid>} |
| | |
| | | if (Cools.isEmpty(param.getLocType1())){ |
| | | return R.error("高低检测信号不能为空"); |
| | | } |
| | | InTaskMsgDto msgDto = wcsService.createInTask(param,getLoginUserId()); |
| | | InTaskMsgDto msgDto = wcsService.createInTask(param); |
| | | return R.ok(msgDto); |
| | | |
| | | |
| | |
| | | if (Cools.isEmpty(param.getBarcode())) { |
| | | return R.error("条码不能为空"); |
| | | } |
| | | if (param.getIoType().equals(TaskType.TASK_TYPE_AGV_IN.type)) { |
| | | if (!param.getIoType().equals(TaskType.TASK_TYPE_IN.type)) { |
| | | return R.error("入库类型有误"); |
| | | } |
| | | wcsService.agvTaskPickUpComplete(param); |
| | |
| | | private Integer sourceStaNo; //作业站点 or 来源站点 |
| | | private String barcode; //容器条码 |
| | | private Integer locType1; //库位类型 |
| | | private Long user; |
| | | // private Integer locType2; //库位类型 |
| | | // private Integer locType3; //库位类型 |
| | | } |
| | |
| | | import com.vincent.rsf.server.api.controller.params.TaskInParam; |
| | | |
| | | public interface WcsService { |
| | | InTaskMsgDto createInTask(TaskInParam param, Long loginUserId); |
| | | InTaskMsgDto createInTask(TaskInParam param); |
| | | |
| | | void agvTaskPickUpComplete(TaskInParam param); |
| | | } |
| | |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R AGVInTaskStart(Map<String, Object> params,Long loginUserId ) { |
| | | String sta = params.get("sta").toString(); |
| | | String area = params.get("area").toString(); |
| | |
| | | |
| | | taskService.generateAGVTasks(waitPakin,targetLoc,sta,loginUserId); |
| | | |
| | | basStation.setUseStatus(StaUseStatusType.TYPE_R.type); |
| | | if (!basStationService.updateById(basStation)){ |
| | | throw new CoolException("更新站点状态失败"); |
| | | } |
| | | |
| | | |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | |
| | | .setProdTime(dto.getProdTime()) |
| | | .setSplrId(companys.getId()) |
| | | .setWeight(dto.getWeigth()) |
| | | .setPlatOrderCode(orderItem.getPlatOrderCode()) |
| | | .setPlatWorkCode(orderItem.getPlatWorkCode()) |
| | | .setProjectCode(orderItem.getProjectCode()) |
| | | //库存单位为最小单位 |
| | | .setUnit(orderItem.getStockUnit()) |
| | | .setStockUnit(orderItem.getStockUnit()) |
| | |
| | | // List<Short> asList = Arrays.asList(Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val), Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val)); |
| | | |
| | | WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() |
| | | .eq(!Cools.isEmpty(params.get("barcode")),WaitPakin::getBarcode, params.get("barcode").toString()) |
| | | .eq(!Cools.isEmpty(params.get("code")),WaitPakin::getCode, params.get("code").toString()) |
| | | .eq(!Cools.isEmpty(params.get("barcode")),WaitPakin::getBarcode, params.get("barcode")) |
| | | .eq(!Cools.isEmpty(params.get("code")),WaitPakin::getCode, params.get("code")) |
| | | .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val)); |
| | | if (Objects.isNull(waitPakin)) { |
| | | return R.error("未找到该容器码的组托明细,请检查组托状态"); |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public InTaskMsgDto createInTask(TaskInParam param, Long loginUserId) { |
| | | public InTaskMsgDto createInTask(TaskInParam param) { |
| | | // 获取库位号 |
| | | InTaskMsgDto locNo = getLocNo(param); |
| | | |
| | |
| | | |
| | | // 创建并保存任务 |
| | | Task task = createTask(ruleCode, locNo.getLocNo(), waitPakin.getBarcode(), |
| | | deviceSite.getDeviceSite(), param.getSourceStaNo().toString(), loginUserId); |
| | | deviceSite.getDeviceSite(), param.getSourceStaNo().toString(), param.getUser()); |
| | | |
| | | // 更新库位状态 |
| | | updateLocStatus(task.getTargLoc(), waitPakin.getBarcode()); |
| | |
| | | List<WaitPakinItem> waitPakinItems = getWaitPakinItems(waitPakin.getId()); |
| | | |
| | | // 创建并保存任务明细 |
| | | saveTaskItems(task.getId(), waitPakinItems, loginUserId); |
| | | saveTaskItems(task.getId(), waitPakinItems, param.getUser()); |
| | | |
| | | // 更新组托状态 |
| | | updateWaitPakinStatus(param.getBarcode(), loginUserId); |
| | | updateWaitPakinStatus(param.getBarcode(), param.getUser()); |
| | | |
| | | // 设置工作单号并返回 |
| | | locNo.setWorkNo(ruleCode); |
| | |
| | | PageParam<BasStation, BaseParam> pageParam = new PageParam<>(baseParam, BasStation.class); |
| | | PageParam<BasStation, BaseParam> page = basStationService.page(pageParam, pageParam.buildWrapper(true)); |
| | | for (BasStation station : page.getRecords()) { |
| | | String content = station.getCrossZoneArea().substring(1, station.getCrossZoneArea().length() - 1); |
| | | String[] parts = content.split(","); |
| | | Long[] longArray = new Long[parts.length]; |
| | | for (int i = 0; i < parts.length; i++) { |
| | | longArray[i] = Long.parseLong(parts[i].trim()); |
| | | if (!Cools.isEmpty(station.getCrossZoneArea())) { |
| | | String content = station.getCrossZoneArea().substring(1, station.getCrossZoneArea().length() - 1); |
| | | String[] parts = content.split(","); |
| | | Long[] longArray = new Long[parts.length]; |
| | | for (int i = 0; i < parts.length; i++) { |
| | | longArray[i] = Long.parseLong(parts[i].trim()); |
| | | } |
| | | station.setAreaIds(longArray); |
| | | } |
| | | station.setAreaIds(longArray); |
| | | |
| | | } |
| | | return R.ok().add(page); |
| | | } |
| | |
| | | if (!Cools.isEmpty(serviceOne)) { |
| | | return R.error(basStation.getStationName()+"站已被初始化"); |
| | | } |
| | | if (null !=basStation.getAreaIds()){ |
| | | basStation.setCrossZoneArea(Arrays.toString(basStation.getAreaIds())); |
| | | } |
| | | if (!basStationService.save(basStation)) { |
| | | return R.error("保存失败"); |
| | | } |
| | |
| | | import com.vincent.rsf.framework.common.Cools; |
| | | import com.vincent.rsf.framework.common.R; |
| | | import com.vincent.rsf.framework.exception.CoolException; |
| | | import com.vincent.rsf.server.manager.enums.TaskStsType; |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | | import com.vincent.rsf.server.manager.enums.*; |
| | | import com.vincent.rsf.server.common.utils.ExcelUtil; |
| | | import com.vincent.rsf.server.common.annotation.OperationLog; |
| | | import com.vincent.rsf.server.common.domain.BaseParam; |
| | | import com.vincent.rsf.server.common.domain.KeyValVo; |
| | | import com.vincent.rsf.server.common.domain.PageParam; |
| | | import com.vincent.rsf.server.manager.entity.Loc; |
| | | import com.vincent.rsf.server.manager.entity.Task; |
| | | import com.vincent.rsf.server.manager.entity.TaskItem; |
| | | import com.vincent.rsf.server.manager.entity.WaitPakin; |
| | | import com.vincent.rsf.server.manager.enums.PakinIOStatus; |
| | | import com.vincent.rsf.server.manager.service.LocService; |
| | | import com.vincent.rsf.server.manager.service.TaskItemService; |
| | | import com.vincent.rsf.server.manager.service.TaskService; |
| | | import com.vincent.rsf.server.manager.service.WaitPakinService; |
| | | import com.vincent.rsf.server.manager.service.*; |
| | | import com.vincent.rsf.server.manager.service.impl.BasStationServiceImpl; |
| | | import com.vincent.rsf.server.system.controller.BaseController; |
| | | import com.vincent.rsf.server.system.enums.LocStsType; |
| | | import io.swagger.annotations.ApiOperation; |
| | |
| | | |
| | | @Autowired |
| | | private LocService locService; |
| | | @Autowired |
| | | private BasStationService basStationService; |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @PostMapping("/task/page") |
| | |
| | | if (null != waitPakin) { |
| | | waitPakin.setIoStatus(Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val)); |
| | | if (!waitPakinService.updateById(waitPakin)) { |
| | | return R.error("更新组托状态失败"); |
| | | throw new CoolException("更新组托状态失败!!"); |
| | | |
| | | } |
| | | } |
| | | Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>() |
| | |
| | | |
| | | loc.setUseStatus(LocStsType.LOC_STS_TYPE_O.type); |
| | | if (!locService.updateById(loc)) { |
| | | return R.error("更新库位状态失败"); |
| | | throw new CoolException("更新库位状态失败!!"); |
| | | } |
| | | } |
| | | if (task.getWarehType().equals(WarehType.WAREHOUSE_TYPE_AGV.id)){ |
| | | BasStation basStation = null; |
| | | if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type) |
| | | ){ |
| | | basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>() |
| | | .eq(BasStation::getStationName, task.getOrgSite()) |
| | | .eq(BasStation::getUseStatus, StaUseStatusType.TYPE_R.type) |
| | | ); |
| | | |
| | | |
| | | } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_IN.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type) |
| | | ) { |
| | | basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>() |
| | | .eq(BasStation::getStationName, task.getTargLoc()) |
| | | .eq(BasStation::getUseStatus, StaUseStatusType.TYPE_R.type) |
| | | ); |
| | | } |
| | | if (null == basStation) { |
| | | throw new CoolException("站点状态错误!!"); |
| | | } |
| | | basStation.setUseStatus(StaUseStatusType.TYPE_F.type); |
| | | if (!basStationService.updateById(basStation)){ |
| | | throw new CoolException("更新站点状态失败!!"); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | if (!taskService.removeByIds(Arrays.asList(ids))) { |
| | | return R.error("Delete Fail"); |
| | |
| | | import com.vincent.rsf.server.manager.controller.params.WarehouseStockParam; |
| | | import com.vincent.rsf.server.manager.entity.StockItem; |
| | | import com.vincent.rsf.server.manager.entity.ViewStockManage; |
| | | import com.vincent.rsf.server.manager.entity.WarehouseAreasItem; |
| | | import com.vincent.rsf.server.manager.enums.ViewStockType; |
| | | import com.vincent.rsf.server.manager.service.WarehouseStockService; |
| | | import com.vincent.rsf.server.system.controller.BaseController; |
| | | import io.swagger.annotations.Api; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | |
| | | BaseParam baseParam = buildParam(param, BaseParam.class); |
| | | PageParam<ViewStockManage, BaseParam> pageParam = new PageParam<>(baseParam, ViewStockManage.class); |
| | | WarehouseStockParam stockParam = JSONObject.parseObject(JSONObject.toJSONString(param), WarehouseStockParam.class); |
| | | String type = stockParam.getAggType(); |
| | | String type = Objects.isNull(stockParam.getAggType()) ? ViewStockType.VIEW_STOCK_TYPE_MATNR.val : stockParam.getAggType(); |
| | | ViewStockManage stock = stockParam.getStock(); |
| | | QueryWrapper<ViewStockManage> wrapper = new QueryWrapper<>(); |
| | | |
| | |
| | | } else { |
| | | wrapper.groupBy("matnr_id"); |
| | | } |
| | | |
| | | FieldsUtils.setFieldsFilters(wrapper, pageParam, ViewStockManage.class); |
| | | |
| | | IPage<ViewStockManage> pageResult = warehouseStockService.pageByStock(pageParam, wrapper); |
| | | List<ViewStockManage> records = pageResult.getRecords(); |
| | | for (ViewStockManage record : records) { |
| | |
| | | BaseParam baseParam = buildParam(param, BaseParam.class); |
| | | PageParam<StockItem, BaseParam> pageParam = new PageParam<>(baseParam, StockItem.class); |
| | | WarehouseStockParam stockParam = JSONObject.parseObject(JSONObject.toJSONString(param), WarehouseStockParam.class); |
| | | String type = stockParam.getAggType(); |
| | | String type = Objects.isNull(stockParam.getAggType()) ? ViewStockType.VIEW_STOCK_TYPE_MATNR.val : stockParam.getAggType(); |
| | | ViewStockManage stock = stockParam.getStock(); |
| | | QueryWrapper<StockItem> wrapper = new QueryWrapper<>(); |
| | | |
| | |
| | | BaseParam baseParam = buildParam(param, BaseParam.class); |
| | | PageParam<ViewStockManage, BaseParam> pageParam = new PageParam<>(baseParam, ViewStockManage.class); |
| | | WarehouseStockParam stockParam = JSONObject.parseObject(JSONObject.toJSONString(param), WarehouseStockParam.class); |
| | | String type = stockParam.getAggType(); |
| | | String type = Objects.isNull(stockParam.getAggType()) ? ViewStockType.VIEW_STOCK_TYPE_MATNR.val : stockParam.getAggType(); |
| | | if (Objects.isNull(type)) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | |
| | | } else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_WAREHOUSE.val)) { |
| | | wrapper.eq(ViewStockManage::getWarehouse, stock.getWarehouse()); |
| | | } else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_FIELDSINDEX.val)) { |
| | | wrapper.eq(ViewStockManage::getFieldsIndex, stock.getFieldsIndex()); |
| | | if (StringUtils.isBlank(stock.getFieldsIndex())) { |
| | | wrapper.isNull(ViewStockManage::getFieldsIndex); |
| | | } else { |
| | | wrapper.eq(ViewStockManage::getFieldsIndex, stock.getFieldsIndex()); |
| | | } |
| | | } else { |
| | | wrapper.eq(ViewStockManage::getMatnrCode, stock.getMatnrCode()); |
| | | } |
| | |
| | | private Long asnId; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 平台标识(行号) |
| | | */ |
| | | @ApiModelProperty(value = "平台标识(行号)") |
| | | private String platItemId; |
| | | |
| | | @ApiModelProperty("客户订单号") |
| | | private String platOrderCode; |
| | | |
| | | @ApiModelProperty("工单号") |
| | | private String platWorkCode; |
| | | |
| | | @ApiModelProperty("项目号") |
| | | private String projectCode; |
| | | |
| | | /** |
| | | * 扩展字段 |
| | | */ |
| | |
| | | @ApiModelProperty("质检数量") |
| | | private Double anfme; |
| | | |
| | | @ApiModelProperty("客户订单号") |
| | | private String platOrderCode; |
| | | |
| | | @ApiModelProperty("工单号") |
| | | private String platWorkCode; |
| | | |
| | | @ApiModelProperty("项目号") |
| | | private String projectCode; |
| | | |
| | | /** |
| | | * 送货数量 |
| | | */ |
| | |
| | | @ApiModelProperty(value= "任务状态") |
| | | private Short taskStatus; |
| | | |
| | | |
| | | @ApiModelProperty("仓库类型") |
| | | private Short warehType; |
| | | |
| | | /** |
| | | * 任务类型 |
| | | */ |
| | |
| | | @ApiModelProperty("单据ID") |
| | | private Long orderId; |
| | | |
| | | @ApiModelProperty("行号") |
| | | private String platItemId; |
| | | |
| | | @ApiModelProperty("客户订单号") |
| | | private String platOrderCode; |
| | | |
| | | @ApiModelProperty("工单号") |
| | | private String platWorkCode; |
| | | |
| | | @ApiModelProperty("项目号") |
| | | private String projectCode; |
| | | |
| | | @ApiModelProperty("单据类型") |
| | | private String orderType; |
| | | |
| | |
| | | @ApiModelProperty(value= "物料名称") |
| | | private String maktx; |
| | | |
| | | |
| | | @ApiModelProperty("行号") |
| | | private String platItemId; |
| | | |
| | | @ApiModelProperty("客户订单号") |
| | | private String platOrderCode; |
| | | |
| | | @ApiModelProperty("工单号") |
| | | private String platWorkCode; |
| | | |
| | | @ApiModelProperty("项目号") |
| | | private String projectCode; |
| | | |
| | | /** |
| | | * 物料编码 |
| | | */ |
| | |
| | | package com.vincent.rsf.server.manager.entity; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.vincent.rsf.framework.common.Cools; |
| | | import com.vincent.rsf.framework.common.SpringUtils; |
| | | import com.vincent.rsf.server.manager.service.MatnrService; |
| | | import com.vincent.rsf.server.manager.service.WarehouseService; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.experimental.Accessors; |
| | |
| | | private String locCode; |
| | | |
| | | @ApiModelProperty("仓库") |
| | | @TableField(exist = false) |
| | | private String warehouse; |
| | | |
| | | @ApiModelProperty("单据类型") |
| | |
| | | @TableField(exist = false) |
| | | private Map<String, String> extendFields; |
| | | |
| | | |
| | | public String getWarehouse$(){ |
| | | WarehouseService service = SpringUtils.getBean(WarehouseService.class); |
| | | Warehouse warehouse = service.getById(this.warehouse); |
| | | if (!Cools.isEmpty(warehouse)){ |
| | | return String.valueOf(warehouse.getName()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | @ApiModelProperty("物料跟踪码") |
| | | private String trackCode; |
| | | |
| | | @ApiModelProperty("行号") |
| | | private String platItemId; |
| | | |
| | | @ApiModelProperty("客户订单号") |
| | | private String platOrderCode; |
| | | |
| | | @ApiModelProperty("工单号") |
| | | private String platWorkCode; |
| | | |
| | | @ApiModelProperty("项目号") |
| | | private String projectCode; |
| | | |
| | | /** |
| | | * 物料名称 |
| | | */ |
| | |
| | | @ApiModelProperty(value = "扩展字段唯一标识") |
| | | private String fieldsIndex; |
| | | |
| | | @ApiModelProperty("客户订单号") |
| | | private String platOrderCode; |
| | | |
| | | @ApiModelProperty("工单号") |
| | | private String platWorkCode; |
| | | |
| | | @ApiModelProperty("项目号") |
| | | private String projectCode; |
| | | |
| | | /** |
| | | * 物料名称 |
| | | */ |
| | |
| | | @ExcelComment(value = "platItemId", example = "1357564255478") |
| | | private String platItemId; |
| | | |
| | | @Excel(name = "客户订单号") |
| | | @ApiModelProperty("客户订单号") |
| | | @ExcelComment(value = "platOrderCode", example = "PT202564713301") |
| | | private String platOrderCode; |
| | | |
| | | @Excel(name = "工单号") |
| | | @ApiModelProperty("工单号") |
| | | @ExcelComment(value = "platWorkCode", example = "PWC2354894211") |
| | | private String platWorkCode; |
| | | |
| | | @Excel(name = "项目号") |
| | | @ApiModelProperty("项目号") |
| | | @ExcelComment(value = "projectCode", example = "PC2365845636001") |
| | | private String projectCode; |
| | | |
| | | /** |
| | | * 单据类型 |
| | |
| | | //订单类型 |
| | | TYPE_O("O", "空闲"), |
| | | TYPE_F("F", "占用"), |
| | | TYPE_S("S", "预约入站"), |
| | | TYPE_R("R", "预约出站"), |
| | | TYPE_X("X", "禁用"), |
| | | |
| | | ; |
| | |
| | | //
|
| | | // WCS_PUTAWAY_SUSPEND(13L, "入库任务挂起"),
|
| | |
|
| | | COMPLETE_IN("99", "入库完成"),
|
| | | COMPLETE_IN("98", "入库完成"),
|
| | |
|
| | | REPORT_IN("99", "上报完成"),
|
| | |
|
| | | UPDATED_IN("100", "库存更新完成"),
|
| | |
|
| | |
| | | public enum TaskType { |
| | | |
| | | TASK_TYPE_IN("1", "入库"), |
| | | TASK_TYPE_FLAT_WAREHOUSE_IN("2", "平库上架"), |
| | | TASK_TYPE_AGV_IN("3", "AGV入库"), |
| | | TASK_TYPE_EMPITY_IN("10", "空板入库"), |
| | | TASK_TYPE_LOC_MOVE("11", "库格移载"), |
| | | TASK_TYPE_PICK_IN("53", "拣料再入库"), |
| | | TASK_TYPE_MERGE_IN("54", "并板再入库"), |
| | | TASK_TYPE_CHECK_IN("57", "盘点再入库"), |
| | | TASK_TYPE_OUT("101", "出库"), |
| | | TASK_TYPE_PICK_AGAIN_IN("103", "拣料入库"), |
| | | TASK_TYPE_PICK_AGAIN_IN("103", "拣料出库"), |
| | | TASK_TYPE_MERGE_OUT("104", "并板出库"), |
| | | TASK_TYPE_CHECK_OUT("107", "盘点出库"), |
| | | TASK_TYPE_EMPITY_OUT("110", "空板出库"), |
| New file |
| | |
| | | package com.vincent.rsf.server.manager.enums; |
| | | |
| | | public enum WarehType { |
| | | |
| | | //仓库类型 |
| | | WAREHOUSE_TYPE_FOUR_DIRECTIONS("1", "四向库"), |
| | | WAREHOUSE_TYPE_AGV("2", "AGV库"), |
| | | WAREHOUSE_TYPE_CTU("3", "CTU库"), |
| | | WAREHOUSE_TYPE_PLAT("4", "平库"), |
| | | WAREHOUSE_TYPE_CRN("5", "堆垛机库"), |
| | | ; |
| | | |
| | | public Short id; |
| | | public String desc; |
| | | |
| | | WarehType(String id, String desc) { |
| | | this.id = Short.parseShort(id); |
| | | this.desc = desc; |
| | | } |
| | | |
| | | } |
| | |
| | | .setAsnCode(asnOrder.getCode()) |
| | | .setAsnId(asnOrder.getId()) |
| | | .setProdTime(orderItem.getProdTime()) |
| | | .setPlatOrderCode(orderItem.getPlatOrderCode()) |
| | | .setPlatWorkCode(orderItem.getPlatWorkCode()) |
| | | .setProjectCode(orderItem.getProjectCode()) |
| | | .setSplrId(companys.getId()) |
| | | //库存单位为最小单位 |
| | | .setUnit(orderItem.getStockUnit()) |
| | |
| | | import com.vincent.rsf.server.manager.enums.TaskStsType; |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | | import com.vincent.rsf.server.manager.service.*; |
| | | import com.vincent.rsf.server.system.constant.GlobalConfigCode; |
| | | import com.vincent.rsf.server.system.entity.Config; |
| | | import com.vincent.rsf.server.system.service.ConfigService; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | private StockService stockService; |
| | | @Autowired |
| | | private LocService locService; |
| | | @Autowired |
| | | private ConfigService configService; |
| | | /** |
| | | * @author Ryan |
| | | * @description 完成入库,更新库存 |
| | |
| | | * @time 2025/4/2 12:37 |
| | | */ |
| | | // @Scheduled(cron = "0 0/05 * * * ? ") |
| | | @Scheduled(cron = "0/15 * * * * ?") |
| | | @Scheduled(cron = "0/3 * * * * ?") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void completeInStock() throws Exception { |
| | | List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id)); |
| | |
| | | @Scheduled(cron = "0 0/05 * * * ? ") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void taskLogUpdate() { |
| | | List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.UPDATED_IN.id)); |
| | | LambdaQueryWrapper<Task> queryWrapper = new LambdaQueryWrapper<Task>(); |
| | | Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.ORDER_INOF_REPORT_PLAT)); |
| | | if (!Objects.isNull(config)) { |
| | | if (Boolean.parseBoolean(config.getVal())) { |
| | | queryWrapper.eq(Task::getTaskStatus, TaskStsType.REPORT_IN.id); |
| | | } else { |
| | | queryWrapper.eq(Task::getTaskStatus, TaskStsType.UPDATED_IN.id); |
| | | } |
| | | } else { |
| | | queryWrapper.eq(Task::getTaskStatus, TaskStsType.UPDATED_IN.id); |
| | | } |
| | | List<Task> tasks = taskService.list(queryWrapper); |
| | | if (tasks.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | List<Long> list = tasks.stream().map(Task::getId).collect(Collectors.toList()); |
| | | List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getTaskId, list)); |
| | | if (taskItems.isEmpty()) { |
| | |
| | | .setIsptResult(QlyIsptResult.getDescVal(orderTemplate.getIsptResult())) |
| | | // .setTrackCode(trackCode) |
| | | .setBarcode(trackCode) |
| | | .setPlatOrderCode(orderTemplate.getPlatOrderCode()) |
| | | .setPlatWorkCode(orderTemplate.getPlatWorkCode()) |
| | | .setProjectCode(orderTemplate.getProjectCode()) |
| | | .setPoCode(orderTemplate.getPoCode()) |
| | | .setPurUnit(matnr.getUnit()) |
| | | .setCreateBy(loginUserId) |
| | |
| | | .select("asn_id as id, SUM(anfme) anfme, SUM(qty) qty, area_id, area_name, asn_code, asn_id, splr_id, splr_batch") |
| | | .eq(StringUtils.isNotBlank(code), "asn_code", code) |
| | | .lambda() |
| | | .isNull(WarehouseAreasItem::getIsptResult) |
| | | // .isNull(WarehouseAreasItem::getIsptResult) |
| | | .lt(WarehouseAreasItem::getWorkQty, 1) |
| | | .lt(WarehouseAreasItem::getQty, 1) |
| | | .groupBy(WarehouseAreasItem::getAsnCode)); |
| | |
| | | .setIspectId(inspect.getId()) |
| | | .setRcptQty(orderItem.getAnfme()) |
| | | .setRcptId(orderItem.getId()) |
| | | .setPlatOrderCode(orderItem.getPlatOrderCode()) |
| | | .setPlatWorkCode(orderItem.getPlatWorkCode()) |
| | | .setProjectCode(orderItem.getProjectCode()) |
| | | .setAnfme(0.0) |
| | | .setFieldsIndex(orderItem.getFieldsIndex()) |
| | | .setSplrBatch(orderItem.getSplrBatch()) |
| | | .setSplrName(orderItem.getSplrId$()) |
| | | .setCreateBy(loginUserId) |
| | | .setUpdateBy(loginUserId) |
| | | .setDlyQty(orderItem.getAnfme()); |
| | | items.add(isptItem); |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.vincent.rsf.framework.common.Cools; |
| | | import com.vincent.rsf.server.manager.enums.OrderType; |
| | | import com.vincent.rsf.server.manager.enums.TaskStsType; |
| | | import com.vincent.rsf.server.manager.enums.*; |
| | | import com.vincent.rsf.framework.common.R; |
| | | import com.vincent.rsf.framework.exception.CoolException; |
| | | import com.vincent.rsf.server.manager.enums.TaskType; |
| | | import com.vincent.rsf.server.api.utils.LocUtils; |
| | | import com.vincent.rsf.server.manager.controller.params.GenerateTaskParams; |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | | import com.vincent.rsf.server.manager.enums.PakinIOStatus; |
| | | import com.vincent.rsf.server.manager.mapper.TaskMapper; |
| | | import com.vincent.rsf.server.manager.service.*; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | |
| | | Task task = new Task(); |
| | | task.setTaskCode(ruleCode) |
| | | .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue()) |
| | | .setTaskType(TaskType.TASK_TYPE_AGV_IN.type.shortValue()) |
| | | .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue()) |
| | | .setWarehType(WarehType.WAREHOUSE_TYPE_AGV.id) |
| | | .setTargLoc(targetLoc) |
| | | .setOrgSite(orgSta) |
| | | .setBarcode(pakin.getBarcode()) |
| | |
| | | Task task = new Task(); |
| | | task.setTaskCode(ruleCode) |
| | | .setTaskStatus(TaskStsType.COMPLETE_IN.id.shortValue()) |
| | | .setTaskType(TaskType.TASK_TYPE_FLAT_WAREHOUSE_IN.type.shortValue()) |
| | | .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue()) |
| | | .setWarehType(WarehType.WAREHOUSE_TYPE_PLAT.id) |
| | | .setTargLoc(targetLoc) |
| | | .setBarcode(pakin.getBarcode()) |
| | | .setCreateBy(loginUserId) |
| | |
| | | .setOrderType(OrderType.ORDER_IN.type) |
| | | .setSource(item.getId()) |
| | | .setTrackCode(item.getTrackCode()) |
| | | .setPlatItemId(item.getPlatItemId()) |
| | | .setPlatOrderCode(item.getPlatOrderCode()) |
| | | .setPlatWorkCode(item.getPlatWorkCode()) |
| | | .setProjectCode(item.getProjectCode()) |
| | | .setCreateBy(loginUserId) |
| | | .setUpdateBy(loginUserId) |
| | | .setExtendFields(item.getExtendFields()) |
| | |
| | | .setAsnCode(warehouseAreasItems.getAsnCode()) |
| | | .setAsnItemId(warehouseAreasItems.getAsnItemId()) |
| | | .setIsptResult(warehouseAreasItems.getIsptResult()) |
| | | .setPlatItemId(warehouseAreasItems.getPlatItemId()) |
| | | .setPlatOrderCode(warehouseAreasItems.getPlatOrderCode()) |
| | | .setPlatWorkCode(warehouseAreasItems.getPlatWorkCode()) |
| | | .setProjectCode(warehouseAreasItems.getProjectCode()) |
| | | .setBatch(warehouseAreasItems.getSplrBatch()) |
| | | .setUnit(warehouseAreasItems.getStockUnit()) |
| | | .setFieldsIndex(warehouseAreasItems.getFieldsIndex()) |
| | |
| | | /**收货时是否允许超收*/ |
| | | public final static String ALLOW_OVER_CHANGE = "AllowOverchange"; |
| | | |
| | | public final static String ORDER_INOF_REPORT_PLAT = "OrderInofReportPlat"; |
| | | |
| | | } |
| | |
| | | SELECT id, |
| | | loc_id, |
| | | loc_code, |
| | | warehouse, |
| | | type, |
| | | order_item_id, |
| | | wk_type, |