From 41a42d3a426869671fcba080c173bff7f5d49d03 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期四, 26 九月 2024 16:25:09 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/page/route/RouteEdit.jsx                                                   |   34 +-------
 zy-acs-flow/src/page/route/RouteCreate.jsx                                                 |   23 ++---
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/RouteService.java          |    6 
 zy-acs-flow/src/i18n/en.js                                                                 |    9 ++
 zy-acs-flow/src/page/code/CodeCreate.jsx                                                   |   20 ++--
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/RouteServiceImpl.java |   24 +++---
 zy-acs-flow/src/i18n/zh.js                                                                 |    9 ++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/RouteController.java    |   36 +++++++-
 zy-acs-flow/src/page/route/RouteList.jsx                                                   |   25 +++++-
 9 files changed, 105 insertions(+), 81 deletions(-)

diff --git a/zy-acs-flow/src/i18n/en.js b/zy-acs-flow/src/i18n/en.js
index 558db7c..062ebb0 100644
--- a/zy-acs-flow/src/i18n/en.js
+++ b/zy-acs-flow/src/i18n/en.js
@@ -584,6 +584,15 @@
                 },
             },
         },
+        route: {
+            enums: {
+                direction: {
+                    forward: 'Forward',
+                    reverse: 'Reverse',
+                    unordered: 'Unordered',
+                },
+            },
+        },
     }
 };
 
diff --git a/zy-acs-flow/src/i18n/zh.js b/zy-acs-flow/src/i18n/zh.js
index e27a5f8..f3019f0 100644
--- a/zy-acs-flow/src/i18n/zh.js
+++ b/zy-acs-flow/src/i18n/zh.js
@@ -583,6 +583,15 @@
                 },
             },
         },
+        route: {
+            enums: {
+                direction: {
+                    forward: '姝e悜',
+                    reverse: '鍙嶅悜',
+                    unordered: '鏃犲簭',
+                },
+            },
+        },
     }
 };
 
diff --git a/zy-acs-flow/src/page/code/CodeCreate.jsx b/zy-acs-flow/src/page/code/CodeCreate.jsx
index 29a1b42..d6e766f 100644
--- a/zy-acs-flow/src/page/code/CodeCreate.jsx
+++ b/zy-acs-flow/src/page/code/CodeCreate.jsx
@@ -101,6 +101,16 @@
                                     />
                                 </Grid>
                                 <Grid item xs={6} display="flex" gap={1}>
+                                    <SelectInput
+                                        label="table.field.code.concer"
+                                        source="concer"
+                                        choices={[
+                                            { id: 1, name: '鏄�' },
+                                            { id: 0, name: '鍚�' },
+                                        ]}
+                                    />
+                                </Grid>
+                                <Grid item xs={6} display="flex" gap={1}>
                                     <NumberInput
                                         label="table.field.code.x"
                                         source="x"
@@ -110,16 +120,6 @@
                                     <NumberInput
                                         label="table.field.code.y"
                                         source="y"
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <SelectInput
-                                        label="table.field.code.concer"
-                                        source="concer"
-                                        choices={[
-                                            { id: 1, name: '鏄�' },
-                                            { id: 0, name: '鍚�' },
-                                        ]}
                                     />
                                 </Grid>
                                 <Grid item xs={6} display="flex" gap={1}>
diff --git a/zy-acs-flow/src/page/route/RouteCreate.jsx b/zy-acs-flow/src/page/route/RouteCreate.jsx
index d87aa86..ddfc3e6 100644
--- a/zy-acs-flow/src/page/route/RouteCreate.jsx
+++ b/zy-acs-flow/src/page/route/RouteCreate.jsx
@@ -84,21 +84,14 @@
                         </DialogTitle>
                         <DialogContent>
                             <Grid container rowSpacing={2} columnSpacing={2}>
-                                <Grid item xs={6} display="flex" gap={1}>
+                                {/* <Grid item xs={6} display="flex" gap={1}>
                                     <TextInput
                                         label="table.field.route.uuid"
                                         source="uuid"
                                         parse={v => v}
                                         autoFocus
                                     />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.route.name"
-                                        source="name"
-                                        parse={v => v}
-                                    />
-                                </Grid>
+                                </Grid> */}
                                 <Grid item xs={6} display="flex" gap={1}>
                                     <ReferenceInput
                                         source="startCode"
@@ -125,7 +118,7 @@
                                         />
                                     </ReferenceInput>
                                 </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
+                                {/* <Grid item xs={6} display="flex" gap={1}>
                                     <TextInput
                                         label="table.field.route.codeArr"
                                         source="codeArr"
@@ -139,19 +132,19 @@
                                         source="codeDataArr"
                                         parse={v => v}
                                     />
-                                </Grid>
+                                </Grid> */}
                                 <Grid item xs={6} display="flex" gap={1}>
                                     <SelectInput
                                         label="table.field.route.direction"
                                         source="direction"
                                         choices={[
-                                            { id: 0, name: '鏃犲簭' },
-                                            { id: 1, name: '姝e悜' },
-                                            { id: 2, name: '鍙嶅悜' },
+                                            { id: 0, name: 'page.route.enums.direction.unordered' },
+                                            { id: 1, name: 'page.route.enums.direction.forward' },
+                                            { id: 2, name: 'page.route.enums.direction.reverse' },
                                         ]}
+                                        validate={required()}
                                     />
                                 </Grid>
-
                                 <Grid item xs={6} display="flex" gap={1}>
                                     <StatusSelectInput />
                                 </Grid>
diff --git a/zy-acs-flow/src/page/route/RouteEdit.jsx b/zy-acs-flow/src/page/route/RouteEdit.jsx
index bec2b70..8f7c0e6 100644
--- a/zy-acs-flow/src/page/route/RouteEdit.jsx
+++ b/zy-acs-flow/src/page/route/RouteEdit.jsx
@@ -63,21 +63,14 @@
                         <Typography variant="h6" gutterBottom>
                             {translate('common.edit.title.main')}
                         </Typography>
-                        <Stack direction='row' gap={2}>
+                        {/* <Stack direction='row' gap={2}>
                             <TextInput
                                 label="table.field.route.uuid"
                                 source="uuid"
                                 parse={v => v}
                                 autoFocus
                             />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.route.name"
-                                source="name"
-                                parse={v => v}
-                            />
-                        </Stack>
+                        </Stack> */}
                         <Stack direction='row' gap={2}>
                             <ReferenceInput
                                 source="startCode"
@@ -91,8 +84,6 @@
                                     validate={required()}
                                 />
                             </ReferenceInput>
-                        </Stack>
-                        <Stack direction='row' gap={2}>
                             <ReferenceInput
                                 source="endCode"
                                 reference="code"
@@ -107,28 +98,13 @@
                             </ReferenceInput>
                         </Stack>
                         <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.route.codeArr"
-                                source="codeArr"
-                                parse={v => v}
-                                validate={required()}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.route.codeDataArr"
-                                source="codeDataArr"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
                             <SelectInput
                                 label="table.field.route.direction"
                                 source="direction"
                                 choices={[
-                                    { id: 0, name: '鏃犲簭' },
-                                    { id: 1, name: '姝e悜' },
-                                    { id: 2, name: '鍙嶅悜' },
+                                    { id: 0, name: 'page.route.enums.direction.unordered' },
+                                    { id: 1, name: 'page.route.enums.direction.forward' },
+                                    { id: 2, name: 'page.route.enums.direction.reverse' },
                                 ]}
                                 validate={required()}
                             />
diff --git a/zy-acs-flow/src/page/route/RouteList.jsx b/zy-acs-flow/src/page/route/RouteList.jsx
index 78159aa..6175fa1 100644
--- a/zy-acs-flow/src/page/route/RouteList.jsx
+++ b/zy-acs-flow/src/page/route/RouteList.jsx
@@ -30,6 +30,7 @@
     ReferenceArrayInput,
     AutocompleteInput,
     DeleteButton,
+    FunctionField,
 } from 'react-admin';
 import { Box, Typography, Card, Stack } from '@mui/material';
 import { styled } from '@mui/material/styles';
@@ -79,9 +80,9 @@
     <TextInput source="codeDataArr" label="table.field.route.codeDataArr" />,
     <SelectInput source="direction" label="table.field.route.direction"
         choices={[
-            { id: 0, name: '鏃犲簭' },
-            { id: 1, name: '姝e悜' },
-            { id: 2, name: '鍙嶅悜' },
+            { id: 0, name: 'page.route.enums.direction.unordered' },
+            { id: 1, name: 'page.route.enums.direction.forward' },
+            { id: 2, name: 'page.route.enums.direction.reverse' },
         ]}
         alwaysOn
     />,
@@ -148,8 +149,22 @@
                     </ReferenceField>
                     <TextField source="codeArr" label="table.field.route.codeArr" />
                     <TextField source="codeDataArr" label="table.field.route.codeDataArr" />
-                    <TextField source="direction$" label="table.field.route.direction" sortable={false} />
-
+                    <FunctionField
+                        label="table.field.route.direction"
+                        sortable={false}
+                        render={(record) => {
+                            switch (record.direction) {
+                                case 0:
+                                    return translate('page.route.enums.direction.unordered');
+                                case 1:
+                                    return translate('page.route.enums.direction.forward');
+                                case 2:
+                                    return translate('page.route.enums.direction.reverse');
+                                default:
+                                    return '';
+                            }
+                        }}
+                    />
                     <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                         <TextField source="nickname" />
                     </ReferenceField>
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/RouteController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/RouteController.java
index 3a3dc37..cfe3057 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/RouteController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/RouteController.java
@@ -6,6 +6,7 @@
 import com.zy.acs.common.utils.Utils;
 import com.zy.acs.framework.common.Cools;
 import com.zy.acs.framework.common.R;
+import com.zy.acs.framework.exception.CoolException;
 import com.zy.acs.manager.common.annotation.OperationLog;
 import com.zy.acs.manager.common.domain.BaseParam;
 import com.zy.acs.manager.common.domain.KeyValVo;
@@ -20,6 +21,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;
@@ -67,6 +69,7 @@
     @PreAuthorize("hasAuthority('manager:route:save')")
     @OperationLog("Create Route")
     @PostMapping("/route/save")
+    @Transactional
     public R save(@RequestBody Route route) {
         if (route.getStartCode() == null || route.getEndCode() == null) {
             return R.error("Save Fail");
@@ -78,17 +81,24 @@
                 .eq(Route::getStartCode, route.getStartCode())
                 .eq(Route::getEndCode, route.getEndCode())) > 0 ||
                 routeService.count(new LambdaQueryWrapper<Route>()
-                        .eq(Route::getStartCode, route.getStartCode())
-                        .eq(Route::getEndCode, route.getEndCode())) > 0
+                        .eq(Route::getStartCode, route.getEndCode())
+                        .eq(Route::getEndCode, route.getStartCode())) > 0
         ) {
             return R.error("Save Fail");
         }
-        route.setCreateBy(getLoginUserId());
-        route.setCreateTime(new Date());
-        route.setUpdateBy(getLoginUserId());
-        route.setUpdateTime(new Date());
-        if (!routeService.save(route)) {
+
+        Code startCode = codeService.getById(route.getStartCode());
+        Code endCode = codeService.getById(route.getEndCode());
+
+        if (null == startCode || null == endCode) {
             return R.error("Save Fail");
+        }
+
+        Route result = routeService.createRouteByCode(startCode, endCode, route.getDirection(), getLoginUserId());
+        codeGapService.createCodeGapByCode(startCode, endCode, getLoginUserId());
+
+        if (null == result) {
+            throw new CoolException("Save Fail");
         }
         return R.ok("Save Success").add(route);
     }
@@ -100,6 +110,18 @@
         if (route.getStartCode().equals(route.getEndCode())) {
             return R.error("Update Fail");
         }
+        if (routeService.count(new LambdaQueryWrapper<Route>()
+                .eq(Route::getStartCode, route.getStartCode())
+                .eq(Route::getEndCode, route.getEndCode())
+                .ne(Route::getId, route.getId())) > 0 ||
+                routeService.count(new LambdaQueryWrapper<Route>()
+                        .eq(Route::getStartCode, route.getEndCode())
+                        .eq(Route::getEndCode, route.getStartCode())
+                        .ne(Route::getId, route.getId())) > 0
+        ) {
+            return R.error("Update Fail");
+        }
+
         route.setUpdateBy(getLoginUserId());
         route.setUpdateTime(new Date());
         if (!routeService.updateById(route)) {
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/RouteService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/RouteService.java
index 551ef87..886ca06 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/RouteService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/RouteService.java
@@ -8,12 +8,12 @@
 
 public interface RouteService extends IService<Route> {
 
-    Route createRouteByCode(Code code0, Code code1);
+    Route createRouteByCode(Code startCode, Code endCode);
 
-    Route createRouteByCode(Code code0, Code code1, Integer direction, Long userId);
+    Route createRouteByCode(Code startCode, Code endCode, Integer direction, Long userId);
 
     List<String> findCodeDataOfSingle(Long code);
 
-    Route findByCodeOfBoth(Long code0, Long code1);
+    Route findByCodeOfBoth(Long startCode, Long endCode);
 
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/RouteServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/RouteServiceImpl.java
index eb334aa..048ff7a 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/RouteServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/RouteServiceImpl.java
@@ -21,25 +21,25 @@
     private CodeService codeService;
 
     @Override
-    public Route createRouteByCode(Code code0, Code code1) {
-        return createRouteByCode(code0, code1, 0, null);
+    public Route createRouteByCode(Code startCode, Code endCode) {
+        return createRouteByCode(startCode, endCode, 0, null);
     }
 
     @Override
-    public Route createRouteByCode(Code code0, Code code1, Integer direction, Long userId) {
-        if (code0.getData().equals(code1.getData())) {
+    public Route createRouteByCode(Code startCode, Code endCode, Integer direction, Long userId) {
+        if (startCode.getData().equals(endCode.getData())) {
             return null;
         }
-        Route route = this.findByCodeOfBoth(code0.getId(), code1.getId());
+        Route route = this.findByCodeOfBoth(startCode.getId(), endCode.getId());
         direction = Optional.ofNullable(direction).orElse(0);
         if (null == route) {
             Date now = new Date();
             route = new Route();
-            route.setUuid(code0.getData() + "-" + code1.getData());
-            route.setStartCode(code0.getId());
-            route.setEndCode(code1.getId());
+            route.setUuid(startCode.getData() + "-" + endCode.getData());
+            route.setStartCode(startCode.getId());
+            route.setEndCode(endCode.getId());
             route.setDirection(direction);
-            route.setCodeArr(GsonUtils.toJson(Arrays.asList(code0.getId(), code1.getId())));
+            route.setCodeArr(GsonUtils.toJson(Arrays.asList(startCode.getId(), endCode.getId())));
             route.setCreateBy(userId);
             route.setCreateTime(now);
             route.setUpdateBy(userId);
@@ -66,10 +66,10 @@
     }
 
     @Override
-    public Route findByCodeOfBoth(Long code0, Long code1) {
-        Route route = getOne(new LambdaQueryWrapper<Route>().eq(Route::getStartCode, code0).eq(Route::getEndCode, code1).eq(Route::getStatus, 1));
+    public Route findByCodeOfBoth(Long startCode, Long endCode) {
+        Route route = getOne(new LambdaQueryWrapper<Route>().eq(Route::getStartCode, startCode).eq(Route::getEndCode, endCode).eq(Route::getStatus, 1));
         if (null == route) {
-            route = getOne(new LambdaQueryWrapper<Route>().eq(Route::getEndCode, code0).eq(Route::getStartCode, code1).eq(Route::getStatus, 1));
+            route = getOne(new LambdaQueryWrapper<Route>().eq(Route::getEndCode, startCode).eq(Route::getStartCode, endCode).eq(Route::getStatus, 1));
         }
         return route;
     }

--
Gitblit v1.9.1