From d96cb8a176a2cd7406de97b9a6e321f8ecd4c707 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 31 三月 2025 07:59:54 +0800 Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop --- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskLogController.java | 110 ++ rsf-server/src/main/resources/mapper/manager/TaskItemLogMapper.xml | 5 rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskLogMapper.java | 12 rsf-admin/src/page/asnOrder/AsnWareModal.jsx | 26 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java | 52 + rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/PakinItem.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 34 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskLogService.java | 8 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskItemServiceImpl.java | 12 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java | 250 ++++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 62 + rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java | 297 ++++++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskItemLogServiceImpl.java | 12 rsf-server/src/main/resources/mapper/manager/TaskMapper.xml | 5 rsf-server/src/main/resources/application.yml | 2 rsf-admin/src/i18n/zh.js | 11 rsf-admin/src/i18n/en.js | 4 rsf-admin/src/page/waitPakin/WaitPakinPanel.jsx | 10 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java | 13 rsf-server/src/main/resources/mapper/manager/TaskItemMapper.xml | 5 rsf-admin/src/page/waitPakinLog/WaitPakinLogPanel.jsx | 6 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java | 6 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java | 47 rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskMapper.java | 12 rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java | 8 rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskItemMapper.java | 12 rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java | 5 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java | 47 + rsf-server/src/main/resources/mapper/manager/TaskLogMapper.xml | 5 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskItemController.java | 110 ++ rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/TaskStsType.java | 56 + rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java | 302 ++++++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItemLog.java | 258 ++++++ /dev/null | 31 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskItemLogController.java | 110 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskItemService.java | 8 rsf-admin/src/page/waitPakin/WaitPakinList.jsx | 2 rsf-admin/src/page/components/TreeSelectInput.jsx | 4 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java | 1 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskLogServiceImpl.java | 12 rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskItemLogMapper.java | 12 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskItemLogService.java | 8 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java | 110 ++ rsf-admin/src/page/asnOrder/AsnOrderModal.jsx | 75 + rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/TaskType.java | 29 46 files changed, 2,089 insertions(+), 121 deletions(-) diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js index a9f29d4..8f45034 100644 --- a/rsf-admin/src/i18n/en.js +++ b/rsf-admin/src/i18n/en.js @@ -623,6 +623,10 @@ maktx: "maktx", matnrId: "matnrId", matnrCode: "matnrCode", + asnId: "asnId", + asnCode: "asnCode", + asnItemId: "asnItemId", + trackCode: "trackCode", anfme: "anfme", workQty: "workQty", unit: "unit", diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index 1a7617c..ea8aac8 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -512,6 +512,7 @@ poDetlCode: "PO鍗曠紪鐮�", matnrId: "鐗╂枡鏍囪瘑", maktx: "鐗╂枡鍚嶇О", + maktxCode: "鐗╂枡缂栫爜", anfme: "鏁伴噺", stockUnit: "搴撳瓨鍗曚綅", purQty: "璁″垝鏀惰揣鏁伴噺", @@ -622,7 +623,7 @@ code: "缂栫爜", ansId: "鏀惰揣閫氱煡鍗曞彿", asnCode: "鏀惰揣閫氱煡鍗曠紪鐮�", - barcode: "鏉″舰鐮�", + barcode: "瀹瑰櫒鐮�", anfme: "鏁伴噺", ioStatus: "鐘舵��", }, @@ -631,6 +632,10 @@ maktx: "鐗╂枡", matnrId: "鐗╂枡id", matnrCode: "鐗╂枡缂栫爜", + asnId: "鏀惰揣閫氱煡鍗曞彿", + asnCode: "鏀惰揣閫氱煡鍗曠紪鐮�", + asnItemId: "鏀惰揣閫氱煡鍗曟槑缁唅d", + trackCode: "鏉″舰鐮�", anfme: "鏁伴噺", workQty: "鎵ц涓暟閲�", unit: "鍗曚綅", @@ -641,14 +646,14 @@ waitPakinLog: { pakinId: "缁勬墭Id", code: "缂栫爜", - barcode: "鏉″舰鐮�", + barcode: "瀹瑰櫒鐮�", anfme: "鏁伴噺", ioStatus: "鐘舵��", }, waitPakinItemLog: { pakinId: "缁勬墭Id", pakinItemId: "缁勬墭鏄庣粏Id", - ansId: "鏀惰揣閫氱煡鍗曞彿", + asnId: "鏀惰揣閫氱煡鍗曞彿", asnCode: "鏀惰揣閫氱煡鍗曠紪鐮�", asnItemId: "鏀惰揣閫氱煡鍗曟槑缁唅d", trackCode: "鏉″舰鐮�", diff --git a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx index 94bbfef..e75c230 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx @@ -156,6 +156,13 @@ } } + const [selectedRows, setSelectedRows] = useState([]); + + const handleDeleteItem = () => { + const newTableData = _.filter(tabelData, (item) => !selectedRows.includes(item.matnrId)); + setTableData(newTableData); + } + return ( <> <Dialog @@ -182,7 +189,7 @@ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}> <Form> <Grid container spacing={2}> - <Grid item xs={4}> + <Grid item md={4}> <DictSelect label={translate("table.field.asnOrder.type")} value={formData.type} @@ -194,7 +201,7 @@ </Grid> - <Grid item xs={4}> + <Grid item md={4}> <DictSelect label={translate("table.field.asnOrder.wkType")} value={formData.wkType} @@ -210,13 +217,14 @@ <Box sx={{ mt: 2 }}> <Stack direction="row" spacing={2}> <Button variant="contained" onClick={() => setCreateDialog(true)}>鏂板鐗╂枡</Button> - {asnId !== '' && <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDelete} />} + {/* {asnId !== '' && <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDelete} />} */} + <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDeleteItem} /> </Stack> </Box> <Box sx={{ mt: 2 }}> - <AsnOrderModalTable tabelData={tabelData} setTableData={setTableData} asnId={asnId} ></AsnOrderModalTable> + <AsnOrderModalTable tabelData={tabelData} setTableData={setTableData} asnId={asnId} selectedRows={selectedRows} setSelectedRows={setSelectedRows} ></AsnOrderModalTable> </Box> </DialogContent> <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> @@ -241,25 +249,12 @@ export default AsnOrderModal; -const AsnOrderModalTable = ({ tabelData, setTableData, asnId }) => { +const AsnOrderModalTable = ({ tabelData, setTableData, asnId, selectedRows, setSelectedRows }) => { const translate = useTranslate(); const notify = useNotify(); const [columns, setColumns] = useState([ - { - field: 'action', - headerName: '鎿嶄綔', - width: 70, - lockPosition: 'left', - renderCell: (params) => ( - <Tooltip title="Delete"> - <IconButton onClick={() => handleDelete(params.row)}> - <Delete /> - </IconButton> - </Tooltip> - ), - }, { field: 'matnrId', headerName: translate('table.field.asnOrderItem.matnrId'), @@ -270,6 +265,13 @@ { field: 'maktx', headerName: translate('table.field.asnOrderItem.maktx'), + minWidth: 100, + flex: 1, + editable: true, + }, + { + field: 'maktxCode', + headerName: translate('table.field.asnOrderItem.maktxCode'), minWidth: 100, flex: 1, editable: true, @@ -336,7 +338,23 @@ editable: true, }, + ]) + + const action = { + field: 'action', + headerName: '鎿嶄綔', + width: 70, + lockPosition: 'left', + renderCell: (params) => ( + <Tooltip title="Delete"> + <IconButton onClick={() => handleDelete(params.row)}> + <Delete /> + </IconButton> + </Tooltip> + ), + + } let cdata = useRef([]); @@ -360,9 +378,9 @@ headerName: el.fieldsAlise, minWidth: 100, flex: 1, - editable: el.unique + editable: true })) - setColumns([...columns, ...cols]) + setColumns([...columns, ...cols, action]) } else { notify(msg); } @@ -387,6 +405,14 @@ }; + + const handleSelectionChange = (ids) => { + setSelectedRows(ids) + + }; + + + return ( <div style={{ height: 400, width: '100%' }}> <DataGrid @@ -400,6 +426,15 @@ disableMultipleColumnsSorting processRowUpdate={processRowUpdate} autoPageSize + editMode="row" + checkboxSelection + onRowSelectionModelChange={handleSelectionChange} + selectionModel={selectedRows} + sx={{ + '& .MuiDataGrid-cell input': { + border: '1px solid #ccc' + }, + }} /> </div> ); diff --git a/rsf-admin/src/page/asnOrder/AsnWareModal.jsx b/rsf-admin/src/page/asnOrder/AsnWareModal.jsx index 612eab5..d4591f8 100644 --- a/rsf-admin/src/page/asnOrder/AsnWareModal.jsx +++ b/rsf-admin/src/page/asnOrder/AsnWareModal.jsx @@ -18,7 +18,7 @@ import request from '@/utils/request'; import { DataGrid } from '@mui/x-data-grid'; import SaveIcon from '@mui/icons-material/Save'; -import { use } from "react"; +import TreeSelectInput from "@/page/components/TreeSelectInput"; const AsnWareModal = (props) => { const { open, setOpen, data, setData } = props; @@ -69,6 +69,7 @@ return { matnrId: el.id, maktx: el.name, + maktxCode: el.code, stockUnit: el.stockUnit || '', purUnit: el.purchaseUnit || '', ...dynamicFields @@ -124,34 +125,32 @@ <DialogContent sx={{ mt: 2 }}> <Box component="form" onSubmit={handleSubmit} sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}> <Grid container spacing={2}> - <Grid item xs={4}> + <Grid item md={4}> <TextField label={translate('table.field.matnr.name')} name="name" value={formData.name} onChange={handleChange} - variant="outlined" size="small" /> </Grid> - <Grid item xs={4}> + <Grid item md={4}> <TextField label={translate('table.field.matnr.code')} name="code" value={formData.code} onChange={handleChange} - variant="outlined" size="small" /> </Grid> - <Grid item xs={4}> - <TextField - label={translate('table.field.matnr.groupId')} - name="groupId" + <Grid item md={4}> + <TreeSelectInput + label="table.field.matnr.groupId" value={formData.groupId} + resource={'matnrGroup'} + source="groupId" + name="groupId" onChange={handleChange} - variant="outlined" - size="small" /> </Grid> </Grid> @@ -190,9 +189,10 @@ const notify = useNotify(); const [columns, setColumns] = useState([ - { field: 'id', headerName: 'ID', width: 100 }, - { field: 'name', headerName: translate('table.field.matnr.name'), width: 100 }, + // { field: 'id', headerName: 'ID', width: 100 }, + { field: 'name', headerName: translate('table.field.matnr.name'), width: 300 }, { field: 'code', headerName: translate('table.field.matnr.code'), width: 100 }, + { field: 'groupId$', headerName: translate('table.field.matnr.groupId'), width: 100 }, { field: 'spec', headerName: translate('table.field.matnr.spec'), width: 100 }, { field: 'model', headerName: translate('table.field.matnr.model'), width: 100 }, { field: 'weight', headerName: translate('table.field.matnr.weight'), width: 100 }, diff --git a/rsf-admin/src/page/components/TreeSelectInput.jsx b/rsf-admin/src/page/components/TreeSelectInput.jsx index 2c51cc5..fb5de88 100644 --- a/rsf-admin/src/page/components/TreeSelectInput.jsx +++ b/rsf-admin/src/page/components/TreeSelectInput.jsx @@ -7,7 +7,7 @@ const TreeSelectInput = ({ resource, required, onChange, label, source = 'parentId', value, isTranslate = false, ...rest }) => { const translate = useTranslate(); - const { setValue } = useFormContext(); + const form = useFormContext(); const [filter, setFilter] = React.useState(""); const [treeData, setTreeData] = React.useState([]); @@ -34,7 +34,7 @@ const handleChange = (event) => { const val = event.target.value; setProxyVal(val); - setValue(source, val, { + form?.setValue(source, val, { shouldValidate: true, shouldDirty: true, }); diff --git a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx index eb097b3..b8cd4cd 100644 --- a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx +++ b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx @@ -127,7 +127,7 @@ <NumberField source="id" /> <TextField source="code" label="table.field.waitPakin.code" /> {/* <NumberField source="ansId" label="table.field.waitPakin.ansId" /> */} - <TextField source="asnCode" label="table.field.waitPakin.asnCode" /> + {/* <TextField source="asnCode" label="table.field.waitPakin.asnCode" /> */} <TextField source="barcode" label="table.field.waitPakin.barcode" /> <NumberField source="anfme" label="table.field.waitPakin.anfme" /> <TextField source="ioStatus$" label="table.field.waitPakin.ioStatus" sortable={false} /> diff --git a/rsf-admin/src/page/waitPakin/WaitPakinPanel.jsx b/rsf-admin/src/page/waitPakin/WaitPakinPanel.jsx index e00ce74..433c2e8 100644 --- a/rsf-admin/src/page/waitPakin/WaitPakinPanel.jsx +++ b/rsf-admin/src/page/waitPakin/WaitPakinPanel.jsx @@ -47,7 +47,7 @@ { field: 'maktx', headerName: translate('table.field.waitPakinItem.maktx'), - width: 300 + width: 200 }, { field: 'matnrId', @@ -58,6 +58,14 @@ headerName: translate('table.field.waitPakinItem.matnrCode') }, { + field: 'asnCode', + headerName: translate('table.field.waitPakinItem.asnCode') + }, + { + field: 'trackCode', + headerName: translate('table.field.waitPakinItem.trackCode') + }, + { field: 'anfme', headerName: translate('table.field.waitPakinItem.anfme') }, diff --git a/rsf-admin/src/page/waitPakinLog/WaitPakinLogPanel.jsx b/rsf-admin/src/page/waitPakinLog/WaitPakinLogPanel.jsx index d2935c3..492ade2 100644 --- a/rsf-admin/src/page/waitPakinLog/WaitPakinLogPanel.jsx +++ b/rsf-admin/src/page/waitPakinLog/WaitPakinLogPanel.jsx @@ -23,8 +23,12 @@ const [maktx, setMaktx] = useState(''); const pakinId = record.id; + useEffect(() => { + debouncedHttp({ maktx }); + }, [pakinId, maktx]); + const http = async (parmas) => { - const res = await request.post('/WaitPakinLog/page', { ...parmas, pakinId }); + const res = await request.post('/waitPakinItemLog/page', { ...parmas, pakinId }); if (res?.data?.code === 200) { setRows(res.data.data.records) } else { diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java index 4495118..bfa87a9 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java @@ -1,10 +1,13 @@ package com.vincent.rsf.server.api.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.api.controller.params.OtherReceiptParams; import com.vincent.rsf.server.api.controller.params.ReceiptParams; import com.vincent.rsf.server.api.service.MobileService; +import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; +import com.vincent.rsf.server.manager.entity.AsnOrderItem; import com.vincent.rsf.server.system.controller.BaseController; import com.vincent.rsf.server.system.controller.param.LoginParam; import io.swagger.annotations.Api; @@ -119,4 +122,48 @@ } + @PreAuthorize("hasAuthority('manager:asnOrderItem:list')") + @ApiOperation("鑾峰彇璁㈠崟鐗╂枡鏄庣粏") + @GetMapping("/asnOrderItem/trackCode/{code}") + public R getItemByTrackCode(@PathVariable String code) { + if (StringUtils.isBlank(code)) { + return R.error("缂栫爜涓嶈兘涓虹┖锛侊紒"); + } + return mobileService.getDeltByCode(code); + } + + + @PreAuthorize("hasAuthority('manager:waitPakin:update')") + @ApiOperation("缁勬嫋") + @PostMapping("/waitPakin/merge") + public R pikinOrder(@RequestBody WaitPakinParam waitPakin) { + if (Objects.isNull(waitPakin)) { + return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + if (org.apache.commons.lang3.StringUtils.isBlank(waitPakin.getBarcode())) { + return R.error("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�"); + } + if (Objects.isNull(waitPakin.getItems()) || waitPakin.getItems().isEmpty()) { + return R.error("璺熻釜鐮佷笉鑳戒负绌猴紒锛�"); + } + return R.ok(mobileService.mergeItems(waitPakin)); + } + + @PreAuthorize("hasAuthority('manager:waitPakin:update')") + @ApiOperation("缁勬嫋瑙g粦") + @PostMapping("/waitPakin/unbind") + public R pakinUnBind(@RequestBody WaitPakinParam param) { + if (Objects.isNull(param)) { + return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + if (org.apache.commons.lang3.StringUtils.isBlank(param.getBarcode())) { + return R.error("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�"); + } + if (Objects.isNull(param.getItems()) || param.getItems().isEmpty()) { + return R.error("璺熻釜鐮佷笉鑳戒负绌猴紒锛�"); + } + return R.ok(mobileService.unBind(param)); + + } + } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/TaskStsType.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/TaskStsType.java new file mode 100644 index 0000000..53568c0 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/TaskStsType.java @@ -0,0 +1,56 @@ +package com.vincent.rsf.server.api.entity.enums; + +public enum TaskStsType { + + GENERATE_IN(1L, "鍒涘缓鍏ュ簱浠诲姟"), + WCS_EXECUTE_IN(2L, "RCS浠诲姟宸蹭笅鍙�"), + WCS_CONTAINER_RECEIVE(3L, "RCS瀹瑰櫒鍒拌揪"), + + WCS_CONVEYOR_START(4L, "RCS瀹瑰櫒娴佸姩浠诲姟宸蹭笅鍙�"), + + WCS_TOTE_LOAD(5L, "RCS鍙栫瀹屾垚"), + + WCS_TOTE_UNLOAD(6L, "RCS鏀剧瀹屾垚"), + + WCS_PUTAWAY_SUCESS(7L, "RCS浠诲姟瀹屾垚"), + +// WCS_PUTAWAY_FAILED(11L, "浠诲姟澶辫触"), +// +// WCS_PUTAWAY_CANCEL(12L, "浠诲姟鍙栨秷"), +// +// WCS_PUTAWAY_SUSPEND(13L, "鍏ュ簱浠诲姟鎸傝捣"), + + COMPLETE_IN(99L, "鍏ュ簱瀹屾垚"), + + UPDATED_IN(100L, "搴撳瓨鏇存柊瀹屾垚"), + + GENERATE_OUT(101L, "鍒涘缓鍑哄簱浠诲姟"), + + WCS_EXECUTE_OUT(102L, "RCS鍑哄簱浠诲姟宸蹭笅鍙�"), + + WCS_EXECUTE_OUT_TOTE_LOAD(103L, "RCS鍙栫瀹屾垚"), + + WCS_EXECUTE_OUT_TOTE_UNLOAD(104L, "RCS鏀剧瀹屾垚"), + + WCS_EXECUTE_OUT_TASK_DONE(105L, "RCS浠诲姟瀹屾垚"), + + WCS_EXECUTE_OUT_ARRIVED(106L, "RCS瀹瑰櫒宸插埌杈�"), + + WCS_EXECUTE_OUT_CONVEYOR(107L, "RCS瀹瑰櫒娴佸姩浠诲姟宸蹭笅鍙�"), + + GENERATE_WAVE_SEED(197L, "绛夊緟瀹瑰櫒鍒拌揪"), + WAVE_SEED(198L, "鎾涓�"), + + COMPLETE_OUT(199L, "鍑哄簱瀹屾垚"), + UPDATED_OUT(200L, "搴撳瓨鏇存柊瀹屾垚"), + ; + + public Long id; + public String desc; + + TaskStsType(Long id, String desc) { + this.id = id; + this.desc = desc; + } + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/TaskType.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/TaskType.java new file mode 100644 index 0000000..7d80e4b --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/TaskType.java @@ -0,0 +1,29 @@ +package com.vincent.rsf.server.api.entity.enums; + +/** + * @author Ryan + * @version 1.0 + * @title TaskType + * @description + * @create 2025/3/29 17:02 + */ +public enum TaskType { + TASK_TYPE_EMPITY_IN(10L, "绌烘澘鍏ュ簱"), + TASK_TYPE_LOC_MOVE(11L, "搴撴牸绉昏浇"), + TASK_TYPE_PICK_IN(53L, "鎷f枡鍐嶅叆搴�"), + TASK_TYPE_MERGE_IN(54L, "骞舵澘鍐嶅叆搴�"), + TASK_TYPE_CHECK_IN(57L, "鐩樼偣鍐嶅叆搴�"), + TASK_TYPE_OUT(101L, "鍑哄簱"), + TASK_TYPE_PICK_AGAIN_IN(103L, "鎷f枡鍏ュ簱"), + TASK_TYPE_MERGE_OUT(104L, "骞舵澘鍑哄簱"), + TASK_TYPE_CHECK_OUT(107L, "鐩樼偣鍑哄簱"), + TASK_TYPE_EMPITY_OUT(110L, "绌烘澘鍑哄簱"), + ; + public Long type; + public String desc; + + TaskType(Long type, String desc) { + this.type = type; + this.desc = desc; + } +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java index a4f69d4..6475f1c 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java @@ -3,7 +3,9 @@ import com.vincent.rsf.framework.common.R; import com.vincent.rsf.server.api.controller.params.OtherReceiptParams; import com.vincent.rsf.server.api.controller.params.ReceiptParams; +import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; import com.vincent.rsf.server.manager.entity.AsnOrder; +import com.vincent.rsf.server.manager.entity.WaitPakin; import com.vincent.rsf.server.system.controller.param.LoginParam; import com.vincent.rsf.server.system.entity.Fields; @@ -32,4 +34,10 @@ R getReceiptAreas(); List<Fields> getDynamicFields(); + + R getDeltByCode(String code); + + WaitPakin mergeItems(WaitPakinParam waitPakin); + + WaitPakin unBind(WaitPakinParam param); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java index 923f464..4d4d0c4 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java @@ -14,12 +14,10 @@ import com.vincent.rsf.server.common.security.JwtSubject; import com.vincent.rsf.server.common.utils.CommonUtil; import com.vincent.rsf.server.common.utils.JwtUtil; +import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.mapper.*; -import com.vincent.rsf.server.manager.service.AsnOrderItemLogService; -import com.vincent.rsf.server.manager.service.AsnOrderLogService; -import com.vincent.rsf.server.manager.service.WarehouseAreasItemService; -import com.vincent.rsf.server.manager.service.WarehouseAreasService; +import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.system.constant.CodeRes; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.controller.param.LoginParam; @@ -87,6 +85,12 @@ @Autowired private AsnOrderLogService asnOrderLogService; + + @Autowired + private WaitPakinService waitPakinService; + + @Autowired + private WaitPakinItemService waitPakinItemService; @Autowired private AsnOrderItemLogService asnOrderItemLogService; @@ -391,6 +395,28 @@ return fieldsMapper.selectList(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1)); } + @Override + public R getDeltByCode(String code) { + return R.ok(asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, code))); + } + + /** + * @author Ryan + * @description PDA缁勬嫋 + * @param + * @return + * @time 2025/3/29 14:26 + */ + @Override + public WaitPakin mergeItems(WaitPakinParam waitPakin) { + return waitPakinService.mergeItems(waitPakin); + } + + @Override + public WaitPakin unBind(WaitPakinParam param) { + return waitPakinService.unBind(param); + } + /** * 鑾峰彇ReceiptDetlsDtos */ diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java index 60e27ce..650a15d 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java @@ -134,12 +134,6 @@ return asnOrderItemService.generateBarcode(orders); } - @PreAuthorize("hasAuthority('manager:asnOrderItem:list')") - @ApiOperation("鑾峰彇璁㈠崟鐗╂枡鏄庣粏") - @GetMapping("/asnOrderItem/trackCode/{code}") - public R getItemByTrackCode(@PathVariable String code) { - return R.ok(asnOrderItemService.getOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, code))); - } /** * ASN鍗曟嵁鏄庣粏瀵煎叆 * @param file diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java new file mode 100644 index 0000000..0e9be0e --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java @@ -0,0 +1,110 @@ +package com.vincent.rsf.server.manager.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.vincent.rsf.framework.common.Cools; +import com.vincent.rsf.framework.common.R; +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.Task; +import com.vincent.rsf.server.manager.service.TaskService; +import com.vincent.rsf.server.system.controller.BaseController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.*; + +@RestController +public class TaskController extends BaseController { + + @Autowired + private TaskService taskService; + + @PreAuthorize("hasAuthority('manager:task:list')") + @PostMapping("/task/page") + public R page(@RequestBody Map<String, Object> map) { + BaseParam baseParam = buildParam(map, BaseParam.class); + PageParam<Task, BaseParam> pageParam = new PageParam<>(baseParam, Task.class); + return R.ok().add(taskService.page(pageParam, pageParam.buildWrapper(true))); + } + + @PreAuthorize("hasAuthority('manager:task:list')") + @PostMapping("/task/list") + public R list(@RequestBody Map<String, Object> map) { + return R.ok().add(taskService.list()); + } + + @PreAuthorize("hasAuthority('manager:task:list')") + @PostMapping({"/task/many/{ids}", "/tasks/many/{ids}"}) + public R many(@PathVariable Long[] ids) { + return R.ok().add(taskService.listByIds(Arrays.asList(ids))); + } + + @PreAuthorize("hasAuthority('manager:task:list')") + @GetMapping("/task/{id}") + public R get(@PathVariable("id") Long id) { + return R.ok().add(taskService.getById(id)); + } + + @PreAuthorize("hasAuthority('manager:task:save')") + @OperationLog("Create 浠诲姟宸ヤ綔妗�") + @PostMapping("/task/save") + public R save(@RequestBody Task task) { + task.setCreateBy(getLoginUserId()); + task.setCreateTime(new Date()); + task.setUpdateBy(getLoginUserId()); + task.setUpdateTime(new Date()); + if (!taskService.save(task)) { + return R.error("Save Fail"); + } + return R.ok("Save Success").add(task); + } + + @PreAuthorize("hasAuthority('manager:task:update')") + @OperationLog("Update 浠诲姟宸ヤ綔妗�") + @PostMapping("/task/update") + public R update(@RequestBody Task task) { + task.setUpdateBy(getLoginUserId()); + task.setUpdateTime(new Date()); + if (!taskService.updateById(task)) { + return R.error("Update Fail"); + } + return R.ok("Update Success").add(task); + } + + @PreAuthorize("hasAuthority('manager:task:remove')") + @OperationLog("Delete 浠诲姟宸ヤ綔妗�") + @PostMapping("/task/remove/{ids}") + public R remove(@PathVariable Long[] ids) { + if (!taskService.removeByIds(Arrays.asList(ids))) { + return R.error("Delete Fail"); + } + return R.ok("Delete Success").add(ids); + } + + @PreAuthorize("hasAuthority('manager:task:list')") + @PostMapping("/task/query") + public R query(@RequestParam(required = false) String condition) { + List<KeyValVo> vos = new ArrayList<>(); + LambdaQueryWrapper<Task> wrapper = new LambdaQueryWrapper<>(); + if (!Cools.isEmpty(condition)) { + wrapper.like(Task::getId, condition); + } + taskService.page(new Page<>(1, 30), wrapper).getRecords().forEach( + item -> vos.add(new KeyValVo(item.getId(), item.getId())) + ); + return R.ok().add(vos); + } + + @PreAuthorize("hasAuthority('manager:task:list')") + @PostMapping("/task/export") + public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { + ExcelUtil.build(ExcelUtil.create(taskService.list(), Task.class), response); + } + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskItemController.java new file mode 100644 index 0000000..ca1b80d --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskItemController.java @@ -0,0 +1,110 @@ +package com.vincent.rsf.server.manager.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.vincent.rsf.framework.common.Cools; +import com.vincent.rsf.framework.common.R; +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.TaskItem; +import com.vincent.rsf.server.manager.service.TaskItemService; +import com.vincent.rsf.server.system.controller.BaseController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.*; + +@RestController +public class TaskItemController extends BaseController { + + @Autowired + private TaskItemService taskItemService; + + @PreAuthorize("hasAuthority('manager:taskItem:list')") + @PostMapping("/taskItem/page") + public R page(@RequestBody Map<String, Object> map) { + BaseParam baseParam = buildParam(map, BaseParam.class); + PageParam<TaskItem, BaseParam> pageParam = new PageParam<>(baseParam, TaskItem.class); + return R.ok().add(taskItemService.page(pageParam, pageParam.buildWrapper(true))); + } + + @PreAuthorize("hasAuthority('manager:taskItem:list')") + @PostMapping("/taskItem/list") + public R list(@RequestBody Map<String, Object> map) { + return R.ok().add(taskItemService.list()); + } + + @PreAuthorize("hasAuthority('manager:taskItem:list')") + @PostMapping({"/taskItem/many/{ids}", "/taskItems/many/{ids}"}) + public R many(@PathVariable Long[] ids) { + return R.ok().add(taskItemService.listByIds(Arrays.asList(ids))); + } + + @PreAuthorize("hasAuthority('manager:taskItem:list')") + @GetMapping("/taskItem/{id}") + public R get(@PathVariable("id") Long id) { + return R.ok().add(taskItemService.getById(id)); + } + + @PreAuthorize("hasAuthority('manager:taskItem:save')") + @OperationLog("Create 浠诲姟宸ヤ綔妗�") + @PostMapping("/taskItem/save") + public R save(@RequestBody TaskItem taskItem) { + taskItem.setCreateBy(getLoginUserId()); + taskItem.setCreateTime(new Date()); + taskItem.setUpdateBy(getLoginUserId()); + taskItem.setUpdateTime(new Date()); + if (!taskItemService.save(taskItem)) { + return R.error("Save Fail"); + } + return R.ok("Save Success").add(taskItem); + } + + @PreAuthorize("hasAuthority('manager:taskItem:update')") + @OperationLog("Update 浠诲姟宸ヤ綔妗�") + @PostMapping("/taskItem/update") + public R update(@RequestBody TaskItem taskItem) { + taskItem.setUpdateBy(getLoginUserId()); + taskItem.setUpdateTime(new Date()); + if (!taskItemService.updateById(taskItem)) { + return R.error("Update Fail"); + } + return R.ok("Update Success").add(taskItem); + } + + @PreAuthorize("hasAuthority('manager:taskItem:remove')") + @OperationLog("Delete 浠诲姟宸ヤ綔妗�") + @PostMapping("/taskItem/remove/{ids}") + public R remove(@PathVariable Long[] ids) { + if (!taskItemService.removeByIds(Arrays.asList(ids))) { + return R.error("Delete Fail"); + } + return R.ok("Delete Success").add(ids); + } + + @PreAuthorize("hasAuthority('manager:taskItem:list')") + @PostMapping("/taskItem/query") + public R query(@RequestParam(required = false) String condition) { + List<KeyValVo> vos = new ArrayList<>(); + LambdaQueryWrapper<TaskItem> wrapper = new LambdaQueryWrapper<>(); + if (!Cools.isEmpty(condition)) { + wrapper.like(TaskItem::getId, condition); + } + taskItemService.page(new Page<>(1, 30), wrapper).getRecords().forEach( + item -> vos.add(new KeyValVo(item.getId(), item.getId())) + ); + return R.ok().add(vos); + } + + @PreAuthorize("hasAuthority('manager:taskItem:list')") + @PostMapping("/taskItem/export") + public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { + ExcelUtil.build(ExcelUtil.create(taskItemService.list(), TaskItem.class), response); + } + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskItemLogController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskItemLogController.java new file mode 100644 index 0000000..908568e --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskItemLogController.java @@ -0,0 +1,110 @@ +package com.vincent.rsf.server.manager.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.vincent.rsf.framework.common.Cools; +import com.vincent.rsf.framework.common.R; +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.TaskItemLog; +import com.vincent.rsf.server.manager.service.TaskItemLogService; +import com.vincent.rsf.server.system.controller.BaseController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.*; + +@RestController +public class TaskItemLogController extends BaseController { + + @Autowired + private TaskItemLogService taskItemLogService; + + @PreAuthorize("hasAuthority('manager:taskItemLog:list')") + @PostMapping("/taskItemLog/page") + public R page(@RequestBody Map<String, Object> map) { + BaseParam baseParam = buildParam(map, BaseParam.class); + PageParam<TaskItemLog, BaseParam> pageParam = new PageParam<>(baseParam, TaskItemLog.class); + return R.ok().add(taskItemLogService.page(pageParam, pageParam.buildWrapper(true))); + } + + @PreAuthorize("hasAuthority('manager:taskItemLog:list')") + @PostMapping("/taskItemLog/list") + public R list(@RequestBody Map<String, Object> map) { + return R.ok().add(taskItemLogService.list()); + } + + @PreAuthorize("hasAuthority('manager:taskItemLog:list')") + @PostMapping({"/taskItemLog/many/{ids}", "/taskItemLogs/many/{ids}"}) + public R many(@PathVariable Long[] ids) { + return R.ok().add(taskItemLogService.listByIds(Arrays.asList(ids))); + } + + @PreAuthorize("hasAuthority('manager:taskItemLog:list')") + @GetMapping("/taskItemLog/{id}") + public R get(@PathVariable("id") Long id) { + return R.ok().add(taskItemLogService.getById(id)); + } + + @PreAuthorize("hasAuthority('manager:taskItemLog:save')") + @OperationLog("Create 浠诲姟宸ヤ綔鍘嗗彶妗�") + @PostMapping("/taskItemLog/save") + public R save(@RequestBody TaskItemLog taskItemLog) { + taskItemLog.setCreateBy(getLoginUserId()); + taskItemLog.setCreateTime(new Date()); + taskItemLog.setUpdateBy(getLoginUserId()); + taskItemLog.setUpdateTime(new Date()); + if (!taskItemLogService.save(taskItemLog)) { + return R.error("Save Fail"); + } + return R.ok("Save Success").add(taskItemLog); + } + + @PreAuthorize("hasAuthority('manager:taskItemLog:update')") + @OperationLog("Update 浠诲姟宸ヤ綔鍘嗗彶妗�") + @PostMapping("/taskItemLog/update") + public R update(@RequestBody TaskItemLog taskItemLog) { + taskItemLog.setUpdateBy(getLoginUserId()); + taskItemLog.setUpdateTime(new Date()); + if (!taskItemLogService.updateById(taskItemLog)) { + return R.error("Update Fail"); + } + return R.ok("Update Success").add(taskItemLog); + } + + @PreAuthorize("hasAuthority('manager:taskItemLog:remove')") + @OperationLog("Delete 浠诲姟宸ヤ綔鍘嗗彶妗�") + @PostMapping("/taskItemLog/remove/{ids}") + public R remove(@PathVariable Long[] ids) { + if (!taskItemLogService.removeByIds(Arrays.asList(ids))) { + return R.error("Delete Fail"); + } + return R.ok("Delete Success").add(ids); + } + + @PreAuthorize("hasAuthority('manager:taskItemLog:list')") + @PostMapping("/taskItemLog/query") + public R query(@RequestParam(required = false) String condition) { + List<KeyValVo> vos = new ArrayList<>(); + LambdaQueryWrapper<TaskItemLog> wrapper = new LambdaQueryWrapper<>(); + if (!Cools.isEmpty(condition)) { + wrapper.like(TaskItemLog::getId, condition); + } + taskItemLogService.page(new Page<>(1, 30), wrapper).getRecords().forEach( + item -> vos.add(new KeyValVo(item.getId(), item.getId())) + ); + return R.ok().add(vos); + } + + @PreAuthorize("hasAuthority('manager:taskItemLog:list')") + @PostMapping("/taskItemLog/export") + public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { + ExcelUtil.build(ExcelUtil.create(taskItemLogService.list(), TaskItemLog.class), response); + } + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskLogController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskLogController.java new file mode 100644 index 0000000..6cdf20f --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskLogController.java @@ -0,0 +1,110 @@ +package com.vincent.rsf.server.manager.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.vincent.rsf.framework.common.Cools; +import com.vincent.rsf.framework.common.R; +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.TaskLog; +import com.vincent.rsf.server.manager.service.TaskLogService; +import com.vincent.rsf.server.system.controller.BaseController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.*; + +@RestController +public class TaskLogController extends BaseController { + + @Autowired + private TaskLogService taskLogService; + + @PreAuthorize("hasAuthority('manager:taskLog:list')") + @PostMapping("/taskLog/page") + public R page(@RequestBody Map<String, Object> map) { + BaseParam baseParam = buildParam(map, BaseParam.class); + PageParam<TaskLog, BaseParam> pageParam = new PageParam<>(baseParam, TaskLog.class); + return R.ok().add(taskLogService.page(pageParam, pageParam.buildWrapper(true))); + } + + @PreAuthorize("hasAuthority('manager:taskLog:list')") + @PostMapping("/taskLog/list") + public R list(@RequestBody Map<String, Object> map) { + return R.ok().add(taskLogService.list()); + } + + @PreAuthorize("hasAuthority('manager:taskLog:list')") + @PostMapping({"/taskLog/many/{ids}", "/taskLogs/many/{ids}"}) + public R many(@PathVariable Long[] ids) { + return R.ok().add(taskLogService.listByIds(Arrays.asList(ids))); + } + + @PreAuthorize("hasAuthority('manager:taskLog:list')") + @GetMapping("/taskLog/{id}") + public R get(@PathVariable("id") Long id) { + return R.ok().add(taskLogService.getById(id)); + } + + @PreAuthorize("hasAuthority('manager:taskLog:save')") + @OperationLog("Create 浠诲姟宸ヤ綔鍘嗗彶妗�") + @PostMapping("/taskLog/save") + public R save(@RequestBody TaskLog taskLog) { + taskLog.setCreateBy(getLoginUserId()); + taskLog.setCreateTime(new Date()); + taskLog.setUpdateBy(getLoginUserId()); + taskLog.setUpdateTime(new Date()); + if (!taskLogService.save(taskLog)) { + return R.error("Save Fail"); + } + return R.ok("Save Success").add(taskLog); + } + + @PreAuthorize("hasAuthority('manager:taskLog:update')") + @OperationLog("Update 浠诲姟宸ヤ綔鍘嗗彶妗�") + @PostMapping("/taskLog/update") + public R update(@RequestBody TaskLog taskLog) { + taskLog.setUpdateBy(getLoginUserId()); + taskLog.setUpdateTime(new Date()); + if (!taskLogService.updateById(taskLog)) { + return R.error("Update Fail"); + } + return R.ok("Update Success").add(taskLog); + } + + @PreAuthorize("hasAuthority('manager:taskLog:remove')") + @OperationLog("Delete 浠诲姟宸ヤ綔鍘嗗彶妗�") + @PostMapping("/taskLog/remove/{ids}") + public R remove(@PathVariable Long[] ids) { + if (!taskLogService.removeByIds(Arrays.asList(ids))) { + return R.error("Delete Fail"); + } + return R.ok("Delete Success").add(ids); + } + + @PreAuthorize("hasAuthority('manager:taskLog:list')") + @PostMapping("/taskLog/query") + public R query(@RequestParam(required = false) String condition) { + List<KeyValVo> vos = new ArrayList<>(); + LambdaQueryWrapper<TaskLog> wrapper = new LambdaQueryWrapper<>(); + if (!Cools.isEmpty(condition)) { + wrapper.like(TaskLog::getId, condition); + } + taskLogService.page(new Page<>(1, 30), wrapper).getRecords().forEach( + item -> vos.add(new KeyValVo(item.getId(), item.getId())) + ); + return R.ok().add(vos); + } + + @PreAuthorize("hasAuthority('manager:taskLog:list')") + @PostMapping("/taskLog/export") + public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { + ExcelUtil.build(ExcelUtil.create(taskLogService.list(), TaskLog.class), response); + } + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java index 385b535..9bc3c5d 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.common.utils.ExcelUtil; import com.vincent.rsf.server.common.annotation.OperationLog; import com.vincent.rsf.server.common.domain.BaseParam; @@ -11,6 +12,7 @@ import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; import com.vincent.rsf.server.manager.entity.WaitPakin; +import com.vincent.rsf.server.manager.service.TaskService; import com.vincent.rsf.server.manager.service.WaitPakinService; import com.vincent.rsf.server.system.controller.BaseController; import io.swagger.annotations.Api; @@ -29,6 +31,9 @@ @Autowired private WaitPakinService waitPakinService; + + @Autowired + private TaskService taskService; @PreAuthorize("hasAuthority('manager:waitPakin:list')") @PostMapping("/waitPakin/page") @@ -61,9 +66,14 @@ @PostMapping("/waitPakin/save") public R save(@RequestBody WaitPakin waitPakin) { waitPakin.setCreateBy(getLoginUserId()); - waitPakin.setCreateTime(new Date()); waitPakin.setUpdateBy(getLoginUserId()); - waitPakin.setUpdateTime(new Date()); + if (Objects.isNull(waitPakin.getBarcode()) || StringUtils.isBlank(waitPakin.getBarcode())) { + return R.error("鎷栫洏鐮佷笉鑳戒负绌猴紒锛�"); + } + List<WaitPakin> list = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, waitPakin.getBarcode())); + if (!list.isEmpty()) { + return R.error("鎷栫洏宸茬粍鎷栵紒锛�"); + } if (!waitPakinService.save(waitPakin)) { return R.error("Save Fail"); } @@ -114,36 +124,13 @@ @PreAuthorize("hasAuthority('manager:waitPakin:update')") - @ApiOperation("缁勬嫋") + @ApiOperation("鐢熸垚浠诲姟鍒楄〃") @PostMapping("/waitPakin/merge") - public R pikinOrder(@RequestBody WaitPakinParam waitPakin) { - if (Objects.isNull(waitPakin)) { - return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + public R generateTask(@RequestBody List<WaitPakin> waitPakin) { + if (Objects.isNull(waitPakin) || waitPakin.isEmpty()) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } - if (StringUtils.isBlank(waitPakin.getBarcode())) { - return R.error("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�"); - } - if (Objects.isNull(waitPakin.getItems()) || waitPakin.getItems().isEmpty()) { - return R.error("璺熻釜鐮佷笉鑳戒负绌猴紒锛�"); - } - return R.ok(waitPakinService.mergeItems(waitPakin)); - } - - @PreAuthorize("hasAuthority('manager:waitPakin:update')") - @ApiOperation("缁勬嫋瑙g粦") - @PostMapping("/waitPakin/unbind") - public R pakinUnBind(@RequestBody WaitPakinParam param) { - if (Objects.isNull(param)) { - return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); - } - if (StringUtils.isBlank(param.getBarcode())) { - return R.error("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�"); - } - if (Objects.isNull(param.getItems()) || param.getItems().isEmpty()) { - return R.error("璺熻釜鐮佷笉鑳戒负绌猴紒锛�"); - } - return R.ok(waitPakinService); - + return taskService.generateTasks(waitPakin); } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/PakinItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/PakinItem.java index 7537545..1c3760a 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/PakinItem.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/PakinItem.java @@ -14,6 +14,6 @@ private Long matnrId; - private Double qty; + private Double receiptQty; } \ No newline at end of file diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java new file mode 100644 index 0000000..6fe7559 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java @@ -0,0 +1,297 @@ +package com.vincent.rsf.server.manager.entity; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.text.SimpleDateFormat; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import com.vincent.rsf.framework.common.Cools; +import com.vincent.rsf.framework.common.SpringUtils; +import com.vincent.rsf.server.system.service.UserService; +import com.vincent.rsf.server.system.entity.User; +import java.io.Serializable; +import java.util.Date; + +@Data +@Accessors(chain = true) +@TableName("man_task") +public class Task implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @ApiModelProperty(value= "ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 浠诲姟鍙� + */ + @ApiModelProperty(value= "浠诲姟鍙�") + private String taskCode; + + /** + * 浠诲姟鐘舵�� + */ + @ApiModelProperty(value= "浠诲姟鐘舵��") + private Short taskStatus; + + /** + * 浠诲姟绫诲瀷 + */ + @ApiModelProperty(value= "浠诲姟绫诲瀷") + private Short taskType; + + /** + * 婧愬簱浣� + */ + @ApiModelProperty(value= "婧愬簱浣�") + private String orgLoc; + + /** + * 鐩爣搴撲綅 + */ + @ApiModelProperty(value= "鐩爣搴撲綅") + private String targLoc; + + /** + * 鎵樼洏鐮� + */ + @ApiModelProperty(value= "鎵樼洏鐮�") + private String barcode; + + /** + * 鏈哄櫒浜虹紪鐮� + */ + @ApiModelProperty(value= "鏈哄櫒浜虹紪鐮�") + private String robotCode; + + /** + * 鎵ц鐘舵�� + */ + @ApiModelProperty(value= "鎵ц鐘舵��") + private Short exceStatus; + + /** + * 寮傚父鎻忚堪 + */ + @ApiModelProperty(value= "寮傚父鎻忚堪") + private String expDesc; + + /** + * 浼樺厛绾� + */ + @ApiModelProperty(value= "浼樺厛绾�") + private Short sort; + + /** + * 寮傚父缂栫爜 + */ + @ApiModelProperty(value= "寮傚父缂栫爜") + private String expCode; + + /** + * 寮�濮嬫椂闂� + */ + @ApiModelProperty(value= "寮�濮嬫椂闂�") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date startTime; + + /** + * 缁撴潫鏃堕棿 + */ + @ApiModelProperty(value= "缁撴潫鏃堕棿") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date endTime; + + /** + * 鐘舵�� 1: 姝e父 0: 鍐荤粨 + */ + @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 鍐荤粨 ") + private Integer status; + + /** + * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚� + */ + @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ") + @TableLogic + private Integer deleted; + + /** + * 绉熸埛 + */ + @ApiModelProperty(value= "绉熸埛") + private Integer tenantId; + + /** + * 娣诲姞浜哄憳 + */ + @ApiModelProperty(value= "娣诲姞浜哄憳") + private Long createBy; + + /** + * 娣诲姞鏃堕棿 + */ + @ApiModelProperty(value= "娣诲姞鏃堕棿") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 淇敼浜哄憳 + */ + @ApiModelProperty(value= "淇敼浜哄憳") + private Long updateBy; + + /** + * 淇敼鏃堕棿 + */ + @ApiModelProperty(value= "淇敼鏃堕棿") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value= "澶囨敞") + private String memo; + + public Task() {} + + public Task(String taskCode,Short taskStatus,Short taskType,String orgLoc,String targLoc,String barcode,String robotCode,Short exceStatus,String expDesc,Short sort,String expCode,Date startTime,Date endTime,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { + this.taskCode = taskCode; + this.taskStatus = taskStatus; + this.taskType = taskType; + this.orgLoc = orgLoc; + this.targLoc = targLoc; + this.barcode = barcode; + this.robotCode = robotCode; + this.exceStatus = exceStatus; + this.expDesc = expDesc; + this.sort = sort; + this.expCode = expCode; + this.startTime = startTime; + this.endTime = endTime; + this.status = status; + this.deleted = deleted; + this.tenantId = tenantId; + this.createBy = createBy; + this.createTime = createTime; + this.updateBy = updateBy; + this.updateTime = updateTime; + this.memo = memo; + } + +// Task task = new Task( +// null, // 浠诲姟鍙� +// null, // 浠诲姟鐘舵�� +// null, // 浠诲姟绫诲瀷 +// null, // 婧愬簱浣� +// null, // 鐩爣搴撲綅 +// null, // 鎵樼洏鐮� +// null, // 鏈哄櫒浜虹紪鐮� +// null, // 鎵ц鐘舵�� +// null, // 寮傚父鎻忚堪 +// null, // 浼樺厛绾� +// null, // 寮傚父缂栫爜 +// null, // 寮�濮嬫椂闂� +// null, // 缁撴潫鏃堕棿 +// null, // 鐘舵�乕闈炵┖] +// null, // 鏄惁鍒犻櫎[闈炵┖] +// null, // 绉熸埛 +// null, // 娣诲姞浜哄憳 +// null, // 娣诲姞鏃堕棿[闈炵┖] +// null, // 淇敼浜哄憳 +// null, // 淇敼鏃堕棿[闈炵┖] +// null // 澶囨敞 +// ); + + public String getStartTime$(){ + if (Cools.isEmpty(this.startTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime); + } + + public String getEndTime$(){ + if (Cools.isEmpty(this.endTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime); + } + + public String getStatus$(){ + if (null == this.status){ return null; } + switch (this.status){ + case 1: + return "姝e父"; + case 0: + return "鍐荤粨"; + default: + return String.valueOf(this.status); + } + } + + public String getCreateBy$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.getById(this.createBy); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getNickname()); + } + return null; + } + + public String getCreateTime$(){ + if (Cools.isEmpty(this.createTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); + } + + public String getUpdateBy$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.getById(this.updateBy); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getNickname()); + } + return null; + } + + public String getUpdateTime$(){ + if (Cools.isEmpty(this.updateTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); + } + + + + public Boolean getStatusBool(){ + if (null == this.status){ return null; } + switch (this.status){ + case 1: + return true; + case 0: + return false; + default: + return null; + } + } + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java new file mode 100644 index 0000000..8d6420f --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java @@ -0,0 +1,250 @@ +package com.vincent.rsf.server.manager.entity; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.text.SimpleDateFormat; +import java.util.Date; +import org.springframework.format.annotation.DateTimeFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import com.vincent.rsf.framework.common.Cools; +import com.vincent.rsf.framework.common.SpringUtils; +import com.vincent.rsf.server.system.service.UserService; +import com.vincent.rsf.server.system.entity.User; +import java.io.Serializable; +import java.util.Date; + +@Data +@TableName("man_task_item") +public class TaskItem implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @ApiModelProperty(value= "ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 涓诲崟ID + */ + @ApiModelProperty(value= "涓诲崟ID") + private Long taskId; + + /** + * 鐗╂枡ID + */ + @ApiModelProperty(value= "鐗╂枡ID") + private Long matnrId; + + /** + * 鐗╂枡鍚嶇О + */ + @ApiModelProperty(value= "鐗╂枡鍚嶇О") + private String maktx; + + /** + * 鐗╂枡缂栫爜 + */ + @ApiModelProperty(value= "鐗╂枡缂栫爜") + private String matnrCode; + + /** + * 搴撳瓨鍗曚綅 + */ + @ApiModelProperty(value= "搴撳瓨鍗曚綅") + private String unit; + + /** + * 鏁伴噺 + */ + @ApiModelProperty(value= "鏁伴噺") + private Double anfme; + + /** + * 搴撳瓨鎵规 + */ + @ApiModelProperty(value= "搴撳瓨鎵规") + private String batch; + + /** + * 瑙勬牸 + */ + @ApiModelProperty(value= "瑙勬牸") + private String spec; + + /** + * 鍨嬪彿 + */ + @ApiModelProperty(value= "鍨嬪彿") + private String model; + + /** + * 瀛楁绱㈠紩 + */ + @ApiModelProperty(value= "瀛楁绱㈠紩") + private String fieldsIndex; + + /** + * 鐘舵�� 1: 姝e父 0: 鍐荤粨 + */ + @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 鍐荤粨 ") + private Integer status; + + /** + * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚� + */ + @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ") + @TableLogic + private Integer deleted; + + /** + * 绉熸埛 + */ + @ApiModelProperty(value= "绉熸埛") + private Integer tenantId; + + /** + * 娣诲姞浜哄憳 + */ + @ApiModelProperty(value= "娣诲姞浜哄憳") + private Long createBy; + + /** + * 娣诲姞鏃堕棿 + */ + @ApiModelProperty(value= "娣诲姞鏃堕棿") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 淇敼浜哄憳 + */ + @ApiModelProperty(value= "淇敼浜哄憳") + private Long updateBy; + + /** + * 淇敼鏃堕棿 + */ + @ApiModelProperty(value= "淇敼鏃堕棿") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value= "澶囨敞") + private String memo; + + public TaskItem() {} + + public TaskItem(Long taskId,Long matnrId,String maktx,String matnrCode,String unit,Double anfme,String batch,String spec,String model,String fieldsIndex,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { + this.taskId = taskId; + this.matnrId = matnrId; + this.maktx = maktx; + this.matnrCode = matnrCode; + this.unit = unit; + this.anfme = anfme; + this.batch = batch; + this.spec = spec; + this.model = model; + this.fieldsIndex = fieldsIndex; + this.status = status; + this.deleted = deleted; + this.tenantId = tenantId; + this.createBy = createBy; + this.createTime = createTime; + this.updateBy = updateBy; + this.updateTime = updateTime; + this.memo = memo; + } + +// TaskItem taskItem = new TaskItem( +// null, // 涓诲崟ID +// null, // 鐗╂枡ID +// null, // 鐗╂枡鍚嶇О +// null, // 鐗╂枡缂栫爜 +// null, // 搴撳瓨鍗曚綅 +// null, // 鏁伴噺 +// null, // 搴撳瓨鎵规 +// null, // 瑙勬牸 +// null, // 鍨嬪彿 +// null, // 瀛楁绱㈠紩 +// null, // 鐘舵�乕闈炵┖] +// null, // 鏄惁鍒犻櫎[闈炵┖] +// null, // 绉熸埛 +// null, // 娣诲姞浜哄憳 +// null, // 娣诲姞鏃堕棿[闈炵┖] +// null, // 淇敼浜哄憳 +// null, // 淇敼鏃堕棿[闈炵┖] +// null // 澶囨敞 +// ); + + public String getStatus$(){ + if (null == this.status){ return null; } + switch (this.status){ + case 1: + return "姝e父"; + case 0: + return "鍐荤粨"; + default: + return String.valueOf(this.status); + } + } + + public String getCreateBy$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.getById(this.createBy); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getNickname()); + } + return null; + } + + public String getCreateTime$(){ + if (Cools.isEmpty(this.createTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); + } + + public String getUpdateBy$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.getById(this.updateBy); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getNickname()); + } + return null; + } + + public String getUpdateTime$(){ + if (Cools.isEmpty(this.updateTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); + } + + + + public Boolean getStatusBool(){ + if (null == this.status){ return null; } + switch (this.status){ + case 1: + return true; + case 0: + return false; + default: + return null; + } + } + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItemLog.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItemLog.java new file mode 100644 index 0000000..9816e65 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItemLog.java @@ -0,0 +1,258 @@ +package com.vincent.rsf.server.manager.entity; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.text.SimpleDateFormat; +import java.util.Date; +import org.springframework.format.annotation.DateTimeFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import com.vincent.rsf.framework.common.Cools; +import com.vincent.rsf.framework.common.SpringUtils; +import com.vincent.rsf.server.system.service.UserService; +import com.vincent.rsf.server.system.entity.User; +import java.io.Serializable; +import java.util.Date; + +@Data +@TableName("man_task_item_log") +public class TaskItemLog implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @ApiModelProperty(value= "ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 涓诲崟ID + */ + @ApiModelProperty(value= "涓诲崟ID") + private Long taskId; + + /** + * 浠诲姟鏄庣粏ID + */ + @ApiModelProperty(value= "浠诲姟鏄庣粏ID") + private Long taskItemId; + + /** + * 鐗╂枡ID + */ + @ApiModelProperty(value= "鐗╂枡ID") + private Long matnrId; + + /** + * 鐗╂枡鍚嶇О + */ + @ApiModelProperty(value= "鐗╂枡鍚嶇О") + private String maktx; + + /** + * 鐗╂枡缂栫爜 + */ + @ApiModelProperty(value= "鐗╂枡缂栫爜") + private String matnrCode; + + /** + * 搴撳瓨鍗曚綅 + */ + @ApiModelProperty(value= "搴撳瓨鍗曚綅") + private String unit; + + /** + * 鏁伴噺 + */ + @ApiModelProperty(value= "鏁伴噺") + private Double anfme; + + /** + * 搴撳瓨鎵规 + */ + @ApiModelProperty(value= "搴撳瓨鎵规") + private String batch; + + /** + * 瑙勬牸 + */ + @ApiModelProperty(value= "瑙勬牸") + private String spec; + + /** + * 鍨嬪彿 + */ + @ApiModelProperty(value= "鍨嬪彿") + private String model; + + /** + * 瀛楁绱㈠紩 + */ + @ApiModelProperty(value= "瀛楁绱㈠紩") + private String fieldsIndex; + + /** + * 鐘舵�� 1: 姝e父 0: 鍐荤粨 + */ + @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 鍐荤粨 ") + private Integer status; + + /** + * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚� + */ + @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ") + @TableLogic + private Integer deleted; + + /** + * 绉熸埛 + */ + @ApiModelProperty(value= "绉熸埛") + private Integer tenantId; + + /** + * 娣诲姞浜哄憳 + */ + @ApiModelProperty(value= "娣诲姞浜哄憳") + private Long createBy; + + /** + * 娣诲姞鏃堕棿 + */ + @ApiModelProperty(value= "娣诲姞鏃堕棿") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 淇敼浜哄憳 + */ + @ApiModelProperty(value= "淇敼浜哄憳") + private Long updateBy; + + /** + * 淇敼鏃堕棿 + */ + @ApiModelProperty(value= "淇敼鏃堕棿") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value= "澶囨敞") + private String memo; + + public TaskItemLog() {} + + public TaskItemLog(Long taskId,Long taskItemId,Long matnrId,String maktx,String matnrCode,String unit,Double anfme,String batch,String spec,String model,String fieldsIndex,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { + this.taskId = taskId; + this.taskItemId = taskItemId; + this.matnrId = matnrId; + this.maktx = maktx; + this.matnrCode = matnrCode; + this.unit = unit; + this.anfme = anfme; + this.batch = batch; + this.spec = spec; + this.model = model; + this.fieldsIndex = fieldsIndex; + this.status = status; + this.deleted = deleted; + this.tenantId = tenantId; + this.createBy = createBy; + this.createTime = createTime; + this.updateBy = updateBy; + this.updateTime = updateTime; + this.memo = memo; + } + +// TaskItemLog taskItemLog = new TaskItemLog( +// null, // 涓诲崟ID +// null, // 浠诲姟鏄庣粏ID +// null, // 鐗╂枡ID +// null, // 鐗╂枡鍚嶇О +// null, // 鐗╂枡缂栫爜 +// null, // 搴撳瓨鍗曚綅 +// null, // 鏁伴噺 +// null, // 搴撳瓨鎵规 +// null, // 瑙勬牸 +// null, // 鍨嬪彿 +// null, // 瀛楁绱㈠紩 +// null, // 鐘舵�乕闈炵┖] +// null, // 鏄惁鍒犻櫎[闈炵┖] +// null, // 绉熸埛 +// null, // 娣诲姞浜哄憳 +// null, // 娣诲姞鏃堕棿[闈炵┖] +// null, // 淇敼浜哄憳 +// null, // 淇敼鏃堕棿[闈炵┖] +// null // 澶囨敞 +// ); + + public String getStatus$(){ + if (null == this.status){ return null; } + switch (this.status){ + case 1: + return "姝e父"; + case 0: + return "鍐荤粨"; + default: + return String.valueOf(this.status); + } + } + + public String getCreateBy$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.getById(this.createBy); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getNickname()); + } + return null; + } + + public String getCreateTime$(){ + if (Cools.isEmpty(this.createTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); + } + + public String getUpdateBy$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.getById(this.updateBy); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getNickname()); + } + return null; + } + + public String getUpdateTime$(){ + if (Cools.isEmpty(this.updateTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); + } + + + + public Boolean getStatusBool(){ + if (null == this.status){ return null; } + switch (this.status){ + case 1: + return true; + case 0: + return false; + default: + return null; + } + } + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java new file mode 100644 index 0000000..9dffe19 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java @@ -0,0 +1,302 @@ +package com.vincent.rsf.server.manager.entity; + +import java.text.SimpleDateFormat; +import java.util.Date; +import org.springframework.format.annotation.DateTimeFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.text.SimpleDateFormat; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import com.vincent.rsf.framework.common.Cools; +import com.vincent.rsf.framework.common.SpringUtils; +import com.vincent.rsf.server.system.service.UserService; +import com.vincent.rsf.server.system.entity.User; +import java.io.Serializable; +import java.util.Date; + +@Data +@TableName("man_task_log") +public class TaskLog implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @ApiModelProperty(value= "ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 浠诲姟ID + */ + @ApiModelProperty(value= "浠诲姟ID") + private Long taskId; + + /** + * 浠诲姟鍙� + */ + @ApiModelProperty(value= "浠诲姟鍙�") + private String taskCode; + + /** + * 浠诲姟鐘舵�� + */ + @ApiModelProperty(value= "浠诲姟鐘舵��") + private Short taskStatus; + + /** + * 浠诲姟绫诲瀷 + */ + @ApiModelProperty(value= "浠诲姟绫诲瀷") + private Short taskType; + + /** + * 婧愬簱浣� + */ + @ApiModelProperty(value= "婧愬簱浣�") + private String orgLoc; + + /** + * 鐩爣搴撲綅 + */ + @ApiModelProperty(value= "鐩爣搴撲綅") + private String targLoc; + + /** + * 鎵樼洏鐮� + */ + @ApiModelProperty(value= "鎵樼洏鐮�") + private String barcode; + + /** + * 鏈哄櫒浜虹紪鐮� + */ + @ApiModelProperty(value= "鏈哄櫒浜虹紪鐮�") + private String robotCode; + + /** + * 鎵ц鐘舵�� + */ + @ApiModelProperty(value= "鎵ц鐘舵��") + private Short exceStatus; + + /** + * 寮傚父鎻忚堪 + */ + @ApiModelProperty(value= "寮傚父鎻忚堪") + private String expDesc; + + /** + * 浼樺厛绾� + */ + @ApiModelProperty(value= "浼樺厛绾�") + private Short sort; + + /** + * 寮傚父缂栫爜 + */ + @ApiModelProperty(value= "寮傚父缂栫爜") + private String expCode; + + /** + * 寮�濮嬫椂闂� + */ + @ApiModelProperty(value= "寮�濮嬫椂闂�") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date startTime; + + /** + * 缁撴潫鏃堕棿 + */ + @ApiModelProperty(value= "缁撴潫鏃堕棿") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date endTime; + + /** + * 鐘舵�� 1: 姝e父 0: 鍐荤粨 + */ + @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 鍐荤粨 ") + private Integer status; + + /** + * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚� + */ + @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ") + @TableLogic + private Integer deleted; + + /** + * 绉熸埛 + */ + @ApiModelProperty(value= "绉熸埛") + private Integer tenantId; + + /** + * 娣诲姞浜哄憳 + */ + @ApiModelProperty(value= "娣诲姞浜哄憳") + private Long createBy; + + /** + * 娣诲姞鏃堕棿 + */ + @ApiModelProperty(value= "娣诲姞鏃堕棿") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 淇敼浜哄憳 + */ + @ApiModelProperty(value= "淇敼浜哄憳") + private Long updateBy; + + /** + * 淇敼鏃堕棿 + */ + @ApiModelProperty(value= "淇敼鏃堕棿") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value= "澶囨敞") + private String memo; + + public TaskLog() {} + + public TaskLog(Long taskId,String taskCode,Short taskStatus,Short taskType,String orgLoc,String targLoc,String barcode,String robotCode,Short exceStatus,String expDesc,Short sort,String expCode,Date startTime,Date endTime,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { + this.taskId = taskId; + this.taskCode = taskCode; + this.taskStatus = taskStatus; + this.taskType = taskType; + this.orgLoc = orgLoc; + this.targLoc = targLoc; + this.barcode = barcode; + this.robotCode = robotCode; + this.exceStatus = exceStatus; + this.expDesc = expDesc; + this.sort = sort; + this.expCode = expCode; + this.startTime = startTime; + this.endTime = endTime; + this.status = status; + this.deleted = deleted; + this.tenantId = tenantId; + this.createBy = createBy; + this.createTime = createTime; + this.updateBy = updateBy; + this.updateTime = updateTime; + this.memo = memo; + } + +// TaskLog taskLog = new TaskLog( +// null, // 浠诲姟ID +// null, // 浠诲姟鍙� +// null, // 浠诲姟鐘舵�� +// null, // 浠诲姟绫诲瀷 +// null, // 婧愬簱浣� +// null, // 鐩爣搴撲綅 +// null, // 鎵樼洏鐮� +// null, // 鏈哄櫒浜虹紪鐮� +// null, // 鎵ц鐘舵�� +// null, // 寮傚父鎻忚堪 +// null, // 浼樺厛绾� +// null, // 寮傚父缂栫爜 +// null, // 寮�濮嬫椂闂� +// null, // 缁撴潫鏃堕棿 +// null, // 鐘舵�乕闈炵┖] +// null, // 鏄惁鍒犻櫎[闈炵┖] +// null, // 绉熸埛 +// null, // 娣诲姞浜哄憳 +// null, // 娣诲姞鏃堕棿[闈炵┖] +// null, // 淇敼浜哄憳 +// null, // 淇敼鏃堕棿[闈炵┖] +// null // 澶囨敞 +// ); + + public String getStartTime$(){ + if (Cools.isEmpty(this.startTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime); + } + + public String getEndTime$(){ + if (Cools.isEmpty(this.endTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime); + } + + public String getStatus$(){ + if (null == this.status){ return null; } + switch (this.status){ + case 1: + return "姝e父"; + case 0: + return "鍐荤粨"; + default: + return String.valueOf(this.status); + } + } + + public String getCreateBy$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.getById(this.createBy); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getNickname()); + } + return null; + } + + public String getCreateTime$(){ + if (Cools.isEmpty(this.createTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); + } + + public String getUpdateBy$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.getById(this.updateBy); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getNickname()); + } + return null; + } + + public String getUpdateTime$(){ + if (Cools.isEmpty(this.updateTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); + } + + + + public Boolean getStatusBool(){ + if (null == this.status){ return null; } + switch (this.status){ + case 1: + return true; + case 0: + return false; + default: + return null; + } + } + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java index 8b8a3d3..af39e02 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java @@ -131,7 +131,6 @@ * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚� */ @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ") - @TableLogic private Integer deleted; /** diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskItemLogMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskItemLogMapper.java new file mode 100644 index 0000000..2b2e595 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskItemLogMapper.java @@ -0,0 +1,12 @@ +package com.vincent.rsf.server.manager.mapper; + +import com.vincent.rsf.server.manager.entity.TaskItemLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface TaskItemLogMapper extends BaseMapper<TaskItemLog> { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskItemMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskItemMapper.java new file mode 100644 index 0000000..1ee8449 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskItemMapper.java @@ -0,0 +1,12 @@ +package com.vincent.rsf.server.manager.mapper; + +import com.vincent.rsf.server.manager.entity.TaskItem; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface TaskItemMapper extends BaseMapper<TaskItem> { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskLogMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskLogMapper.java new file mode 100644 index 0000000..8e59142 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskLogMapper.java @@ -0,0 +1,12 @@ +package com.vincent.rsf.server.manager.mapper; + +import com.vincent.rsf.server.manager.entity.TaskLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface TaskLogMapper extends BaseMapper<TaskLog> { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskMapper.java new file mode 100644 index 0000000..9d928aa --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TaskMapper.java @@ -0,0 +1,12 @@ +package com.vincent.rsf.server.manager.mapper; + +import com.vincent.rsf.server.manager.entity.Task; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface TaskMapper extends BaseMapper<Task> { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskItemLogService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskItemLogService.java new file mode 100644 index 0000000..d09afdc --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskItemLogService.java @@ -0,0 +1,8 @@ +package com.vincent.rsf.server.manager.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.vincent.rsf.server.manager.entity.TaskItemLog; + +public interface TaskItemLogService extends IService<TaskItemLog> { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskItemService.java new file mode 100644 index 0000000..e7d7261 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskItemService.java @@ -0,0 +1,8 @@ +package com.vincent.rsf.server.manager.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.vincent.rsf.server.manager.entity.TaskItem; + +public interface TaskItemService extends IService<TaskItem> { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskLogService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskLogService.java new file mode 100644 index 0000000..2ba6620 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskLogService.java @@ -0,0 +1,8 @@ +package com.vincent.rsf.server.manager.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.vincent.rsf.server.manager.entity.TaskLog; + +public interface TaskLogService extends IService<TaskLog> { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java new file mode 100644 index 0000000..c48d0e6 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java @@ -0,0 +1,13 @@ +package com.vincent.rsf.server.manager.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.vincent.rsf.framework.common.R; +import com.vincent.rsf.server.manager.entity.Task; +import com.vincent.rsf.server.manager.entity.WaitPakin; + +import java.util.List; + +public interface TaskService extends IService<Task> { + + R generateTasks(List<WaitPakin> waitPakin); +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java index 14162bb..32752f4 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java @@ -7,4 +7,6 @@ public interface WaitPakinService extends IService<WaitPakin> { WaitPakin mergeItems(WaitPakinParam waitPakin); + + WaitPakin unBind(WaitPakinParam param); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskItemLogServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskItemLogServiceImpl.java new file mode 100644 index 0000000..bb3663d --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskItemLogServiceImpl.java @@ -0,0 +1,12 @@ +package com.vincent.rsf.server.manager.service.impl; + +import com.vincent.rsf.server.manager.mapper.TaskItemLogMapper; +import com.vincent.rsf.server.manager.entity.TaskItemLog; +import com.vincent.rsf.server.manager.service.TaskItemLogService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service("taskItemLogService") +public class TaskItemLogServiceImpl extends ServiceImpl<TaskItemLogMapper, TaskItemLog> implements TaskItemLogService { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskItemServiceImpl.java new file mode 100644 index 0000000..a6c204e --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskItemServiceImpl.java @@ -0,0 +1,12 @@ +package com.vincent.rsf.server.manager.service.impl; + +import com.vincent.rsf.server.manager.mapper.TaskItemMapper; +import com.vincent.rsf.server.manager.entity.TaskItem; +import com.vincent.rsf.server.manager.service.TaskItemService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service("taskItemService") +public class TaskItemServiceImpl extends ServiceImpl<TaskItemMapper, TaskItem> implements TaskItemService { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskLogServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskLogServiceImpl.java new file mode 100644 index 0000000..c597316 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskLogServiceImpl.java @@ -0,0 +1,12 @@ +package com.vincent.rsf.server.manager.service.impl; + +import com.vincent.rsf.server.manager.mapper.TaskLogMapper; +import com.vincent.rsf.server.manager.entity.TaskLog; +import com.vincent.rsf.server.manager.service.TaskLogService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service("taskLogService") +public class TaskLogServiceImpl extends ServiceImpl<TaskLogMapper, TaskLog> implements TaskLogService { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java new file mode 100644 index 0000000..cbe445e --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java @@ -0,0 +1,62 @@ +package com.vincent.rsf.server.manager.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.vincent.rsf.server.api.entity.enums.TaskStsType; +import com.vincent.rsf.framework.common.R; +import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.manager.entity.WaitPakin; +import com.vincent.rsf.server.manager.entity.WaitPakinItem; +import com.vincent.rsf.server.manager.mapper.TaskMapper; +import com.vincent.rsf.server.manager.entity.Task; +import com.vincent.rsf.server.manager.service.TaskService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.vincent.rsf.server.manager.service.WaitPakinItemService; +import com.vincent.rsf.server.manager.service.WaitPakinService; +import com.vincent.rsf.server.system.constant.SerialRuleCode; +import com.vincent.rsf.server.system.utils.SerialRuleUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +@Service("taskService") +public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements TaskService { + + @Autowired + private WaitPakinService waitPakinService; + + @Autowired + private WaitPakinItemService waitPakinItemService; + + /** + * @author Ryan + * @description 鐢熸垚浠诲姟鍒楄〃 + * @param + * @return + * @time 2025/3/29 15:59 + */ + @Override + public R generateTasks(List<WaitPakin> waitPakin) { + if (Objects.isNull(waitPakin) || waitPakin.isEmpty()) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + /**鑾峰彇缁勬嫋*/ + List<Long> ids = waitPakin.stream().map(WaitPakin::getId).collect(Collectors.toList()); + List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().in(WaitPakin::getId, ids)); + if (waitPakins.isEmpty()) { + throw new CoolException("缁勬嫋淇℃伅涓嶅瓨鍦紒锛�"); + } + /**鑾峰彇缁勬嫋鏄庣粏**/ + List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, ids)); + if (waitPakinItems.isEmpty()) { + throw new CoolException("鏁版嵁閿欒锛氱粍鎷栨槑缁嗕笉瀛樺湪"); + } + Task task = new Task(); + String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null); + task.setTaskCode(ruleCode).setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue()); + + return null; + } +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java index e0e0b76..81875e9 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java @@ -31,17 +31,22 @@ @Service("waitPakinService") public class WaitPakinServiceImpl extends ServiceImpl<WaitPakinMapper, WaitPakin> implements WaitPakinService { + + @Autowired + private AsnOrderService asnOrderService; @Autowired private AsnOrderItemService asnOrderItemService; @Autowired - private AsnOrderService asnOrderService; + private WaitPakinService waitPakinService; @Autowired private WaitPakinItemService waitPakinItemService; /** - * 鍗曟嵁缁勬嫋 - * @param waitPakin + * @author Ryan + * @description 缁勬嫋 + * @param * @return + * @time 2025/3/29 14:42 */ @Override @Transactional(rollbackFor = Exception.class) @@ -53,7 +58,7 @@ throw new CoolException("鍙傛暟閿欒锛氭墭鐩樼爜涓虹┖锛侊紒"); } - double sum = waitPakin.getItems().stream().mapToDouble(PakinItem::getQty).sum(); + double sum = waitPakin.getItems().stream().mapToDouble(PakinItem::getReceiptQty).sum(); WaitPakin pakin = new WaitPakin(); @@ -97,9 +102,9 @@ .setMatnrCode(item.getMatnrCode()); for (PakinItem waitPakinItem : waitPakin.getItems()) { if (waitPakinItem.getTrackCode().equals(item.getTrackCode())) { - Double v = item.getWorkQty() + waitPakinItem.getQty(); + Double v = item.getWorkQty() + waitPakinItem.getReceiptQty(); pakinItem.setWorkQty(v) - .setAnfme(waitPakinItem.getQty()) + .setAnfme(waitPakinItem.getReceiptQty()) .setTrackCode(waitPakinItem.getTrackCode()); /**鏇存柊鍗曟嵁鎵ц涓簱瀛�*/ if (v.compareTo(item.getAnfme()) > 0) {throw new CoolException("鎵ц涓暟閲忓ぇ浜庢敹璐ф暟閲忥紒锛�");} @@ -116,4 +121,39 @@ } return pakin; } + + /** + * @author Ryan + * @description 缁勬嫋瑙g粦 + * @param + * @return + * @time 2025/3/29 14:42 + */ + @Override + public WaitPakin unBind(WaitPakinParam param) { + String barcode = param.getBarcode(); + if (StringUtils.isNotBlank(barcode)) { + WaitPakin waitPakins = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, barcode), false); + if (Objects.isNull(waitPakins)) { + throw new CoolException("缁勬嫋涓嶅瓨鍦紒锛�"); + } + List<PakinItem> paramItems = param.getItems(); + if (Objects.isNull(paramItems) || paramItems.isEmpty()) { + throw new CoolException("瑙g粦鐗╂枡涓嶈兘涓虹┖锛侊紒"); + } + List<Long> list = paramItems.stream().map(PakinItem::getMatnrId).collect(Collectors.toList()); + List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>() + .eq(WaitPakinItem::getPakinId, waitPakins.getId()) + .in(WaitPakinItem::getMatnrId, list)); + if (pakinItems.isEmpty()) { + throw new CoolException("鏁版嵁閿欒锛氱粍鎷栨槑缁嗕笉瀛樺湪锛侊紒"); + } + List<Long> ids = pakinItems.stream().map(WaitPakinItem::getId).collect(Collectors.toList()); + if (!waitPakinItemService.removeByIds(ids)) { + throw new CoolException("缁勬嫋鏄庣粏瑙g粦澶辫触锛侊紒"); + } + return waitPakins; + } + return new WaitPakin(); + } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java index 4e1985d..47ca82d 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java @@ -43,4 +43,9 @@ * 缁勬嫋缂栫爜鐢熸垚瑙勫垯 */ public final static String SYS_WAIT_PAKIN_CODE = "sys_wait_pakin_code"; + + /** + * 浠诲姟缂栫爜鐢熸垚瑙勫垯 + */ + public final static String SYS_TASK_CODE = "sys_task_code"; } diff --git a/rsf-server/src/main/java/waitPakinItem.sql b/rsf-server/src/main/java/waitPakinItem.sql deleted file mode 100644 index 543f992..0000000 --- a/rsf-server/src/main/java/waitPakinItem.sql +++ /dev/null @@ -1,31 +0,0 @@ --- save waitPakinItem record --- mysql -insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.waitPakinItem', '0', '/manager/waitPakinItem', 'waitPakinItem', '0' , '0', '1' , '1'); - -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query 缁勬嫋妗f槑缁�', '', '1', 'manager:waitPakinItem:list', '0', '1', '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create 缁勬嫋妗f槑缁�', '', '1', 'manager:waitPakinItem:save', '1', '1', '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update 缁勬嫋妗f槑缁�', '', '1', 'manager:waitPakinItem:update', '2', '1', '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete 缁勬嫋妗f槑缁�', '', '1', 'manager:waitPakinItem:remove', '3', '1', '1'); - --- locale menu name -waitPakinItem: 'WaitPakinItem', - --- locale field -waitPakinItem: { - pakinId: "pakinId", - maktx: "maktx", - matnrId: "matnrId", - matnrCode: "matnrCode", - anfme: "anfme", - workQty: "workQty", - unit: "unit", - fieldsIndex: "fieldsIndex", - qty: "qty", - batch: "batch", -}, - --- ResourceContent -import waitPakinItem from './waitPakinItem'; - -case 'waitPakinItem': - return waitPakinItem; diff --git a/rsf-server/src/main/resources/application.yml b/rsf-server/src/main/resources/application.yml index a844729..4a03079 100644 --- a/rsf-server/src/main/resources/application.yml +++ b/rsf-server/src/main/resources/application.yml @@ -23,7 +23,7 @@ # global-config: # field-strategy: 0 configuration: -# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl map-underscore-to-camel-case: true cache-enabled: true call-setters-on-nulls: true diff --git a/rsf-server/src/main/resources/mapper/manager/TaskItemLogMapper.xml b/rsf-server/src/main/resources/mapper/manager/TaskItemLogMapper.xml new file mode 100644 index 0000000..de43bf1 --- /dev/null +++ b/rsf-server/src/main/resources/mapper/manager/TaskItemLogMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.vincent.rsf.server.manager.mapper.TaskItemLogMapper"> + +</mapper> diff --git a/rsf-server/src/main/resources/mapper/manager/TaskItemMapper.xml b/rsf-server/src/main/resources/mapper/manager/TaskItemMapper.xml new file mode 100644 index 0000000..43290d3 --- /dev/null +++ b/rsf-server/src/main/resources/mapper/manager/TaskItemMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.vincent.rsf.server.manager.mapper.TaskItemMapper"> + +</mapper> diff --git a/rsf-server/src/main/resources/mapper/manager/TaskLogMapper.xml b/rsf-server/src/main/resources/mapper/manager/TaskLogMapper.xml new file mode 100644 index 0000000..1a42ee8 --- /dev/null +++ b/rsf-server/src/main/resources/mapper/manager/TaskLogMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.vincent.rsf.server.manager.mapper.TaskLogMapper"> + +</mapper> diff --git a/rsf-server/src/main/resources/mapper/manager/TaskMapper.xml b/rsf-server/src/main/resources/mapper/manager/TaskMapper.xml new file mode 100644 index 0000000..f6ec773 --- /dev/null +++ b/rsf-server/src/main/resources/mapper/manager/TaskMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.vincent.rsf.server.manager.mapper.TaskMapper"> + +</mapper> -- Gitblit v1.9.1