From 7977627e83ce88cb34dfd6e3243ef790b493bd70 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 12 五月 2025 16:26:09 +0800
Subject: [PATCH] 质检单功能优化 新增配置自动收货功能
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java | 18 +++
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java | 68 +++++++++--
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 3
rsf-admin/src/page/orders/qlyInspect/QlyIsptItemList.jsx | 26 +++
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.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/QlyIsptItemServiceImpl.java | 5
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java | 2
rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx | 4
rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx | 130 +++++++++++++++++++++
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehouseAreasType.java | 19 +++
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderType.java | 22 +--
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java | 10
15 files changed, 272 insertions(+), 47 deletions(-)
diff --git a/rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx b/rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx
index a2667dc..3c01e8c 100644
--- a/rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx
+++ b/rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx
@@ -172,6 +172,10 @@
export default QlyInspectList;
+const PrintLabelButton = () => {
+ const record = useRecordContext();
+}
+
const InspectionButton = () => {
const record = useRecordContext();
const notify = useNotify();
diff --git a/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemList.jsx b/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemList.jsx
index fd1be19..56e5e25 100644
--- a/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemList.jsx
+++ b/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemList.jsx
@@ -43,6 +43,8 @@
import MyExportButton from '../../components/MyExportButton';
import PageDrawer from "../../components/PageDrawer";
import request from '@/utils/request';
+import MyField from "@/page/components/MyField";
+import QlyIsptItemResult from "./QlyIsptItemResult";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting';
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
@@ -89,6 +91,7 @@
const translate = useTranslate();
const [createDialog, setCreateDialog] = useState(false);
const [drawerVal, setDrawerVal] = useState(false);
+ const [itemInfo, setItemInfo] = useState({})
const isptId = useGetRecordId();
const { data: dicts, isPending, error } = useGetOne('qlyInspect', { id: isptId });
if (dicts == null) { return }
@@ -96,6 +99,7 @@
return (
<Box display="flex">
<List
+ storeKey="qlyIsptItem"
resource="qlyIsptItem"
filter={{ ispectId: isptId }}
sx={{
@@ -119,19 +123,24 @@
)}
perPage={DEFAULT_ITEM_PAGE_SIZE}
>
- <DynamicFields />
+ <DynamicFields
+ drawerVal={drawerVal}
+ setDrawerVal={setDrawerVal}
+ itemInfo={itemInfo}
+ setItemInfo={setItemInfo} />
</List>
<QlyIsptItemCreate
open={createDialog}
record={dicts}
setOpen={setCreateDialog}
/>
- <PageDrawer
- title='QlyIsptItem Detail'
+
+ <QlyIsptItemResult
+ record={itemInfo}
drawerVal={drawerVal}
setDrawerVal={setDrawerVal}
>
- </PageDrawer>
+ </QlyIsptItemResult>
</Box>
)
}
@@ -141,6 +150,7 @@
const DynamicFields = (props) => {
+ const { drawerVal, setDrawerVal, itemInfo, setItemInfo } = props
const translate = useTranslate();
const notify = useNotify();
const [columns, setColumns] = useState([]);
@@ -163,7 +173,13 @@
<TextField source="stockBatch" label="table.field.qlyIsptItem.stockBatch" />,
<NumberField source="rcptQty" label="table.field.qlyIsptItem.rcptQty" />,
<NumberField source="dlyQty" label="table.field.qlyIsptItem.dlyQty" />,
- <NumberField source="anfme" label="table.field.qlyIsptItem.anfme" />,
+ <MyField source="anfme" label="table.field.qlyIsptItem.anfme"
+ onClick={(event, record, val) => {
+ event.stopPropagation();
+ setItemInfo(record)
+ setDrawerVal(!!drawerVal && drawerVal === val ? null : val);
+ }}
+ />,
<TextField source="splrName" label="table.field.qlyIsptItem.splrName" />,
<NumberField source="isptResult$" label="table.field.qlyIsptItem.isptResult" />,
]
diff --git a/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx b/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx
new file mode 100644
index 0000000..142f9d4
--- /dev/null
+++ b/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx
@@ -0,0 +1,130 @@
+import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
+import { useNavigate } from 'react-router-dom';
+import {
+ 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,
+ useGetOne,
+ Button,
+ useRefresh,
+ useGetRecordId,
+} from 'react-admin';
+import { Box, Typography, Card, Stack, LinearProgress, Dialog, DialogActions, DialogContent, DialogTitle, } from '@mui/material';
+import { styled } from '@mui/material/styles';
+import QlyIsptItemCreate from "./QlyIsptItemCreate";
+import EmptyData from "../../components/EmptyData";
+import MyCreateButton from "../../components/MyCreateButton";
+import MyExportButton from '../../components/MyExportButton';
+import PageDrawer from "../../components/PageDrawer";
+import DialogCloseButton from "../../components/DialogCloseButton";
+import request from '@/utils/request';
+import MyField from "@/page/components/MyField";
+import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting';
+
+
+
+const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
+ '& .css-1vooibu-MuiSvgIcon-root': {
+ height: '.9em'
+ },
+ '& .RaDatagrid-row': {
+ cursor: 'auto'
+ },
+ '& .column-name': {
+ },
+ '& .opt': {
+ width: 200
+ },
+}));
+
+const QlyIsptItemResult = (props) => {
+ const { record, drawerVal, setDrawerVal } = props
+ const translate = useTranslate();
+ const [createDialog, setCreateDialog] = useState(false);
+ const handleClose = (event, reason) => {
+ if (reason !== "backdropClick") {
+ setDrawerVal(false);
+ }
+ };
+
+ return (
+ <Dialog
+ open={drawerVal}
+ onClose={handleClose}
+ aria-labelledby="form-dialog-title"
+ fullWidth
+ disableRestoreFocus
+ maxWidth="lg"
+ >
+ <DialogTitle id="form-dialog-title" sx={{
+ position: 'sticky',
+ top: 0,
+ backgroundColor: 'background.paper',
+ zIndex: 1000
+ }}>
+ <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
+ <DialogCloseButton onClose={handleClose} />
+ </Box>
+ </DialogTitle>
+ <DialogContent sx={{ mt: 2 }}>
+ <List
+ storeKey="IsptItem"
+ resource="qlyIsptItem/ispt/result"
+ filter={{ id: record?.id }}
+ empty={false}
+ filters={false}
+ sort={{ field: "create_time", order: "desc" }}
+ actions={false}
+ perPage={DEFAULT_ITEM_PAGE_SIZE}
+ >
+ <StyledDatagrid
+ preferenceKey='IsptItem'
+ bulkActionButtons={false}
+ rowClick={false}
+ omit={['id', 'memo', 'dlyQty', 'label', 'stockBatch', 'picPath', 'ispectId']}
+ >
+ <NumberField source="id" />
+ <NumberField source="ispectId" label="table.field.qlyIsptItem.ispectId" />
+ <TextField source="matnrCode" label="table.field.qlyIsptItem.matnrCode" />
+ <TextField source="maktx" label="table.field.qlyIsptItem.maktx" />
+ <TextField source="label" label="table.field.qlyIsptItem.label" />
+ <TextField source="splrBatch" label="table.field.qlyIsptItem.splrBatch" />
+ <NumberField source="dlyQty" label="table.field.qlyIsptItem.dlyQty" />
+ <NumberField source="anfme" label="table.field.qlyIsptItem.anfme" />
+ <TextField source="splrName" label="table.field.qlyIsptItem.splrName" />
+ <NumberField source="isptResult$" label="table.field.qlyIsptItem.isptResult" />
+ </StyledDatagrid>
+ </List>
+ </DialogContent>
+ </Dialog>
+ )
+}
+
+export default QlyIsptItemResult;
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 70094d9..c012a35 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
@@ -694,7 +694,8 @@
/**鑾峰彇骞冲簱璁㈠崟*/
AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>()
.eq(AsnOrder::getId, OrderId)
- .eq(AsnOrder::getType, OrderType.ORDER_PLAT_IN.type));
+ .eq(AsnOrder::getWkType, OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type)
+ .eq(AsnOrder::getType, OrderType.ORDER_IN.type));
if (Objects.isNull(order)) {
throw new CoolException("闈炲钩搴撳崟鎹笉鍙墽琛屼汉宸ヤ笂鏋讹紒锛�");
}
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 73248a4..5440f0c 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
@@ -54,7 +54,7 @@
BeanUtils.copyProperties(ors, purchase);
String wkVal = SerialRuleUtils.generateRuleCode(SerialRuleCode.PURCHASE_CODE, purchase);
purchase.setCode(wkVal)
- .setType(OrderType.ORDER_PURCHASE_IN.type);
+ .setType(OrderType.ORDER_IN.type);
if (!purchaseService.save(purchase)) {
throw new CoolException("閲囪喘鍗曟嵁淇濆瓨澶辫触");
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
index d999527..b5d8d35 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -186,7 +186,7 @@
BeanUtils.copyProperties(item, taskItem);
return taskItem.setTaskId(taskId)
- .setOrderType(OrderType.ORDER_RECEIPT.type)
+ .setOrderType(OrderType.ORDER_IN.type)
.setSource(item.getId())
.setTrackCode(item.getTrackCode())
.setCreateBy(loginUserId)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java
index c9b90c3..74771cf 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java
@@ -76,8 +76,26 @@
page.setRecords(records);
return R.ok(page);
+ }
+ @PreAuthorize("hasAuthority('manager:qlyIsptItem:list')")
+ @PostMapping("/qlyIsptItem/ispt/result/page")
+ public R getIsptResultList(@RequestBody Map<String, Object> map) {
+ BaseParam baseParam = buildParam(map, BaseParam.class);
+ PageParam<QlyIsptItem, BaseParam> pageParam = new PageParam<>(baseParam, QlyIsptItem.class);
+ QueryWrapper<QlyIsptItem> queryWrapper = pageParam.buildWrapper(true);
+ IPage<QlyIsptItem> page = qlyIsptItemService.pageByIsptResult(pageParam, queryWrapper);
+ List<QlyIsptItem> records = page.getRecords();
+ for (QlyIsptItem record : records) {
+ if (!Objects.isNull(record.getFieldsIndex())) {
+ Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex());
+ record.setExtendFields(fields);
+ }
+ }
+ page.setRecords(records);
+
+ return R.ok(page);
}
@PreAuthorize("hasAuthority('manager:qlyIsptItem:list')")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
index d45f65c..c69c49e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
@@ -60,7 +60,7 @@
*/
@Excel(name = "*鍗曟嵁绫诲瀷")
@ApiModelProperty(value = "*鍗曟嵁绫诲瀷")
- @ExcelComment(value = "type", example = "閲囪喘鍏ュ簱鍗�")
+ @ExcelComment(value = "type", example = "鍏ュ簱鍗�")
private String type;
/**
@@ -68,7 +68,7 @@
*/
@Excel(name = "*涓氬姟绫诲瀷")
@ApiModelProperty(value = "*涓氬姟绫诲瀷")
- @ExcelComment(value = "wkType", example = "瀹屽伐鍏ュ簱鍗�")
+ @ExcelComment(value = "wkType", example = "閲囪喘鍏ュ簱鍗�")
private String wkType;
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 becf65f..70eb44f 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
@@ -9,12 +9,8 @@
*/
public enum OrderType {
//璁㈠崟绫诲瀷
- ORDER_PURCHASE_IN("purchase", "閲囪喘鍏ュ簱鍗�"),
ORDER_OUT("out", "鍑哄簱鍗�"),
ORDER_IN("in", "鍏ュ簱鍗�"),
- ORDER_RECEIPT("receipt", "鏀惰揣鍗�"),
- ORDER_PLAT_IN("plat in", "骞冲簱鍏ュ簱鍗�"),
-
;
OrderType(String type, String desc) {
@@ -30,12 +26,6 @@
return OrderType.ORDER_IN.type;
} else if (desc.equals(OrderType.ORDER_OUT.desc)) {
return OrderType.ORDER_OUT.type;
- } else if (desc.equals(OrderType.ORDER_PLAT_IN.desc)) {
- return OrderType.ORDER_PLAT_IN.type;
- } else if (desc.equals(OrderType.ORDER_RECEIPT.desc)) {
- return OrderType.ORDER_RECEIPT.type;
- } else if (desc.equals(OrderType.ORDER_PURCHASE_IN.desc)) {
- return OrderType.ORDER_PURCHASE_IN.type;
}
return null;
}
@@ -45,12 +35,12 @@
return OrderType.ORDER_IN.desc;
} else if (type.equals(OrderType.ORDER_OUT.type)) {
return OrderType.ORDER_OUT.desc;
- } else if (type.equals(OrderType.ORDER_PLAT_IN.type)) {
- return OrderType.ORDER_PLAT_IN.desc;
- } else if (type.equals(OrderType.ORDER_RECEIPT.type)) {
- return OrderType.ORDER_RECEIPT.desc;
- } else if (type.equals(OrderType.ORDER_PURCHASE_IN.type)) {
- return OrderType.ORDER_PURCHASE_IN.desc;
+// } else if (type.equals(OrderType.ORDER_PLAT_IN.type)) {
+// return OrderType.ORDER_PLAT_IN.desc;
+// } else if (type.equals(OrderType.ORDER_RECEIPT.type)) {
+// return OrderType.ORDER_RECEIPT.desc;
+// } else if (type.equals(OrderType.ORDER_PURCHASE_IN.type)) {
+// return OrderType.ORDER_PURCHASE_IN.desc;
}
return null;
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java
index 2f6b32b..69a46ce 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java
@@ -13,7 +13,7 @@
ORDER_WORK_TYPE_PROD("2", "鐢熶骇鍏ュ簱鍗�"),
ORDER_WORK_TYPE_PURCHASE("3", "棰嗘枡閫�鍥炲叆搴撳崟"),
ORDER_WORK_TYPE_SALE("4", "閿�鍞��鍥炲叆搴撳崟"),
- ORDER_WORK_TYPE_RETURN("5", "鍏跺畠鍏ュ簱鍗�"),
+ ORDER_WORK_TYPE_OTHER_IN("5", "鍏跺畠鍏ュ簱鍗�"),
ORDER_WORK_TYPE_SUPPLIER("11", "閿�鍞嚭搴撳崟"),
ORDER_WORK_TYPE_RETURN_ORDER("12", "棰嗘枡鍑哄簱鍗�"),
ORDER_WORK_TYPE_PURCHASE_RETURN("13", "閲囪喘閫�鍥炲嚭搴撳崟"),
@@ -37,8 +37,8 @@
return OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type;
} else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SALE.desc)) {
return OrderWorkType.ORDER_WORK_TYPE_SALE.type;
- } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN.desc)) {
- return OrderWorkType.ORDER_WORK_TYPE_RETURN.type;
+ } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.desc)) {
+ return OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type;
} else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.desc)) {
return OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.type;
} else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.desc)) {
@@ -60,8 +60,8 @@
return OrderWorkType.ORDER_WORK_TYPE_PURCHASE.desc;
} else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_SALE.type)) {
return OrderWorkType.ORDER_WORK_TYPE_SALE.desc;
- } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN.type)) {
- return OrderWorkType.ORDER_WORK_TYPE_RETURN.desc;
+ } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type)) {
+ return OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.desc;
} else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.type)) {
return OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.desc;
} else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehouseAreasType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehouseAreasType.java
new file mode 100644
index 0000000..089dd71
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehouseAreasType.java
@@ -0,0 +1,19 @@
+package com.vincent.rsf.server.manager.enums;
+
+public enum WarehouseAreasType {
+
+ WAREHOUSE_AREAS_TYPE_RECEIPT("receipt", "鏀惰揣鍖�"),
+ WAREHOUSE_AREAS_TYPE_DELIVERY("delivery", "寰呭彂鍖�"),
+ ORDER_WORK_TYPE_COLLECTION("collection", "闆嗚揣鍖�"),
+ ORDER_WORK_TYPE_CTU("CTU", "CTU搴撳尯"),
+ ORDER_WORK_TYPE_CRN("CRN", "鍫嗗灈鏈�")
+ ;
+
+ WarehouseAreasType(String type, String desc) {
+ this.type = type;
+ this.desc = desc;
+ }
+
+ public String type;
+ public String desc;
+}
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 ce3825f..6519f6d 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
@@ -1,14 +1,18 @@
package com.vincent.rsf.server.manager.schedules;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.common.config.SysStockProperties;
import com.vincent.rsf.server.common.utils.CommonUtil;
import com.vincent.rsf.server.common.utils.DateUtils;
+import com.vincent.rsf.server.manager.controller.params.WarehouseAreaParam;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.AsnExceStatus;
import com.vincent.rsf.server.manager.enums.PakinIOStatus;
+import com.vincent.rsf.server.manager.enums.WarehouseAreasType;
import com.vincent.rsf.server.manager.service.*;
+import com.vincent.rsf.server.manager.service.impl.WarehouseAreasItemServiceImpl;
import com.vincent.rsf.server.system.constant.GlobalConfigCode;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.entity.Config;
@@ -60,6 +64,10 @@
private WaitPakinItemLogService waitPakinItemLogService;
@Autowired
private ConfigService configService;
+ @Autowired
+ private WarehouseAreasService warehouseAreasService;
+ @Autowired
+ private WarehouseAreasItemServiceImpl warehouseAreasItemService;
/**
@@ -68,32 +76,64 @@
* @description: 鐩存帴缁勬墭寮�鍏充负true锛屽皢鏀惰揣鍗曠洿鎺ュ姞鍏ヤ复鏃跺簱瀛�
* @version 1.0
*/
+// @Scheduled(cron = "0 0/05 * * * ? ")
+ @Scheduled(cron = "0/25 * * * * ?")
+ @Transactional(rollbackFor = Exception.class)
public synchronized void IgnoreReceipt() {
Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.DIRECT_WAIT_PAKIN));
if (Objects.isNull(config)) {
return;
}
- if (!Boolean.getBoolean(config.getVal())) {
+
+ if (!Boolean.parseBoolean(config.getVal())) {
return;
}
List<AsnOrder> orders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val));
- if (orders.isEmpty()) {
+ if (!orders.isEmpty()) {
for (AsnOrder order : orders) {
List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId()));
+ if (orderItems.isEmpty()) {
+ return;
+ }
+ List<WarehouseAreasItem> items = new ArrayList<>();
+ for (AsnOrderItem item : orderItems) {
+ WarehouseAreas one = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>()
+ .eq(WarehouseAreas::getType, WarehouseAreasType.WAREHOUSE_AREAS_TYPE_RECEIPT.type), false);
+ Long areaId = Objects.isNull(one) ? null : one.getId();
+ String areaName = Objects.isNull(one) ? null : one.getName();
+ WarehouseAreasItem param = new WarehouseAreasItem();
+ BeanUtils.copyProperties(item, param);
+ param.setAreaId(one.getId())
+ .setAsnCode(order.getCode())
+ .setAreaId(areaId)
+ .setAreaName(areaName)
+ .setAsnId(order.getId());
+ items.add(param);
+ if (!asnOrderItemService.update(new LambdaUpdateWrapper<AsnOrderItem>().set(AsnOrderItem::getQty, item.getAnfme()).eq(AsnOrderItem::getId, item.getId()))) {
+ throw new CoolException("鏀惰揣鍗曟槑缁嗗畬鎴愭暟閲忎慨鏀瑰け璐ワ紒锛�");
+ }
+ }
+ if (!warehouseAreasItemService.saveBatch(items)) {
+ throw new CoolException("鏀惰揣鍗曚繚瀛樿嚦鏀惰揣鍖烘墽琛屽け璐ワ紒锛�");
+ }
+ if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>()
+ .set(AsnOrder::getQty, order.getQty())
+ .set(AsnOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val)
+ .eq(AsnOrder::getId, order.getId()))) {
+ throw new CoolException("鏀惰揣鍗曠姸鎬佷慨鏀瑰け璐ワ紒锛�");
+ }
}
}
-
}
-
/**
- * @author Ryan
- * @description 鏍规嵁PO鍗曟嵁鐢熸垚ASN鍗�,鑷姩鐢熸垚ASN鍗曚负鍏ㄩ噺鐢熸垚
- * @throws
* @return
+ * @throws
+ * @author Ryan
+ * @description 鏍规嵁PO鍗曟嵁鐢熸垚ASN鍗�, 鑷姩鐢熸垚ASN鍗曚负鍏ㄩ噺鐢熸垚
* @time 2025/3/3 15:44
*/
@Scheduled(cron = "0 0/05 * * * ? ")
@@ -176,17 +216,17 @@
}
/**
- * @author Ryan
- * @description 鐢熸垚鐗╂枡鏍囩
* @param
* @return
+ * @author Ryan
+ * @description 鐢熸垚鐗╂枡鏍囩
* @time 2025/3/29 12:35
*/
@Scheduled(cron = "0 0/05 * * * ? ")
@Transactional(rollbackFor = Exception.class)
public void generateMatnrLabel() {
List<AsnOrderItem> list = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>()
- .isNull(AsnOrderItem::getTrackCode)
+ .isNull(AsnOrderItem::getTrackCode)
.select(AsnOrderItem::getId));
if (Objects.isNull(list) || list.isEmpty()) {
return;
@@ -208,16 +248,16 @@
}
/**
- * @author Ryan
- * @description 缁勬嫋鍘嗗彶妗�
* @param
* @return
+ * @author Ryan
+ * @description 缁勬嫋鍘嗗彶妗�
* @time 2025/3/29 12:36
*/
@Scheduled(cron = "0/25 * * * * ?")
@Transactional(rollbackFor = Exception.class)
public void pakinLog() {
- List<WaitPakin> pakinIds = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>()
+ 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()) {
@@ -229,7 +269,7 @@
throw new CoolException("缁勬嫋鍗曚负绌猴紒锛�");
}
List<WaitPakinLog> pakinLogs = new ArrayList<>();
- pakins.forEach(pakin ->{
+ pakins.forEach(pakin -> {
WaitPakinLog log = new WaitPakinLog();
BeanUtils.copyProperties(pakin, log);
log.setPakinId(pakin.getId()).setIoStatus(Short.parseShort("2"));
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java
index 14be580..cec5a02 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java
@@ -13,4 +13,6 @@
boolean batchUpdate(IsptItemsParams params, Long loginUserId);
IPage<QlyIsptItem> pageByWrapper(PageParam<QlyIsptItem, BaseParam> pageParam, QueryWrapper<QlyIsptItem> queryWrapper);
+
+ IPage<QlyIsptItem> pageByIsptResult(PageParam<QlyIsptItem, BaseParam> pageParam, QueryWrapper<QlyIsptItem> queryWrapper);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
index cfcbd2c..f4457a3 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
@@ -149,4 +149,9 @@
}
return page;
}
+
+ @Override
+ public IPage<QlyIsptItem> pageByIsptResult(PageParam<QlyIsptItem, BaseParam> pageParam, QueryWrapper<QlyIsptItem> queryWrapper) {
+ return this.baseMapper.pageByWrapper(pageParam, queryWrapper);
+ }
}
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 4f9e716..426b81f 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
@@ -116,7 +116,7 @@
TaskItem taskItem = new TaskItem();
BeanUtils.copyProperties(item, taskItem);
taskItem.setTaskId(task.getId())
- .setOrderType(OrderType.ORDER_RECEIPT.type)
+ .setOrderType(OrderType.ORDER_IN.type)
.setSource(item.getId())
.setTrackCode(item.getTrackCode())
.setCreateBy(loginUserId)
@@ -244,7 +244,7 @@
// throw new CoolException("鏁版嵁閿欒: 鍗曟嵁涓嶅瓨鍦紒锛�");
// }
taskItem.setTaskId(task.getId())
- .setOrderType(OrderType.ORDER_RECEIPT.type)
+ .setOrderType(OrderType.ORDER_IN.type)
.setSource(item.getId())
.setTrackCode(item.getTrackCode())
.setCreateBy(loginUserId)
--
Gitblit v1.9.1