From d6e48b72f0b7afd70205d6e88b3f336264891cc3 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 24 九月 2024 14:11:53 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/page/bus/BusList.jsx                                                      |   26 ++----
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/TaskService.java          |    4 +
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/TaskController.java    |   15 +++
 zy-acs-flow/src/i18n/core/chineseMessages.js                                              |    2 
 zy-acs-framework/src/main/resources/templates/react-admin/ReactList.txt                   |    1 
 zy-acs-flow/src/i18n/en.js                                                                |    1 
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java     |   32 ++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java |   34 ++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Bus.java                   |   18 +--
 zy-acs-flow/src/i18n/zh.js                                                                |    1 
 zy-acs-flow/src/page/task/TaskList.jsx                                                    |   71 ++++++++++++++++-
 11 files changed, 173 insertions(+), 32 deletions(-)

diff --git a/zy-acs-flow/src/i18n/core/chineseMessages.js b/zy-acs-flow/src/i18n/core/chineseMessages.js
index 44e656d..81ed6f7 100644
--- a/zy-acs-flow/src/i18n/core/chineseMessages.js
+++ b/zy-acs-flow/src/i18n/core/chineseMessages.js
@@ -19,7 +19,7 @@
             refresh: '鍒锋柊',
             remove_filter: 'Remove this filter',
             remove_all_filters: '绉婚櫎鎵�鏈�',
-            remove: 'Remove',
+            remove: '绉婚櫎',
             save: '淇濆瓨',
             search: '鎼滅储',
             select_all: '鍏ㄩ儴閫変腑',
diff --git a/zy-acs-flow/src/i18n/en.js b/zy-acs-flow/src/i18n/en.js
index afa0a4d..052b4cf 100644
--- a/zy-acs-flow/src/i18n/en.js
+++ b/zy-acs-flow/src/i18n/en.js
@@ -63,6 +63,7 @@
                 result: 'Contacts import complete. Imported %{success} success, with %{error} errors',
             },
             loadMore: 'Load More Data',
+            complete: 'Complete',
         },
         msg: {
             confirm: {
diff --git a/zy-acs-flow/src/i18n/zh.js b/zy-acs-flow/src/i18n/zh.js
index cc73255..0fcc138 100644
--- a/zy-acs-flow/src/i18n/zh.js
+++ b/zy-acs-flow/src/i18n/zh.js
@@ -63,6 +63,7 @@
                 result: '瀵煎叆瀹屾垚銆傚凡瀵煎叆 %{success} 鎴愬姛, 鍜� %{error} 澶辫触',
             },
             loadMore: '鍔犺浇鏇村',
+            complete: '瀹屾垚',
         },
         msg: {
             confirm: {
diff --git a/zy-acs-flow/src/page/bus/BusList.jsx b/zy-acs-flow/src/page/bus/BusList.jsx
index ab39add..da2a17a 100644
--- a/zy-acs-flow/src/page/bus/BusList.jsx
+++ b/zy-acs-flow/src/page/bus/BusList.jsx
@@ -32,6 +32,7 @@
     DeleteButton,
     FunctionField,
     Pagination,
+    useNotify,
 } from 'react-admin';
 import { Box, Typography, Button, Chip } from '@mui/material';
 import { styled } from '@mui/material/styles';
@@ -97,13 +98,19 @@
 
 const BusList = () => {
     const translate = useTranslate();
-
+    const notify = useNotify();
     const [createDialog, setCreateDialog] = useState(false);
     const [drawerVal, setDrawerVal] = useState(false);
 
     const onCancel = (busId) => {
-        console.log(busId);
-
+        request.get("/bus/cancel/" + busId).then(res => {
+            const { code, msg, data } = res.data;
+            if (code === 200) {
+                notify(msg || 'common.response.success', { type: 'success', messageArgs: { _: msg } });
+            } else {
+                notify(msg || 'common.response.fail', { type: 'error', messageArgs: { _: msg } });
+            }
+        })
     }
 
     return (
@@ -173,19 +180,6 @@
                     <TextField source="memo" label="common.field.memo" sortable={false} emptyText="-" />
                     <FunctionField label="common.field.opt" cellClassName="opt" render={record => (
                         (record.busSts === 15 || true) && (
-                            // <DeleteButton label="" sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
-                            // <Button
-                            //     size="small"
-                            //     color="error"
-                            //     startIcon={<CancelIcon />}
-                            //     sx={{ padding: '1px', fontSize: '.75rem' }}
-                            //     onClick={(event) => {
-                            //         event.stopPropagation();
-                            //         onCancel(record);
-                            //     }}
-                            // >
-                            //     {translate('ra.action.cancel')}
-                            // </Button>
                             <ConfirmButton
                                 label="ra.action.cancel"
                                 size="small"
diff --git a/zy-acs-flow/src/page/task/TaskList.jsx b/zy-acs-flow/src/page/task/TaskList.jsx
index b140bbd..870234b 100644
--- a/zy-acs-flow/src/page/task/TaskList.jsx
+++ b/zy-acs-flow/src/page/task/TaskList.jsx
@@ -46,6 +46,10 @@
 import * as Common from '@/utils/common';
 import TaskListAside from "./TaskListAside";
 import { getTaskStsChipColor } from '@/utils/color-util';
+import ConfirmButton from "../components/ConfirmButton";
+import ClearIcon from '@mui/icons-material/Clear';
+import CheckIcon from '@mui/icons-material/Check';
+import request from '@/utils/request';
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
     '& .css-1vooibu-MuiSvgIcon-root': {
@@ -129,6 +133,28 @@
 
     const [createDialog, setCreateDialog] = useState(false);
     const [drawerVal, setDrawerVal] = useState(false);
+
+    const onComplete = (taskId) => {
+        request.get("/task/complete/" + taskId).then(res => {
+            const { code, msg, data } = res.data;
+            if (code === 200) {
+                notify(msg || 'common.response.success', { type: 'success', messageArgs: { _: msg } });
+            } else {
+                notify(msg || 'common.response.fail', { type: 'error', messageArgs: { _: msg } });
+            }
+        })
+    }
+
+    const onCancel = (taskId) => {
+        request.get("/task/cancel/" + taskId).then(res => {
+            const { code, msg, data } = res.data;
+            if (code === 200) {
+                notify(msg || 'common.response.success', { type: 'success', messageArgs: { _: msg } });
+            } else {
+                notify(msg || 'common.response.fail', { type: 'error', messageArgs: { _: msg } });
+            }
+        })
+    }
 
     return (
         <Box display="flex">
@@ -234,10 +260,47 @@
                     <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} />
-                    </WrapperField>
+                    <FunctionField label="common.field.opt" cellClassName="opt" render={record => (
+                        (record.taskSts === 15 || true) && (
+                            <>
+                                <ConfirmButton
+                                    label="common.action.complete"
+                                    size="small"
+                                    color="primary"
+                                    startIcon={<CheckIcon />}
+                                    sx={{
+                                        padding: '1px',
+                                        fontSize: '.75rem',
+                                        '& .MuiButton-startIcon': {
+                                            marginRight: '2px'
+                                        },
+                                        mr: 1
+                                    }}
+                                    data={record.seqNum}
+                                    onConfirm={() => {
+                                        onComplete(record.id);
+                                    }}
+                                />
+                                <ConfirmButton
+                                    label="ra.action.cancel"
+                                    size="small"
+                                    color="error"
+                                    startIcon={<ClearIcon />}
+                                    sx={{
+                                        padding: '1px',
+                                        fontSize: '.75rem',
+                                        '& .MuiButton-startIcon': {
+                                            marginRight: '1.5px'
+                                        },
+                                    }}
+                                    data={record.seqNum}
+                                    onConfirm={() => {
+                                        onCancel(record.id);
+                                    }}
+                                />
+                            </>
+                        )
+                    )} />
                 </StyledDatagrid>
             </List>
             <TaskCreate
diff --git a/zy-acs-framework/src/main/resources/templates/react-admin/ReactList.txt b/zy-acs-framework/src/main/resources/templates/react-admin/ReactList.txt
index b827577..5abfdc6 100644
--- a/zy-acs-framework/src/main/resources/templates/react-admin/ReactList.txt
+++ b/zy-acs-framework/src/main/resources/templates/react-admin/ReactList.txt
@@ -14,6 +14,7 @@
     WrapperField,
     useRecordContext,
     useTranslate,
+    useNotify,
     useListContext,
     FunctionField,
     TextField,
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java
index 579bd5d..b1dbd0d 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java
@@ -15,6 +15,7 @@
 import com.zy.acs.manager.manager.entity.Bus;
 import com.zy.acs.manager.manager.entity.Task;
 import com.zy.acs.manager.manager.enums.BusStsType;
+import com.zy.acs.manager.manager.enums.TaskStsType;
 import com.zy.acs.manager.manager.service.BusService;
 import com.zy.acs.manager.manager.service.LocService;
 import com.zy.acs.manager.manager.service.StaService;
@@ -22,6 +23,7 @@
 import com.zy.acs.manager.system.controller.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -153,4 +155,34 @@
         ExcelUtil.build(ExcelUtil.create(busService.list(), Bus.class), response);
     }
 
+    @PreAuthorize("hasAuthority('manager:bus:update')")
+    @OperationLog("Cancel Bus")
+    @GetMapping("/bus/cancel/{id}")
+    @Transactional
+    public R cancel(@PathVariable Long id) {
+        Bus bus = busService.getById(id);
+        if (null == bus) {
+            return R.error("Cancel Fail");
+        }
+        if (!bus.getBusStsEl().equals(BusStsType.RECEIVE.toString())) {
+            return R.error("Cancel Fail");
+        }
+        List<Task> taskList = taskService.list(new LambdaQueryWrapper<Task>()
+                .eq(Task::getBusId, bus.getId())
+                .in(Task::getTaskSts, TaskStsType.INIT.val(), TaskStsType.WAITING.val()));
+        if (!Cools.isEmpty(taskList)) {
+            for (Task task : taskList) {
+                taskService.cancel(task.getId(), getLoginUserId());
+            }
+        }
+        bus.setBusSts(BusStsType.CANCEL.val());
+        bus.setUpdateTime(new Date());
+        bus.setUpdateBy(getLoginUserId());
+        if (!busService.updateById(bus)) {
+            return R.error("Cancel Fail");
+        }
+
+        return R.ok("Cancel Success");
+     }
+
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/TaskController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/TaskController.java
index d186ab1..84a8161 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/TaskController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/TaskController.java
@@ -117,4 +117,19 @@
         ExcelUtil.build(ExcelUtil.create(taskService.list(), Task.class), response);
     }
 
+    @PreAuthorize("hasAuthority('manager:task:update')")
+    @OperationLog("Complete Task")
+    @GetMapping("/task/complete/{id}")
+    public R complete(@PathVariable Long id) {
+        return taskService.complete(id, getLoginUserId()) ? R.ok("Complete Success") : R.error("Complete Fail");
+    }
+
+    @PreAuthorize("hasAuthority('manager:task:update')")
+    @OperationLog("Cancel Task")
+    @GetMapping("/task/cancel/{id}")
+    public R cancel(@PathVariable Long id) {
+        return taskService.cancel(id, getLoginUserId()) ? R.ok("Cancel Success") : R.error("Cancel Fail");
+    }
+
+
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Bus.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Bus.java
index cee3d75..9e7f4cc 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Bus.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Bus.java
@@ -126,19 +126,15 @@
         return null;
     }
 
-    public String getStatus$(){
-        if (null == this.status){ return null; }
-        switch (this.status){
-            case 1:
-                return "姝e父";
-            case 0:
-                return "鍐荤粨";
-            default:
-                return String.valueOf(this.status);
+
+    public String getBusStsEl(){
+        BusStsService service = SpringUtils.getBean(BusStsService.class);
+        BusSts busSts = service.getById(this.busSts);
+        if (!Cools.isEmpty(busSts)){
+            return String.valueOf(busSts.getUuid());
         }
+        return null;
     }
-
-
 
     public Boolean getStatusBool(){
         if (null == this.status){ return null; }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/TaskService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/TaskService.java
index dc8b6df..4e2ad49 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/TaskService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/TaskService.java
@@ -23,4 +23,8 @@
 
     List<Map<String, Object>> selectStatByLastSevenDays();
 
+    Boolean complete(Long taskId, Long userId);
+
+    Boolean cancel(Long taskId, Long userId);
+
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java
index dceb718..2e9a36d 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java
@@ -2,8 +2,10 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zy.acs.framework.common.BaseRes;
 import com.zy.acs.framework.common.Cools;
 import com.zy.acs.framework.common.SnowflakeIdWorker;
+import com.zy.acs.framework.exception.CoolException;
 import com.zy.acs.manager.common.exception.BusinessException;
 import com.zy.acs.manager.manager.entity.FuncSta;
 import com.zy.acs.manager.manager.entity.Loc;
@@ -141,5 +143,37 @@
         return this.baseMapper.selectStatByLastSevenDays();
     }
 
+    @Override
+    public Boolean complete(Long taskId, Long userId) {
+        Task task = this.getById(taskId);
+        if (null == task) {
+            return Boolean.FALSE;
+        }
+
+        task.setTaskSts(TaskStsType.COMPLETE.val());
+        task.setUpdateTime(new Date());
+        task.setUpdateBy(userId);
+        if (!this.updateById(task)) {
+            throw new CoolException(BaseRes.ERROR);
+        }
+        return Boolean.TRUE;
+    }
+
+    @Override
+    public Boolean cancel(Long taskId, Long userId) {
+        Task task = this.getById(taskId);
+        if (null == task) {
+            return Boolean.FALSE;
+        }
+
+        task.setTaskSts(TaskStsType.CANCEL.val());
+        task.setUpdateTime(new Date());
+        task.setUpdateBy(userId);
+        if (!this.updateById(task)) {
+            throw new CoolException(BaseRes.ERROR);
+        }
+        return Boolean.TRUE;
+    }
+
 
 }

--
Gitblit v1.9.1