From 2799c6690aff9c1577ba4dc290dc56a28767a769 Mon Sep 17 00:00:00 2001
From: DESKTOP-LMJ82IJ\Eno <creaycat@gmail.com>
Date: 星期六, 19 四月 2025 15:03:43 +0800
Subject: [PATCH] #修改 1. 采购单界面优化及修改
---
rsf-admin/src/page/basicInfo/loc/BindModal.jsx | 35 ++++++-----
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 23 ++++++-
rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx | 4
rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx | 2
rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java | 8 ++
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java | 35 +++++++++++
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenerateTaskParams.java | 3 +
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 64 +++++++++++++++++++++
rsf-server/src/main/resources/application-dev.yml | 2
9 files changed, 153 insertions(+), 23 deletions(-)
diff --git a/rsf-admin/src/page/basicInfo/loc/BindModal.jsx b/rsf-admin/src/page/basicInfo/loc/BindModal.jsx
index 6eca745..38854f7 100644
--- a/rsf-admin/src/page/basicInfo/loc/BindModal.jsx
+++ b/rsf-admin/src/page/basicInfo/loc/BindModal.jsx
@@ -2,6 +2,7 @@
import {
CreateBase,
useTranslate,
+ SearchInput,
TextInput,
NumberInput,
BooleanInput,
@@ -55,7 +56,6 @@
import request from '@/utils/request';
import { Add, Edit, Delete } from '@mui/icons-material';
import _ from 'lodash';
-import { DataGrid } from '@mui/x-data-grid';
import StatusSelectInput from "../../components/StatusSelectInput";
import TreeSelectInput from "@/page/components/TreeSelectInput";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting';
@@ -72,13 +72,14 @@
},
}));
+const filters = [
+ <SearchInput source="condition" alwaysOn />
+]
+
const MatnrModal = ({ open, setOpen }) => {
const refresh = useRefresh();
const translate = useTranslate();
const notify = useNotify();
- const [options, setOptions] = useState({
- condition: null
- });
const [formData, setFormData] = useState({
areaMatId: null,
@@ -133,12 +134,12 @@
groupId: formData.groupId,
matnrId: formData.matnrId,
}
- const res = await request.post(`/locAreaMatRela/matnr/bind`, parmas);
- if (res?.data?.code === 200) {
- handleClose()
- } else {
- notify(res.data.msg);
- }
+ // const res = await request.post(`/locAreaMatRela/matnr/bind`, parmas);
+ // if (res?.data?.code === 200) {
+ // handleClose()
+ // } else {
+ // notify(res.data.msg);
+ // }
}
const [groupId, setGroupId] = useState();
@@ -146,15 +147,17 @@
setGroupId(e.target.value)
}
+
+
return (
- <Dialog open={open} maxWidth="xl" fullWidth>
+ <Dialog open={open} maxWidth="1" fullWidth>
<Form onSubmit={handleSubmit}>
<DialogCloseButton onClose={handleClose} />
<DialogTitle>{translate('toolbar.bindmatnr')}</DialogTitle>
<DialogContent sx={{ mt: 2 }}>
- <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, height: 700 }}>
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, height: 900 }}>
<Grid container spacing={2}>
- <Grid item xs={4}>
+ <Grid item xs={3}>
<ReferenceInput
source="areaMatId"
reference="locAreaMat"
@@ -169,7 +172,7 @@
/>
</ReferenceInput>
</Grid>
- <Grid item xs={4}>
+ <Grid item xs={3}>
<TreeSelectInput
label="table.field.locAreaMatRela.groupId"
resource={'matnrGroup'}
@@ -178,14 +181,14 @@
onChange={(e) => handleChange(e.target.value, 'groupId')}
/>
</Grid>
-
</Grid>
<Grid item xs={4}>
<List
resource="matnr"
filter={{ groupId: formData.groupId }}
+ queryOptions={{}}
+ // filters={filters}
empty={false}
- queryOptions={{options}}
actions={<></>}
>
<StyledDatagrid
diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx
index 5a7e5fe..04cfa63 100644
--- a/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx
@@ -131,7 +131,7 @@
>
<StyledDatagrid
preferenceKey='asnOrderItem'
- bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ bulkActionButtons={false}
rowClick={(id, resource, record) => {
setSelect(record)
setEditDialog(true)
diff --git a/rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx b/rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx
index f9f48aa..e14d8a5 100644
--- a/rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx
+++ b/rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx
@@ -110,14 +110,14 @@
<FilterButton />
{/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
<SelectColumnsButton preferenceKey='waitPakinItem' />
- <MyExportButton />
+ {/* <MyExportButton /> */}
</TopToolbar>
)}
perPage={DEFAULT_ITEM_PAGE_SIZE}
>
<StyledDatagrid
preferenceKey='waitPakinItem'
- bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ bulkActionButtons={false}
rowClick={(id, resource, record) => false}
omit={['id', 'pakinId', 'createTime', 'createBy', 'memo']}
>
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
index c0d588d..7471043 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
@@ -285,4 +285,39 @@
}
return mobileService.defectProducts(trackCode);
}
+
+ @ApiOperation("鑾峰彇缁勬嫋鍏ュ簱淇℃伅")
+ @PostMapping("/pakin/info/{barcode}")
+ @PreAuthorize("hasAuthority('manager:waitPakin:list')")
+ public R getPakinInStock(@PathVariable String barcode) {
+ if (Objects.isNull(barcode)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return mobileService.getPakinInStock(barcode);
+ }
+
+ @ApiOperation("鑾峰彇涓婃灦绔欑偣淇℃伅")
+ @GetMapping("/inStock/sites")
+ @PreAuthorize("hasAuthority('manager:deviceSite:list')")
+ public R getTarSite() {
+ return mobileService.getDeviceSites();
+ }
+
+ @ApiOperation("鑾峰彇鎺ㄨ崘搴撲綅鍒楄〃淇℃伅")
+ @GetMapping("/locs/list")
+ @PreAuthorize("hasAuthority('manager:deviceSite:list')")
+ public R getLocs() {
+ return mobileService.getRecommondLocs();
+ }
+
+ @ApiOperation("鐢熸垚浠诲姟鍒楄〃")
+ @PostMapping("/pakin/task")
+ @PreAuthorize("hasAuthority('manager:deviceSite:list')")
+ public R pakinToTask(@RequestBody Map<String, Object> map) {
+ if (Objects.isNull(map)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return mobileService.generateTask(map, getLoginUserId());
+ }
}
+
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
index 932f558..8fcb6d3 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
@@ -63,4 +63,12 @@
R getItemByContainer(Map<String, Object> params);
R defectProducts(String trackCode);
+
+ R getPakinInStock(String barcode);
+
+ R getDeviceSites();
+
+ R getRecommondLocs();
+
+ R generateTask(Map<String, Object> map, Long loginUserId);
}
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 36b6564..c287493 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
@@ -17,6 +17,7 @@
import com.vincent.rsf.server.common.utils.CommonUtil;
import com.vincent.rsf.server.common.utils.FieldsUtils;
import com.vincent.rsf.server.common.utils.JwtUtil;
+import com.vincent.rsf.server.manager.controller.params.GenerateTaskParams;
import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
import com.vincent.rsf.server.manager.entity.*;
@@ -123,6 +124,8 @@
private LocAreaRelaMapper locAreaRelaMapper;
@Autowired
private LocAreaMapper locAreaMapper;
+ @Autowired
+ private DeviceSiteMapper deviceSiteMapper;
/**
* @author Ryan
@@ -822,6 +825,67 @@
}
/**
+ * @author Ryan
+ * @description 鑾峰彇鍏ュ簱缁勬嫋淇℃伅
+ * @param barcode
+ * @return
+ */
+ @Override
+ public R getPakinInStock(String barcode) {
+ WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, barcode));
+ if (Objects.isNull(waitPakin)) {
+ throw new CoolException("缁勬嫋鍗曟嵁涓嶅瓨鍦紒锛�");
+ }
+ List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, waitPakin.getId()));
+ if (pakinItems.isEmpty()) {
+ return R.ok(new ArrayList<>());
+ }
+ return R.ok(pakinItems);
+ }
+
+ /**
+ * @author Ryan
+ * @description 鑾峰彇搴撳彛绔欑偣淇℃伅
+ * @return
+ */
+ @Override
+ public R getDeviceSites() {
+ return R.ok(deviceSiteMapper.selectList(new LambdaQueryWrapper<DeviceSite>().eq(DeviceSite::getStatus, 1).groupBy(DeviceSite::getSite)));
+ }
+
+ /**
+ * @author Ryan
+ * @description 鑾峰彇鎺ㄨ崘搴撲綅
+ * @return
+ */
+ @Override
+ public R getRecommondLocs() {
+ return R.ok(locService.list(new LambdaQueryWrapper<Loc>().last("limit 10")));
+ }
+
+ /**
+ * @param map
+ * @param loginUserId
+ * @return
+ * @author Ryan
+ * @description 鐢熸垚浠诲姟鍒楄〃
+ */
+ @Override
+ public R generateTask(Map<String, Object> map, Long loginUserId) {
+ String barcode = map.get("barcode").toString();
+ List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, barcode));
+ if (waitPakins.isEmpty()) {
+ throw new CoolException("鍗曟嵁涓嶅瓨鍦� 锛侊紒");
+ }
+ GenerateTaskParams taskParams = new GenerateTaskParams();
+ taskParams.setWaitPakins(waitPakins)
+ .setSiteId(Long.parseLong(map.get("site").toString()))
+ .setLocCode(map.get("locCode").toString());
+ return R.ok(taskService.generateTasks(taskParams, loginUserId));
+
+ }
+
+ /**
* 鑾峰彇ReceiptDetlsDtos
*/
private R getAsnOrderItem(List<AsnOrderItem> items) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenerateTaskParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenerateTaskParams.java
index 3172a32..a2b5e26 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenerateTaskParams.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenerateTaskParams.java
@@ -26,4 +26,7 @@
@ApiModelProperty("绔欑偣ID")
public Long siteId;
+
+ @ApiModelProperty("搴撲綅缂栫爜")
+ public String locCode;
}
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 5657acc..7b25c0c 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
@@ -104,8 +104,25 @@
.setBarcode(pakin.getBarcode())
.setTargSite(deviceSite.getDeviceCode())
.setCreateBy(loginUserId)
- .setUpdateBy(loginUserId)
- .setTargSite(LocManageUtil.getTargetSite());
+ .setUpdateBy(loginUserId);
+
+ if (!Objects.isNull(waitPakin.getSiteId()) && waitPakin.getSiteId() > 0) {
+ DeviceSite site = deviceSiteService.getById(waitPakin.getSiteId());
+ task.setTargSite(site.getSite() + "");
+ } else {
+ task.setTargSite(LocManageUtil.getTargetSite());
+ }
+ if (!Objects.isNull(waitPakin.getLocCode()) && StringUtils.isNotBlank(waitPakin.getLocCode())) {
+ List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, waitPakin.getLocCode()));
+// if (!locs.isEmpty()) {
+// throw new CoolException("搴撲綅閿欒锛氱浉鍚屽簱浣嶅簲鍙竴鏉�")
+// }
+ Loc loc = locs.stream().findFirst().get();
+ task.setTargSite(loc.getCode());
+ } else {
+ task.setTargSite(LocManageUtil.getTargetSite());
+ }
+
if (!this.save(task)) {
throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒");
}
@@ -123,7 +140,7 @@
BeanUtils.copyProperties(item, taskItem);
AsnOrder order = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, item.getAsnId()));
if (Objects.isNull(order)) {
- throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+ throw new CoolException("鏁版嵁閿欒: 鍗曟嵁涓嶅瓨鍦紒锛�");
}
taskItem.setTaskId(task.getId())
.setOrderType(OrderType.ORDER_RECEIPT.type)
diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml
index 68564a7..efd3d05 100644
--- a/rsf-server/src/main/resources/application-dev.yml
+++ b/rsf-server/src/main/resources/application-dev.yml
@@ -12,7 +12,7 @@
matching-strategy: ANT_PATH_MATCHER
datasource:
driver-class-name: com.mysql.jdbc.Driver
-# url: jdbc:mysql://192.168.0.116:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+# url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
# username: rsf
--
Gitblit v1.9.1