From d5f16640dc1bf0239beafab721480a64425d9c1e Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 29 七月 2025 10:46:12 +0800 Subject: [PATCH] 调拔功能优化 --- rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx | 51 +++--- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferController.java | 15 + rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferService.java | 2 rsf-admin/src/page/orders/transfer/TransferList.jsx | 14 +- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java | 44 +++++- rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java | 1 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java | 196 +++++++++++++++------------ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Transfer.java | 2 rsf-admin/src/page/orders/transfer/ManualCreate.jsx | 15 - rsf-admin/src/i18n/zh.js | 9 + rsf-admin/src/page/orders/transfer/TransferItemList.jsx | 3 rsf-admin/src/i18n/en.js | 10 + rsf-admin/src/page/orders/transfer/TransferOrders.jsx | 18 +- 13 files changed, 231 insertions(+), 149 deletions(-) diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js index 8551425..44535ed 100644 --- a/rsf-admin/src/i18n/en.js +++ b/rsf-admin/src/i18n/en.js @@ -691,6 +691,16 @@ projectCode: "projectCode", }, + transferOrder: { + code: 'Order No', + poCode: 'transfer No', + type: 'Type', + wkType: 'Work Type', + anfme: 'Anfme', + workQty: 'Work Qty', + qty: 'Qty', + }, + checkDiffItem: { checkId: "checkId", orderCode: "orderCode", diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index a2ba6d0..b69562c 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -722,6 +722,15 @@ projectCode: "椤圭洰鍗曞彿", }, + transferOrder: { + code: '鍗曞彿', + poCode: '璋冩嫈鍗�', + type: '鍗曟嵁绫诲瀷', + wkType: '璋冩嫈绫诲瀷', + anfme: '璋冩嫈鏁伴噺', + workQty: '鎵ц鏁伴噺', + qty: '瀹屾垚鏁�', + }, checkDiffItem: { checkId: "鐩樼偣鍗旾D", diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx index 43a9442..fbe9491 100644 --- a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx +++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx @@ -1,5 +1,4 @@ import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; -import { useLocation, useNavigate } from 'react-router-dom'; import { List, DatagridConfigurable, @@ -37,29 +36,30 @@ useRedirect, useUnselectAll, } from 'react-admin'; -import { Box, Typography, Card, Stack } from '@mui/material'; -import { styled } from '@mui/material/styles'; -import AsnOrderModal from "./AsnOrderModal"; -import AsnOrderPanel from "./AsnOrderPanel"; -import EmptyData from "../../components/EmptyData"; -import MyCreateButton from "../../components/MyCreateButton"; -import MyExportButton from '../../components/MyExportButton'; -import BillStatusField from '../../components/BillStatusField'; -import ConfirmButton from '../../components/ConfirmButton'; -import PageDrawer from "../../components/PageDrawer"; + import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; -import ConstructionIcon from "@mui/icons-material/Construction"; -import EditIcon from '@mui/icons-material/Edit'; -import TaskIcon from '@mui/icons-material/Task'; -import CloseIcon from '@mui/icons-material/Close'; -import request from '@/utils/request'; +import CreateNewFolderOutlinedIcon from '@mui/icons-material/CreateNewFolderOutlined'; +import PrintOutlinedIcon from '@mui/icons-material/PrintOutlined'; import DictionarySelect from "../../components/DictionarySelect"; +import ConstructionIcon from "@mui/icons-material/Construction"; +import BillStatusField from '../../components/BillStatusField'; +import { Box, Typography, Card, Stack } from '@mui/material'; +import MyCreateButton from "../../components/MyCreateButton"; +import { useLocation, useNavigate } from 'react-router-dom'; +import MyExportButton from '../../components/MyExportButton'; +import ConfirmButton from '../../components/ConfirmButton'; import ExitToAppIcon from '@mui/icons-material/ExitToApp'; import ImportButton from "../../components/ImportButton"; -import PrintOutlinedIcon from '@mui/icons-material/PrintOutlined'; -import OrderPrintPreview from "./OrderPrintPreview"; -import CreateNewFolderOutlinedIcon from '@mui/icons-material/CreateNewFolderOutlined'; import AsnCreateByPoModal from "./AsnCreateByPoModal"; +import PageDrawer from "../../components/PageDrawer"; +import OrderPrintPreview from "./OrderPrintPreview"; +import CloseIcon from '@mui/icons-material/Close'; +import EditIcon from '@mui/icons-material/Edit'; +import TaskIcon from '@mui/icons-material/Task'; +import { styled } from '@mui/material/styles'; +import AsnOrderModal from "./AsnOrderModal"; +import request from '@/utils/request'; + const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ '& .css-1vooibu-MuiSvgIcon-root': { height: '.9em' @@ -69,7 +69,7 @@ }, '& .column-name': { }, - + '& .wkType': { width: 110 }, @@ -83,7 +83,7 @@ }, '& .opt': { width: 220, - + }, })); @@ -170,7 +170,7 @@ </>} rowClick={false} expandSingle={true} - omit={['id', 'createTime', 'createBy', 'memo', 'logisNo', 'poId', 'rleStatus$','createBy$']} + omit={['id', 'createTime', 'createBy', 'memo', 'logisNo', 'poId', 'rleStatus$', 'createBy$']} > <NumberField source="id" /> <TextField source="code" label="table.field.asnOrder.code" /> @@ -351,15 +351,16 @@ const BtnBulkExport = () => { const { filter, selectedIds, filterValues, resource, sort, total } = useListContext(); - const refresh = useRefresh(); - const dataProvider = useDataProvider(); - const notify = useNotify(); const unSelect = useUnselectAll(resource); + const dataProvider = useDataProvider(); + const refresh = useRefresh(); + const notify = useNotify(); const bulkExport = () => { getExport() unSelect(); } + const getExport = () => { dataProvider .export(resource, { diff --git a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx index 3d6f07e..309a331 100644 --- a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx +++ b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx @@ -18,6 +18,7 @@ Form, useCreateController, SimpleForm, + useRefresh, } from 'react-admin'; import { Dialog, @@ -51,6 +52,7 @@ const { open, setOpen, orderId } = props; const tableRef = useRef(); const notify = useNotify(); + const refresh = useRefresh(); const translate = useTranslate(); const [tabelData, setTableData] = useState([]); const [disabled, setDisabled] = useState(false); @@ -84,12 +86,10 @@ "transfer": formData, "items": tabelData, } - + const res = await request.post(`/transfer/items/save`, parmas); if (res?.data?.code === 200) { setOpen(false); - refresh(); - resetData() } else { notify(res.data.msg); } @@ -101,13 +101,13 @@ const res = await request.post(`/transfer/items/update`, parmas); if (res?.data?.code === 200) { setOpen(false); - refresh(); - resetData() } else { notify(res.data.msg); } } setDisabled(false) + refresh(); + }; const handleSuccess = async (data) => { @@ -140,15 +140,10 @@ const handleChange = (value, name) => { - console.log(name); - console.log(value); setFormData((prevData) => ({ ...prevData, [name]: value })); - - console.log(formData); - }; return ( diff --git a/rsf-admin/src/page/orders/transfer/TransferItemList.jsx b/rsf-admin/src/page/orders/transfer/TransferItemList.jsx index 2423f10..b2f869a 100644 --- a/rsf-admin/src/page/orders/transfer/TransferItemList.jsx +++ b/rsf-admin/src/page/orders/transfer/TransferItemList.jsx @@ -31,6 +31,7 @@ ReferenceArrayInput, AutocompleteInput, DeleteButton, + useGetRecordId, } from 'react-admin'; import { Box, Typography, Card, Stack } from '@mui/material'; import { styled } from '@mui/material/styles'; @@ -91,6 +92,7 @@ const TransferItemList = () => { const translate = useTranslate(); + const orderId = useGetRecordId(); const [drawerVal, setDrawerVal] = useState(false); const [createDialog, setCreateDialog] = useState(false); @@ -108,6 +110,7 @@ title={false} empty={false} filters={filters} + filter={{transferId: orderId}} sort={{ field: "create_time", order: "desc" }} actions={( <TopToolbar> diff --git a/rsf-admin/src/page/orders/transfer/TransferList.jsx b/rsf-admin/src/page/orders/transfer/TransferList.jsx index 46a80ea..827cbcf 100644 --- a/rsf-admin/src/page/orders/transfer/TransferList.jsx +++ b/rsf-admin/src/page/orders/transfer/TransferList.jsx @@ -33,19 +33,17 @@ ReferenceArrayInput, AutocompleteInput, DeleteButton, + useRedirect, } from 'react-admin'; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting.js'; -import { Box, Typography, Card, Stack, } from '@mui/material'; import MyCreateButton from "../../components/MyCreateButton.jsx"; import MyExportButton from '../../components/MyExportButton.jsx'; +import BillStatusField from '../../components/BillStatusField'; +import { Box, Typography, Card, Stack, } from '@mui/material'; import PageEditDrawer from "../../components/PageEditDrawer"; import ConfirmButton from '../../components/ConfirmButton'; -import PageDrawer from "../../components/PageDrawer.jsx"; -import EmptyData from "../../components/EmptyData.jsx"; import AddTaskIcon from '@mui/icons-material/AddTask'; -import MyField from "../../components/MyField.jsx"; import TransferOrders from "./TransferOrders.jsx"; -import TransferCreate from "./TransferCreate.jsx"; import ManualCreate from "./ManualCreate.jsx"; import { styled } from '@mui/material/styles'; import * as Common from '@/utils/common.js'; @@ -158,7 +156,7 @@ <TextField source="orgAreaName" label="table.field.transfer.orgAreaName" /> <NumberField source="tarAreaId" label="table.field.transfer.tarAreaId" /> <TextField source="tarAreaName" label="table.field.transfer.tarAreaName" /> - <TextField source="exceStatus$" label="table.field.transfer.exceStatus" sortable={false} /> + <BillStatusField source="exceStatus$" cellClassName="status" label="table.field.transfer.exceStatus" sortable={false} /> <TextField source="updateBy$" label="common.field.updateBy" /> <DateField source="updateTime" label="common.field.updateTime" showTime /> <TextField source="createBy$" label="common.field.createBy" /> @@ -188,10 +186,12 @@ const PublicButton = ({ setDrawerVal, setSelect }) => { const record = useRecordContext(); const refresh = useRefresh(); + const redirct = useRedirect(); const taskEvent = async () => { const { data: { code, data, msg } } = await request.post(`/transfer/pub/outStock`, record); if (code === 200) { notify(msg); + redirct("/outStock"); refresh() } else { notify(msg); @@ -200,6 +200,6 @@ } return ( - <ConfirmButton label={"toolbar.publicWorking"} startIcon={<AddTaskIcon />} onConfirm={taskEvent} size={"small"} /> + record?.exceStatus == 0 ? <ConfirmButton label={"toolbar.publicWorking"} startIcon={<AddTaskIcon />} onConfirm={taskEvent} size={"small"} /> : <></> ) } diff --git a/rsf-admin/src/page/orders/transfer/TransferOrders.jsx b/rsf-admin/src/page/orders/transfer/TransferOrders.jsx index 8d58600..6ab3f0c 100644 --- a/rsf-admin/src/page/orders/transfer/TransferOrders.jsx +++ b/rsf-admin/src/page/orders/transfer/TransferOrders.jsx @@ -70,18 +70,16 @@ bulkActionButtons={false} rowClick={false} expandSingle={true} - omit={['id', 'createTime', 'createBy$', 'memo', 'rleStatus$']} + omit={['id', 'createTime', 'createBy$', 'memo']} > <NumberField source="id" /> - <TextField source="code" label="table.field.outStock.code" /> - <TextField source="poCode" label="table.field.outStock.poCode" /> - <TextField source="type$" label="table.field.outStock.type" /> - <TextField cellClassName="wkType" source="wkType$" label="table.field.outStock.wkType" /> - <NumberField source="anfme" label="table.field.outStock.anfme" /> - <NumberField source="workQty" label="table.field.outStock.workQty" /> - <NumberField source="qty" label="table.field.outStock.qty" /> - <TextField source="logisNo" label="table.field.outStock.logisNo" /> - <TextField source="rleStatus$" label="table.field.outStock.rleStatus" sortable={false} /> + <TextField source="code" label="table.field.transferOrder.code" /> + <TextField source="poCode" label="table.field.transferOrder.poCode" /> + <TextField source="type$" label="table.field.transferOrder.type" /> + <TextField cellClassName="wkType" source="wkType$" label="table.field.transferOrder.wkType" /> + <NumberField source="anfme" label="table.field.transferOrder.anfme" /> + <NumberField source="workQty" label="table.field.transferOrder.workQty" /> + <NumberField source="qty" label="table.field.transferOrder.qty" /> <TextField source="updateBy$" label="common.field.updateBy" /> <DateField source="updateTime" label="common.field.updateTime" showTime /> <TextField source="createBy$" label="common.field.createBy" /> diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java index 558a27d..1e2d9af 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java @@ -51,6 +51,7 @@ "man_loc_type_rela", "man_qly_inspect_result", "view_stock_manage", + "man_transfer_order", "man_wave_order_rela" ).contains(tableName); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferController.java index dcc9f81..e1add27 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferController.java @@ -14,6 +14,7 @@ import com.vincent.rsf.server.manager.controller.params.TransferItemParams; import com.vincent.rsf.server.manager.entity.Transfer; import com.vincent.rsf.server.manager.entity.excel.CheckOrderTemplate; +import com.vincent.rsf.server.manager.service.OutStockService; import com.vincent.rsf.server.manager.service.TransferService; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.controller.BaseController; @@ -33,6 +34,8 @@ @Autowired private TransferService transferService; + @Autowired + private OutStockService outStockService; @PreAuthorize("hasAuthority('manager:transfer:list')") @PostMapping("/transfer/page") @@ -96,6 +99,10 @@ if (!transferService.save(transfer)) { return R.error("Save Fail"); } + + /***淇濆瓨鎴愬姛锛岃嚜鍔ㄧ敓鎴愬嚭搴撳崟*/ + transferService.genOutStock(transfer, getLoginUserId()); + return R.ok("Save Success").add(transfer); } @@ -115,8 +122,12 @@ @OperationLog("Delete 璋冩嫈鍗�") @PostMapping("/transfer/remove/{ids}") public R remove(@PathVariable Long[] ids) { - if (!transferService.removeByIds(Arrays.asList(ids))) { - return R.error("Delete Fail"); + List<Long> list = Arrays.asList(ids); + if (list.isEmpty()) { + return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + if (!transferService.removeTransfer(list)) { + throw new CoolException("璋冩嫈鍗曠Щ闄ゅけ璐ワ紒锛�"); } return R.ok("Delete Success").add(ids); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Transfer.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Transfer.java index 0d73fec..68b66d7 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Transfer.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Transfer.java @@ -248,7 +248,7 @@ } DictDataService dictDataService = SpringUtils.getBean(DictDataService.class); DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>() - .eq(DictData::getDictTypeCode, DictTypeCode.SYS_WAVE_EXCE_STATUS) + .eq(DictData::getDictTypeCode, DictTypeCode.SYS_CHECK_EXCE_STATUS) .eq(DictData::getValue, this.exceStatus)); if (Objects.isNull(dictData)) { return null; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java index 6474f6e..968131f 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fasterxml.jackson.annotation.JsonFormat; import com.vincent.rsf.server.manager.enums.OrderType; +import com.vincent.rsf.server.manager.enums.OrderWorkType; import com.vincent.rsf.server.system.constant.DictTypeCode; import com.vincent.rsf.server.system.entity.DictData; import com.vincent.rsf.server.system.service.DictDataService; @@ -25,6 +26,7 @@ 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; @Data @@ -37,38 +39,38 @@ /** * ID */ - @ApiModelProperty(value= "ID") + @ApiModelProperty(value = "ID") @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 缂栧彿 */ - @ApiModelProperty(value= "缂栧彿") + @ApiModelProperty(value = "缂栧彿") private String code; /** * PO鍗曞彿 */ - @ApiModelProperty(value= "PO鍗曞彿") + @ApiModelProperty(value = "PO鍗曞彿") private String poCode; /** * PO鍗曟嵁鏍囪瘑 */ - @ApiModelProperty(value= "PO鍗曟嵁鏍囪瘑") + @ApiModelProperty(value = "PO鍗曟嵁鏍囪瘑") private Long poId; /** * 鍗曟嵁绫诲瀷 */ - @ApiModelProperty(value= "鍗曟嵁绫诲瀷") + @ApiModelProperty(value = "鍗曟嵁绫诲瀷") private String type; /** * 涓氬姟绫诲瀷 */ - @ApiModelProperty(value= "涓氬姟绫诲瀷") + @ApiModelProperty(value = "涓氬姟绫诲瀷") private String wkType; @ApiModelProperty("鐩樼偣绫诲瀷") @@ -77,7 +79,7 @@ /** * 閫佽揣鏁伴噺 */ - @ApiModelProperty(value= "閫佽揣鏁伴噺") + @ApiModelProperty(value = "閫佽揣鏁伴噺") private Double anfme; @ApiModelProperty("鎵ц鏁伴噺") @@ -86,13 +88,13 @@ /** * 宸叉敹鏁伴噺 */ - @ApiModelProperty(value= "宸叉敹鏁伴噺") + @ApiModelProperty(value = "宸叉敹鏁伴噺") private Double qty; /** * 鐗╂祦鍗曞彿 */ - @ApiModelProperty(value= "鐗╂祦鍗曞彿") + @ApiModelProperty(value = "鐗╂祦鍗曞彿") private String logisNo; @ApiModelProperty("娉㈡ID") @@ -101,8 +103,8 @@ /** * 棰勮鍒拌揪鏃堕棿 */ - @ApiModelProperty(value= "棰勮鍒拌揪鏃堕棿") - @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "棰勮鍒拌揪鏃堕棿") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date arrTime; /** @@ -112,9 +114,9 @@ private Integer ntyStatus; /** - * 閲婃斁鐘舵�� 0: 姝e父 1: 宸查噴鏀� + * 閲婃斁鐘舵�� 0: 姝e父 1: 宸查噴鏀� */ - @ApiModelProperty(value= "閲婃斁鐘舵�� 0: 姝e父 1: 宸查噴鏀� ") + @ApiModelProperty(value = "閲婃斁鐘舵�� 0: 姝e父 1: 宸查噴鏀� ") private Short rleStatus; @@ -122,59 +124,60 @@ private Short exceStatus; /** - * 鐘舵�� 1: 姝e父 0: 鍐荤粨 + * 鐘舵�� 1: 姝e父 0: 鍐荤粨 */ - @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 鍐荤粨 ") + @ApiModelProperty(value = "鐘舵�� 1: 姝e父 0: 鍐荤粨 ") private Integer status; /** - * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚� + * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚� */ - @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ") + @ApiModelProperty(value = "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ") @TableLogic private Integer deleted; /** * 绉熸埛 */ - @ApiModelProperty(value= "绉熸埛") + @ApiModelProperty(value = "绉熸埛") private Integer tenantId; /** * 娣诲姞浜哄憳 */ - @ApiModelProperty(value= "娣诲姞浜哄憳") + @ApiModelProperty(value = "娣诲姞浜哄憳") private Long createBy; /** * 娣诲姞鏃堕棿 */ - @ApiModelProperty(value= "娣诲姞鏃堕棿") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty(value = "娣诲姞鏃堕棿") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; /** * 淇敼浜哄憳 */ - @ApiModelProperty(value= "淇敼浜哄憳") + @ApiModelProperty(value = "淇敼浜哄憳") private Long updateBy; /** * 淇敼鏃堕棿 */ - @ApiModelProperty(value= "淇敼鏃堕棿") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty(value = "淇敼鏃堕棿") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date updateTime; /** * 澶囨敞 */ - @ApiModelProperty(value= "澶囨敞") + @ApiModelProperty(value = "澶囨敞") private String memo; - public WkOrder() {} + public WkOrder() { + } public WkOrder(String code, String poCode, Long poId, String type, String wkType, Double anfme, Double qty, String logisNo, Date arrTime, Short rleStatus, Integer status, Integer deleted, Integer tenantId, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) { this.code = code; @@ -198,7 +201,7 @@ } public String getExceStatus$() { - if (Cools.isEmpty(this.exceStatus)){ + if (Cools.isEmpty(this.exceStatus)) { return ""; } String exceType = DictTypeCode.DICT_ASN_EXCE_STATUS; @@ -216,42 +219,57 @@ } - public String getType$(){ - if (Cools.isEmpty(this.type)){ + public String getType$() { + return OrderType.getValType(this.type); + +// if (this.type.equals(OrderType.ORDER_TRANSFER.type)) { +// return OrderType.getValType(this.type); +// } else { +// if (Cools.isEmpty(this.type)) { +// return ""; +// } +// DictDataService dictDataService = SpringUtils.getBean(DictDataService.class); +// DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>() +// .eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_ORDER_TYPE) +// .eq(DictData::getValue, this.type)); +// if (Objects.isNull(dictData)) { +// return null; +// } +// return dictData.getLabel(); +// } + } + + public String getWkType$() { +// if (this.type.equals(OrderType.ORDER_TRANSFER.type)) { + return OrderWorkType.getWorkDesc(this.wkType); +// } else { +// String typeCode = DictTypeCode.DICT_SYS_BUSINESS_TYPE; +// if (type.equals(OrderType.ORDER_CHECK.type)) { +// typeCode = DictTypeCode.SYS_CHECK_ORDER_TYPE; +// } +// if (Cools.isEmpty(this.wkType)) { +// return ""; +// } +// DictDataService dictDataService = SpringUtils.getBean(DictDataService.class); +// DictData dictData = dictDataService +// .getOne(new LambdaQueryWrapper<DictData>() +// .eq(DictData::getDictTypeCode, typeCode) +// .eq(DictData::getValue, this.wkType)); +// if (Objects.isNull(dictData)) { +// return null; +// } +// return dictData.getLabel(); +// } + } + + public String getCheckType$() { + if (Cools.isEmpty(this.checkType)) { return ""; } DictDataService dictDataService = SpringUtils.getBean(DictDataService.class); DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>() - .eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_ORDER_TYPE) - .eq(DictData::getValue, this.type)); - if (Objects.isNull(dictData)) { - return null; - } - return dictData.getLabel(); - } - - public String getWkType$(){ - String typeCode = DictTypeCode.DICT_SYS_BUSINESS_TYPE; - if (type.equals(OrderType.ORDER_CHECK.type)) { - typeCode = DictTypeCode.SYS_CHECK_ORDER_TYPE; - } - if (Cools.isEmpty(this.wkType)){ - return ""; - } - DictDataService dictDataService = SpringUtils.getBean(DictDataService.class); - DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, typeCode).eq(DictData::getValue, this.wkType)); - if (Objects.isNull(dictData)) { - return null; - } - return dictData.getLabel(); - } - - public String getCheckType$(){ - if (Cools.isEmpty(this.checkType)){ - return ""; - } - DictDataService dictDataService = SpringUtils.getBean(DictDataService.class); - DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.SYS_CHECK_TYPE).eq(DictData::getValue, this.checkType)); + .eq(DictData::getDictTypeCode, DictTypeCode.SYS_CHECK_TYPE) + .eq(DictData::getValue, this.checkType)); if (Objects.isNull(dictData)) { return null; } @@ -259,28 +277,32 @@ } - public String getArrTime$(){ - if (Cools.isEmpty(this.arrTime)){ + public String getArrTime$() { + if (Cools.isEmpty(this.arrTime)) { return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.arrTime); } - public String getRleStatus$(){ - if (null == this.rleStatus){ return null; } - switch (this.rleStatus){ + public String getRleStatus$() { + if (null == this.rleStatus) { + return null; + } + switch (this.rleStatus) { case 0: return " 姝e父"; - case 1: + case 1: return " 宸查噴鏀�"; default: return String.valueOf(this.rleStatus); } } - public String getStatus$(){ - if (null == this.status){ return null; } - switch (this.status){ + public String getStatus$() { + if (null == this.status) { + return null; + } + switch (this.status) { case 1: return "姝e父"; case 0: @@ -290,43 +312,44 @@ } } - public String getCreateBy$(){ + public String getCreateBy$() { UserService service = SpringUtils.getBean(UserService.class); User user = service.getById(this.createBy); - if (!Cools.isEmpty(user)){ + if (!Cools.isEmpty(user)) { return String.valueOf(user.getNickname()); } return null; } - public String getCreateTime$(){ - if (Cools.isEmpty(this.createTime)){ + public String getCreateTime$() { + if (Cools.isEmpty(this.createTime)) { return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); } - public String getUpdateBy$(){ + public String getUpdateBy$() { UserService service = SpringUtils.getBean(UserService.class); User user = service.getById(this.updateBy); - if (!Cools.isEmpty(user)){ + if (!Cools.isEmpty(user)) { return String.valueOf(user.getNickname()); } return null; } - public String getUpdateTime$(){ - if (Cools.isEmpty(this.updateTime)){ + 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){ + public Boolean getStatusBool() { + if (null == this.status) { + return null; + } + switch (this.status) { case 1: return true; case 0: @@ -335,9 +358,12 @@ return null; } } - public String getNtyStatus$(){ - if (null == this.ntyStatus){ return "error"; } - switch (this.ntyStatus){ + + public String getNtyStatus$() { + if (null == this.ntyStatus) { + return "error"; + } + switch (this.ntyStatus) { case 0: return "鏈笂鎶�"; case 1: diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferService.java index 4757941..a1e37d4 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferService.java @@ -21,5 +21,7 @@ IPage<WkOrder> transfersPage(PageParam<Transfer, BaseParam> pageParam, QueryWrapper<Transfer> transferQueryWrapper); Transfer genOutStock(Transfer transfer, Long loginUserId); + + boolean removeTransfer(List<Long> list); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java index 9455749..dd30339 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java @@ -22,10 +22,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; @Service("transferService") public class TransferServiceImpl extends ServiceImpl<TransferMapper, Transfer> implements TransferService { @@ -40,6 +38,8 @@ private OutStockItemService outStockItemService; @Autowired private TransferOrderService transferOrderService; + @Autowired + private TransferService transferService; /** * @author Ryan @@ -191,16 +191,16 @@ throw new CoolException("鏁版嵁閿欒锛氳皟鎷斿崟鏄庣粏涓嶅瓨鍦紒锛�"); } WkOrder wkOrder = new WkOrder(); - String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TRANSFER_ORDER_CODE, transfer); + String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, transfer); if (StringUtils.isBlank(ruleCode)) { - throw new CoolException("璋冩嫈鍗曞彿鐢熸垚澶辫触锛侊紒"); + throw new CoolException("鍑哄簱鍗曠敓鎴愬け璐ワ紒锛�"); } Double anfmes = items.stream().mapToDouble(TransferItem::getAnfme).sum(); wkOrder.setCode(ruleCode) .setAnfme(anfmes) .setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val) - .setType(OrderType.ORDER_TRANSFER.type) + .setType(OrderType.ORDER_OUT.type) .setWkType(OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type) .setCreateBy(loginUserId) .setUpdateBy(loginUserId) @@ -228,14 +228,14 @@ throw new CoolException("鍑哄簱鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�"); } - transfer.setExceStatus(WaveExceStatus.WAVE_EXCE_STATUS_EXCING.val); + transfer.setExceStatus(CheckExceStatus.CHECK_ORDER_STATUS_INIT.val); if (!this.updateById(transfer)) { throw new CoolException("璋冩嫈鍗曟洿鏂板け璐ワ紒锛�"); } TransferOrder transferOrder = new TransferOrder(); - transferOrder.setTransferId(transfer.getId()).setOrderId(wkOrder.getId()).setExceStatus(1); + transferOrder.setTransferId(transfer.getId()).setOrderId(wkOrder.getId()).setExceStatus((int)CheckExceStatus.CHECK_ORDER_STATUS_INIT.val); if (!transferOrderService.save(transferOrder)) { throw new CoolException("鍗曟嵁鍏宠仈澶辫触锛侊紒"); @@ -243,4 +243,30 @@ return transfer; } + + /** + * @author Ryan + * @date 2025/7/29 + * @description: 鍒犻櫎璋冩嫈鍗� + * @version 1.0 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean removeTransfer(List<Long> list) { + List<WkOrder> wkOrders = outStockService.list(new LambdaQueryWrapper<WkOrder>().in(WkOrder::getPoId, list)); + if (!wkOrders.isEmpty()) { + Set<Long> longs = wkOrders.stream().map(WkOrder::getId).collect(Collectors.toSet()); + if (!outStockService.remove(new LambdaQueryWrapper<WkOrder>() + .in(WkOrder::getId, longs) + .ne(WkOrder::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_INIT.val))) { + throw new CoolException("褰撳墠鍑哄簱鍗曞凡鎵ц锛屼笉鏀寔鍒犻櫎锛侊紒"); + } + outStockItemService.remove(new LambdaQueryWrapper<WkOrderItem>().in(WkOrderItem::getOrderId, longs)); + transferOrderService.remove(new LambdaQueryWrapper<TransferOrder>().in(TransferOrder::getTransferId, list)); + } + + transferService.removeByIds(list); + transferItemService.remove(new LambdaQueryWrapper<TransferItem>().in(TransferItem::getTransferId, list)); + return true; + } } -- Gitblit v1.9.1