rsf-admin/src/page/orders/check/CheckOrderPub.jsx
@@ -441,16 +441,12 @@ } }) console.log(records); // const { data: { code, data, msg } } = await request.post('/check/generate/tasks', records); // if (code == 200) { // refresh(); // redirect("/task") // } else { // notify(msg); // } const { data: { code, data, msg } } = await request.post('/check/generate/tasks', records); if (code == 200) { refresh(); } else { notify(msg); } } return ( <ConfirmButton rsf-admin/src/page/orders/check/checkDiff/CheckDiffCreate.jsx
File was renamed from rsf-admin/src/page/checkDiff/CheckDiffCreate.jsx @@ -27,9 +27,9 @@ Grid, Box, } from '@mui/material'; import DialogCloseButton from "../components/DialogCloseButton"; import StatusSelectInput from "../components/StatusSelectInput"; import MemoInput from "../components/MemoInput"; import DialogCloseButton from "../../../components/DialogCloseButton"; import StatusSelectInput from "../../../components/StatusSelectInput"; import MemoInput from "../../../components/MemoInput"; const CheckDiffCreate = (props) => { const { open, setOpen } = props; rsf-admin/src/page/orders/check/checkDiff/CheckDiffEdit.jsx
rsf-admin/src/page/orders/check/checkDiff/CheckDiffList.jsx
File was renamed from rsf-admin/src/page/checkDiff/CheckDiffList.jsx @@ -36,11 +36,11 @@ import { styled } from '@mui/material/styles'; import CheckDiffCreate from "./CheckDiffCreate"; import CheckDiffPanel from "./CheckDiffPanel"; 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 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'; import * as Common from '@/utils/common'; rsf-admin/src/page/orders/check/checkDiff/CheckDiffPanel.jsx
File was renamed from rsf-admin/src/page/checkDiff/CheckDiffPanel.jsx @@ -4,7 +4,7 @@ useTranslate, useRecordContext, } from 'react-admin'; import PanelTypography from "../components/PanelTypography"; import PanelTypography from "../../../components/PanelTypography"; import * as Common from '@/utils/common' const CheckDiffPanel = () => { rsf-admin/src/page/orders/check/checkDiff/index.jsx
rsf-admin/src/page/orders/check/checkDiffItem/CheckDiffItemCreate.jsx
File was renamed from rsf-admin/src/page/checkDiffItem/CheckDiffItemCreate.jsx @@ -27,9 +27,9 @@ Grid, Box, } from '@mui/material'; import DialogCloseButton from "../components/DialogCloseButton"; import StatusSelectInput from "../components/StatusSelectInput"; import MemoInput from "../components/MemoInput"; import DialogCloseButton from "../../../components/DialogCloseButton"; import StatusSelectInput from "../../../components/StatusSelectInput"; import MemoInput from "../../../components/MemoInput"; const CheckDiffItemCreate = (props) => { const { open, setOpen } = props; rsf-admin/src/page/orders/check/checkDiffItem/CheckDiffItemEdit.jsx
File was renamed from rsf-admin/src/page/checkDiffItem/CheckDiffItemEdit.jsx @@ -24,10 +24,10 @@ 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 "../components/EditBaseAside"; import CustomerTopToolBar from "../components/EditTopToolBar"; import MemoInput from "../components/MemoInput"; import StatusSelectInput from "../components/StatusSelectInput"; import EditBaseAside from "../../../components/EditBaseAside"; import CustomerTopToolBar from "../../../components/EditTopToolBar"; import MemoInput from "../../../components/MemoInput"; import StatusSelectInput from "../../../components/StatusSelectInput"; const FormToolbar = () => { const { getValues } = useFormContext(); rsf-admin/src/page/orders/check/checkDiffItem/CheckDiffItemList.jsx
File was renamed from rsf-admin/src/page/checkDiffItem/CheckDiffItemList.jsx @@ -36,11 +36,11 @@ import { styled } from '@mui/material/styles'; import CheckDiffItemCreate from "./CheckDiffItemCreate"; import CheckDiffItemPanel from "./CheckDiffItemPanel"; 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 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'; import * as Common from '@/utils/common'; rsf-admin/src/page/orders/check/checkDiffItem/CheckDiffItemPanel.jsx
File was renamed from rsf-admin/src/page/checkDiffItem/CheckDiffItemPanel.jsx @@ -4,7 +4,7 @@ useTranslate, useRecordContext, } from 'react-admin'; import PanelTypography from "../components/PanelTypography"; import PanelTypography from "../../../components/PanelTypography"; import * as Common from '@/utils/common' const CheckDiffItemPanel = () => { rsf-admin/src/page/orders/check/checkDiffItem/index.jsx
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/CheckDiff.java
@@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableLogic; import java.text.SimpleDateFormat; import java.util.Date; import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import java.text.SimpleDateFormat; import java.util.Date; @@ -22,6 +24,7 @@ import java.util.Date; @Data @Accessors(chain = true) @TableName("man_check_diff") public class CheckDiff implements Serializable { @@ -40,6 +43,10 @@ @ApiModelProperty(value= "盘点单") private String orderCode; @ApiModelProperty("盘点单ID ") private Long orderId; /** * 盘点类型 0: 明盘 1: 暗盘 */ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/CheckDiffItem.java
@@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableLogic; import java.text.SimpleDateFormat; import java.util.Date; import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import java.text.SimpleDateFormat; import java.util.Date; @@ -22,6 +24,7 @@ import java.util.Date; @Data @Accessors(chain = true) @TableName("man_check_diff_item") public class CheckDiffItem implements Serializable { @@ -40,6 +43,12 @@ @ApiModelProperty(value= "盘点ID") private Long checkId; @ApiModelProperty("任务ID") private Long taskId; @ApiModelProperty("任务明细ID") private Long taskItemId; /** * 盘点单 */ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java
@@ -71,6 +71,9 @@ @ApiModelProperty(value= "业务类型") private String wkType; @ApiModelProperty("盘点类型") private Integer checkType; /** * 送货数量 */ rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CheckDiffExceStatus.java
New file @@ -0,0 +1,21 @@ package com.vincent.rsf.server.manager.enums; public enum CheckDiffExceStatus { //盘点差异单执行状态 CHECK_DIFF_EXCE_STATUS_UN("0", "未执行"), CHECK_DIFF_EXCE_STATUS_INIT("1", "初始化"), CHECK_DIFF_EXCE_STATUS_ING("2", "执行中"), CHECK_DIFF_EXCE_STATUS_DONE("3", "执行完成"), ; CheckDiffExceStatus(String val, String desc) { this.val = Integer.valueOf(val); this.desc = desc; } public Integer val; public String desc; } rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CheckOrderSchedules.java
New file @@ -0,0 +1,104 @@ package com.vincent.rsf.server.manager.schedules; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.CheckDiffExceStatus; import com.vincent.rsf.server.manager.enums.CheckExceStatus; import com.vincent.rsf.server.manager.enums.TaskStsType; import com.vincent.rsf.server.manager.enums.TaskType; import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.system.utils.SystemAuthUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.stream.Collectors; /** * @author Ryan * @version 1.0 * @date 2025/7/18 * @description: 盘点单任务档 */ @Component public class CheckOrderSchedules { @Autowired private TaskService taskService; @Autowired private TaskItemService taskItemService; @Autowired private CheckDiffService checkDiffService; @Autowired private CheckDiffItemService checkDiffItemService; @Autowired private CheckOrderService checkOrderService; @Autowired private CheckOrderItemService checkOrderItemService; /** * @author Ryan * @date 2025/7/18 * @description: 自动获取已生成盘点任务的盘点列表 * @version 1.0 */ @Scheduled(cron = "0/25 * * * * ?") @Transactional(rollbackFor = Exception.class) public void genReCheck() { List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>() .notExists("SELECT 1 FROM man_check_diff_item cdi WHERE id = cdi.task_item_id")); if (taskItems.isEmpty()) { return; } Long loginUserId = SystemAuthUtils.getLoginUserId(); Map<Long, List<TaskItem>> taskMps = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getOrderId)); taskMps.keySet().forEach(orderId -> { WkOrder order = checkOrderService.getById(orderId); if (Objects.isNull(order)) { throw new CoolException("盘点单据不存在!!"); } CheckDiff checkDiff = checkDiffService.getOne(new LambdaQueryWrapper<CheckDiff>().eq(CheckDiff::getOrderId, orderId)); if (Objects.isNull(checkDiff)) { checkDiff = new CheckDiff(); checkDiff.setAnfme(order.getAnfme()) .setCheckType(order.getCheckType()) .setOrderCode(order.getCode()) .setExceStatus(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_ING.val) .setCreateBy(loginUserId) .setCreateTime(new Date()) .setUpdateBy(loginUserId) .setUpdateTime(new Date()) .setOrderId(order.getId()); if (!checkDiffService.save(checkDiff)) { throw new CoolException("盘点差异单保存失败!!"); } } List<TaskItem> items = taskMps.get(orderId); List<CheckDiffItem> diffItems = new ArrayList<>(); CheckDiff finalCheckDiff = checkDiff; items.forEach(item -> { CheckDiffItem checkDiffItem = new CheckDiffItem(); BeanUtils.copyProperties(item, checkDiffItem); checkDiffItem.setCheckId(finalCheckDiff.getId()) .setTaskItemId(item.getId()) .setTaskId(item.getTaskId()) .setCreateBy(loginUserId) .setCreateTime(new Date()) .setUpdateBy(loginUserId) .setUpdateTime(new Date()) .setOrderCode(finalCheckDiff.getOrderCode()); diffItems.add(checkDiffItem); }); if (!checkDiffItemService.saveBatch(diffItems)) { throw new CoolException("盘点差异单保存失败!!"); } }); } }