zy-acs-flow/src/page/segment/SegmentList.jsx
@@ -32,6 +32,7 @@ DeleteButton, FunctionField, Count, useNotify, } from 'react-admin'; import { Box, Typography, Stack, useMediaQuery, Tabs, Tab, Divider } from '@mui/material'; import { styled } from '@mui/material/styles'; @@ -42,6 +43,9 @@ import MyField from "../components/MyField"; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; import * as Common from '@/utils/common'; import ConfirmButton from "../components/ConfirmButton"; import ClearIcon from '@mui/icons-material/Clear'; import request from '@/utils/request'; const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ '& .css-1vooibu-MuiSvgIcon-root': { @@ -53,13 +57,13 @@ '& .column-name': { }, '& .opt': { width: 200 width: 120 }, })); const filters = [ // <SearchInput source="condition" alwaysOn />, <TextInput source="groupId" label="table.field.segment.groupId" alwaysOn/>, <TextInput source="groupId" label="table.field.segment.groupId" alwaysOn />, <ReferenceInput source="agvId" label="table.field.segment.agvId" reference="agv" alwaysOn> <AutocompleteInput label="table.field.segment.agvId" optionText="uuid" filterToQuery={(val) => ({ uuid: val })} /> </ReferenceInput>, @@ -140,6 +144,7 @@ const TabbedDatagrid = () => { const translate = useTranslate(); const notify = useNotify(); const { filterValues, setFilters, displayedFilters } = useListContext(); const isXSmall = useMediaQuery(theme => theme.breakpoints.down('sm') @@ -152,6 +157,19 @@ ); }, [filterValues, setFilters, displayedFilters]); const handleDeprecate = (segmentId) => { request.get("/segment/cancel/" + segmentId).then(res => { const { code, msg, data } = res.data; if (code === 200) { notify(msg || 'common.response.success', { type: 'success', messageArgs: { _: msg } }); refresh(); } else { notify(msg || 'common.response.fail', { type: 'error', messageArgs: { _: msg } }); } }).catch(error => { notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } }); }) } return ( <> @@ -240,10 +258,29 @@ <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} /> {/* <FunctionField label="common.field.opt" cellClassName="opt" render={record => ( <> </> )} /> */} {filterValues.state === 'RUNNING' && ( <FunctionField label="common.field.opt" cellClassName="opt" render={record => ( <> <ConfirmButton label="common.action.deprecate" size="small" color="error" startIcon={<ClearIcon />} sx={{ padding: '1px', fontSize: '.75rem', '& .MuiButton-startIcon': { marginRight: '2px' }, }} data={record.id} onConfirm={() => { handleDeprecate(record.id); }} /> </> )} /> )} </StyledDatagrid> </> )} zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -1213,6 +1213,13 @@ if (Cools.isEmpty(actionList)) { return; } Long agvId = actionList.get(0).getAgvId(); String agvNo = agvService.getAgvNo(agvId); if (!agvService.judgeOnline(agvId)) { return; } long actionIssuedSts = ActionStsType.ISSUED.val(); for (Action action : actionList) { action.setActionSts(actionIssuedSts); @@ -1239,7 +1246,6 @@ } } String agvNo = agvService.getAgvNo(actionList.get(0).getAgvId()); AgvAction agvAction = new AgvAction(agvNo, actionGroupId); for (Action action : actionList) { switch (Objects.requireNonNull(ActionTypeType.get(action.getActionTypeEl()))) { zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/SegmentController.java
@@ -108,4 +108,11 @@ ExcelUtil.build(ExcelUtil.create(segmentService.list(), Segment.class), response); } @PreAuthorize("hasAuthority('manager:segment:update')") @OperationLog("Cancel Segment") @GetMapping("/segment/cancel/{id}") public R cancel(@PathVariable Long id) { return segmentService.cancel(id, getLoginUserId()) ? R.ok("Cancel Success") : R.error("Cancel Fail"); } } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java
@@ -24,4 +24,6 @@ List<Segment> getRunningByEndCode(Long codeId); Boolean cancel(Long segmentId, Long userId); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
@@ -2,16 +2,19 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zy.acs.framework.exception.CoolException; import com.zy.acs.manager.manager.entity.Segment; import com.zy.acs.manager.manager.entity.Task; import com.zy.acs.manager.manager.enums.ActionStsType; import com.zy.acs.manager.manager.enums.SegmentStateType; import com.zy.acs.manager.manager.enums.TaskStsType; import com.zy.acs.manager.manager.mapper.SegmentMapper; import com.zy.acs.manager.manager.service.AgvService; import com.zy.acs.manager.manager.service.SegmentService; import com.zy.acs.manager.manager.service.*; import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.manager.service.TravelService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Comparator; @@ -26,6 +29,10 @@ private AgvService agvService; @Autowired private TravelService travelService; @Autowired private TaskService taskService; @Autowired private ActionService actionService; @Override public void processNext(List<Segment> segmentList) { @@ -113,4 +120,30 @@ ); } @Override @Transactional public Boolean cancel(Long segmentId, Long userId) { Date now = new Date(); Segment segment = this.getById(segmentId); String groupId = segment.getGroupId(); // update segment list List<Segment> segmentList = this.list(new LambdaQueryWrapper<Segment>().eq(Segment::getGroupId, groupId)); for (Segment seg : segmentList) { Task task = taskService.getById(segment.getTaskId()); if (task != null && (!task.getTaskTypeEl().equals(TaskStsType.COMPLETE.toString()) || !task.getTaskTypeEl().equals(TaskStsType.CANCEL.toString()))) { throw new CoolException("the task is not finish"); } seg.setState(SegmentStateType.FINISH.toString()); seg.setUpdateTime(now); if (!this.updateById(seg)) { throw new CoolException("failed to cancel segment"); } } this.processNext(segmentList); // update action list actionService.updateStsByGroupId(groupId, ActionStsType.EXPIRED.val()); return Boolean.TRUE; } }