From de2365da21526a6af8e0c1504ed489dcc3617de9 Mon Sep 17 00:00:00 2001
From: DESKTOP-LMJ82IJ\Eno <creaycat@gmail.com>
Date: 星期一, 07 四月 2025 20:45:55 +0800
Subject: [PATCH] #修改 任务主单明细显示优化
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 4
rsf-admin/src/page/task/TaskList.jsx | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java | 2
rsf-admin/.eslintrc.cjs | 1
rsf-admin/src/page/taskItem/TaskItemList.jsx | 6 --
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java | 19 +++---
rsf-server/src/main/resources/application.yml | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java | 12 ++-
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 15 ++--
rsf-admin/src/page/task/TaskPanel.jsx | 90 ++++++++++++++++++++++++++---
rsf-admin/.env | 2
11 files changed, 111 insertions(+), 46 deletions(-)
diff --git a/rsf-admin/.env b/rsf-admin/.env
index a8ce658..a3c69b2 100644
--- a/rsf-admin/.env
+++ b/rsf-admin/.env
@@ -1,3 +1,3 @@
-VITE_BASE_IP=192.168.4.24
+VITE_BASE_IP=127.0.0.1
# VITE_BASE_IP=47.76.147.249
VITE_BASE_PORT=8080
diff --git a/rsf-admin/.eslintrc.cjs b/rsf-admin/.eslintrc.cjs
index 995e273..24c8a5c 100644
--- a/rsf-admin/.eslintrc.cjs
+++ b/rsf-admin/.eslintrc.cjs
@@ -9,6 +9,7 @@
],
ignorePatterns: ["dist", ".eslintrc.cjs"],
parser: "@typescript-eslint/parser",
+ "react/jsx-key": [false, { "checkFragmentShorthand": false }],
env: {
browser: true,
es2021: true,
diff --git a/rsf-admin/src/page/task/TaskList.jsx b/rsf-admin/src/page/task/TaskList.jsx
index 9fdda18..86afa4c 100644
--- a/rsf-admin/src/page/task/TaskList.jsx
+++ b/rsf-admin/src/page/task/TaskList.jsx
@@ -138,8 +138,8 @@
</>
}
rowClick={(id, resource, record) => false}
- // expand={() => <TaskPanel />}
- // expandSingle={true}
+ expand={() => <TaskPanel />}
+ expandSingle={true}
omit={['id', 'createTime', 'createBy', 'memo', 'robotCode', 'exceStatus', 'expDesc', 'expCode', 'sort']}
>
<NumberField source="id" />
diff --git a/rsf-admin/src/page/task/TaskPanel.jsx b/rsf-admin/src/page/task/TaskPanel.jsx
index 853c1a3..dd7db7f 100644
--- a/rsf-admin/src/page/task/TaskPanel.jsx
+++ b/rsf-admin/src/page/task/TaskPanel.jsx
@@ -1,16 +1,89 @@
import React, { useState, useRef, useEffect, useMemo } from "react";
import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material';
import {
- useTranslate,
+ List,
+ DatagridConfigurable,
+ SearchInput,
+ TopToolbar,
+ SelectColumnsButton,
+ EditButton,
+ FilterButton,
+ CreateButton,
+ ExportButton,
+ BulkDeleteButton,
+ WrapperField,
useRecordContext,
+ useTranslate,
+ useNotify,
+ useListContext,
+ FunctionField,
+ TextField,
+ NumberField,
+ DateField,
+ BooleanField,
+ ReferenceField,
+ TextInput,
+ DateTimeInput,
+ DateInput,
+ SelectInput,
+ NumberInput,
+ ReferenceInput,
+ ReferenceArrayInput,
+ AutocompleteInput,
+ DeleteButton,
} from 'react-admin';
-import PanelTypography from "../components/PanelTypography";
-import * as Common from '@/utils/common'
+import { styled } from '@mui/material/styles';
+import PageDrawer from "../components/PageDrawer";
+import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
+import * as Common from '@/utils/common';
+
+const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
+ '& .css-1vooibu-MuiSvgIcon-root': {
+ height: '.9em'
+ },
+ '& .RaDatagrid-row': {
+ cursor: 'auto'
+ },
+ '& .column-name': {
+ },
+ '& .opt': {
+ width: 200
+ },
+}));
+
+const filters = [
+ <SearchInput source="condition" alwaysOn />,
+ <DateInput label='common.time.after' source="timeStart" />,
+ <DateInput label='common.time.before' source="timeEnd" />,
+ <NumberInput source="taskId" label="table.field.taskItem.taskId" />,
+ <NumberInput source="orderId" label="table.field.taskItem.orderId" />,
+ <NumberInput source="orderType" label="table.field.taskItem.orderType" />,
+ <NumberInput source="orderItemId" label="table.field.taskItem.orderItemId" />,
+ <NumberInput source="matnrId" label="table.field.taskItem.matnrId" />,
+ <TextInput source="maktx" label="table.field.taskItem.maktx" />,
+ <TextInput source="matnrCode" label="table.field.taskItem.matnrCode" />,
+ <TextInput source="unit" label="table.field.taskItem.unit" />,
+ <NumberInput source="anfme" label="table.field.taskItem.anfme" />,
+ <TextInput source="batch" label="table.field.taskItem.batch" />,
+ <TextInput source="spec" label="table.field.taskItem.spec" />,
+ <TextInput source="model" label="table.field.taskItem.model" />,
+ <TextInput label="common.field.memo" source="memo" />,
+ <SelectInput
+ label="common.field.status"
+ source="status"
+ choices={[
+ { id: '1', name: 'common.enums.statusTrue' },
+ { id: '0', name: 'common.enums.statusFalse' },
+ ]}
+ resettable
+ />,
+]
const TaskPanel = () => {
- const record = useRecordContext();
- if (!record) return null;
const translate = useTranslate();
+ const [createDialog, setCreateDialog] = useState(false);
+ const [drawerVal, setDrawerVal] = useState(false);
+
return (
<>
<Box display="flex">
@@ -30,18 +103,14 @@
actions={(
<TopToolbar>
<FilterButton />
- {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
- <SelectColumnsButton preferenceKey='taskItem' />
- {/* <MyExportButton /> */}
</TopToolbar>
)}
perPage={DEFAULT_PAGE_SIZE}
>
<StyledDatagrid
preferenceKey='taskItem'
- // bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ bulkActionButtons={false}
rowClick={(id, resource, record) => false}
- // expand={() => <TaskItemPanel />}
expandSingle={true}
omit={['id', 'createTime', 'createBy', 'memo', 'taskId', 'orderId', 'orderItemId', 'matnrId']}
>
@@ -58,7 +127,6 @@
<TextField source="batch" label="table.field.taskItem.batch" />
<TextField source="spec" label="table.field.taskItem.spec" />
<TextField source="model" label="table.field.taskItem.model" />
-
<ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
<TextField source="nickname" />
</ReferenceField>
diff --git a/rsf-admin/src/page/taskItem/TaskItemList.jsx b/rsf-admin/src/page/taskItem/TaskItemList.jsx
index fc2123d..d146e6d 100644
--- a/rsf-admin/src/page/taskItem/TaskItemList.jsx
+++ b/rsf-admin/src/page/taskItem/TaskItemList.jsx
@@ -34,11 +34,6 @@
} from 'react-admin';
import { Box, Typography, Card, Stack } from '@mui/material';
import { styled } from '@mui/material/styles';
-import TaskItemCreate from "./TaskItemCreate";
-import TaskItemPanel from "./TaskItemPanel";
-import EmptyData from "../components/EmptyData";
-import MyCreateButton from "../components/MyCreateButton";
-import MyExportButton from '../components/MyExportButton';
import PageDrawer from "../components/PageDrawer";
import MyField from "../components/MyField";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
@@ -88,7 +83,6 @@
const TaskItemList = () => {
const translate = useTranslate();
-
const [createDialog, setCreateDialog] = useState(false);
const [drawerVal, setDrawerVal] = useState(false);
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 9cb4786..ea767f7 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
@@ -391,15 +391,8 @@
LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new QueryWrapper<WarehouseAreasItem>()
.select("SUM(anfme) as anfme, track_code, asn_code, id, splr_batch, ispt_result, plat_item_id, batch, qty, work_qty, matnr_code, matnr_id, maktx").lambda()
.eq(WarehouseAreasItem::getTrackCode, code)
- .groupBy(WarehouseAreasItem::getSplrBatch, WarehouseAreasItem::getAsnId, WarehouseAreasItem::getAreaId);
+ .groupBy(WarehouseAreasItem::getSplrBatch, WarehouseAreasItem::getAsnId, WarehouseAreasItem::getAreaId, WarehouseAreasItem::getMatnrId);
return R.ok(warehouseAreasItemService.getOne(queryWrapper));
-// return R.ok(warehouseAreasItemService.list(new LambdaQueryWrapper<WarehouseAreasItem>()
-// .select(WarehouseAreasItem::getId, WarehouseAreasItem::getAsnCode, WarehouseAreasItem::getAsnId, WarehouseAreasItem::getSplrBatch,
-// WarehouseAreasItem::getIsptResult, WarehouseAreasItem::getPlatItemId, WarehouseAreasItem::getQty, WarehouseAreasItem::getWorkQty,
-// WarehouseAreasItem::getMatnrCode, WarehouseAreasItem::getMatnrId)
-// .eq(WarehouseAreasItem::getTrackCode, code)
-// .groupBy(WarehouseAreasItem::getSplrBatch, WarehouseAreasItem::getAsnId, WarehouseAreasItem::getAreaId)
-// ));
}
/**
@@ -414,6 +407,12 @@
return waitPakinService.mergeItems(waitPakin);
}
+ /**
+ * @author Ryan
+ * @description 瑙g粦
+ * @param param
+ * @return
+ */
@Override
public WaitPakin unBind(WaitPakinParam param) {
return waitPakinService.unBind(param);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java
index 07e1a56..b355406 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java
@@ -11,7 +11,7 @@
//璐ㄦ鐘舵��
PAKIN_IO_STATUS_HOLD("0", "寰呭叆搴�"),
- QLY_ISPT_STAS_DONE("1", "缁勬嫋瀹屾垚"),
+ PAKIN_IO_STATUS_DONE("1", "缁勬嫋瀹屾垚"),
PAKIN_IO_STATUS_TASK_EXCE("2", "浠诲姟鎵ц涓�"),
PAKIN_IO_STATUS_TASK_DONE("3", "浠诲姟瀹屾垚")
;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
index 86d45c9..6e4e4bd 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
@@ -6,6 +6,7 @@
import com.vincent.rsf.server.common.utils.CommonUtil;
import com.vincent.rsf.server.common.utils.DateUtils;
import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.PakinIOStatus;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
@@ -183,10 +184,13 @@
* @return
* @time 2025/3/29 12:36
*/
- @Scheduled(cron = "0/5 * * * * ?")
+// @Scheduled(cron = "0 0/05 * * * ? ")
+ @Scheduled(cron = "0/25 * * * * ?")
@Transactional(rollbackFor = Exception.class)
public void pakinLog() {
- List<WaitPakin> pakinIds = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getIoStatus, 2).select(WaitPakin::getId));
+ List<WaitPakin> pakinIds = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>()
+ .eq(WaitPakin::getIoStatus, Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_TASK_DONE.val))
+ .select(WaitPakin::getId));
if (pakinIds.isEmpty()) {
return;
}
@@ -221,10 +225,10 @@
if (!waitPakinItemLogService.saveBatch(itemLogs)) {
throw new CoolException("鍘嗗彶鏄庣粏妗d繚瀛樺け璐ワ紒锛�");
}
- if (!waitPakinService.removeByIds(pakins)) {
+ if (!waitPakinService.removeByIds(list)) {
throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
}
- if (!waitPakinItemService.removeByIds(pakinItems)) {
+ if (!waitPakinItemService.remove(new LambdaQueryWrapper<WaitPakinItem>().in(WaitPakinItem::getPakinId, list))) {
throw new CoolException("鍘熷崟鎹槑缁嗗垹闄ゅけ璐ワ紒锛�");
}
}
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 5e492d8..cc757b4 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
@@ -70,7 +70,7 @@
List<Long> ids = waitPakin.stream().map(WaitPakin::getId).collect(Collectors.toList());
List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>()
.in(WaitPakin::getId, ids)
- .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.QLY_ISPT_STAS_DONE.val)));
+ .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val)));
if (waitPakins.isEmpty()) {
throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�");
}
@@ -93,7 +93,7 @@
if (!this.save(task)) {
throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒");
}
- if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, pakin.getCode())
+ if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, task.getTargLoc())
.set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type).set(Loc::getBarcode, pakin.getBarcode()))) {
throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒");
}
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 70ce7d0..b50c28e 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
@@ -80,7 +80,7 @@
}
pakin.setCode(ruleCode)
//鐘舵�佷慨鏀逛负鍏ュ簱涓�
- .setIoStatus(Short.parseShort(PakinIOStatus.QLY_ISPT_STAS_DONE.val))
+ .setIoStatus(Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val))
.setAnfme(sum)
.setBarcode(waitPakin.getBarcode());
if (!this.save(pakin)) {
@@ -104,26 +104,25 @@
.setAsnId(item.getAsnId())
.setAsnCode(item.getAsnCode())
.setAsnItemId(item.getId())
- .setMatnrCode(item.getMatnrCode())
.setBatch(item.getSplrBatch())
.setUnit(item.getStockUnit())
.setFieldsIndex(item.getFieldsIndex())
- .setUnit(item.getStockUnit())
.setMatnrId(item.getMatnrId())
.setMaktx(item.getMaktx())
.setMatnrCode(item.getMatnrCode());
for (PakinItem waitPakinItem : waitPakin.getItems()) {
if (waitPakinItem.getTrackCode().equals(item.getTrackCode())) {
- Double v = item.getWorkQty() + waitPakinItem.getReceiptQty();
- pakinItem.setWorkQty(v)
+// Double v = item.getWorkQty() + waitPakinItem.getReceiptQty();
+ pakinItem
+ .setWorkQty(waitPakinItem.getReceiptQty())
.setAnfme(waitPakinItem.getReceiptQty())
.setTrackCode(waitPakinItem.getTrackCode());
/**鏇存柊鍗曟嵁鎵ц涓簱瀛�*/
- if (v.compareTo(item.getAnfme()) > 0) {throw new CoolException("鎵ц涓暟閲忓ぇ浜庢敹璐ф暟閲忥紒锛�");}
- if (!asnOrderItemService.update(new LambdaUpdateWrapper<AsnOrderItem>()
- .eq(AsnOrderItem::getTrackCode, waitPakinItem.getTrackCode()).set(AsnOrderItem::getWorkQty, v))) {
- throw new CoolException("鎵ц涓簱瀛樻洿鏂板け璐ワ紒锛�");
- }
+// if (v.compareTo(item.getAnfme()) > 0) {throw new CoolException("鎵ц涓暟閲忓ぇ浜庢敹璐ф暟閲忥紒锛�");}
+// if (!asnOrderItemService.update(new LambdaUpdateWrapper<AsnOrderItem>()
+// .eq(AsnOrderItem::getTrackCode, waitPakinItem.getTrackCode()).set(AsnOrderItem::getWorkQty, v))) {
+// throw new CoolException("鎵ц涓簱瀛樻洿鏂板け璐ワ紒锛�");
+// }
}
}
items.add(pakinItem);
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
--
Gitblit v1.9.1