From b110cc66907a093794b0887a6b2889e57c8c11fb Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 25 八月 2025 13:41:59 +0800
Subject: [PATCH] 库存调整功能修改
---
rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx | 30 ++++++++--
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java | 1
rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx | 3
rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx | 9 ++
rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx | 8 ++
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java | 1
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java | 68 +++++++++++++---------
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java | 1
rsf-server/src/main/resources/application-dev.yml | 2
9 files changed, 85 insertions(+), 38 deletions(-)
diff --git a/rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx b/rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx
index f3e589e..b6c7cf9 100644
--- a/rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx
+++ b/rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx
@@ -18,6 +18,8 @@
NumberField,
required,
useRecordContext,
+ useGetRecordId,
+ useGetOne,
DeleteButton,
} from 'react-admin';
import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
@@ -34,6 +36,10 @@
const LocReviseEdit = () => {
const translate = useTranslate();
const [disabled, setDisabled] = useState(false);
+
+ const orderId = useGetRecordId();
+ const {data, isPending} = useGetOne("locRevise", {id: orderId});
+ console.log(data);
const FormToolbar = () => {
return (
@@ -136,7 +142,7 @@
</Grid>
</SimpleForm>
</Edit >
- <ReviseLogList />
+ <ReviseLogList record = {data}/>
</>
)
}
diff --git a/rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx b/rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx
index 80520c1..ba7cbf2 100644
--- a/rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx
+++ b/rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx
@@ -147,7 +147,7 @@
<TextField source="memo" label="common.field.memo" sortable={false} />
<WrapperField cellClassName="opt" label="common.field.opt">
<EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
- <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
+ <DelButton />
<CompleteButton />
</WrapperField>
</StyledDatagrid>
@@ -166,6 +166,13 @@
)
}
+const DelButton = () => {
+ const record = useRecordContext();
+ return (
+ record?.exceStatus == 0 ? <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> : <></>
+ )
+}
+
//瀹屾垚鍗曟嵁
const CompleteButton = () => {
const record = useRecordContext();
diff --git a/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx b/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx
index 1422424..5dc09cb 100644
--- a/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx
+++ b/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx
@@ -101,6 +101,7 @@
const getData = async (matnr) => {
setIsLoading(true)
const res = await request.post(`/reviseLogItem/page`, {
+ // const res = await request.post(`/locItem/page`, {
locCode: record?.locCode,
matnrCode: matnr,
current: page?.page,
@@ -153,7 +154,7 @@
backgroundColor: 'background.paper',
zIndex: 1000
}}>
- {translate("common.action.newAddMats")}
+ {translate("common.button.edit")}
<Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
<DialogCloseButton onClose={handleClose} />
</Box>
diff --git a/rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx b/rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx
index 3656ba1..33ae7c6 100644
--- a/rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx
+++ b/rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx
@@ -33,6 +33,7 @@
DeleteButton,
useGetRecordId,
Button,
+ useGetOne,
} from 'react-admin';
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import MyCreateButton from "@/page/components/MyCreateButton";
@@ -85,7 +86,7 @@
/>,
]
-const ReviseLogList = () => {
+const ReviseLogList = ({ record }) => {
const [createDialog, setCreateDialog] = useState(false);
const [drawerVal, setDrawerVal] = useState(false);
const [item, setItem] = useState();
@@ -106,12 +107,12 @@
title={false}
empty={false}
filters={filters}
- filter={{ reviseId: orderId }}
+ filter={{ reviseId: record?.id }}
sort={{ field: "create_time", order: "desc" }}
actions={(
<TopToolbar>
<FilterButton />
- <MyCreateButton onClick={() => { setCreateDialog(true); }} />
+ <CreateItemButton setCreateDialog={setCreateDialog} record={record} />
<SelectColumnsButton preferenceKey='check' />
</TopToolbar>
)}
@@ -145,14 +146,14 @@
<BooleanField source="statusBool" label="common.field.status" sortable={false} />
<TextField source="memo" label="common.field.memo" sortable={false} />
<WrapperField cellClassName="opt" label="common.field.opt">
- <EditLocRevise setDrawerVal={setDrawerVal} setItem={setItem} />
- <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} redirect={false} />
- </WrapperField>
+ <EditOperatate setDrawerVal={setDrawerVal} setItem={setItem} record={record} />
+ </WrapperField >
</StyledDatagrid>
</List>
<SelectLocsRevise
locRevise={orderId}
open={createDialog}
+ record={record}
setOpen={setCreateDialog}
/>
<LocsReviseDetl
@@ -166,6 +167,23 @@
export default ReviseLogList;
+const CreateItemButton = ({ setCreateDialog, record }) => {
+ return (
+ record?.exceStatus < 2 ? <MyCreateButton onClick={() => { setCreateDialog(true); }} /> : <></>
+ )
+}
+
+const EditOperatate = ({ setDrawerVal, setItem, record }) => {
+ return (
+ record?.exceStatus < 2 ?
+ <>
+ <EditLocRevise setDrawerVal={setDrawerVal} setItem={setItem} />
+ <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} redirect={false} />
+ </> : <></>
+ )
+
+}
+
const EditLocRevise = ({ setDrawerVal, setItem }) => {
const record = useRecordContext();
const editRevise = () => {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java
index ebf4be0..6fc3a82 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java
@@ -117,7 +117,6 @@
if (Objects.isNull(transferParams)) {
throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
-
return receiveMsgService.syncTransfer(transferParams, getLoginUserId());
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
index 5a05b4d..917aaf5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
@@ -49,6 +49,7 @@
@ApiModelProperty(value= "涓诲崟ID")
private Long locId;
+
@ApiModelProperty("搴撲綅缂栫爜")
private String locCode;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java
index 0a57ae3..f23b806 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java
@@ -59,6 +59,7 @@
@ApiModelProperty(value= "搴撳尯ID")
private Long areaId;
+ /***搴撲綅缂栫爜*/
@ApiModelProperty("搴撲綅")
private String locCode;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java
index baf9048..b182f25 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java
@@ -19,6 +19,7 @@
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Set;
import java.util.stream.Collectors;
@Service("reviseLogService")
@@ -35,11 +36,13 @@
@Autowired
private LocService locService;
+
@Autowired
private ReviseLogItemService reviseLogItemService;
/**
* 搴撳瓨璋冩暣鍗曟槑缁嗘坊鍔�
+ *
* @param revise
* @param loginUserId
* @return
@@ -62,11 +65,29 @@
.setReviseId(locRevise.getId())
.setCreateBy(loginUserId)
.setUpdateBy(loginUserId)
- .setReviseCode(locRevise.getCode()) ;
+ .setReviseCode(locRevise.getCode());
if (!reviseLogService.save(reviseLog)) {
throw new CoolException("璋冩暣鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�");
}
+
+ List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>()
+ .eq(LocItem::getLocCode, item.getLocCode()));
+ if (!locItems.isEmpty()) {
+ locItems.forEach(ote -> {
+ ReviseLogItem logItem = new ReviseLogItem();
+ BeanUtils.copyProperties(ote, logItem);
+ logItem.setReviseLogId(reviseLog.getId());
+ if (!reviseLogItemService.save(logItem)) {
+ throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒");
+ }
+ });
+ }
+
+ Double sum = locItems.stream().mapToDouble(LocItem::getAnfme).sum();
+
+ locRevise.setAnfme(Math.round((sum + locRevise.getAnfme()) * 10000) / 10000.0);
});
+
locRevise.setExceStatus(CommonExceStatus.COMMON_EXCE_STATUS_UN_EXCE.val);
if (!locReviseService.updateById(locRevise)) {
@@ -91,41 +112,34 @@
if (!revise.getExceStatus().equals(CommonExceStatus.COMMON_EXCE_STATUS_EXCE_ING.val)) {
throw new CoolException("鍗曟嵁鐘舵�佹湭鎵ц鎴栧凡瀹屾垚锛屾棤娉曟墽琛屽畬鎴愭搷浣滐紒锛�");
}
- ReviseLog logs = reviseLogService.getOne(new LambdaQueryWrapper<ReviseLog>().eq(ReviseLog::getReviseId, revise.getId()));
- if (Objects.isNull(logs)) {
+ List<ReviseLog> logs = reviseLogService.list(new LambdaQueryWrapper<ReviseLog>().eq(ReviseLog::getReviseId, revise.getId()));
+ if (logs.isEmpty()) {
throw new CoolException("搴撳瓨鏃ュ織涓嶅瓨鍦紒锛�");
}
- List<ReviseLogItem> logItems = reviseLogItemService.list(new LambdaQueryWrapper<ReviseLogItem>().eq(ReviseLogItem::getReviseLogId, logs.getId()));
+ Set<Long> longs = logs.stream().map(ReviseLog::getId).collect(Collectors.toSet());
+ List<ReviseLogItem> logItems = reviseLogItemService.list(new LambdaQueryWrapper<ReviseLogItem>().in(ReviseLogItem::getReviseLogId, longs));
+ if (logItems.isEmpty()) {
+ throw new CoolException("璋冩暣鏄庣粏涓虹┖!!");
+ }
Map<Long, List<ReviseLogItem>> listMap = logItems.stream().collect(Collectors.groupingBy(ReviseLogItem::getLocId));
listMap.keySet().forEach(items -> {
Loc loc = locService.getById(items);
if (Objects.isNull(loc)) {
throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�");
}
+ locItemService.remove(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
listMap.get(items).forEach(logItem -> {
- LocItem one = locItemService.getOne(new LambdaQueryWrapper<LocItem>()
- .eq(LocItem::getMatnrId, logItem.getMatnrId())
- .eq(StringUtils.isNotBlank(logItem.getBatch()), LocItem::getBatch, logItem.getBatch())
- .eq(StringUtils.isNotBlank(logItem.getFieldsIndex()), LocItem::getFieldsIndex, logItem.getFieldsIndex())
- .eq(LocItem::getLocCode, logItem.getLocCode()));
- if (Objects.isNull(one)) {
- LocItem locDetl = new LocItem();
- BeanUtils.copyProperties(logItem, locDetl);
- locDetl.setLocId(loc.getId())
- .setType(OrderType.ORDER_REVISE.type)
- .setLocCode(loc.getCode())
- .setAnfme(logItem.getReviseQty())
- .setUpdateBy(loginUserId)
- .setId(null)
- .setCreateBy(loginUserId);
- if (!locItemService.save(locDetl)) {
- throw new CoolException("搴撳瓨鏄庣粏淇濆瓨澶辫触锛侊紒");
- }
- } else {
- one.setAnfme(logItem.getReviseQty());
- if (!locItemService.updateById(one)) {
- throw new CoolException("搴撳瓨鏄庣粏淇敼澶辫触锛侊紒");
- }
+ LocItem locDetl = new LocItem();
+ BeanUtils.copyProperties(logItem, locDetl);
+ locDetl.setLocId(loc.getId())
+ .setType(OrderType.ORDER_REVISE.type)
+ .setLocCode(loc.getCode())
+ .setAnfme(logItem.getReviseQty())
+ .setUpdateBy(loginUserId)
+ .setId(null)
+ .setCreateBy(loginUserId);
+ if (!locItemService.save(locDetl)) {
+ throw new CoolException("搴撳瓨鏄庣粏淇濆瓨澶辫触锛侊紒");
}
});
});
diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml
index ceebf5e..9c4faaf 100644
--- a/rsf-server/src/main/resources/application-dev.yml
+++ b/rsf-server/src/main/resources/application-dev.yml
@@ -14,7 +14,7 @@
# url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
# username: rsf
username: root
- url: jdbc:mysql://192.168.4.151:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+ url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
password: 34821015
type: com.alibaba.druid.pool.DruidDataSource
druid:
--
Gitblit v1.9.1