From 11662208c26eb3d837d4c2d1e7cbbeae5d5c9943 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 18 八月 2025 13:59:13 +0800
Subject: [PATCH] 库存调整功能优化
---
rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx | 2
rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx | 31 ++++
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CommonExceStatus.java | 22 +++
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/ReviseLogController.java | 12 +
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/ReviseLogService.java | 3
rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx | 13 +
rsf-admin/src/page/stockManage/locRevise/ReviseLogItemList.jsx | 2
rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java | 13 +
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncMatGroupsParams.java | 39 +++++
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ReceiveMsgController.java | 20 ++
rsf-admin/src/page/stockManage/locRevise/asnOrder.css | 5
rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx | 19 +-
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java | 30 ++++
rsf-admin/src/i18n/zh.js | 1
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java | 96 ++++++++++++-
rsf-admin/src/i18n/en.js | 1
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderType.java | 5
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogItemServiceImpl.java | 48 +++---
18 files changed, 305 insertions(+), 57 deletions(-)
diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index f9fd34b..e5e7065 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -1339,6 +1339,7 @@
orderPrint: 'Orders Print',
quality: "quality",
complete: "complete",
+ confirmTransfer: "Comfirm Transfer",
allComfirm: 'All Comfirm',
createTransfer: 'Create Transfer Order',
createLocRevise: 'Create Stock Revise Order',
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index b7642e8..9d4ef4d 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -1358,6 +1358,7 @@
allComfirm: '鍏ㄩ儴鎻愪氦',
quality: "璐ㄦ",
complete: "瀹岀粨",
+ confirmTransfer: "纭璋冩暣",
close: "鍏抽棴",
createTransfer: '鍒涘缓璋冩嫈鍗�',
createLocRevise: '鍒涘缓搴撳瓨璋冩暣鍗�',
diff --git a/rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx b/rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx
index 48ca819..a8911d0 100644
--- a/rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx
+++ b/rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx
@@ -20,15 +20,16 @@
useRecordContext,
DeleteButton,
} from 'react-admin';
-import { useWatch, useFormContext } from "react-hook-form";
-import { Stack, Grid, Box, Typography } from '@mui/material';
-import * as Common from '@/utils/common';
import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
-import EditBaseAside from "@/page/components/EditBaseAside";
-import CustomerTopToolBar from "@/page/components/EditTopToolBar";
-import MemoInput from "@/page/components/MemoInput";
import StatusSelectInput from "@/page/components/StatusSelectInput";
+import CustomerTopToolBar from "@/page/components/EditTopToolBar";
+import { Stack, Grid, Box, Typography } from '@mui/material';
+import EditBaseAside from "@/page/components/EditBaseAside";
+import { useWatch, useFormContext } from "react-hook-form";
+import MemoInput from "@/page/components/MemoInput";
import ReviseLogList from "./ReviseLogList";
+import * as Common from '@/utils/common';
+import request from '@/utils/request';
const LocReviseEdit = () => {
diff --git a/rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx b/rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx
index 0fc637c..138f189 100644
--- a/rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx
+++ b/rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx
@@ -25,6 +25,7 @@
TextInput,
DateTimeInput,
DateInput,
+ useRefresh,
SelectInput,
NumberInput,
ReferenceInput,
@@ -37,8 +38,11 @@
import MyExportButton from '@/page/components/MyExportButton';
import PageEditDrawer from "@/page/components/PageEditDrawer";
import { Box, Typography, Card, Stack } from '@mui/material';
+import ConfirmButton from '../../components/ConfirmButton';
import LocReviseCreate from "./LocReviseCreate";
+import TaskIcon from '@mui/icons-material/Task';
import { styled } from '@mui/material/styles';
+import request from '@/utils/request';
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
'& .css-1vooibu-MuiSvgIcon-root': {
@@ -136,13 +140,14 @@
<TextField source="areaName" label="table.field.locRevise.areaName" />
<TextField source="updateBy$" label="common.field.updateBy" />
<DateField source="updateTime" label="common.field.updateTime" showTime />
- <DateField source="createBy$" label="common.field.createBy" />
+ <TextField source="createBy$" label="common.field.createBy" />
<DateField source="createTime" label="common.field.createTime" showTime />
<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">
<EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
<DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
+ <CompleteButton />
</WrapperField>
</StyledDatagrid>
</List>
@@ -160,4 +165,28 @@
)
}
+
+//瀹屾垚鍗曟嵁
+const CompleteButton = () => {
+ const record = useRecordContext();
+ const notify = useNotify();
+ const refresh = useRefresh();
+ const requestComplete = async () => {
+ const { data: { code, data, msg } } = await request.post(`/reviseLog/complete/${record.id}`);
+ if (code === 200) {
+ notify(msg);
+ refresh()
+ } else {
+ notify(msg);
+ }
+ }
+
+ return (
+ record.exceStatus == 1 ? <ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskIcon />} onConfirm={requestComplete} /> : <></>
+ )
+
+
+}
+
+
export default LocReviseList;
diff --git a/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx b/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx
index ee0a8fa..1422424 100644
--- a/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx
+++ b/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx
@@ -24,6 +24,7 @@
import SelectMatnrInfo from "./SelectMatnrInfo";
import SaveIcon from '@mui/icons-material/Save';
import request from '@/utils/request';
+import "./asnOrder.css";
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
'& .css-1vooibu-MuiSvgIcon-root': {
@@ -176,7 +177,7 @@
</Grid>
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, justifyContent: 'flex-end' }}>
<Grid item md={8} sx={{ justifyContent: 'flex-end', display: 'flex' }}>
- <Button variant="text" onClick={handleAdd}>{translate("page.whMat.title.add")}</Button>
+ <Button variant="contained" onClick={handleAdd} >{translate("page.whMat.title.add")}</Button>
</Grid>
</Box>
</Box>
@@ -231,13 +232,6 @@
editable: false,
},
{
- field: 'batch',
- headerName: translate('table.field.locItem.batch'),
- minWidth: 100,
- flex: 1,
- editable: true,
- },
- {
field: 'anfme',
headerName: translate('table.field.locItem.anfme') + "*",
minWidth: 100,
@@ -251,6 +245,15 @@
type: 'number',
flex: 1,
editable: true,
+ headerClassName: "custom",
+ },
+ {
+ field: 'batch',
+ headerName: translate('table.field.locItem.batch'),
+ minWidth: 100,
+ flex: 1,
+ editable: true,
+ headerClassName: "custom",
},
{
field: 'spec',
diff --git a/rsf-admin/src/page/stockManage/locRevise/ReviseLogItemList.jsx b/rsf-admin/src/page/stockManage/locRevise/ReviseLogItemList.jsx
index d0a6fec..b6f8a49 100644
--- a/rsf-admin/src/page/stockManage/locRevise/ReviseLogItemList.jsx
+++ b/rsf-admin/src/page/stockManage/locRevise/ReviseLogItemList.jsx
@@ -70,7 +70,7 @@
duration: theme.transitions.duration.enteringScreen,
}),
}}
- title={"menu.reviseLogItem"}
+ title={false}
empty={false}
filters={false}
pagination={false}
diff --git a/rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx b/rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx
index 7d8ca87..3656ba1 100644
--- a/rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx
+++ b/rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx
@@ -103,7 +103,7 @@
duration: theme.transitions.duration.enteringScreen,
}),
}}
- title={"menu.reviseLog"}
+ title={false}
empty={false}
filters={filters}
filter={{ reviseId: orderId }}
diff --git a/rsf-admin/src/page/stockManage/locRevise/asnOrder.css b/rsf-admin/src/page/stockManage/locRevise/asnOrder.css
new file mode 100644
index 0000000..0df941e
--- /dev/null
+++ b/rsf-admin/src/page/stockManage/locRevise/asnOrder.css
@@ -0,0 +1,5 @@
+
+.custom {
+ color: rgb(0, 195, 255) !important;
+ }
+
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ReceiveMsgController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ReceiveMsgController.java
index 2e54f21..eb586ca 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ReceiveMsgController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ReceiveMsgController.java
@@ -3,10 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
-import com.vincent.rsf.server.api.controller.erp.params.BaseMatParms;
-import com.vincent.rsf.server.api.controller.erp.params.OrderParams;
-import com.vincent.rsf.server.api.controller.erp.params.QueryOrderParam;
-import com.vincent.rsf.server.api.controller.erp.params.SyncLocsParams;
+import com.vincent.rsf.server.api.controller.erp.params.*;
import com.vincent.rsf.server.api.service.ReceiveMsgService;
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.PageParam;
@@ -164,6 +161,21 @@
return receiveMsgService.syncLocs(locs);
}
+ /**
+ * @author Ryan
+ * @date 2025/8/18
+ * @description: 鐗╂枡鍒嗙粍淇℃伅鍚屾
+ * @version 1.0
+ */
+ @PostMapping("/sync/matGroups")
+ @ApiOperation(value = "鐗╂枡鍒嗙粍淇℃伅鍚屾", tags = "鍩虹淇℃伅鍚屾")
+ public R syncMatGroup(@RequestBody List<SyncMatGroupsParams> matGroupsParams) {
+ if (matGroupsParams.isEmpty()) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return receiveMsgService.syncMatGroups(matGroupsParams);
+ }
+
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncMatGroupsParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncMatGroupsParams.java
new file mode 100644
index 0000000..5239176
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncMatGroupsParams.java
@@ -0,0 +1,39 @@
+package com.vincent.rsf.server.api.controller.erp.params;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "SyncMatGroupsParams", description = "鍚屾鐗╂枡鍒嗕俊鎭弬鏁�")
+public class SyncMatGroupsParams implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 鍚嶇О
+ */
+ @ApiModelProperty(value= "鍚嶇О")
+ private String name;
+
+ /**
+ * 鍒嗙粍缂栫爜
+ */
+ @ApiModelProperty("涓婄骇鍒嗙粍缂栫爜")
+ private String parCode;
+
+ /**
+ * @author Ryan
+ * @date 2025/8/18
+ * @description: 鍒嗙被缂栫爜
+ * @version 1.0
+ */
+ @ApiModelProperty("鍒嗙被缂栫爜")
+ private String code;
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java
index e442e10..7d56ba1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java
@@ -3,10 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.vincent.rsf.framework.common.R;
-import com.vincent.rsf.server.api.controller.erp.params.BaseMatParms;
-import com.vincent.rsf.server.api.controller.erp.params.OrderParams;
-import com.vincent.rsf.server.api.controller.erp.params.QueryOrderParam;
-import com.vincent.rsf.server.api.controller.erp.params.SyncLocsParams;
+import com.vincent.rsf.server.api.controller.erp.params.*;
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.entity.Loc;
@@ -60,4 +57,12 @@
* @version 1.0
*/
R syncLocs(List<SyncLocsParams> locs);
+
+ /**
+ * @author Ryan
+ * @date 2025/8/18
+ * @description: 鐗╂枡鍒嗙粍淇℃伅鍚屾
+ * @version 1.0
+ */
+ R syncMatGroups(List<SyncMatGroupsParams> matGroupsParams);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
index b747497..303f02b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -237,5 +237,33 @@
return R.ok();
}
-
+ /**
+ * @author Ryan
+ * @date 2025/8/18
+ * @description: 鐗╂枡淇℃伅鍚屾
+ * @version 1.0
+ */
+ @Override
+ @Transactional(timeout = 30, rollbackFor = Exception.class)
+ public R syncMatGroups(List<SyncMatGroupsParams> matGroupsParams) {
+ List<MatnrGroup> syncMatGroups = new ArrayList<>();
+ matGroupsParams.forEach(matGroupsParam -> {
+ MatnrGroup matnrGroup = new MatnrGroup();
+ BeanUtils.copyProperties(matGroupsParam, matnrGroup);
+ if (Objects.isNull(matGroupsParam.getCode())) {
+ throw new CoolException("鐗╂枡鍒嗙粍缂栫爜涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(matGroupsParam.getName())) {
+ throw new CoolException("鍒嗙粍鍚嶇О涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(matGroupsParam.getParCode())) {
+ throw new CoolException("涓婄骇鐗╂枡鍒嗙粍缂栫爜涓嶈兘涓虹┖锛侊紒");
+ }
+ syncMatGroups.add(matnrGroup);
+ });
+ if (!matnrGroupService.saveBatch(syncMatGroups)) {
+ throw new CoolException("鐗╂枡鍒嗙粍淇濆瓨澶辫触锛侊紒");
+ }
+ return R.ok();
+ }
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/ReviseLogController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/ReviseLogController.java
index 064997b..d371601 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/ReviseLogController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/ReviseLogController.java
@@ -14,6 +14,7 @@
import com.vincent.rsf.server.manager.entity.ReviseLog;
import com.vincent.rsf.server.manager.service.ReviseLogService;
import com.vincent.rsf.server.system.controller.BaseController;
+import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@@ -67,6 +68,7 @@
return R.ok("Save Success").add(reviseLog);
}
+
@PreAuthorize("hasAuthority('manager:locRevise:update')")
@OperationLog("Update 搴撲綅璋冩暣鍘嗗彶")
@PostMapping("/reviseLog/update")
@@ -89,6 +91,16 @@
return R.ok().add(reviseLogService.reviseLoc(reviseLog, getLoginUserId()));
}
+ @PreAuthorize("hasAuthority('manager:locRevise:update')")
+ @PostMapping("/reviseLog/complete/{id}")
+ @ApiOperation("纭璋冩暣搴撳瓨")
+ public R completeTran(@PathVariable("id") Long id) {
+ if (Objects.isNull(id)) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return reviseLogService.complete(id, getLoginUserId());
+ }
+
@PreAuthorize("hasAuthority('manager:locRevise:remove')")
@OperationLog("Delete 搴撲綅璋冩暣鍘嗗彶")
@PostMapping("/reviseLog/remove/{ids}")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CommonExceStatus.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CommonExceStatus.java
new file mode 100644
index 0000000..722b3c5
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CommonExceStatus.java
@@ -0,0 +1,22 @@
+package com.vincent.rsf.server.manager.enums;
+
+/**
+ * @author Ryan
+ * @date 2025/8/18
+ * @description: 閫氱敤鍗曟嵁鎵ц鐘舵��
+ * @version 1.0
+ */
+public enum CommonExceStatus {
+ //閫氱敤鎵ц鐘舵��
+ COMMON_EXCE_STATUS_UN_EXCE("0", "鏈墽琛�"),
+ COMMON_EXCE_STATUS_EXCE_ING("1", "鎵ц涓�"),
+ COMMON_EXCE_STATUS_TASK_DONE("2", "宸插畬鎴�")
+ ;
+ CommonExceStatus(String val, String desc) {
+ this.val = Integer.parseInt(val);
+ this.desc = desc;
+ }
+
+ public Integer val;
+ public String desc;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderType.java
index dc85d6b..44a9291 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderType.java
@@ -12,6 +12,7 @@
ORDER_OUT("out", "鍑哄簱鍗�"),
ORDER_IN("in", "鍏ュ簱鍗�"),
ORDER_TRANSFER("transfer", "璋冩嫈鍗�"),
+ ORDER_REVISE("revise", "搴撳瓨璋冩暣"),
ORDER_CHECK("check", "鐩樼偣鍗�");
@@ -32,6 +33,8 @@
return OrderType.ORDER_CHECK.type;
} else if (desc.equals(OrderType.ORDER_TRANSFER.desc)) {
return OrderType.ORDER_TRANSFER.type;
+ } else if (desc.equals(OrderType.ORDER_REVISE.desc)) {
+ return OrderType.ORDER_REVISE.type;
}
return null;
}
@@ -45,6 +48,8 @@
return OrderType.ORDER_CHECK.desc;
} else if (type.equals(OrderType.ORDER_TRANSFER.type)) {
return OrderType.ORDER_TRANSFER.desc;
+ } else if (type.equals(OrderType.ORDER_REVISE.type)) {
+ return OrderType.ORDER_REVISE.desc;
}
return null;
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/ReviseLogService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/ReviseLogService.java
index 4ca6f62..419e29b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/ReviseLogService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/ReviseLogService.java
@@ -1,6 +1,7 @@
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.controller.params.ReviseLogParams;
import com.vincent.rsf.server.manager.entity.ReviseLog;
@@ -9,4 +10,6 @@
public interface ReviseLogService extends IService<ReviseLog> {
List<ReviseLog> reviseLoc(ReviseLogParams reviseLog, Long loginUserId);
+
+ R complete(Long params, Long loginUserId);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogItemServiceImpl.java
index cf8c3b1..402deb4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogItemServiceImpl.java
@@ -6,6 +6,7 @@
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.manager.controller.params.ReviseLogItemParams;
import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.CommonExceStatus;
import com.vincent.rsf.server.manager.mapper.ReviseLogItemMapper;
import com.vincent.rsf.server.manager.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -71,29 +72,29 @@
throw new RuntimeException("搴撳瓨鏄庣粏璋冩暣澶辫触");
}
- 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())
- .setLocCode(loc.getCode())
- .setAnfme(logItem.getReviseQty())
- .setUpdateBy(userId)
- .setId(null)
- .setCreateBy(userId);
- if (!locItemService.save(locDetl)) {
- throw new CoolException("搴撳瓨鏄庣粏淇濆瓨澶辫触锛侊紒");
- }
- } else {
- one.setAnfme(logItem.getReviseQty());
- if (!locItemService.updateById(one)) {
- throw new RuntimeException("搴撳瓨鏄庣粏淇敼澶辫触锛侊紒");
- }
- }
+// 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())
+// .setLocCode(loc.getCode())
+// .setAnfme(logItem.getReviseQty())
+// .setUpdateBy(userId)
+// .setId(null)
+// .setCreateBy(userId);
+// if (!locItemService.save(locDetl)) {
+// throw new CoolException("搴撳瓨鏄庣粏淇濆瓨澶辫触锛侊紒");
+// }
+// } else {
+// one.setAnfme(logItem.getReviseQty());
+// if (!locItemService.updateById(one)) {
+// throw new RuntimeException("搴撳瓨鏄庣粏淇敼澶辫触锛侊紒");
+// }
+// }
});
List<ReviseLog> list = reviseLogService.list(new LambdaQueryWrapper<ReviseLog>().eq(ReviseLog::getReviseId, reviseLog.getReviseId()));
@@ -110,6 +111,7 @@
if (!locReviseService.update(new LambdaUpdateWrapper<LocRevise>()
.eq(LocRevise::getId, reviseLog.getReviseId())
.set(LocRevise::getAnfme, anfems)
+ .set(LocRevise::getExceStatus, CommonExceStatus.COMMON_EXCE_STATUS_EXCE_ING.val)
.set(LocRevise::getReviseQty, reviseQty))) {
throw new RuntimeException("搴撳瓨璋冩暣鍗曚慨鏀瑰け璐ワ紒锛�");
}
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 3b03850..baf9048 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
@@ -1,12 +1,15 @@
package com.vincent.rsf.server.manager.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.manager.controller.params.ReviseLogParams;
-import com.vincent.rsf.server.manager.entity.LocRevise;
-import com.vincent.rsf.server.manager.entity.ReviseLogItem;
+import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.CommonExceStatus;
+import com.vincent.rsf.server.manager.enums.OrderType;
import com.vincent.rsf.server.manager.mapper.ReviseLogMapper;
-import com.vincent.rsf.server.manager.entity.ReviseLog;
-import com.vincent.rsf.server.manager.service.LocReviseService;
-import com.vincent.rsf.server.manager.service.ReviseLogService;
+import com.vincent.rsf.server.manager.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -14,7 +17,9 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
+import java.util.Map;
import java.util.Objects;
+import java.util.stream.Collectors;
@Service("reviseLogService")
public class ReviseLogServiceImpl extends ServiceImpl<ReviseLogMapper, ReviseLog> implements ReviseLogService {
@@ -24,6 +29,14 @@
@Autowired
private ReviseLogService reviseLogService;
+
+ @Autowired
+ private LocItemService locItemService;
+
+ @Autowired
+ private LocService locService;
+ @Autowired
+ private ReviseLogItemService reviseLogItemService;
/**
* 搴撳瓨璋冩暣鍗曟槑缁嗘坊鍔�
@@ -36,11 +49,11 @@
public List<ReviseLog> reviseLoc(ReviseLogParams revise, Long loginUserId) {
LocRevise locRevise = locReviseService.getById(revise.getReviseId());
if (Objects.isNull(locRevise)) {
- throw new RuntimeException("璋冩暣鍗曟嵁涓嶅瓨鍦紒锛�");
+ throw new CoolException("璋冩暣鍗曟嵁涓嶅瓨鍦紒锛�");
}
List<ReviseLog> items = revise.getItems();
if (items.isEmpty()) {
- throw new RuntimeException("璋冩暣鍗曟槑缁嗗弬鏁颁负绌猴紒锛�");
+ throw new CoolException("璋冩暣鍗曟槑缁嗗弬鏁颁负绌猴紒锛�");
}
items.forEach(item -> {
ReviseLog reviseLog = new ReviseLog();
@@ -51,9 +64,76 @@
.setUpdateBy(loginUserId)
.setReviseCode(locRevise.getCode()) ;
if (!reviseLogService.save(reviseLog)) {
- throw new RuntimeException("璋冩暣鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�");
+ throw new CoolException("璋冩暣鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�");
}
});
+ locRevise.setExceStatus(CommonExceStatus.COMMON_EXCE_STATUS_UN_EXCE.val);
+
+ if (!locReviseService.updateById(locRevise)) {
+ throw new CoolException("鐘舵�佹洿鏂板け璐ワ紒锛�");
+ }
return items;
}
+
+ /**
+ * @author Ryan
+ * @date 2025/8/18
+ * @description: 纭璋冩暣搴撳瓨
+ * @version 1.0
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R complete(Long id, Long loginUserId) {
+ LocRevise revise = locReviseService.getById(id);
+ if (Objects.isNull(revise)) {
+ throw new CoolException("璋冩暣鍗曚笉瀛樺湪锛侊紒");
+ }
+ 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)) {
+ throw new CoolException("搴撳瓨鏃ュ織涓嶅瓨鍦紒锛�");
+ }
+ List<ReviseLogItem> logItems = reviseLogItemService.list(new LambdaQueryWrapper<ReviseLogItem>().eq(ReviseLogItem::getReviseLogId, logs.getId()));
+ 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("搴撲綅涓嶅瓨鍦紒锛�");
+ }
+ 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("搴撳瓨鏄庣粏淇敼澶辫触锛侊紒");
+ }
+ }
+ });
+ });
+
+ revise.setExceStatus(CommonExceStatus.COMMON_EXCE_STATUS_TASK_DONE.val);
+ if (!locReviseService.updateById(revise)) {
+ throw new CoolException("璋冩暣鍗曚慨鏀瑰け璐ワ紒锛�");
+ }
+ return R.ok();
+ }
}
--
Gitblit v1.9.1