ソースを参照

Merge remote-tracking branch 'origin/master'

侯茂昌 1 年間 前
コミット
bb8a7ae18c
19 ファイル変更575 行追加222 行削除
  1. 29 18
      zkqy-admin/src/main/java/com/zkqy/web/controller/projcetzip/DownloadController.java
  2. 18 5
      zkqy-admin/src/main/java/com/zkqy/web/controller/projcetzip/ExportController.java
  3. 37 55
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysUserController.java
  4. 3 2
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/BpmExecuteProcessServiceImpl.java
  5. 61 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/mes/ExceptionEditTheFinishTimeAgain.java
  6. 60 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/mes/ExceptionProductObsolescence.java
  7. 63 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/mes/ExceptionQualityControlCardEdit.java
  8. 65 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/mes/ExceptionQualityControlCardSubCard.java
  9. 60 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/mes/ExceptionTaskTermination.java
  10. 1 1
      zkqy-system/src/main/java/com/zkqy/system/mapper/SysMenuMapper.java
  11. 7 0
      zkqy-system/src/main/java/com/zkqy/system/mapper/SysUserMapper.java
  12. 7 0
      zkqy-system/src/main/java/com/zkqy/system/service/ISysUserService.java
  13. 1 1
      zkqy-system/src/main/java/com/zkqy/system/service/impl/SysMenuServiceImpl.java
  14. 93 135
      zkqy-system/src/main/java/com/zkqy/system/service/impl/SysUserServiceImpl.java
  15. 7 1
      zkqy-system/src/main/resources/mapper/system/SysMenuMapper.xml
  16. 3 0
      zkqy-system/src/main/resources/mapper/system/SysUserMapper.xml
  17. 10 1
      zkqy-ui/src/api/system/user.js
  18. 24 1
      zkqy-ui/src/views/system/tenant/index.vue
  19. 26 2
      zkqy-ui/src/views/system/user/index.vue

+ 29 - 18
zkqy-admin/src/main/java/com/zkqy/web/controller/projcetzip/DownloadController.java

@@ -1,8 +1,11 @@
 package com.zkqy.web.controller.projcetzip;
 
 import com.zkqy.common.config.ZkqyConfig;
+import com.zkqy.common.core.redis.RedisCache;
+import com.zkqy.common.utils.DateUtils;
 import com.zkqy.common.utils.SecurityUtils;
-import com.zkqy.common.utils.ZipUtils;
+import com.zkqy.common.utils.StringUtils;
+import com.zkqy.system.domain.SysEngineering;
 import com.zkqy.system.service.ISysEngineeringService;
 import org.apache.tools.zip.ZipEntry;
 import org.apache.tools.zip.ZipOutputStream;
@@ -22,6 +25,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.ReentrantLock;
 
 @RestController
@@ -33,32 +37,32 @@ public class DownloadController {
 
     @Autowired
     private ZkqyConfig zkqyConfig;
+
+    @Autowired
+    private RedisCache redisCache;
+
     private static final ReentrantLock lock = new ReentrantLock();
     private volatile boolean exportCompleted = false;
 
 
     @GetMapping("/status")
     public ResponseEntity<String> checkExportStatus() {
-        lock.lock();
-        try {
-            if (exportCompleted) {
-                return ResponseEntity.ok("导出已完成。您现在可以触发下载");
-            } else {
-                return ResponseEntity.status(HttpStatus.GATEWAY_TIMEOUT).body("文件还在生成中。请稍候。。。");
-            }
-        } finally {
-            lock.unlock();
+        String state = redisCache.getCacheObject("isExportState:" + SecurityUtils.getTenantId()).toString();
+        if (StringUtils.isNotNull(state) && !state.isEmpty() && state.equals("true")) {
+            return ResponseEntity.ok("导出已完成。您现在可以触发下载");
+        } else {
+            return ResponseEntity.status(HttpStatus.GATEWAY_TIMEOUT).body("文件还在生成中。请稍候。。。");
         }
+
     }
 
     @GetMapping("/download")
     public void downloadZip(HttpServletResponse response) {
-        lock.lock();
-        System.err.println(lock);
+        String state = redisCache.getCacheObject("isExportState:" + SecurityUtils.getTenantId()).toString();
         String sqlDirectoryPath = zkqyConfig.getUploadPath() + "/engineeringdownload/sql/" + SecurityUtils.getTenantId();
         String jarDirectoryPath = zkqyConfig.getUploadPath() + "/engineeringdownload/jar/";
         try {
-            if (exportCompleted) {
+            if (StringUtils.isNotNull(state) && !state.isEmpty() && state.equals("true")) {
                 try {
                     List<Map<String, String>> fileList = listFiles(sqlDirectoryPath, jarDirectoryPath);
                     try {
@@ -99,7 +103,15 @@ public class DownloadController {
                 response.setStatus(HttpServletResponse.SC_NOT_FOUND);
             }
         } finally {
-            lock.unlock();
+            SysEngineering sysEngineering = new SysEngineering();
+            sysEngineering.setCreateTime(DateUtils.getNowDate());
+            sysEngineering.setDownloadTime(DateUtils.getNowDate());
+            sysEngineering.setEngineeringName(SecurityUtils.getLoginUser().getUser().getTenantName() + "-MES");
+            sysEngineering.setTenantId(SecurityUtils.getTenantId());
+            sysEngineeringService.insertSysEngineering(sysEngineering);
+
+            // 删除
+            redisCache.deleteObject("isExportState:" + SecurityUtils.getTenantId());
         }
     }
 
@@ -134,13 +146,12 @@ public class DownloadController {
         }
     }
 
-    public void setExportCompleted(boolean value) {
-        lock.lock();
-        System.err.println(lock);
+    public void setExportCompleted(boolean value, String tenantKey) {
         try {
             exportCompleted = value;
         } finally {
-            lock.unlock();
+            //  设置导出验证有效时间5分钟
+            redisCache.setCacheObject("isExportState:" + tenantKey, "true", 5, TimeUnit.MINUTES);
         }
     }
 

+ 18 - 5
zkqy-admin/src/main/java/com/zkqy/web/controller/projcetzip/ExportController.java

@@ -4,6 +4,9 @@ import com.zkqy.common.config.ZkqyConfig;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.core.domain.entity.SysUser;
 import com.zkqy.common.utils.SecurityUtils;
+import com.zkqy.web.controller.tool.TestController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -25,17 +28,24 @@ import com.zkqy.common.core.domain.entity.DataSource;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
+
 @RestController
 @RequestMapping("/export/project-db")
 public class ExportController {
 
     @Autowired
     private ThreadPoolTaskExecutor taskExecutor;
+
+    @Autowired
+    private DownloadController downloadController;
+
+    // 执行当前环境下的mysql
     private static final String MYSQLDUMP_PATH = "/usr/local/mysql/bin/mysqldump";
+
+    // sql 生成路径
     private static final String SQL_OUTPUT_PATH = "sql";
 
-    @Autowired
-    private DownloadController downloadController; // 注入DownloadController
+    private static final Logger log = LoggerFactory.getLogger(ExportController.class);
 
     @PostMapping("/start")
     public AjaxResult startExport(@RequestBody List<String> databaseNames) {
@@ -44,17 +54,20 @@ public class ExportController {
         SysUser sysUser = SecurityUtils.getLoginUser().getUser();
         String tenantid = sysUser.getTenant().getTenantId().toString();
 //        if (databaseNames == null || databaseNames.isEmpty()) {
-        databaseNames = Arrays.asList("ry-vue-call", datasourceInfo.getDatabaseName());
+//        databaseNames = Arrays.asList("ry-vue-call", datasourceInfo.getDatabaseName());
+        databaseNames = Arrays.asList(datasourceInfo.getDatabaseName());
 //        }
         try {
             // 获取数据库信息等
             exportDatabases(databaseNames, sourceFilePath, datasourceInfo, tenantid);
         } catch (Exception e) {
             e.printStackTrace();
+            log.error("数据生成失败:" + sysUser);
             return AjaxResult.error("数据生成失败!请联系管理员操作!");
         }
         // 导出完成后,设置导出状态为 true
-        downloadController.setExportCompleted(true);
+        downloadController.setExportCompleted(true, sysUser.getTenantId().toString());
+        log.info("导出数据文件成功!" + sysUser.getUserName());
         return AjaxResult.success("数据生成成功!");
     }
 
@@ -98,7 +111,7 @@ public class ExportController {
         } catch (IOException | InterruptedException | TimeoutException e) {
             e.printStackTrace();
         }
-     }
+    }
 
     private List<String> buildMysqldumpCommand(String databaseName, DataSource dataSource) {
         // 使用 Arrays.asList 创建不可变 List

+ 37 - 55
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysUserController.java

@@ -38,13 +38,12 @@ import com.zkqy.system.service.ISysUserService;
 
 /**
  * 用户信息
- * 
+ *
  * @author ruoyi
  */
 @RestController
 @RequestMapping("/system/user")
-public class SysUserController extends BaseController
-{
+public class SysUserController extends BaseController {
     @Autowired
     private ISysUserService userService;
 
@@ -62,8 +61,7 @@ public class SysUserController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:user:list')")
     @GetMapping("/list")
-    public TableDataInfo list(SysUser user)
-    {
+    public TableDataInfo list(SysUser user) {
         startPage();
         if (getLoginUser().isTenantAdmin()) {
             user.setTenantId(getTenantId());
@@ -75,8 +73,7 @@ public class SysUserController extends BaseController
     @Log(title = "用户管理", businessType = BusinessType.EXPORT)
     @PreAuthorize("@ss.hasPermi('system:user:export')")
     @PostMapping("/export")
-    public void export(HttpServletResponse response, SysUser user)
-    {
+    public void export(HttpServletResponse response, SysUser user) {
         List<SysUser> list = userService.selectUserList(user);
         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
         util.exportExcel(response, list, "用户数据");
@@ -85,8 +82,7 @@ public class SysUserController extends BaseController
     @Log(title = "用户管理", businessType = BusinessType.IMPORT)
     @PreAuthorize("@ss.hasPermi('system:user:import')")
     @PostMapping("/importData")
-    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
-    {
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
         List<SysUser> userList = util.importExcel(file.getInputStream());
         String operName = getUsername();
@@ -95,8 +91,7 @@ public class SysUserController extends BaseController
     }
 
     @PostMapping("/importTemplate")
-    public void importTemplate(HttpServletResponse response)
-    {
+    public void importTemplate(HttpServletResponse response) {
         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
         util.importTemplateExcel(response, "用户数据");
     }
@@ -105,28 +100,26 @@ public class SysUserController extends BaseController
      * 根据用户编号获取详细信息
      */
     @PreAuthorize("@ss.hasPermi('system:user:query')")
-    @GetMapping(value = { "/", "/{userId}" })
-    public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId)
-    {
+    @GetMapping(value = {"/", "/{userId}"})
+    public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) {
         userService.checkUserDataScope(userId);
         AjaxResult ajax = AjaxResult.success();
         List<SysRole> roles = roleService.selectRoleAll();
         roles.forEach(r -> {
-            if(r.getTenantId() == null){
+            if (r.getTenantId() == null) {
                 r.setTenantId(0L);
             }
         });
         List<SysPost> sysPosts = postService.selectPostAll();
         sysPosts.forEach(s -> {
-            if (s.getTenantId() == null){
+            if (s.getTenantId() == null) {
                 s.setTenantId(0L);
             }
         });
 
         ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin() && r.getTenantId().equals(getTenantId())).collect(Collectors.toList()));
         ajax.put("posts", sysPosts.stream().filter(p -> p.getTenantId().equals(getTenantId())).collect(Collectors.toList()));
-        if (StringUtils.isNotNull(userId))
-        {
+        if (StringUtils.isNotNull(userId)) {
             SysUser sysUser = userService.selectUserById(userId);
             ajax.put(AjaxResult.DATA_TAG, sysUser);
             ajax.put("postIds", postService.selectPostListByUserId(userId));
@@ -141,18 +134,12 @@ public class SysUserController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:user:add')")
     @Log(title = "用户管理", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysUser user)
-    {
-        if (!userService.checkUserNameUnique(user))
-        {
+    public AjaxResult add(@Validated @RequestBody SysUser user) {
+        if (!userService.checkUserNameUnique(user)) {
             return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
-        {
+        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
             return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
-        {
+        } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
             return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
         }
         user.setCreateBy(getUsername());
@@ -170,20 +157,14 @@ public class SysUserController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:user:edit')")
     @Log(title = "用户管理", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysUser user)
-    {
+    public AjaxResult edit(@Validated @RequestBody SysUser user) {
         userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
-        if (!userService.checkUserNameUnique(user))
-        {
+        if (!userService.checkUserNameUnique(user)) {
             return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
-        {
+        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
             return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
-        {
+        } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
             return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
         }
         user.setUpdateBy(getUsername());
@@ -196,10 +177,8 @@ public class SysUserController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:user:remove')")
     @Log(title = "用户管理", businessType = BusinessType.DELETE)
     @DeleteMapping("/{userIds}")
-    public AjaxResult remove(@PathVariable Long[] userIds)
-    {
-        if (ArrayUtils.contains(userIds, getUserId()))
-        {
+    public AjaxResult remove(@PathVariable Long[] userIds) {
+        if (ArrayUtils.contains(userIds, getUserId())) {
             return error("当前用户不能删除");
         }
         return toAjax(userService.deleteUserByIds(userIds));
@@ -211,8 +190,7 @@ public class SysUserController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:user:resetPwd')")
     @Log(title = "用户管理", businessType = BusinessType.UPDATE)
     @PutMapping("/resetPwd")
-    public AjaxResult resetPwd(@RequestBody SysUser user)
-    {
+    public AjaxResult resetPwd(@RequestBody SysUser user) {
         userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
@@ -226,8 +204,7 @@ public class SysUserController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:user:edit')")
     @Log(title = "用户管理", businessType = BusinessType.UPDATE)
     @PutMapping("/changeStatus")
-    public AjaxResult changeStatus(@RequestBody SysUser user)
-    {
+    public AjaxResult changeStatus(@RequestBody SysUser user) {
         userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
         user.setUpdateBy(getUsername());
@@ -239,8 +216,7 @@ public class SysUserController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:user:query')")
     @GetMapping("/authRole/{userId}")
-    public AjaxResult authRole(@PathVariable("userId") Long userId)
-    {
+    public AjaxResult authRole(@PathVariable("userId") Long userId) {
         AjaxResult ajax = AjaxResult.success();
         SysUser user = userService.selectUserById(userId);
         List<SysRole> roles = roleService.selectRolesByUserId(userId);
@@ -254,8 +230,7 @@ public class SysUserController extends BaseController
      */
     @Anonymous
     @GetMapping("/roleKeyByUserId/{userId}")
-    public AjaxResult roleKeyByUserId(@PathVariable("userId") Long userId)
-    {
+    public AjaxResult roleKeyByUserId(@PathVariable("userId") Long userId) {
         AjaxResult ajax = AjaxResult.success();
         String[] strings = roleService.selectRolesKeyByUserId(userId);
         ajax.put("rolesKey", JSON.toJSONString(strings));
@@ -268,8 +243,7 @@ public class SysUserController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:user:edit')")
     @Log(title = "用户管理", businessType = BusinessType.GRANT)
     @PutMapping("/authRole")
-    public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
-    {
+    public AjaxResult insertAuthRole(Long userId, Long[] roleIds) {
         userService.checkUserDataScope(userId);
         userService.insertUserAuth(userId, roleIds);
         return success();
@@ -280,8 +254,7 @@ public class SysUserController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:user:list')")
     @GetMapping("/deptTree")
-    public AjaxResult deptTree(SysDept dept)
-    {
+    public AjaxResult deptTree(SysDept dept) {
         if (getLoginUser().isTenantAdmin()) {
             dept.setTenantId(getTenantId());
         }
@@ -292,7 +265,16 @@ public class SysUserController extends BaseController
      * 查询所有用户
      */
     @GetMapping("/selectAllUser")
-    public AjaxResult selectAllUser(){
+    public AjaxResult selectAllUser() {
         return AjaxResult.success(userService.selectAllUser());
     }
+
+    /**
+     * 校验用户账号
+     */
+    @GetMapping("/isExistUser")
+    public AjaxResult isExistUser(String userName) {
+        return AjaxResult.success(userService.isExistUser(userName));
+    }
+
 }

+ 3 - 2
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/BpmExecuteProcessServiceImpl.java

@@ -107,11 +107,12 @@ public class BpmExecuteProcessServiceImpl implements IBpmExecuteProcessService {
                 List<CommonEntity> commonEntities1 = bpmExecuteNodeMiddleService.addExceptionScript(commonEntities);
                 commonEntities.forEach(item -> {
                     String keyName = item.getResultMap().get("benTaskNodeKey").toString();
+                    String taskKey = item.getResultMap().get("bepTaskKey").toString();
                     item.getResultMap().putAll(
                             commonEntities1.stream()
                                     .filter(ctem ->
-                                            ctem.getResultMap().get("benTaskNodeKey")
-                                                    .equals(keyName))
+                                            ctem.getResultMap().get("benTaskNodeKey").equals(keyName)
+                                                    && ctem.getResultMap().get("bepTaskKey").equals(taskKey))
                                     .findFirst()
                                     .get()
                                     .getResultMap()

+ 61 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/mes/ExceptionEditTheFinishTimeAgain.java

@@ -0,0 +1,61 @@
+package com.zkqy.execution.produce.dispersed.service.impl.runbpm.mes;
+
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormFilterConditionsVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
+import com.zkqy.execution.produce.dispersed.service.IRunBPMService;
+import com.zkqy.execution.produce.utils.EchoNodeFormData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PreDestroy;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 重新编辑完成时间-异常节点:有问题
+ */
+@Service("1af24b89-ce2f-4d1e-9b82-5158ebd708d0")
+@Scope("prototype")
+public class ExceptionEditTheFinishTimeAgain implements IRunBPMService {
+
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("id",Long.valueOf(bpmRunNodeFromVo.getTaskPlanKey()));
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("master_task", map, true));
+        return echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+    }
+
+    @Override
+    public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult afterValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    @Override
+    @PreDestroy
+    public boolean preDestroy() {
+        return true;
+    }
+}

+ 60 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/mes/ExceptionProductObsolescence.java

@@ -0,0 +1,60 @@
+package com.zkqy.execution.produce.dispersed.service.impl.runbpm.mes;
+
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormFilterConditionsVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
+import com.zkqy.execution.produce.dispersed.service.IRunBPMService;
+import com.zkqy.execution.produce.utils.EchoNodeFormData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PreDestroy;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 产品报废-异常节点
+ */
+@Service("f4c35300-1627-47e5-b809-ed22a0c6a0bd")
+@Scope("prototype")
+public class ExceptionProductObsolescence implements IRunBPMService {
+
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        Map<String,Object> map1 = new HashMap<>();
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("product_obsolescence", map1, true));
+        return echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+    }
+
+    @Override
+    public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult afterValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    @Override
+    @PreDestroy
+    public boolean preDestroy() {
+        return true;
+    }
+}

+ 63 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/mes/ExceptionQualityControlCardEdit.java

@@ -0,0 +1,63 @@
+package com.zkqy.execution.produce.dispersed.service.impl.runbpm.mes;
+
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormFilterConditionsVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
+import com.zkqy.execution.produce.dispersed.service.IRunBPMService;
+import com.zkqy.execution.produce.utils.EchoNodeFormData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PreDestroy;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 质控卡修改-异常节点
+ */
+
+@Service("f1aeb03c-9dd5-4a7c-820d-aaac458cda19")
+@Scope("prototype")
+public class ExceptionQualityControlCardEdit implements IRunBPMService {
+
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        //质控卡
+        Map<String,Object> map = new HashMap<>();
+//        map.put("task_process_key",bpmRunNodeFromVo.getTaskProcessKey());
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("record_quality_control_card", map, true));
+        return echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+    }
+
+    @Override
+    public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult afterValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    @Override
+    @PreDestroy
+    public boolean preDestroy() {
+        return true;
+    }
+}

+ 65 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/mes/ExceptionQualityControlCardSubCard.java

@@ -0,0 +1,65 @@
+package com.zkqy.execution.produce.dispersed.service.impl.runbpm.mes;
+
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormFilterConditionsVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
+import com.zkqy.execution.produce.dispersed.service.IRunBPMService;
+import com.zkqy.execution.produce.utils.EchoNodeFormData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PreDestroy;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 质控卡分卡-异常节点
+ */
+@Service("baf71011-9517-4ddc-994e-d1a9add9a7d5")
+@Scope("prototype")
+public class ExceptionQualityControlCardSubCard implements IRunBPMService {
+
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        //质控卡
+        Map<String,Object> map = new HashMap<>();
+        map.put("task_process_key",bpmRunNodeFromVo.getTaskProcessKey());
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("record_quality_control_card", map, false));
+        //质控卡分卡
+        Map<String,Object> map1 = new HashMap<>();
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("quality_control_card_sub_card", map1, true));
+        return echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+    }
+
+    @Override
+    public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult afterValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    @Override
+    @PreDestroy
+    public boolean preDestroy() {
+        return true;
+    }
+}

+ 60 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/mes/ExceptionTaskTermination.java

@@ -0,0 +1,60 @@
+package com.zkqy.execution.produce.dispersed.service.impl.runbpm.mes;
+
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormFilterConditionsVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
+import com.zkqy.execution.produce.dispersed.service.IRunBPMService;
+import com.zkqy.execution.produce.utils.EchoNodeFormData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PreDestroy;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 任务结束-异常节点
+ */
+@Service("bd2cc2f3-5dec-4aec-aeea-2c0aee6b3750")
+@Scope("prototype")
+public class ExceptionTaskTermination implements IRunBPMService {
+
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        Map<String,Object> map1 = new HashMap<>();
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("task_termination", map1, true));
+        return echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+    }
+
+    @Override
+    public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult afterValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    @Override
+    @PreDestroy
+    public boolean preDestroy() {
+        return true;
+    }
+}

+ 1 - 1
zkqy-system/src/main/java/com/zkqy/system/mapper/SysMenuMapper.java

@@ -25,7 +25,7 @@ public interface SysMenuMapper {
      * @param tenantId
      * @return
      */
-    public List<SysMenu> selectTenantMenuList(Long tenantId);
+    public List<SysMenu> selectTenantMenuList(@Param("menu") SysMenu menu,@Param("tenantId") Long tenantId);
 
     /**
      * 根据用户所有权限

+ 7 - 0
zkqy-system/src/main/java/com/zkqy/system/mapper/SysUserMapper.java

@@ -143,4 +143,11 @@ public interface SysUserMapper
      * @return
      */
     int selectUserByUserIds(List<Long> userIds);
+
+    /**
+     * 根据账号查询当前库中存在多少相同账号
+     * @param userName 账号
+     * @return
+     */
+    int queryCountUserName(String userName);
 }

+ 7 - 0
zkqy-system/src/main/java/com/zkqy/system/service/ISysUserService.java

@@ -216,4 +216,11 @@ public interface ISysUserService
      * @return
      */
     int selectUserByUserIds(String userIds);
+
+    /**
+     * 根据账号查询当前库中存在多少相同账号
+     * @param userName 账号
+     * @return
+     */
+    boolean isExistUser(String userName);
 }

+ 1 - 1
zkqy-system/src/main/java/com/zkqy/system/service/impl/SysMenuServiceImpl.java

@@ -79,7 +79,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
         if (SysUser.isAdmin(userId)) {
             menuList = menuMapper.selectMenuList(menu);
         } else if (user.isTenantAdmin()) {
-            menuList = menuMapper.selectTenantMenuList(user.getTenantId());
+            menuList = menuMapper.selectTenantMenuList(menu,user.getTenantId());
         } else {
             menu.getParams().put("userId", userId);
             menuList = menuMapper.selectMenuListByUserId(menu);

+ 93 - 135
zkqy-system/src/main/java/com/zkqy/system/service/impl/SysUserServiceImpl.java

@@ -5,6 +5,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 import javax.validation.Validator;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,12 +34,11 @@ import com.zkqy.system.service.ISysUserService;
 
 /**
  * 用户 业务层处理
- * 
+ *
  * @author ruoyi
  */
 @Service
-public class SysUserServiceImpl implements ISysUserService
-{
+public class SysUserServiceImpl implements ISysUserService {
     private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
 
     @Autowired
@@ -64,79 +64,72 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 根据条件分页查询用户列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
     @Override
     @DataScope(deptAlias = "d", userAlias = "u")
-    public List<SysUser> selectUserList(SysUser user)
-    {
+    public List<SysUser> selectUserList(SysUser user) {
         return userMapper.selectUserList(user);
     }
 
     /**
      * 根据条件分页查询已分配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
     @Override
     @DataScope(deptAlias = "d", userAlias = "u")
-    public List<SysUser> selectAllocatedList(SysUser user)
-    {
+    public List<SysUser> selectAllocatedList(SysUser user) {
         return userMapper.selectAllocatedList(user);
     }
 
     /**
      * 根据条件分页查询未分配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
     @Override
     @DataScope(deptAlias = "d", userAlias = "u")
-    public List<SysUser> selectUnallocatedList(SysUser user)
-    {
+    public List<SysUser> selectUnallocatedList(SysUser user) {
         return userMapper.selectUnallocatedList(user);
     }
 
     /**
      * 通过用户名查询用户
-     * 
+     *
      * @param userName 用户名
      * @return 用户对象信息
      */
     @Override
-    public SysUser selectUserByUserName(String userName)
-    {
+    public SysUser selectUserByUserName(String userName) {
         return userMapper.selectUserByUserName(userName);
     }
 
     /**
      * 通过用户ID查询用户
-     * 
+     *
      * @param userId 用户ID
      * @return 用户对象信息
      */
     @Override
-    public SysUser selectUserById(Long userId)
-    {
+    public SysUser selectUserById(Long userId) {
         return userMapper.selectUserById(userId);
     }
 
     /**
      * 查询用户所属角色组
-     * 
+     *
      * @param userName 用户名
      * @return 结果
      */
     @Override
-    public String selectUserRoleGroup(String userName)
-    {
+    public String selectUserRoleGroup(String userName) {
         List<SysRole> list = roleMapper.selectRolesByUserName(userName);
-        if (CollectionUtils.isEmpty(list))
-        {
+        if (CollectionUtils.isEmpty(list)) {
             return StringUtils.EMPTY;
         }
         return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(","));
@@ -144,16 +137,14 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 查询用户所属岗位组
-     * 
+     *
      * @param userName 用户名
      * @return 结果
      */
     @Override
-    public String selectUserPostGroup(String userName)
-    {
+    public String selectUserPostGroup(String userName) {
         List<SysPost> list = postMapper.selectPostsByUserName(userName);
-        if (CollectionUtils.isEmpty(list))
-        {
+        if (CollectionUtils.isEmpty(list)) {
             return StringUtils.EMPTY;
         }
         return list.stream().map(SysPost::getPostName).collect(Collectors.joining(","));
@@ -161,17 +152,15 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 校验用户名称是否唯一
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
     @Override
-    public boolean checkUserNameUnique(SysUser user)
-    {
+    public boolean checkUserNameUnique(SysUser user) {
         Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
         SysUser info = userMapper.checkUserNameUnique(user.getUserName());
-        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
-        {
+        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -184,12 +173,10 @@ public class SysUserServiceImpl implements ISysUserService
      * @return
      */
     @Override
-    public boolean checkPhoneUnique(SysUser user)
-    {
+    public boolean checkPhoneUnique(SysUser user) {
         Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
         SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber());
-        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
-        {
+        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -202,12 +189,10 @@ public class SysUserServiceImpl implements ISysUserService
      * @return
      */
     @Override
-    public boolean checkEmailUnique(SysUser user)
-    {
+    public boolean checkEmailUnique(SysUser user) {
         Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
         SysUser info = userMapper.checkEmailUnique(user.getEmail());
-        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
-        {
+        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -215,33 +200,28 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 校验用户是否允许操作
-     * 
+     *
      * @param user 用户信息
      */
     @Override
-    public void checkUserAllowed(SysUser user)
-    {
-        if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin())
-        {
+    public void checkUserAllowed(SysUser user) {
+        if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) {
             throw new ServiceException("不允许操作超级管理员用户");
         }
     }
 
     /**
      * 校验用户是否有数据权限
-     * 
+     *
      * @param userId 用户id
      */
     @Override
-    public void checkUserDataScope(Long userId)
-    {
-        if (!SysUser.isAdmin(SecurityUtils.getUserId()))
-        {
+    public void checkUserDataScope(Long userId) {
+        if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
             SysUser user = new SysUser();
             user.setUserId(userId);
             List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);
-            if (StringUtils.isEmpty(users))
-            {
+            if (StringUtils.isEmpty(users)) {
                 throw new ServiceException("没有权限访问用户数据!");
             }
         }
@@ -249,14 +229,13 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 新增保存用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
     @Override
     @Transactional
-    public int insertUser(SysUser user)
-    {
+    public int insertUser(SysUser user) {
         // 新增用户信息
         int rows = userMapper.insertUser(user);
         // 新增用户岗位关联
@@ -268,26 +247,24 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 注册用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
     @Override
-    public boolean registerUser(SysUser user)
-    {
+    public boolean registerUser(SysUser user) {
         return userMapper.insertUser(user) > 0;
     }
 
     /**
      * 修改保存用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
     @Override
     @Transactional
-    public int updateUser(SysUser user)
-    {
+    public int updateUser(SysUser user) {
         Long userId = user.getUserId();
         // 删除用户与角色关联
         userRoleMapper.deleteUserRoleByUserId(userId);
@@ -302,104 +279,94 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 用户授权角色
-     * 
-     * @param userId 用户ID
+     *
+     * @param userId  用户ID
      * @param roleIds 角色组
      */
     @Override
     @Transactional
-    public void insertUserAuth(Long userId, Long[] roleIds)
-    {
+    public void insertUserAuth(Long userId, Long[] roleIds) {
         userRoleMapper.deleteUserRoleByUserId(userId);
         insertUserRole(userId, roleIds);
     }
 
     /**
      * 修改用户状态
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
     @Override
-    public int updateUserStatus(SysUser user)
-    {
+    public int updateUserStatus(SysUser user) {
         return userMapper.updateUser(user);
     }
 
     /**
      * 修改用户基本信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
     @Override
-    public int updateUserProfile(SysUser user)
-    {
+    public int updateUserProfile(SysUser user) {
         return userMapper.updateUser(user);
     }
 
     /**
      * 修改用户头像
-     * 
+     *
      * @param userName 用户名
-     * @param avatar 头像地址
+     * @param avatar   头像地址
      * @return 结果
      */
     @Override
-    public boolean updateUserAvatar(String userName, String avatar)
-    {
+    public boolean updateUserAvatar(String userName, String avatar) {
         return userMapper.updateUserAvatar(userName, avatar) > 0;
     }
 
     /**
      * 重置用户密码
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
     @Override
-    public int resetPwd(SysUser user)
-    {
+    public int resetPwd(SysUser user) {
         return userMapper.updateUser(user);
     }
 
     /**
      * 重置用户密码
-     * 
+     *
      * @param userName 用户名
      * @param password 密码
      * @return 结果
      */
     @Override
-    public int resetUserPwd(String userName, String password)
-    {
+    public int resetUserPwd(String userName, String password) {
         return userMapper.resetUserPwd(userName, password);
     }
 
     /**
      * 新增用户角色信息
-     * 
+     *
      * @param user 用户对象
      */
-    public void insertUserRole(SysUser user)
-    {
+    public void insertUserRole(SysUser user) {
         this.insertUserRole(user.getUserId(), user.getRoleIds());
     }
 
     /**
      * 新增用户岗位信息
-     * 
+     *
      * @param user 用户对象
      */
-    public void insertUserPost(SysUser user)
-    {
+    public void insertUserPost(SysUser user) {
         Long[] posts = user.getPostIds();
-        if (StringUtils.isNotEmpty(posts))
-        {
+        if (StringUtils.isNotEmpty(posts)) {
             // 新增用户与岗位管理
             List<SysUserPost> list = new ArrayList<SysUserPost>(posts.length);
-            for (Long postId : posts)
-            {
+            for (Long postId : posts) {
                 SysUserPost up = new SysUserPost();
                 up.setUserId(user.getUserId());
                 up.setPostId(postId);
@@ -411,18 +378,15 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 新增用户角色信息
-     * 
-     * @param userId 用户ID
+     *
+     * @param userId  用户ID
      * @param roleIds 角色组
      */
-    public void insertUserRole(Long userId, Long[] roleIds)
-    {
-        if (StringUtils.isNotEmpty(roleIds))
-        {
+    public void insertUserRole(Long userId, Long[] roleIds) {
+        if (StringUtils.isNotEmpty(roleIds)) {
             // 新增用户与角色管理
             List<SysUserRole> list = new ArrayList<SysUserRole>(roleIds.length);
-            for (Long roleId : roleIds)
-            {
+            for (Long roleId : roleIds) {
                 SysUserRole ur = new SysUserRole();
                 ur.setUserId(userId);
                 ur.setRoleId(roleId);
@@ -434,14 +398,13 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 通过用户ID删除用户
-     * 
+     *
      * @param userId 用户ID
      * @return 结果
      */
     @Override
     @Transactional
-    public int deleteUserById(Long userId)
-    {
+    public int deleteUserById(Long userId) {
         // 删除用户与角色关联
         userRoleMapper.deleteUserRoleByUserId(userId);
         // 删除用户与岗位表
@@ -451,16 +414,14 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 批量删除用户信息
-     * 
+     *
      * @param userIds 需要删除的用户ID
      * @return 结果
      */
     @Override
     @Transactional
-    public int deleteUserByIds(Long[] userIds)
-    {
-        for (Long userId : userIds)
-        {
+    public int deleteUserByIds(Long[] userIds) {
+        for (Long userId : userIds) {
             checkUserAllowed(new SysUser(userId));
             checkUserDataScope(userId);
         }
@@ -473,17 +434,15 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 导入用户数据
-     * 
-     * @param userList 用户数据列表
+     *
+     * @param userList        用户数据列表
      * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
-     * @param operName 操作用户
+     * @param operName        操作用户
      * @return 结果
      */
     @Override
-    public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName)
-    {
-        if (StringUtils.isNull(userList) || userList.size() == 0)
-        {
+    public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) {
+        if (StringUtils.isNull(userList) || userList.size() == 0) {
             throw new ServiceException("导入用户数据不能为空!");
         }
         int successNum = 0;
@@ -491,23 +450,18 @@ public class SysUserServiceImpl implements ISysUserService
         StringBuilder successMsg = new StringBuilder();
         StringBuilder failureMsg = new StringBuilder();
         String password = configService.selectConfigByKey("sys.user.initPassword");
-        for (SysUser user : userList)
-        {
-            try
-            {
+        for (SysUser user : userList) {
+            try {
                 // 验证是否存在这个用户
                 SysUser u = userMapper.selectUserByUserName(user.getUserName());
-                if (StringUtils.isNull(u))
-                {
+                if (StringUtils.isNull(u)) {
                     BeanValidators.validateWithException(validator, user);
                     user.setPassword(SecurityUtils.encryptPassword(password));
                     user.setCreateBy(operName);
                     userMapper.insertUser(user);
                     successNum++;
                     successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 导入成功");
-                }
-                else if (isUpdateSupport)
-                {
+                } else if (isUpdateSupport) {
                     BeanValidators.validateWithException(validator, user);
                     checkUserAllowed(u);
                     checkUserDataScope(u.getUserId());
@@ -516,28 +470,21 @@ public class SysUserServiceImpl implements ISysUserService
                     userMapper.updateUser(user);
                     successNum++;
                     successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 更新成功");
-                }
-                else
-                {
+                } else {
                     failureNum++;
                     failureMsg.append("<br/>" + failureNum + "、账号 " + user.getUserName() + " 已存在");
                 }
-            }
-            catch (Exception e)
-            {
+            } catch (Exception e) {
                 failureNum++;
                 String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败:";
                 failureMsg.append(msg + e.getMessage());
                 log.error(msg, e);
             }
         }
-        if (failureNum > 0)
-        {
+        if (failureNum > 0) {
             failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
             throw new ServiceException(failureMsg.toString());
-        }
-        else
-        {
+        } else {
             successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
         }
         return successMsg.toString();
@@ -557,4 +504,15 @@ public class SysUserServiceImpl implements ISysUserService
         return userMapper.selectUserByUserIds(userIdsList);
     }
 
+    @Override
+    public boolean isExistUser(String userName) {
+        int count = userMapper.queryCountUserName(userName);
+        if (count == 0) {
+            return true;
+        } else if (count == 1) {
+            return false;
+        }
+        return false;
+    }
+
 }

+ 7 - 1
zkqy-system/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -72,13 +72,19 @@
 		order by parent_id, order_num
 	</select>
 
-	<select id="selectTenantMenuList" parameterType="Long" resultMap="SysMenuResult">
+	<select id="selectTenantMenuList" resultMap="SysMenuResult">
 		select m.menu_id, menu_name, parent_id, order_num, path, component, `query`, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time, tm.`tenant_id`
 		from sys_menu m
 		left join sys_tenant_menu tm on tm.menu_id = m.menu_id
 		where tm.tenant_id = #{tenantId}
 		and m.menu_name not in ('数据引擎','流程引擎','表单引擎')
 		and parent_id not in (select menu_id from  sys_menu where menu_name in ("数据引擎","流程引擎","表单引擎"))
+		<if test="menu.menuName != null and menu.menuName != ''">
+			AND m.menu_name like concat('%', #{menu.menuName}, '%')
+		</if>
+		<if test="menu.status != null and menu.status != ''">
+			AND m.status = #{menu.status}
+		</if>
 		order by parent_id, order_num
 	</select>
 	

+ 3 - 0
zkqy-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -322,5 +322,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			#{userId}
 		</foreach>
 	</select>
+	<select id="queryCountUserName" resultType="int">
+		select count(1) from sys_user where user_name = #{userName} and del_flag = '0'
+	</select>
 
 </mapper> 

+ 10 - 1
zkqy-ui/src/api/system/user.js

@@ -12,7 +12,7 @@ export function listUser(query) {
 
 // 查询用户详细
 export function getUser(userId) {
-  console.log(userId,"dddddd")
+  console.log(userId, "dddddd")
   return request({
     url: '/system/user/' + parseStrEmpty(userId),
     method: 'get'
@@ -134,3 +134,12 @@ export function deptTreeSelect() {
     method: 'get'
   })
 }
+
+// 判断用户账号是否存在
+export function getIsExistUser(query) {
+  return request({
+    url: '/system/user/isExistUser',
+    method: 'get',
+    params: query
+  })
+}

+ 24 - 1
zkqy-ui/src/views/system/tenant/index.vue

@@ -187,7 +187,6 @@
               </el-dropdown-item>
             </el-dropdown-menu>
           </el-dropdown>
-          
         </template>
       </el-table-column>
     </el-table>
@@ -369,6 +368,7 @@ import {
 } from "@/api/system/tenant";
 import { getDataSourceInfo, insertDataSource } from "@/api/system/data";
 import { servicesLoading } from "@/utils/zkqy";
+import { getIsExistUser } from "@/api/system/user";
 
 export default {
   name: "Tenant",
@@ -494,6 +494,29 @@ export default {
     this.selectAllUser();
   },
   methods: {
+    // 租户名自定义校验规则
+    async tenantAccountValidator(rule, value, callback) {
+      // let isRepeat = this.allUser.filter((item) => item.userName == value);
+      // if (isRepeat.length !== 0) {
+      //   callback(new Error("租户账号重复"));
+      // } else {
+      //   callback();
+      // }
+      if (value) {
+        await getIsExistUser({ userName: value }).then((res) => {
+          if (res.code == 200) {
+            if (res.data) {
+              callback();
+            } else {
+              callback(new Error("租户管理员账号已存在"));
+            }
+          } else {
+            callback(new Error("租户管理员账号校验失败,请重新输入"));
+          }
+        });
+      }
+      callback();
+    },
     // 获取所用用户名,作校验用
     async selectAllUser() {
       let res = await selectAllUser();

+ 26 - 2
zkqy-ui/src/views/system/user/index.vue

@@ -397,12 +397,12 @@
           <el-col :span="12">
             <el-form-item
               v-if="form.userId == undefined"
-              label="用户名称"
+              label="用户账号"
               prop="userName"
             >
               <el-input
                 v-model="form.userName"
-                placeholder="请输入用户名称"
+                placeholder="请输入用户账号"
                 maxlength="30"
               />
             </el-form-item>
@@ -567,6 +567,7 @@ import { getToken } from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import { mapGetters } from "vuex";
+import { getIsExistUser } from "@/api/system/user";
 
 export default {
   name: "User",
@@ -659,6 +660,7 @@ export default {
             message: "用户名称长度必须介于 2 和 20 之间",
             trigger: "blur",
           },
+          { trigger: "blur", validator: this.validateNickName },
         ],
         nickName: [
           { required: true, message: "用户昵称不能为空", trigger: "blur" },
@@ -712,6 +714,28 @@ export default {
     },
   },
   methods: {
+    // 校验用户昵称是否重复
+    async validateNickName(rule, value, callback) {
+      // if (this.form.userId != undefined && value == this.oldNickname) {
+      //   //修改时不校验
+      //   callback();
+      //   return;
+      // }
+      if (value) {
+        await getIsExistUser({ userName: value }).then((res) => {
+          if (res.code == 200) {
+            if (res.data) {
+              callback();
+            } else {
+              callback(new Error("用户名称已存在"));
+            }
+          } else {
+            callback(new Error("用户名称校验失败,请重新输入"));
+          }
+        });
+      }
+      callback();
+    },
     // 表格中操作按钮的显示与隐藏
     isShowHandlerBtn(row) {
       if (this.isHasAdmin) {