From c229a84e0a8eb68c974e6d23fa1296e064025d76 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 29 七月 2025 17:09:00 +0800
Subject: [PATCH] 调拔单功能优化
---
rsf-admin/src/page/task/TaskItemList.jsx | 8 +-
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java | 8 ++
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 101 ++++++++++++++++++++++++++++++++-
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferController.java | 4 -
rsf-admin/src/page/task/TaskEdit.jsx | 3
rsf-admin/src/page/orders/transfer/ManualCreate.jsx | 3
rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx | 15 ++--
rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java | 1
rsf-admin/src/page/orders/transfer/TransferList.jsx | 4
11 files changed, 124 insertions(+), 29 deletions(-)
diff --git a/rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx b/rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx
index ef7023d..d61da62 100644
--- a/rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx
+++ b/rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx
@@ -107,12 +107,7 @@
if (res?.data?.code === 200) {
const {data} = res.data;
setTableData(data?.records);
- setRowCount(data?.total)
-
- console.log(rowCount);
- console.log(data);
-
-
+ setRowCount(data?.total);
} else {
notify(res.data.msg);
}
@@ -120,7 +115,7 @@
useEffect(() => {
getData();
- }, [open]);
+ }, [open, page]);
const handleSearch = () => {
getData()
@@ -215,7 +210,6 @@
const SelectMatsTableView = ({ tableData, page, pageSize,setPage, setPageSize, rowCount, setTableData, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
const translate = useTranslate();
-
const notify = useNotify();
const [extendColumns, setExtendColumns] = useState([]);
@@ -239,6 +233,11 @@
};
useEffect(() => {
+ console.log('------->');
+ console.log(page);
+ }, [page])
+
+ useEffect(() => {
if (extendColumns == undefined || extendColumns.length < 1) {
getDynamicFields();
}
diff --git a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx
index 309a331..a74fe34 100644
--- a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx
+++ b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx
@@ -47,6 +47,7 @@
import { minHeight, padding } from "@mui/system";
import SaveIcon from '@mui/icons-material/Save';
import request from '@/utils/request';
+import _, { set } from 'lodash';
const ManualCreate = (props) => {
const { open, setOpen, orderId } = props;
@@ -374,7 +375,7 @@
headerClassName: "custom",
},
{
- field: 'splrBatch',
+ field: 'batch',
headerName: translate('table.field.outStockItem.splrBatch'),
minWidth: 100,
flex: 1,
diff --git a/rsf-admin/src/page/orders/transfer/TransferList.jsx b/rsf-admin/src/page/orders/transfer/TransferList.jsx
index 827cbcf..e31ad77 100644
--- a/rsf-admin/src/page/orders/transfer/TransferList.jsx
+++ b/rsf-admin/src/page/orders/transfer/TransferList.jsx
@@ -138,7 +138,7 @@
>
<StyledDatagrid
preferenceKey='transfer'
- bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ bulkActionButtons={false}
rowClick={(id, resource, record) => false}
expand={() => <TransferOrders />}
expandSingle={true}
@@ -163,7 +163,7 @@
<DateField source="createTime" label="common.field.createTime" showTime />
<TextField source="memo" label="common.field.memo" sortable={false} />
<WrapperField cellClassName="opt" label="common.field.opt">
- <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
+ <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} label="toolbar.detail"/>
<DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
<PublicButton setDrawerVal={setDrawerVal} drawerVal={drawerVal} setSelect={setSelect} />
</WrapperField>
diff --git a/rsf-admin/src/page/task/TaskEdit.jsx b/rsf-admin/src/page/task/TaskEdit.jsx
index e5c4a9f..e9686fe 100644
--- a/rsf-admin/src/page/task/TaskEdit.jsx
+++ b/rsf-admin/src/page/task/TaskEdit.jsx
@@ -40,7 +40,7 @@
<SimpleForm
shouldUnregister
warnWhenUnsavedChanges
- toolbar={<FormToolbar />}
+ toolbar={false}
mode="onTouched"
defaultValues={{}}
sx={{
@@ -113,6 +113,7 @@
<NumberInput
label="table.field.task.sort"
source="sort"
+ readOnly
/>
</Stack>
</Grid>
diff --git a/rsf-admin/src/page/task/TaskItemList.jsx b/rsf-admin/src/page/task/TaskItemList.jsx
index 76e19e7..abf3e6e 100644
--- a/rsf-admin/src/page/task/TaskItemList.jsx
+++ b/rsf-admin/src/page/task/TaskItemList.jsx
@@ -22,11 +22,11 @@
NumberInput,
useGetRecordId,
} from 'react-admin';
-import { Box, Typography, Card, Stack, LinearProgress } from '@mui/material';
-import { styled } from '@mui/material/styles';
-import PageDrawer from "../components/PageDrawer";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
+import { Box, Typography, Card, Stack, LinearProgress } from '@mui/material';
import MyCreateButton from "../components/MyCreateButton";
+import PageDrawer from "../components/PageDrawer";
+import { styled } from '@mui/material/styles';
import TaskItemCreate from "./TaskItemCreate";
import request from '@/utils/request';
@@ -103,7 +103,7 @@
actions={(
<TopToolbar>
<FilterButton />
- <MyCreateButton onClick={() => { setCreateDialog(true) }} />
+ {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
<SelectColumnsButton preferenceKey='taskItem' />
{/* <MyExportButton /> */}
</TopToolbar>
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 e1add27..3842fd6 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
@@ -99,10 +99,6 @@
if (!transferService.save(transfer)) {
return R.error("Save Fail");
}
-
- /***淇濆瓨鎴愬姛锛岃嚜鍔ㄧ敓鎴愬嚭搴撳崟*/
- transferService.genOutStock(transfer, getLoginUserId());
-
return R.ok("Save Success").add(transfer);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
index f767169..d74fa92 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -2,15 +2,16 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.api.service.WcsService;
import com.vincent.rsf.server.api.utils.LocUtils;
import com.vincent.rsf.server.common.constant.Constants;
import com.vincent.rsf.server.manager.controller.params.LocToTaskParams;
-import com.vincent.rsf.server.manager.enums.LocStsType;
-import com.vincent.rsf.server.manager.enums.TaskStsType;
+import com.vincent.rsf.server.manager.enums.*;
import com.vincent.rsf.server.manager.entity.*;
-import com.vincent.rsf.server.manager.enums.TaskType;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.service.impl.LocServiceImpl;
+import com.vincent.rsf.server.manager.service.impl.TransferOrderServiceImpl;
+import com.vincent.rsf.server.manager.utils.LocManageUtil;
import com.vincent.rsf.server.system.constant.GlobalConfigCode;
import com.vincent.rsf.server.system.entity.Config;
import com.vincent.rsf.server.system.service.ConfigService;
@@ -53,6 +54,18 @@
private List<Integer> rows;
@Autowired
private LocItemService locItemService;
+ @Autowired
+ private OutStockService outStockService;
+ @Autowired
+ private OutStockItemService outStockItemService;
+ @Autowired
+ private AsnOrderItemService asnOrderItemService;
+ @Autowired
+ private AsnOrderService asnOrderService;
+ @Autowired
+ private TransferOrderService transferOrderService;
+ @Autowired
+ private TransferService transferService;
/**
* @param
@@ -89,6 +102,88 @@
List<Long> longSet = tasks.stream().map(Task::getId).collect(Collectors.toList());
List<Task> vaildTasks = taskService.list(new LambdaQueryWrapper<Task>().in(Task::getId, longSet));
taskService.completeTask(vaildTasks);
+
+ List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>()
+ .eq(TaskItem::getWkType, OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type)
+ .in(TaskItem::getTaskId, longSet));
+ if (!taskItems.isEmpty()) {
+ genInStock(taskItems);
+ }
+ }
+
+ /**
+ * @author Ryan
+ * @date 2025/7/29
+ * @description: 鐢熸垚鍏ュ簱鍗�
+ * @version 1.0
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void genInStock(List<TaskItem> taskItems) {
+ Set<Long> orderIds = taskItems.stream().map(TaskItem::getSourceId).collect(Collectors.toSet());
+ List<WkOrder> wkOrders = outStockService.list(new LambdaQueryWrapper<WkOrder>().in(WkOrder::getId, orderIds));
+ wkOrders.forEach(wkOrder -> {
+ List<WkOrderItem> orderItems = outStockItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, wkOrder.getId()));
+ if (!orderItems.isEmpty()) {
+ WkOrder order = new WkOrder();
+ BeanUtils.copyProperties(wkOrder, order);
+ order.setWkType(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type)
+ .setId(null)
+ .setType(OrderType.ORDER_IN.type)
+ .setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val);
+ if (!asnOrderService.save(order)) {
+ throw new CoolException("鍏ュ簱鍗曠敓鎴愬け璐ワ紒锛�");
+ }
+
+ orderItems.forEach(orderItem -> {
+ orderItem.setOrderId(order.getId()).setOrderCode(order.getCode()).setId(null);
+ if (!asnOrderItemService.save(orderItem)) {
+ throw new CoolException("鍏ュ簱鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�");
+ }
+ });
+ }
+ });
+
+ Set<Long> taskIds = taskItems.stream().map(TaskItem::getTaskId).collect(Collectors.toSet());
+ List<Task> tasks = taskService.listByIds(taskIds);
+ if (!tasks.isEmpty()) {
+ tasks.forEach(task -> {
+ TaskItem one = taskItemService.getOne(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()), false);
+ if (Objects.isNull(one)) {
+ throw new CoolException("鏁版嵁閿欒锛氫换鍔℃槑缁嗕涪澶憋紒锛�");
+ }
+ TransferOrder order = transferOrderService.getOne(new LambdaQueryWrapper<TransferOrder>().eq(TransferOrder::getOrderId, one.getOrderId()));
+ if (Objects.isNull(order)) {
+ throw new CoolException("鏁版嵁閿欒锛侊紒");
+ }
+ Transfer transfer = transferService.getById(order.getTransferId());
+ Task task1 = new Task();
+ BeanUtils.copyProperties(task, task1);
+ String targetLoc = LocManageUtil.getTargetLoc(transfer.getTarAreaId());
+ if (Objects.isNull(targetLoc)) {
+ throw new CoolException("鏈兘鎵惧埌鏈夋晥搴撲綅");
+ }
+ task.setTaskType(TaskType.TASK_TYPE_IN.type)
+ .setTargLoc(targetLoc)
+ .setTargSite(null)
+ .setId(null)
+ .setTaskStatus(TaskStsType.GENERATE_IN.id);
+ if (!taskService.save(task1)) {
+ throw new CoolException("浠诲姟鐢熸垚澶辫触锛侊紒");
+ }
+ List<TaskItem> items = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
+ if (items.isEmpty()) {
+ throw new CoolException("鏁版嵁閿欒锛侊紒");
+ }
+ items.forEach(taskItem -> {
+ TaskItem item = new TaskItem();
+ BeanUtils.copyProperties(taskItem, item);
+ item.setTaskId(task1.getId()).setId(null);
+ if (!taskItemService.save(item)) {
+ throw new CoolException("鍏ュ簱浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒");
+ }
+ });
+ });
+ }
}
/**
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
index 42daaa4..9b829a1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -488,7 +488,7 @@
WkOrderItem orderItem = outStockItemService.getOne(new LambdaQueryWrapper<WkOrderItem>()
.eq(WkOrderItem::getOrderId, outId)
.eq(StringUtils.isNotBlank(locItem.getBatch()), WkOrderItem::getSplrBatch, locItem.getBatch())
- .eq(StringUtils.isNotBlank(locItem.getFieldsIndex()), WkOrderItem::getFieldsIndex, locItem.getFieldsIndex())
+// .eq(StringUtils.isNotBlank(locItem.getFieldsIndex()), WkOrderItem::getFieldsIndex, locItem.getFieldsIndex())
.eq(WkOrderItem::getMatnrId, locItem.getMatnrId()));
if (Objects.isNull(orderItem)) {
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
index c536971..5d9fb64 100644
--- 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
@@ -1150,7 +1150,8 @@
} catch (Exception e) {
throw new CoolException(e.getMessage());
}
- } else if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_ORDER_TYPE.val) || task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) {
+ } else if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_ORDER_TYPE.val)
+ || task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) {
WkOrderItem orderItem = new WkOrderItem();
if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) {
CheckDiffItem diffItem = checkDiffItemService.getById(key);
@@ -1279,7 +1280,6 @@
if (!stockItemService.saveBatch(stockItems)) {
throw new CoolException("搴撳瓨淇敼鏋跺け璐ワ紒锛�");
}
-
}
/**
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 dd30339..2a64db5 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
@@ -100,6 +100,10 @@
} catch (Exception e) {
throw new CoolException(e.getMessage());
}
+
+ /***淇濆瓨鎴愬姛锛岃嚜鍔ㄧ敓鎴愬嚭搴撳崟*/
+ genOutStock(transfer, loginUserId);
+
return R.ok();
}
@@ -199,7 +203,7 @@
Double anfmes = items.stream().mapToDouble(TransferItem::getAnfme).sum();
wkOrder.setCode(ruleCode)
.setAnfme(anfmes)
- .setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val)
+ .setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
.setType(OrderType.ORDER_OUT.type)
.setWkType(OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type)
.setCreateBy(loginUserId)
@@ -258,7 +262,7 @@
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))) {
+ .eq(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val))) {
throw new CoolException("褰撳墠鍑哄簱鍗曞凡鎵ц锛屼笉鏀寔鍒犻櫎锛侊紒");
}
outStockItemService.remove(new LambdaQueryWrapper<WkOrderItem>().in(WkOrderItem::getOrderId, longs));
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
index 7e69732..ccad70d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
@@ -29,7 +29,6 @@
public static String getTargetLoc(Long areaId) {
//TODO 搴撲綅绛栫暐鍚庣画鎺掓湡
LocService locService = SpringUtils.getBean(LocService.class);
-
Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getAreaId, areaId)
.orderByAsc(Loc::getLev)
--
Gitblit v1.9.1