Просмотр исходного кода

Merge branch 'master' of http://39.98.38.2:13000/lql/slaj

LPJ 4 дней назад
Родитель
Сommit
eff878c13e
74 измененных файлов с 1969 добавлено и 957 удалено
  1. 2 2
      gw-admin/src/main/java/com/goldenwater/GoldenwaterApplication.java
  2. 2 2
      gw-admin/src/main/java/com/goldenwater/web/controller/system/SysMenuController.java
  3. 4 4
      gw-admin/src/main/java/com/goldenwater/web/controller/system/SysPostController.java
  4. 7 7
      gw-admin/src/main/java/com/goldenwater/web/controller/system/SysRoleController.java
  5. 2 2
      gw-admin/src/main/java/com/goldenwater/web/controller/system/SysUserController.java
  6. 12 11
      gw-common/src/main/java/com/goldenwater/common/core/domain/entity/SysRole.java
  7. 9 9
      gw-common/src/main/java/com/goldenwater/common/core/domain/entity/SysUser.java
  8. 2 1
      gw-slaj/src/main/java/com/goldenwater/slaj/eme/controller/BusiConplanBasicController.java
  9. 22 11
      gw-slaj/src/main/java/com/goldenwater/slaj/eme/controller/MediaController.java
  10. 53 17
      gw-slaj/src/main/java/com/goldenwater/slaj/eme/domain/BusiConplanBasic.java
  11. 2 2
      gw-slaj/src/main/java/com/goldenwater/slaj/eme/service/IBusiConplanBasicService.java
  12. 22 3
      gw-slaj/src/main/java/com/goldenwater/slaj/eme/service/impl/BusiConplanBasicServiceImpl.java
  13. 1 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/controller/BisOrgMonRepPeriController.java
  14. 62 7
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/controller/ObjHiddController.java
  15. 2 1
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/controller/TBusiHiddCountController.java
  16. 3 2
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/controller/TBusiHiddCountMonController.java
  17. 1 1
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/domain/ObjHidd.java
  18. 4 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/domain/ObjHiddVo.java
  19. 12 3
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/mapper/BisOrgMonRepPeriMapper.java
  20. 18 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/mapper/RelBisMedMapper.java
  21. 7 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/mapper/TBusiHiddCountMapper.java
  22. 8 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/mapper/TBusiHiddCountMonMapper.java
  23. 9 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/IRelBisMedService.java
  24. 8 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/ITBusiHiddCountMonService.java
  25. 7 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/ITBusiHiddCountService.java
  26. 80 39
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/impl/BisOrgMonRepPeriServiceImpl.java
  27. 2 1
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/impl/ObjHiddServiceImpl.java
  28. 10 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/impl/RelBisMedServiceImpl.java
  29. 11 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/impl/TBusiHiddCountMonServiceImpl.java
  30. 5 0
      gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/impl/TBusiHiddCountServiceImpl.java
  31. 1 1
      gw-slaj/src/main/java/com/goldenwater/slaj/obj/domain/ObjHidd.java
  32. 9 3
      gw-slaj/src/main/resources/mapper/slaj/hidd/BisMajHiddSupMapper.xml
  33. 40 31
      gw-slaj/src/main/resources/mapper/slaj/hidd/BisOrgMonRepPeriMapper.xml
  34. 1 1
      gw-slaj/src/main/resources/mapper/slaj/hidd/BisOrgMonRepRevoMapper.xml
  35. 21 10
      gw-slaj/src/main/resources/mapper/slaj/hidd/ObjHiddMapper.xml
  36. 14 0
      gw-slaj/src/main/resources/mapper/slaj/hidd/RelBisMedMapper.xml
  37. 92 8
      gw-slaj/src/main/resources/mapper/slaj/hidd/TBusiHiddCountMapper.xml
  38. 5 5
      gw-system/src/main/java/com/goldenwater/system/domain/SysPost.java
  39. 8 8
      gw-system/src/main/java/com/goldenwater/system/domain/SysRoleDept.java
  40. 5 5
      gw-system/src/main/java/com/goldenwater/system/domain/SysRoleMenu.java
  41. 5 5
      gw-system/src/main/java/com/goldenwater/system/domain/SysUserPost.java
  42. 5 5
      gw-system/src/main/java/com/goldenwater/system/domain/SysUserRole.java
  43. 1 1
      gw-system/src/main/java/com/goldenwater/system/mapper/SysDeptMapper.java
  44. 2 2
      gw-system/src/main/java/com/goldenwater/system/mapper/SysMenuMapper.java
  45. 15 15
      gw-system/src/main/java/com/goldenwater/system/mapper/SysPostMapper.java
  46. 7 7
      gw-system/src/main/java/com/goldenwater/system/mapper/SysRoleDeptMapper.java
  47. 16 16
      gw-system/src/main/java/com/goldenwater/system/mapper/SysRoleMapper.java
  48. 7 7
      gw-system/src/main/java/com/goldenwater/system/mapper/SysRoleMenuMapper.java
  49. 1 1
      gw-system/src/main/java/com/goldenwater/system/mapper/SysUserPostMapper.java
  50. 2 2
      gw-system/src/main/java/com/goldenwater/system/mapper/SysUserRoleMapper.java
  51. 1 1
      gw-system/src/main/java/com/goldenwater/system/service/ISysDeptService.java
  52. 2 2
      gw-system/src/main/java/com/goldenwater/system/service/ISysMenuService.java
  53. 16 16
      gw-system/src/main/java/com/goldenwater/system/service/ISysPostService.java
  54. 28 28
      gw-system/src/main/java/com/goldenwater/system/service/ISysRoleService.java
  55. 25 25
      gw-system/src/main/java/com/goldenwater/system/service/ISysUserService.java
  56. 1 1
      gw-system/src/main/java/com/goldenwater/system/service/impl/SysDeptServiceImpl.java
  57. 2 2
      gw-system/src/main/java/com/goldenwater/system/service/impl/SysMenuServiceImpl.java
  58. 21 21
      gw-system/src/main/java/com/goldenwater/system/service/impl/SysPostServiceImpl.java
  59. 72 116
      gw-system/src/main/java/com/goldenwater/system/service/impl/SysRoleServiceImpl.java
  60. 32 32
      gw-system/src/main/java/com/goldenwater/system/service/impl/SysUserServiceImpl.java
  61. 8 8
      gw-system/src/main/resources/mapper/system/SysMenuMapper.xml
  62. 17 17
      gw-system/src/main/resources/mapper/system/SysPostMapper.xml
  63. 33 33
      gw-system/src/main/resources/mapper/system/SysRoleMapper.xml
  64. 12 12
      gw-system/src/main/resources/mapper/system/SysUserMapper.xml
  65. BIN
      gw-ui/public/favicon.ico
  66. 8 0
      gw-ui/src/api/slaj/hidd.js
  67. 11 24
      gw-ui/src/components/FileUpload/index.vue
  68. 13 30
      gw-ui/src/components/OrgSelect/index.vue
  69. 111 0
      gw-ui/src/components/SubOrgSelect/index.vue
  70. 861 303
      gw-ui/src/views/slaj/eme/conplanbasic/index.vue
  71. 2 1
      gw-ui/src/views/slaj/hidd/month.vue
  72. 2 2
      gw-ui/src/views/slaj/hidd/monthDetail.vue
  73. 36 17
      gw-ui/src/views/slaj/hidd/orgEngQuery.vue
  74. 9 8
      gw-ui/src/views/slaj/hidd/supList.vue

+ 2 - 2
gw-admin/src/main/java/com/goldenwater/GoldenwaterApplication.java

@@ -9,11 +9,11 @@ import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
  *
  * @author goldenwater
  */
-@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
 public class GoldenwaterApplication {
     public static void main(String[] args) {
         // System.setProperty("spring.devtools.restart.enabled", "false");
         SpringApplication.run(GoldenwaterApplication.class, args);
-        System.out.println("(♥◠‿◠)ノ゙  北京金水启动成功   ლ(´ڡ`ლ)゙");
+        System.out.println(" 北京金水启动成功 ");
     }
 }

+ 2 - 2
gw-admin/src/main/java/com/goldenwater/web/controller/system/SysMenuController.java

@@ -69,7 +69,7 @@ public class SysMenuController extends BaseController
      * 加载对应角色菜单列表树
      */
     @GetMapping(value = "/roleMenuTreeselect/{roleId}")
-    public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId)
+    public AjaxResult roleMenuTreeselect(@PathVariable("roleId") String roleId)
     {
         List<SysMenu> menus = menuService.selectMenuList(getUserId());
         AjaxResult ajax = AjaxResult.success();
@@ -162,4 +162,4 @@ public class SysMenuController extends BaseController
         }
         return toAjax(menuService.deleteMenuById(menuId));
     }
-}
+}

+ 4 - 4
gw-admin/src/main/java/com/goldenwater/web/controller/system/SysPostController.java

@@ -24,7 +24,7 @@ import com.goldenwater.system.service.ISysPostService;
 
 /**
  * 岗位信息操作处理
- * 
+ *
  * @author goldenwater
  */
 @RestController
@@ -45,7 +45,7 @@ public class SysPostController extends BaseController
         List<SysPost> list = postService.selectPostList(post);
         return getDataTable(list);
     }
-    
+
     @Log(title = "岗位管理", businessType = BusinessType.EXPORT)
     @PreAuthorize("@ss.hasPermi('system:post:export')")
     @PostMapping("/export")
@@ -61,7 +61,7 @@ public class SysPostController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:post:query')")
     @GetMapping(value = "/{postId}")
-    public AjaxResult getInfo(@PathVariable Long postId)
+    public AjaxResult getInfo(@PathVariable String postId)
     {
         return success(postService.selectPostById(postId));
     }
@@ -112,7 +112,7 @@ public class SysPostController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:post:remove')")
     @Log(title = "岗位管理", businessType = BusinessType.DELETE)
     @DeleteMapping("/{postIds}")
-    public AjaxResult remove(@PathVariable Long[] postIds)
+    public AjaxResult remove(@PathVariable String[] postIds)
     {
         return toAjax(postService.deletePostByIds(postIds));
     }

+ 7 - 7
gw-admin/src/main/java/com/goldenwater/web/controller/system/SysRoleController.java

@@ -33,7 +33,7 @@ import com.goldenwater.system.service.ISysUserService;
 
 /**
  * 角色信息
- * 
+ *
  * @author goldenwater
  */
 @RestController
@@ -79,7 +79,7 @@ public class SysRoleController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:role:query')")
     @GetMapping(value = "/{roleId}")
-    public AjaxResult getInfo(@PathVariable Long roleId)
+    public AjaxResult getInfo(@PathVariable String roleId)
     {
         roleService.checkRoleDataScope(roleId);
         return success(roleService.selectRoleById(roleId));
@@ -125,7 +125,7 @@ public class SysRoleController extends BaseController
             return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
         }
         role.setUpdateBy(getUsername());
-        
+
         if (roleService.updateRole(role) > 0)
         {
             // 更新缓存用户权限
@@ -174,7 +174,7 @@ public class SysRoleController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:role:remove')")
     @Log(title = "角色管理", businessType = BusinessType.DELETE)
     @DeleteMapping("/{roleIds}")
-    public AjaxResult remove(@PathVariable Long[] roleIds)
+    public AjaxResult remove(@PathVariable String[] roleIds)
     {
         return toAjax(roleService.deleteRoleByIds(roleIds));
     }
@@ -230,7 +230,7 @@ public class SysRoleController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:role:edit')")
     @Log(title = "角色管理", businessType = BusinessType.GRANT)
     @PutMapping("/authUser/cancelAll")
-    public AjaxResult cancelAuthUserAll(Long roleId, String[] userIds)
+    public AjaxResult cancelAuthUserAll(String roleId, String[] userIds)
     {
         return toAjax(roleService.deleteAuthUsers(roleId, userIds));
     }
@@ -241,7 +241,7 @@ public class SysRoleController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:role:edit')")
     @Log(title = "角色管理", businessType = BusinessType.GRANT)
     @PutMapping("/authUser/selectAll")
-    public AjaxResult selectAuthUserAll(Long roleId, String[] userIds)
+    public AjaxResult selectAuthUserAll(String roleId, String[] userIds)
     {
         roleService.checkRoleDataScope(roleId);
         return toAjax(roleService.insertAuthUsers(roleId, userIds));
@@ -252,7 +252,7 @@ public class SysRoleController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:role:query')")
     @GetMapping(value = "/deptTree/{roleId}")
-    public AjaxResult deptTree(@PathVariable("roleId") Long roleId)
+    public AjaxResult deptTree(@PathVariable("roleId") String roleId)
     {
         AjaxResult ajax = AjaxResult.success();
         ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));

+ 2 - 2
gw-admin/src/main/java/com/goldenwater/web/controller/system/SysUserController.java

@@ -34,7 +34,7 @@ import com.goldenwater.system.service.ISysUserService;
 
 /**
  * 用户信息
- * 
+ *
  * @author goldenwater
  */
 @RestController
@@ -236,7 +236,7 @@ public class SysUserController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:user:edit')")
     @Log(title = "用户管理", businessType = BusinessType.GRANT)
     @PutMapping("/authRole")
-    public AjaxResult insertAuthRole(String userId, Long[] roleIds)
+    public AjaxResult insertAuthRole(String userId, String[] roleIds)
     {
         userService.checkUserDataScope(userId);
         roleService.checkRoleDataScope(roleIds);

+ 12 - 11
gw-common/src/main/java/com/goldenwater/common/core/domain/entity/SysRole.java

@@ -4,6 +4,7 @@ import java.util.Set;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.goldenwater.common.annotation.Excel;
@@ -12,7 +13,7 @@ import com.goldenwater.common.core.domain.BaseEntity;
 
 /**
  * 角色表 sys_role
- * 
+ *
  * @author goldenwater
  */
 public class SysRole extends BaseEntity
@@ -20,8 +21,8 @@ public class SysRole extends BaseEntity
     private static final long serialVersionUID = 1L;
 
     /** 角色ID */
-    @Excel(name = "角色序号", cellType = ColumnType.NUMERIC)
-    private Long roleId;
+    @Excel(name = "角色序号")
+    private String roleId;
 
     /** 角色名称 */
     @Excel(name = "角色名称")
@@ -59,7 +60,7 @@ public class SysRole extends BaseEntity
     private Long[] menuIds;
 
     /** 部门组(数据权限) */
-    private Long[] deptIds;
+    private String[] deptIds;
 
     /** 角色菜单权限 */
     private Set<String> permissions;
@@ -69,17 +70,17 @@ public class SysRole extends BaseEntity
 
     }
 
-    public SysRole(Long roleId)
+    public SysRole(String roleId)
     {
         this.roleId = roleId;
     }
 
-    public Long getRoleId()
+    public String getRoleId()
     {
         return roleId;
     }
 
-    public void setRoleId(Long roleId)
+    public void setRoleId(String roleId)
     {
         this.roleId = roleId;
     }
@@ -89,9 +90,9 @@ public class SysRole extends BaseEntity
         return isAdmin(this.roleId);
     }
 
-    public static boolean isAdmin(Long roleId)
+    public static boolean isAdmin(String roleId)
     {
-        return roleId != null && 1L == roleId;
+        return StringUtils.isNotBlank(roleId) && "1".equals(roleId);
     }
 
     @NotBlank(message = "角色名称不能为空")
@@ -199,12 +200,12 @@ public class SysRole extends BaseEntity
         this.menuIds = menuIds;
     }
 
-    public Long[] getDeptIds()
+    public String[] getDeptIds()
     {
         return deptIds;
     }
 
-    public void setDeptIds(Long[] deptIds)
+    public void setDeptIds(String[] deptIds)
     {
         this.deptIds = deptIds;
     }

+ 9 - 9
gw-common/src/main/java/com/goldenwater/common/core/domain/entity/SysUser.java

@@ -86,13 +86,13 @@ public class SysUser extends BaseEntity
     private List<SysRole> roles;
 
     /** 角色组 */
-    private Long[] roleIds;
+    private String[] roleIds;
 
     /** 岗位组 */
-    private Long[] postIds;
+    private String[] postIds;
 
     /** 角色ID */
-    private Long roleId;
+    private String roleId;
 
     public SysUser()
     {
@@ -278,32 +278,32 @@ public class SysUser extends BaseEntity
         this.roles = roles;
     }
 
-    public Long[] getRoleIds()
+    public String[] getRoleIds()
     {
         return roleIds;
     }
 
-    public void setRoleIds(Long[] roleIds)
+    public void setRoleIds(String[] roleIds)
     {
         this.roleIds = roleIds;
     }
 
-    public Long[] getPostIds()
+    public String[] getPostIds()
     {
         return postIds;
     }
 
-    public void setPostIds(Long[] postIds)
+    public void setPostIds(String[] postIds)
     {
         this.postIds = postIds;
     }
 
-    public Long getRoleId()
+    public String getRoleId()
     {
         return roleId;
     }
 
-    public void setRoleId(Long roleId)
+    public void setRoleId(String roleId)
     {
         this.roleId = roleId;
     }

+ 2 - 1
gw-slaj/src/main/java/com/goldenwater/slaj/eme/controller/BusiConplanBasicController.java

@@ -37,7 +37,8 @@ public class BusiConplanBasicController extends BaseController {
 
     @PostMapping
     public AjaxResult add(@RequestBody BusiConplanBasic busiConplanBasic) {
-        return toAjax(busiConplanBasicService.insertBusiConplanBasic(busiConplanBasic));
+        BusiConplanBasic saved = busiConplanBasicService.insertBusiConplanBasic(busiConplanBasic);
+        return AjaxResult.success(saved);
     }
 
     @PutMapping

+ 22 - 11
gw-slaj/src/main/java/com/goldenwater/slaj/eme/controller/MediaController.java

@@ -1,10 +1,5 @@
 package com.goldenwater.slaj.eme.controller;
 
-import java.text.SimpleDateFormat;
-import java.util.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
 import com.goldenwater.common.config.RuoYiConfig;
 import com.goldenwater.common.core.controller.BaseController;
 import com.goldenwater.common.core.domain.AjaxResult;
@@ -12,17 +7,27 @@ import com.goldenwater.common.core.page.TableDataInfo;
 import com.goldenwater.common.utils.file.FileUploadUtils;
 import com.goldenwater.slaj.hidd.domain.AttMedBase;
 import com.goldenwater.slaj.hidd.domain.RelBisMed;
-import com.goldenwater.slaj.hidd.service.IAttMedBaseService;
 import com.goldenwater.slaj.hidd.mapper.RelBisMedMapper;
+import com.goldenwater.slaj.hidd.service.IAttMedBaseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Date;
+import java.util.UUID;
 
 @RestController
 @RequestMapping("/eme/media")
 public class MediaController extends BaseController {
 
-    @Autowired private IAttMedBaseService attMedBaseService;
-    @Autowired private RelBisMedMapper relBisMedMapper;
+    @Autowired
+    private IAttMedBaseService attMedBaseService;
+    @Autowired
+    private RelBisMedMapper relBisMedMapper;
 
-    /** 上传文件 + 保存多媒体 + 关联业务 */
+    /**
+     * 上传文件 + 保存多媒体 + 关联业务
+     */
     @PostMapping("/upload")
     public AjaxResult upload(
             @RequestParam("file") MultipartFile file,
@@ -50,6 +55,7 @@ public class MediaController extends BaseController {
         attMedBaseService.insertAttMedBase(med);
 
         // 3. 关联
+//        if (StringUtils.isBlank(bisGuid)) {
         RelBisMed rel = new RelBisMed();
         rel.setGuid(UUID.randomUUID().toString().replace("-", ""));
         rel.setBisTablename(bisTablename);
@@ -57,6 +63,7 @@ public class MediaController extends BaseController {
         rel.setMedGuid(med.getGuid());
         rel.setFromDate(new Date());
         relBisMedMapper.insertRelBisMed(rel);
+//        }
 
         AjaxResult r = AjaxResult.success();
         r.put("medGuid", med.getGuid());
@@ -65,13 +72,17 @@ public class MediaController extends BaseController {
         return r;
     }
 
-    /** 查询业务关联多媒体 */
+    /**
+     * 查询业务关联多媒体
+     */
     @GetMapping("/list")
     public TableDataInfo list(@RequestParam String bisTablename, @RequestParam String bisGuid) {
         return getDataTable(attMedBaseService.selectAttMedBaseByBisInfo(bisTablename, bisGuid));
     }
 
-    /** 删除关联 + 媒体 */
+    /**
+     * 删除关联 + 媒体
+     */
     @DeleteMapping("/{medGuid}")
     public AjaxResult remove(@PathVariable String medGuid, @RequestParam String bisTablename, @RequestParam String bisGuid) {
         relBisMedMapper.deleteRelBisMedByBisInfo(bisTablename, bisGuid);

+ 53 - 17
gw-slaj/src/main/java/com/goldenwater/slaj/eme/domain/BusiConplanBasic.java

@@ -1,7 +1,8 @@
 package com.goldenwater.slaj.eme.domain;
 
-import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.goldenwater.common.annotation.Excel;
+import lombok.Data;
 
 import java.util.Date;
 
@@ -10,42 +11,77 @@ import java.util.Date;
  */
 @Data
 public class BusiConplanBasic {
-    /** 主键 */
+    /**
+     * 主键
+     */
     private String guid;
-    /** 预案名称 */
+    /**
+     * 预案名称
+     */
     @Excel(name = "预案名称")
     private String planName;
-    /** 所属机构 */
+    /**
+     * 所属机构
+     */
     private String orgGuid;
-    /** 录入时间 */
+    /**
+     * 录入时间
+     */
     @Excel(name = "录入时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date entryTime;
-    /** 评估周期 */
+    /**
+     * 评估周期
+     */
     private String evaCycle;
-    /** 是否修订 */
+    /**
+     * 是否修订
+     */
     private String revised;
-    /** 预案类型 */
+    /**
+     * 预案类型
+     */
     @Excel(name = "预案类型")
     private String planType;
-    /** 创建人 */
+    /**
+     * 创建人
+     */
     private String creperGuid;
-    /** 创建时间 */
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
-    /** 更新人 */
+    /**
+     * 更新人
+     */
     private String updperGuid;
-    /** 更新时间 */
+    /**
+     * 更新时间
+     */
     private Date updateTime;
-    /** 预案状态 */
+    /**
+     * 预案状态
+     */
     @Excel(name = "预案状态")
     private String planStatus;
-    /** 父预案ID */
+    /**
+     * 父预案ID
+     */
     private String parentId;
-    /** 修订信息 */
+    /**
+     * 修订信息
+     */
     @Excel(name = "修订信息")
     private String revisionInfo;
-    /** 父预案名称 */
+    /**
+     * 父预案名称
+     */
     @Excel(name = "父预案名称")
     private String parentName;
-    /** 修订时间 */
+    /**
+     * 修订时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date reviseTime;
 }

+ 2 - 2
gw-slaj/src/main/java/com/goldenwater/slaj/eme/service/IBusiConplanBasicService.java

@@ -25,9 +25,9 @@ public interface IBusiConplanBasicService {
     /**
      * 新增应急预案基本信息
      * @param busiConplanBasic 应急预案基本信息
-     * @return 影响行数
+     * @return 包含生成的guid的应急预案基本信息
      */
-    int insertBusiConplanBasic(BusiConplanBasic busiConplanBasic);
+    BusiConplanBasic insertBusiConplanBasic(BusiConplanBasic busiConplanBasic);
 
     /**
      * 修改应急预案基本信息

+ 22 - 3
gw-slaj/src/main/java/com/goldenwater/slaj/eme/service/impl/BusiConplanBasicServiceImpl.java

@@ -5,6 +5,9 @@ import java.util.List;
 
 import com.goldenwater.common.utils.SecurityUtils;
 import com.goldenwater.common.utils.uuid.IdUtils;
+import com.goldenwater.slaj.hidd.mapper.RelBisMedMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.goldenwater.slaj.eme.mapper.BusiConplanBasicMapper;
@@ -17,9 +20,14 @@ import com.goldenwater.slaj.eme.service.IBusiConplanBasicService;
 @Service
 public class BusiConplanBasicServiceImpl implements IBusiConplanBasicService {
 
+    private static final Logger log = LoggerFactory.getLogger(BusiConplanBasicServiceImpl.class);
+
     @Autowired
     private BusiConplanBasicMapper busiConplanBasicMapper;
 
+    @Autowired
+    private RelBisMedMapper relBisMedMapper;
+
     @Override
     public BusiConplanBasic selectBusiConplanBasicByGuid(String guid) {
         return busiConplanBasicMapper.selectBusiConplanBasicByGuid(guid);
@@ -31,11 +39,22 @@ public class BusiConplanBasicServiceImpl implements IBusiConplanBasicService {
     }
 
     @Override
-    public int insertBusiConplanBasic(BusiConplanBasic busiConplanBasic) {
-        busiConplanBasic.setGuid(IdUtils.fastSimpleUUID());
+    public BusiConplanBasic insertBusiConplanBasic(BusiConplanBasic busiConplanBasic) {
+        // 保存前端传入的临时GUID,用于后续更新REL_BIS_MED关联
+        String tempGuid = busiConplanBasic.getGuid();
+        String newGuid = IdUtils.fastSimpleUUID();
+        busiConplanBasic.setGuid(newGuid);
         busiConplanBasic.setCreateTime(new Date());
         busiConplanBasic.setCreperGuid(SecurityUtils.getUserId());
-        return busiConplanBasicMapper.insertBusiConplanBasic(busiConplanBasic);
+        busiConplanBasicMapper.insertBusiConplanBasic(busiConplanBasic);
+
+        // 更新REL_BIS_MED:将临时BIS_GUID替换为正式预案GUID
+        if (tempGuid != null && !tempGuid.isEmpty() && tempGuid.startsWith("TEMP_")) {
+            int updated = relBisMedMapper.updateBisGuid(tempGuid, newGuid, "t_busi_conplan_basic");
+            log.info("REL_BIS_MED BIS_GUID替换: TEMP={} → 正式={}, 更新行数={}", tempGuid, newGuid, updated);
+        }
+
+        return busiConplanBasic;
     }
 
     @Override

+ 1 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/controller/BisOrgMonRepPeriController.java

@@ -125,6 +125,7 @@ public class BisOrgMonRepPeriController extends BaseController {
     @PostMapping("/urge")
     public AjaxResult urge(@RequestParam String orgGuid, @RequestParam(required = false) String repMonth,
                            @RequestParam(required = false) String notType) {
+        bisOrgMonRepPeriService.urgeReport(orgGuid, repMonth);
         return AjaxResult.success("督促通知已发送");
     }
 

+ 62 - 7
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/controller/ObjHiddController.java

@@ -2,6 +2,9 @@ package com.goldenwater.slaj.hidd.controller;
 
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
+
+import com.goldenwater.slaj.hidd.service.IRelBisMedService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import com.goldenwater.common.core.controller.BaseController;
@@ -10,7 +13,9 @@ import com.goldenwater.common.core.page.TableDataInfo;
 import com.goldenwater.slaj.hidd.domain.HiddGroupByExportVo;
 import com.goldenwater.slaj.hidd.domain.ObjHidd;
 import com.goldenwater.slaj.hidd.domain.ObjHiddVo;
+import com.goldenwater.slaj.hidd.domain.BisHiddRecRep;
 import com.goldenwater.slaj.hidd.service.IObjHiddService;
+import com.goldenwater.slaj.hidd.service.IBisHiddRecRepService;
 import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.security.access.prepost.PreAuthorize;
 import com.goldenwater.common.annotation.Log;
@@ -27,6 +32,12 @@ public class ObjHiddController extends BaseController {
     @Autowired
     private IObjHiddService objHiddService;
 
+    @Autowired
+    private IRelBisMedService relBisMedService;
+
+    @Autowired
+    private IBisHiddRecRepService bisHiddRecRepService;
+
     @GetMapping("/list")
     public TableDataInfo list(ObjHidd objHidd) {
         startPage();
@@ -91,6 +102,14 @@ public class ObjHiddController extends BaseController {
         return toAjax(objHiddService.insertNextHidd(objHidd));
     }
 
+    /**
+     * 查询隐患关联的附件列表(编辑回显用)
+     */
+    @GetMapping("/medList/{guid}")
+    public AjaxResult medList(@PathVariable String guid) {
+        return AjaxResult.success(relBisMedService.selectMedListByBisInfo("OBJ_HIDD", guid));
+    }
+
     @Log(title = "隐患对象管理", businessType = BusinessType.EXPORT)
     @PreAuthorize("@ss.hasPermi('hidd:objhidd:export')")
     @PostMapping("/export")
@@ -185,6 +204,7 @@ public class ObjHiddController extends BaseController {
 
     /**
      * 隐患上报(批量)
+     * 与旧版一致:向 bis_hidd_rec_rep 写入上报记录,rep_act='1'
      */
     @Log(title = "隐患上报", businessType = BusinessType.UPDATE)
     @PreAuthorize("@ss.hasPermi('hidd:objhidd:report')")
@@ -197,9 +217,26 @@ public class ObjHiddController extends BaseController {
         int count = 0;
         for (String guid : guidArr) {
             ObjHidd hidd = objHiddService.selectObjHiddByGuid(guid);
-            if (hidd != null) {
-                hidd.setUpdTime(new java.util.Date());
-                count += objHiddService.updateObjHidd(hidd);
+            if (hidd == null) continue;
+            // 查询是否已有上报记录
+            BisHiddRecRep query = new BisHiddRecRep();
+            query.setHiddGuid(guid);
+            List<BisHiddRecRep> exists = bisHiddRecRepService.selectBisHiddRecRepList(query);
+            if (exists != null && !exists.isEmpty()) {
+                // 已有记录:更新为已上报
+                BisHiddRecRep rec = exists.get(0);
+                rec.setRepAct("1");
+                rec.setUpdTime(new java.util.Date());
+                count += bisHiddRecRepService.updateBisHiddRecRep(rec);
+            } else {
+                // 无记录:新建上报记录
+                BisHiddRecRep rec = new BisHiddRecRep();
+                rec.setGuid(UUID.randomUUID().toString().replace("-", ""));
+                rec.setHiddGuid(guid);
+                rec.setRepOrgGuid(getDeptId());
+                rec.setRepAct("1");
+                rec.setCollTime(new java.util.Date());
+                count += bisHiddRecRepService.insertBisHiddRecRep(rec);
             }
         }
         return toAjax(count);
@@ -207,6 +244,7 @@ public class ObjHiddController extends BaseController {
 
     /**
      * 隐患退回(批量)
+     * 与旧版一致:更新 bis_hidd_rec_rep 的 rep_act='2' 并记录退回说明
      */
     @Log(title = "隐患退回", businessType = BusinessType.UPDATE)
     @PreAuthorize("@ss.hasPermi('hidd:objhidd:return')")
@@ -219,10 +257,27 @@ public class ObjHiddController extends BaseController {
         int count = 0;
         for (String guid : guidArr) {
             ObjHidd hidd = objHiddService.selectObjHiddByGuid(guid);
-            if (hidd != null) {
-                hidd.setNote((hidd.getNote() == null ? "" : hidd.getNote()) + " [退回:" + returnDesc + "]");
-                hidd.setUpdTime(new java.util.Date());
-                count += objHiddService.updateObjHidd(hidd);
+            if (hidd == null) continue;
+            // 更新上报记录状态为退回
+            BisHiddRecRep query = new BisHiddRecRep();
+            query.setHiddGuid(guid);
+            List<BisHiddRecRep> exists = bisHiddRecRepService.selectBisHiddRecRepList(query);
+            if (exists != null && !exists.isEmpty()) {
+                BisHiddRecRep rec = exists.get(0);
+                rec.setRepAct("2");
+                rec.setReturnDesc(returnDesc);
+                rec.setUpdTime(new java.util.Date());
+                count += bisHiddRecRepService.updateBisHiddRecRep(rec);
+            } else {
+                // 无上报记录也记录退回
+                BisHiddRecRep rec = new BisHiddRecRep();
+                rec.setGuid(UUID.randomUUID().toString().replace("-", ""));
+                rec.setHiddGuid(guid);
+                rec.setRepOrgGuid(getDeptId());
+                rec.setRepAct("2");
+                rec.setReturnDesc(returnDesc);
+                rec.setCollTime(new java.util.Date());
+                count += bisHiddRecRepService.insertBisHiddRecRep(rec);
             }
         }
         return toAjax(count);

+ 2 - 1
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/controller/TBusiHiddCountController.java

@@ -25,7 +25,8 @@ public class TBusiHiddCountController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo list(TBusiHiddCountVo vo) {
         startPage();
-        List<TBusiHiddCountVo> list = tBusiHiddCountService.selectTBusiHiddCountListWithCalc(vo);
+        // 实时聚合统计,不依赖 t_busi_hidd_count 预统计表(对齐旧版实时计算口径)
+        List<TBusiHiddCountVo> list = tBusiHiddCountService.selectTBusiHiddCountRealtimeList(vo);
         return getDataTable(list);
     }
 

+ 3 - 2
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/controller/TBusiHiddCountMonController.java

@@ -7,6 +7,7 @@ import com.goldenwater.common.core.controller.BaseController;
 import com.goldenwater.common.core.domain.AjaxResult;
 import com.goldenwater.common.core.page.TableDataInfo;
 import com.goldenwater.slaj.hidd.domain.TBusiHiddCountMon;
+import com.goldenwater.slaj.hidd.domain.TBusiHiddCountMonVo;
 import com.goldenwater.slaj.hidd.service.ITBusiHiddCountMonService;
 
 @RestController
@@ -16,9 +17,9 @@ public class TBusiHiddCountMonController extends BaseController {
     private ITBusiHiddCountMonService tBusiHiddCountMonService;
 
     @GetMapping("/list")
-    public TableDataInfo list(TBusiHiddCountMon tBusiHiddCountMon) {
+    public TableDataInfo list(TBusiHiddCountMonVo vo) {
         startPage();
-        List<TBusiHiddCountMon> list = tBusiHiddCountMonService.selectTBusiHiddCountMonList(tBusiHiddCountMon);
+        List<TBusiHiddCountMonVo> list = tBusiHiddCountMonService.selectTBusiHiddCountMonListWithCalc(vo);
         return getDataTable(list);
     }
 

+ 1 - 1
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/domain/ObjHidd.java

@@ -42,7 +42,7 @@ public class ObjHidd {
     private String inspRecGuid;
     /** 安全元素检查项guid */
     private String seCheckItemGuid;
-    /** 隐患状态0未整改 1正在整改 2已整改 */
+    /** 隐患状态 0未整改 1正在整改 2已整改 3已销号 */
     private String hiddStat;
     /** 合并隐患guid */
     private String hiddMergGuid;

+ 4 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/domain/ObjHiddVo.java

@@ -28,4 +28,8 @@ public class ObjHiddVo extends ObjHidd {
     private String supStat;
     /** 取消状态 */
     private String cancelState;
+    /** 上报状态 1已上报 2已退回 */
+    private String repAct;
+    /** 退回说明 */
+    private String returnDesc;
 }

+ 12 - 3
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/mapper/BisOrgMonRepPeriMapper.java

@@ -3,6 +3,7 @@ package com.goldenwater.slaj.hidd.mapper;
 import java.util.List;
 import java.util.Map;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import com.goldenwater.slaj.hidd.domain.BisOrgMonRepPeri;
 
 /**
@@ -61,9 +62,17 @@ public interface BisOrgMonRepPeriMapper {
     List<Map<String, Object>> selectMonthTotalList(Map<String, Object> params);
 
     /**
-     * 查询月报统计列表
-     * @param params 查询参数
-     * @return 月报统计列表
+     * 查询隐患月度统计列表
+     * @param params 查询条件
+     * @return 隐患月度统计列表
      */
     List<Map<String, Object>> selectMonthListStats(Map<String, Object> params);
+
+    /**
+     * 统计上级单位该月份已上报的月报数量
+     * @param orgGuid 当前单位guid
+     * @param month 月份(如 2025-06)
+     * @return 已上报数量
+     */
+    int countParentReported(@Param("orgGuid") String orgGuid, @Param("month") String month);
 }

+ 18 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/mapper/RelBisMedMapper.java

@@ -1,7 +1,9 @@
 package com.goldenwater.slaj.hidd.mapper;
 
 import java.util.List;
+import java.util.Map;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import com.goldenwater.slaj.hidd.domain.RelBisMed;
 
 /**
@@ -60,6 +62,13 @@ public interface RelBisMedMapper {
      */
     List<RelBisMed> selectRelBisMedByBisInfo(String bisTablename, String bisGuid);
 
+    /**
+     * 查询业务关联的多媒体附件(含名称/路径,用于编辑回显)
+     * @param params 含 bisTablename/bisGuid
+     * @return 附件集合 [{name, path, medGuid}]
+     */
+    List<Map<String, Object>> selectMedListByBisInfo(Map<String, Object> params);
+
     /**
      * 根据业务表名和业务guid删除关联多媒体
      * @param bisTablename 业务表名
@@ -67,4 +76,13 @@ public interface RelBisMedMapper {
      * @return 影响行数
      */
     int deleteRelBisMedByBisInfo(String bisTablename, String bisGuid);
+
+    /**
+     * 将临时BIS_GUID替换为正式GUID
+     * @param oldBisGuid 临时BIS_GUID
+     * @param newBisGuid 正式BIS_GUID
+     * @param bisTablename 业务表名
+     * @return 影响行数
+     */
+    int updateBisGuid(@Param("oldBisGuid") String oldBisGuid, @Param("newBisGuid") String newBisGuid, @Param("bisTablename") String bisTablename);
 }

+ 7 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/mapper/TBusiHiddCountMapper.java

@@ -74,4 +74,11 @@ public interface TBusiHiddCountMapper {
      * @return 隐患统计VO集合
      */
     List<TBusiHiddCountVo> selectTBusiHiddCountListWithCalc(TBusiHiddCountVo vo);
+
+    /**
+     * 查询隐患统计列表(实时聚合,不依赖 t_busi_hidd_count 表)
+     * @param vo 查询条件VO
+     * @return 隐患统计VO集合
+     */
+    List<TBusiHiddCountVo> selectTBusiHiddCountRealtimeList(TBusiHiddCountVo vo);
 }

+ 8 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/mapper/TBusiHiddCountMonMapper.java

@@ -3,6 +3,7 @@ package com.goldenwater.slaj.hidd.mapper;
 import java.util.List;
 import org.apache.ibatis.annotations.Mapper;
 import com.goldenwater.slaj.hidd.domain.TBusiHiddCountMon;
+import com.goldenwater.slaj.hidd.domain.TBusiHiddCountMonVo;
 
 /**
  * 隐患月度统计 数据层
@@ -24,6 +25,13 @@ public interface TBusiHiddCountMonMapper {
      */
     List<TBusiHiddCountMon> selectTBusiHiddCountMonList(TBusiHiddCountMon tBusiHiddCountMon);
 
+    /**
+     * 查询隐患月度统计列表(含计算字段:隐患总数/已整改/整改率等)
+     * @param vo 隐患月度统计查询条件
+     * @return 隐患月度统计集合(含计算字段)
+     */
+    List<TBusiHiddCountMonVo> selectTBusiHiddCountMonListWithCalc(TBusiHiddCountMonVo vo);
+
     /**
      * 新增隐患月度统计
      * @param tBusiHiddCountMon 隐患月度统计信息

+ 9 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/IRelBisMedService.java

@@ -1,6 +1,7 @@
 package com.goldenwater.slaj.hidd.service;
 
 import java.util.List;
+import java.util.Map;
 import com.goldenwater.slaj.hidd.domain.RelBisMed;
 
 /**
@@ -58,6 +59,14 @@ public interface IRelBisMedService {
      */
     List<RelBisMed> selectRelBisMedByBisInfo(String bisTablename, String bisGuid);
 
+    /**
+     * 查询业务关联的多媒体附件(含名称/路径,用于编辑回显)
+     * @param bisTablename 业务表名
+     * @param bisGuid 业务guid
+     * @return 附件集合 [{name, path, medGuid}]
+     */
+    List<Map<String, Object>> selectMedListByBisInfo(String bisTablename, String bisGuid);
+
     /**
      * 根据业务表名和业务guid删除关联多媒体
      * @param bisTablename 业务表名

+ 8 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/ITBusiHiddCountMonService.java

@@ -2,6 +2,7 @@ package com.goldenwater.slaj.hidd.service;
 
 import java.util.List;
 import com.goldenwater.slaj.hidd.domain.TBusiHiddCountMon;
+import com.goldenwater.slaj.hidd.domain.TBusiHiddCountMonVo;
 
 /**
  * 隐患月度统计 服务层
@@ -22,6 +23,13 @@ public interface ITBusiHiddCountMonService {
      */
     List<TBusiHiddCountMon> selectTBusiHiddCountMonList(TBusiHiddCountMon tBusiHiddCountMon);
 
+    /**
+     * 查询隐患月度统计列表(含计算字段:隐患总数/已整改/整改率等)
+     * @param vo 隐患月度统计查询条件
+     * @return 隐患月度统计集合(含计算字段)
+     */
+    List<TBusiHiddCountMonVo> selectTBusiHiddCountMonListWithCalc(TBusiHiddCountMonVo vo);
+
     /**
      * 新增隐患月度统计
      * @param tBusiHiddCountMon 隐患月度统计信息

+ 7 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/ITBusiHiddCountService.java

@@ -59,6 +59,13 @@ public interface ITBusiHiddCountService {
      */
     List<TBusiHiddCountVo> selectTBusiHiddCountListWithCalc(TBusiHiddCountVo vo);
 
+    /**
+     * 查询隐患统计列表(实时聚合,不依赖 t_busi_hidd_count 表)
+     * @param vo 查询条件
+     * @return 隐患统计集合
+     */
+    List<TBusiHiddCountVo> selectTBusiHiddCountRealtimeList(TBusiHiddCountVo vo);
+
     /**
      * 查询隐患月报上报率图表数据
      * @param params 查询参数

+ 80 - 39
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/impl/BisOrgMonRepPeriServiceImpl.java

@@ -1,6 +1,7 @@
 package com.goldenwater.slaj.hidd.service.impl;
 
 import java.time.LocalDate;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -11,6 +12,7 @@ import java.util.Map;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import com.goldenwater.common.utils.SecurityUtils;
 import com.goldenwater.slaj.hidd.mapper.BisOrgMonRepPeriMapper;
 import com.goldenwater.slaj.hidd.mapper.BisHiddRecRepMapper;
 import com.goldenwater.slaj.hidd.mapper.BisOrgMonRepRevoMapper;
@@ -34,6 +36,9 @@ public class BisOrgMonRepPeriServiceImpl implements IBisOrgMonRepPeriService {
     @Autowired
     private BisOrgMonRepRevoMapper bisOrgMonRepRevoMapper;
 
+    @Autowired
+    private com.goldenwater.slaj.acci.service.impl.AcciNotifyService acciNotifyService;
+
     /** 上报时间窗口:每月7日-次月6日 */
     private static final int REPORT_START_DAY = 7;
     private static final int REPORT_END_DAY = 6;
@@ -72,6 +77,26 @@ public class BisOrgMonRepPeriServiceImpl implements IBisOrgMonRepPeriService {
     public List<Map<String, Object>> selectRepTreeData(String parentGuid) {
         List<Map<String, Object>> tree = new ArrayList<>();
         Calendar c = Calendar.getInstance();
+
+        // 查询当前单位各月份的上报状态,用于树节点颜色标记
+        String orgGuid = null;
+        try {
+            orgGuid = SecurityUtils.getDeptId();
+        } catch (Exception ignored) {
+        }
+        Map<String, String> repActMap = new HashMap<>();
+        if (orgGuid != null && !orgGuid.isEmpty()) {
+            BisOrgMonRepPeri query = new BisOrgMonRepPeri();
+            query.setRepOrgGuid(orgGuid);
+            List<BisOrgMonRepPeri> peris = bisOrgMonRepPeriMapper.selectBisOrgMonRepPeriList(query);
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+            for (BisOrgMonRepPeri p : peris) {
+                if (p.getRepTime() != null) {
+                    repActMap.put(sdf.format(p.getRepTime()), p.getRepAct());
+                }
+            }
+        }
+
         for (int i = 0; i < 3; i++) {
             int year = c.get(Calendar.YEAR) - i;
             Map<String, Object> yearNode = new HashMap<>();
@@ -88,7 +113,8 @@ public class BisOrgMonRepPeriServiceImpl implements IBisOrgMonRepPeriService {
                     monthNode.put("label", monthStr + "月");
                     monthNode.put("pId", String.valueOf(year));
                     monthNode.put("month", String.valueOf(m));
-                    monthNode.put("IsUpload", 0);
+                    // 已上报(rep_act='1')显示绿色,其余显示黄色
+                    monthNode.put("IsUpload", "1".equals(repActMap.get(year + "-" + monthStr)) ? 1 : 0);
                     if (m == c.get(Calendar.MONTH) + 1) {
                         monthNode.put("selectedNowMonth", true);
                     } else {
@@ -128,9 +154,6 @@ public class BisOrgMonRepPeriServiceImpl implements IBisOrgMonRepPeriService {
         // P0-1: 月报上报时间窗口校验
         validateReportTimeWindow(period);
         
-        // P0-2: 月报上级已上报校验
-        validateParentNotReported(period);
-        
         // 删除该月报下原有上报记录
         bisHiddRecRepMapper.deleteBisHiddRecRepByRepGuid(guid);
         // 新增上报记录
@@ -169,17 +192,6 @@ public class BisOrgMonRepPeriServiceImpl implements IBisOrgMonRepPeriService {
         }
     }
 
-    /**
-     * P0-2: 月报上级已上报校验
-     * 规则:上级单位未上报时,下级单位不允许上报
-     */
-    private void validateParentNotReported(BisOrgMonRepPeri period) {
-        // 查询上级单位的月报状态
-        // 这里需要根据组织架构查询上级单位
-        // 暂时简化实现:检查是否有上级单位的月报已上报
-        // 实际实现需要关联组织架构表查询
-    }
-
     @Override
     public int returnMonth(String guid, String returnDesc) {
         BisOrgMonRepPeri period = new BisOrgMonRepPeri();
@@ -192,31 +204,42 @@ public class BisOrgMonRepPeriServiceImpl implements IBisOrgMonRepPeriService {
 
     @Override
     public int revokeMonth(String guid, String revocDesc) {
-        // 创建撤销申请记录
+        // 申请撤回:只创建撤回申请记录(待审批),不删明细、不改上报状态
+        // 审批通过后才由 approveRevoke 清明细并置为未上报
         BisOrgMonRepRevo revo = new BisOrgMonRepRevo();
+        revo.setGuid(java.util.UUID.randomUUID().toString().replace("-", ""));
         revo.setRepGuid(guid);
+        revo.setRevoOrgGuid(SecurityUtils.getDeptId());
         revo.setRevoReas(revocDesc);
-        revo.setRevoVeriResu("0");
+        revo.setRevoVeriResu("0"); // 待审批
         revo.setCollTime(new Date());
-        bisOrgMonRepRevoMapper.insertBisOrgMonRepRevo(revo);
-        // 清除上报记录
-        bisHiddRecRepMapper.deleteBisHiddRecRepByRepGuid(guid);
-        // 更新月报状态为未上报
-        BisOrgMonRepPeri period = new BisOrgMonRepPeri();
-        period.setGuid(guid);
-        period.setRepAct("2");
-        period.setUpdTime(new Date());
-        return bisOrgMonRepPeriMapper.updateBisOrgMonRepPeri(period);
+        revo.setRecPers(SecurityUtils.getUserId());
+        return bisOrgMonRepRevoMapper.insertBisOrgMonRepRevo(revo);
     }
 
     @Override
     public int approveRevoke(String guid, boolean approved, String opinion) {
-        BisOrgMonRepPeri period = new BisOrgMonRepPeri();
-        period.setGuid(guid);
-        period.setRepAct(approved ? "2" : "1");
-        period.setNote(opinion);
-        period.setUpdTime(new Date());
-        return bisOrgMonRepPeriMapper.updateBisOrgMonRepPeri(period);
+        // guid 为撤回申请记录 guid
+        BisOrgMonRepRevo revo = bisOrgMonRepRevoMapper.selectBisOrgMonRepRevoByGuid(guid);
+        if (revo == null) {
+            throw new RuntimeException("撤回申请记录不存在");
+        }
+        // 更新申请记录状态
+        revo.setRevoVeriResu(approved ? "1" : "2"); // 1同意 2驳回
+        revo.setRevoVeriOpin(opinion);
+        revo.setVeriOrgGuid(SecurityUtils.getDeptId());
+        revo.setUpdTime(new Date());
+        int result = bisOrgMonRepRevoMapper.updateBisOrgMonRepRevo(revo);
+        if (approved) {
+            // 同意撤回:清除上报明细 + 月报状态置为未上报
+            bisHiddRecRepMapper.deleteBisHiddRecRepByRepGuid(revo.getRepGuid());
+            BisOrgMonRepPeri period = new BisOrgMonRepPeri();
+            period.setGuid(revo.getRepGuid());
+            period.setRepAct("2");
+            period.setUpdTime(new Date());
+            result = bisOrgMonRepPeriMapper.updateBisOrgMonRepPeri(period);
+        }
+        return result;
     }
 
     @Override
@@ -235,16 +258,34 @@ public class BisOrgMonRepPeriServiceImpl implements IBisOrgMonRepPeriService {
 
     @Override
     public void urgeReport(String orgGuids, String repName) {
-        // 这里可以调用通知服务发送督促通知
-        // 例如:短信通知、系统消息等
-        // 暂时为空实现
+        // 与旧版 pushForward 一致:向被督促单位发送站内通知
+        // orgGuids 为目标单位guid,repName 为上报期间(如 2025-06)
+        if (orgGuids == null || orgGuids.isEmpty()) {
+            return;
+        }
+        String title = repName + "隐患月报督促上报信息";
+        String content = repName + "隐患月报尚未上报,请及时完成上报";
+        for (String orgGuid : orgGuids.split(",")) {
+            if (orgGuid != null && !orgGuid.isEmpty()) {
+                acciNotifyService.sendNotice(orgGuid.trim(), title, content, "hidd");
+            }
+        }
     }
 
     @Override
     public boolean checkCanRevoke(String month, String type) {
-        // 检查上级是否已上报:查询父级单位该月份的月报状态
-        // 如果上级已上报,则不允许撤回
-        // 简化实现:默认允许撤回
-        return true;
+        // 规则:上级单位已上报该月月报后,下级不允许撤回
+        // 防止下级撤回导致上级已汇总的数据不一致
+        String orgGuid = null;
+        try {
+            orgGuid = SecurityUtils.getDeptId();
+        } catch (Exception ignored) {
+        }
+        if (orgGuid == null || orgGuid.isEmpty() || month == null || month.isEmpty()) {
+            return true;
+        }
+        // 查上级单位该月份的月报是否已上报
+        int parentReported = bisOrgMonRepPeriMapper.countParentReported(orgGuid, month);
+        return parentReported == 0;
     }
 }

+ 2 - 1
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/impl/ObjHiddServiceImpl.java

@@ -159,7 +159,8 @@ public class ObjHiddServiceImpl implements IObjHiddService {
         }
 
         // 保存附件:先创建 att_med_base 记录,再建立 rel_bis_med 关联
-        if (params.containsKey("fileList") && params.get("fileList") instanceof List) {
+        // 注意: fileList 为空时不处理(保留旧附件),避免编辑时未重新上传导致附件丢失
+        if (params.containsKey("fileList") && params.get("fileList") instanceof List && !((List<?>) params.get("fileList")).isEmpty()) {
             List<Map<String, String>> fileList = (List<Map<String, String>>) params.get("fileList");
             // 更新时先清除旧关联及旧文件记录
             if (params.containsKey("guid") && params.get("guid") != null) {

+ 10 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/impl/RelBisMedServiceImpl.java

@@ -1,6 +1,8 @@
 package com.goldenwater.slaj.hidd.service.impl;
 
 import java.util.List;
+import java.util.Map;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.goldenwater.slaj.hidd.mapper.RelBisMedMapper;
@@ -87,6 +89,14 @@ public class RelBisMedServiceImpl implements IRelBisMedService {
         return relBisMedMapper.selectRelBisMedByBisInfo(bisTablename, bisGuid);
     }
 
+    @Override
+    public List<Map<String, Object>> selectMedListByBisInfo(String bisTablename, String bisGuid) {
+        Map<String, Object> params = new java.util.HashMap<>();
+        params.put("bisTablename", bisTablename);
+        params.put("bisGuid", bisGuid);
+        return relBisMedMapper.selectMedListByBisInfo(params);
+    }
+
     /**
      * 根据业务表名和业务guid删除关联多媒体
      * @param bisTablename 业务表名

+ 11 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/impl/TBusiHiddCountMonServiceImpl.java

@@ -5,6 +5,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.goldenwater.slaj.hidd.mapper.TBusiHiddCountMonMapper;
 import com.goldenwater.slaj.hidd.domain.TBusiHiddCountMon;
+import com.goldenwater.slaj.hidd.domain.TBusiHiddCountMonVo;
 import com.goldenwater.slaj.hidd.service.ITBusiHiddCountMonService;
 
 /**
@@ -36,6 +37,16 @@ public class TBusiHiddCountMonServiceImpl implements ITBusiHiddCountMonService {
         return tBusiHiddCountMonMapper.selectTBusiHiddCountMonList(tBusiHiddCountMon);
     }
 
+    /**
+     * 查询隐患月度统计列表(含计算字段)
+     * @param vo 隐患月度统计查询条件
+     * @return 隐患月度统计集合(含计算字段)
+     */
+    @Override
+    public List<TBusiHiddCountMonVo> selectTBusiHiddCountMonListWithCalc(TBusiHiddCountMonVo vo) {
+        return tBusiHiddCountMonMapper.selectTBusiHiddCountMonListWithCalc(vo);
+    }
+
     /**
      * 新增隐患月度统计
      * @param tBusiHiddCountMon 隐患月度统计信息

+ 5 - 0
gw-slaj/src/main/java/com/goldenwater/slaj/hidd/service/impl/TBusiHiddCountServiceImpl.java

@@ -92,4 +92,9 @@ public class TBusiHiddCountServiceImpl implements ITBusiHiddCountService {
     public List<TBusiHiddCountVo> selectTBusiHiddCountListWithCalc(TBusiHiddCountVo vo) {
         return tBusiHiddCountMapper.selectTBusiHiddCountListWithCalc(vo);
     }
+
+    @Override
+    public List<TBusiHiddCountVo> selectTBusiHiddCountRealtimeList(TBusiHiddCountVo vo) {
+        return tBusiHiddCountMapper.selectTBusiHiddCountRealtimeList(vo);
+    }
 }

+ 1 - 1
gw-slaj/src/main/java/com/goldenwater/slaj/obj/domain/ObjHidd.java

@@ -61,7 +61,7 @@ public class ObjHidd {
     /** se_check_item_guid */
     private String seCheckItemGuid;
 
-    /** hidd_stat */
+    /** hidd_stat 0未整改 1正在整改 2已整改 3已销号 */
     @Excel(name = "hidd_stat", width = 30)
     private String hiddStat;
 

+ 9 - 3
gw-slaj/src/main/resources/mapper/slaj/hidd/BisMajHiddSupMapper.xml

@@ -41,10 +41,16 @@
                eng.eng_type, eng.eng_name,
                horg.org_name as hidd_org_name,
                horg_ext.wiun_prop as org_nature,
+               -- TODO: sup_stat_value 衍生自 bis_hidd_rect_acce.cancel_state 的派生字段
+               -- 业务逻辑: 督办发出后产生 bis_maj_hidd_sup 记录,销号流程记录在 bis_hidd_rect_acce
+               -- cancel_state = null/'0'(未销号) → 督办中(已督办)
+               -- cancel_state = '1'(待销号审批)   → 待销号
+               -- cancel_state = '2'(销号审批通过)  → 已销号
+               -- 注意: 当前直接返回中文,如需国际化或多语言需改为编码+字典
                case when (acce.guid is null or acce.cancel_state = '0') then '已督办'
-                    when acce.cancel_state = '1' then '待销号'
-                    when acce.cancel_state = '2' then '已销号'
-               else '已督办' end as sup_stat_value,
+                     when acce.cancel_state = '1' then '待销号'
+                     when acce.cancel_state = '2' then '已销号'
+                else '已督办' end as sup_stat_value,
                acce.requ_comp_date, acce.accep_date, acce.accep_opin,
                med.med_guid, att.med_titl
         from bis_maj_hidd_sup s

+ 40 - 31
gw-slaj/src/main/resources/mapper/slaj/hidd/BisOrgMonRepPeriMapper.xml

@@ -60,14 +60,23 @@
     <delete id="deleteBisOrgMonRepPeriByGuid" parameterType="String">
         delete from bis_org_mon_rep_peri where guid = #{guid}
     </delete>
+
+    <!-- 统计上级单位该月份已上报的月报数量(撤回前校验用) -->
+    <select id="countParentReported" resultType="int">
+        select count(1)
+        from bis_org_mon_rep_peri r
+        where r.rep_org_guid = (select pguid from att_org_base where guid = #{orgGuid})
+          and r.rep_time like #{month} || '%'
+          and r.rep_act = '1'
+    </select>
+    <!-- 注意: PG 未加引号的别名会转小写,Map 返回必须用双引号保留驼峰,否则前端取不到字段 -->
     <select id="selectMonthTotalList" parameterType="java.util.Map" resultType="java.util.Map">
-        select c.hidd_clas as repType,
-               coalesce(sum(case when (d.guid is not null and (d.requ_comp_date is null or (d.requ_comp_date is not null and now() > d.requ_comp_date and e.accep_leg_pers is null))) then 1 else 0 end), 0) as overUnImplRect,
-               coalesce(sum(case when c.hidd_grad = '1' then 1 else 0 end), 0) as impHiddCount,
-               coalesce(sum(case when c.hidd_stat = '1' then 1 else 0 end), 0) as unImplRect,
-               coalesce(sum(case when c.hidd_stat = '2' then 1 else 0 end), 0) as implRect,
-               coalesce(sum(case when c.hidd_stat = '3' then 1 else 0 end), 0) as inRect,
-               coalesce(sum(case when c.hidd_stat = '4' then 1 else 0 end), 0) as compRect
+        select c.hidd_clas as "repType",
+               coalesce(sum(case when (d.guid is not null and (d.requ_comp_date is null or (d.requ_comp_date is not null and now() > d.requ_comp_date and e.accep_leg_pers is null))) then 1 else 0 end), 0) as "overUnImplRect",
+               coalesce(sum(case when c.hidd_grad = '1' then 1 else 0 end), 0) as "impHiddCount",
+               coalesce(sum(case when c.hidd_stat = '1' then 1 else 0 end), 0) as "unImplRect",
+               coalesce(sum(case when c.hidd_stat in ('2','3') then 1 else 0 end), 0) as "implRect",
+               coalesce(sum(case when c.hidd_stat = '3' then 1 else 0 end), 0) as "inRect"
         from bis_org_mon_rep_peri a
         left join bis_hidd_rec_rep b on b.rep_guid = a.guid
         left join obj_hidd c on c.guid = b.hidd_guid
@@ -93,23 +102,23 @@
     <select id="selectMonthReportStats" parameterType="String" resultType="java.util.Map">
         select 
             -- 重大隐患数
-            coalesce(sum(case when c.hidd_grad = '2' then 1 else 0 end), 0) as impHiddCount,
+            coalesce(sum(case when c.hidd_grad = '2' then 1 else 0 end), 0) as "impHiddCount",
             -- 一般隐患数
-            coalesce(sum(case when c.hidd_grad = '1' then 1 else 0 end), 0) as normalHiddCount,
+            coalesce(sum(case when c.hidd_grad = '1' then 1 else 0 end), 0) as "normalHiddCount",
             -- 未落实整改
-            coalesce(sum(case when c.hidd_stat = '0' then 1 else 0 end), 0) as unSolvedCount,
+            coalesce(sum(case when c.hidd_stat = '0' then 1 else 0 end), 0) as "unSolvedCount",
             -- 整改中
-            coalesce(sum(case when c.hidd_stat = '1' then 1 else 0 end), 0) as solvingCount,
-            -- 完成整改
-            coalesce(sum(case when c.hidd_stat = '2' then 1 else 0 end), 0) as hasSolvedCount,
+            coalesce(sum(case when c.hidd_stat = '1' then 1 else 0 end), 0) as "solvingCount",
+            -- 完成整改(含已销号)
+            coalesce(sum(case when c.hidd_stat in ('2','3') then 1 else 0 end), 0) as "hasSolvedCount",
             -- 逾期未整改(要求完成日期小于当前日期且未完成整改)
             coalesce(sum(case when d.requ_comp_date is not null 
                 and d.requ_comp_date &lt; CURRENT_DATE 
-                and c.hidd_stat != '2' then 1 else 0 end), 0) as overUnImplRect,
+                and c.hidd_stat not in ('2','3') then 1 else 0 end), 0) as "overUnImplRect",
             -- 整改率
             case when count(c.guid) > 0 
-                then round(sum(case when c.hidd_stat = '2' then 1 else 0 end) * 100.0 / count(c.guid), 2)
-                else 0 end as solveRate
+                then round(sum(case when c.hidd_stat in ('2','3') then 1 else 0 end) * 100.0 / count(c.guid), 2)
+                else 0 end as "solveRate"
         from bis_org_mon_rep_peri a
         left join bis_hidd_rec_rep b on b.rep_guid = a.guid
         left join obj_hidd c on c.guid = b.hidd_guid
@@ -120,34 +129,34 @@
     <!-- 月报列表统计(根据月份) -->
     <select id="selectMonthListStats" parameterType="java.util.Map" resultType="java.util.Map">
         select 
-            a.guid as guid,
-            a.rep_org_guid as repOrgGuid,
-            a.rep_name as repName,
-            a.rep_act as repAct,
-            a.rep_time as repTime,
-            a.rep_type as repType,
+            a.guid as "guid",
+            a.rep_org_guid as "repOrgGuid",
+            a.rep_name as "repName",
+            a.rep_act as "repAct",
+            a.rep_time as "repTime",
+            a.rep_type as "repType",
             -- 重大隐患数
-            coalesce(stats.imp_hidd_count, 0) as impHiddCount,
+            coalesce(stats.imp_hidd_count, 0) as "impHiddCount",
             -- 逾期未整改
-            coalesce(stats.over_un_impl_rect, 0) as overUnImplRect,
+            coalesce(stats.over_un_impl_rect, 0) as "overUnImplRect",
             -- 未落实整改
-            coalesce(stats.un_solved_count, 0) as unSolvedCount,
+            coalesce(stats.un_solved_count, 0) as "unSolvedCount",
             -- 整改中
-            coalesce(stats.solving_count, 0) as solvingCount,
+            coalesce(stats.solving_count, 0) as "solvingCount",
             -- 完成整改
-            coalesce(stats.has_solved_count, 0) as hasSolvedCount,
+            coalesce(stats.has_solved_count, 0) as "hasSolvedCount",
             -- 整改率
-            coalesce(stats.solve_rate, 0) as solveRate
+            coalesce(stats.solve_rate, 0) as "solveRate"
         from bis_org_mon_rep_peri a
         left join (
             select 
                 b.rep_guid,
                 sum(case when c.hidd_grad = '2' then 1 else 0 end) as imp_hidd_count,
-                sum(case when d.requ_comp_date is not null and d.requ_comp_date &lt; CURRENT_DATE and c.hidd_stat != '2' then 1 else 0 end) as over_un_impl_rect,
+                sum(case when d.requ_comp_date is not null and d.requ_comp_date &lt; CURRENT_DATE and c.hidd_stat not in ('2','3') then 1 else 0 end) as over_un_impl_rect,
                 sum(case when c.hidd_stat = '0' then 1 else 0 end) as un_solved_count,
                 sum(case when c.hidd_stat = '1' then 1 else 0 end) as solving_count,
-                sum(case when c.hidd_stat = '2' then 1 else 0 end) as has_solved_count,
-                case when count(c.guid) > 0 then round(sum(case when c.hidd_stat = '2' then 1 else 0 end) * 100.0 / count(c.guid), 2) else 0 end as solve_rate
+                sum(case when c.hidd_stat in ('2','3') then 1 else 0 end) as has_solved_count,
+                case when count(c.guid) > 0 then round(sum(case when c.hidd_stat in ('2','3') then 1 else 0 end) * 100.0 / count(c.guid), 2) else 0 end as solve_rate
             from bis_hidd_rec_rep b
             left join obj_hidd c on c.guid = b.hidd_guid
             left join bis_hidd_rect_impl d on d.hidd_guid = b.hidd_guid

+ 1 - 1
gw-slaj/src/main/resources/mapper/slaj/hidd/BisOrgMonRepRevoMapper.xml

@@ -57,7 +57,7 @@
     </select>
     <insert id="insertBisOrgMonRepRevo" parameterType="com.goldenwater.slaj.hidd.domain.BisOrgMonRepRevo">
         insert into bis_org_mon_rep_revo (guid, rep_guid, revo_org_guid, veri_org_guid, revo_reas, rep_resc, return_desc, revo_veri_opin, revo_veri_resu, note, coll_time, upd_time, rec_pers)
-        values (#{guid}, #{repGuid}, #{revoOrgGuid}, #{veriOrgGuid}, #{revoReas}, #{repResc}, #{returnDesc}, #{revoVeriOpin}, #{revoVeriResu}, #{note}, #{collTime}, #{updTime}, #{recPers}, )
+        values (#{guid}, #{repGuid}, #{revoOrgGuid}, #{veriOrgGuid}, #{revoReas}, #{repResc}, #{returnDesc}, #{revoVeriOpin}, #{revoVeriResu}, #{note}, #{collTime}, #{updTime}, #{recPers})
     </insert>
     <update id="updateBisOrgMonRepRevo" parameterType="com.goldenwater.slaj.hidd.domain.BisOrgMonRepRevo">
         update bis_org_mon_rep_revo

+ 21 - 10
gw-slaj/src/main/resources/mapper/slaj/hidd/ObjHiddMapper.xml

@@ -39,6 +39,8 @@
         <result property="requCompDate" column="requ_comp_date"/>
         <result property="supStat" column="sup_stat"/>
         <result property="cancelState" column="cancel_state"/>
+        <result property="repAct" column="rep_act"/>
+        <result property="returnDesc" column="return_desc"/>
     </resultMap>
     <sql id="selectObjHiddVo">
         select h.guid, h.hidd_name, h.eng_guid, h.tend_guid, h.se_guid, h.org_guid, h.hidd_sour, h.hidd_grad, h.hidd_clas, h.if_found, h.pro_part, h.part_long, h.part_lat, h.otlcol_qiff_fnvu, h.insp_rec_guid, h.se_check_item_guid, h.hidd_stat, h.hidd_merg_guid, h.rec_org_guid, h.note, h.coll_time, h.upd_time, h.rec_pers, h.hidds_guid, h.occu_num, h.sins_sche_guid, h.group_guid, h.temp, h.to_date, h.dict_guid,
@@ -48,15 +50,23 @@
                ri.requ_comp_date,
                t.tend_name,
                COALESCE(CASE WHEN ms.hidd_guid IS NOT NULL THEN '1' ELSE '0' END, '0') as sup_stat,
-               COALESCE(ra.cancel_state, '0') as cancel_state
+               COALESCE(ra.cancel_state, '0') as cancel_state,
+               rr.rep_act,
+               rr.return_desc
         from obj_hidd h
-        left join att_eng_base e on h.eng_guid = e.guid
+        left join obj_eng e on h.eng_guid = e.guid
         left join att_org_base o on h.org_guid = o.guid
         left join bis_hidd_inve bi on h.insp_rec_guid = bi.guid
         left join bis_hidd_rect_impl ri on h.guid = ri.hidd_guid
         left join bis_hidd_rect_acce ra on h.guid = ra.hidd_guid
         left join bis_maj_hidd_sup ms on h.guid = ms.hidd_guid
         left join obj_tend t on h.tend_guid = t.guid
+        -- 最新一条上报记录(上报/退回状态与原因)
+        left join (
+            select distinct on (rrx.hidd_guid) rrx.hidd_guid, rrx.rep_act, rrx.return_desc
+            from bis_hidd_rec_rep rrx
+            order by rrx.hidd_guid, rrx.coll_time desc
+        ) rr on rr.hidd_guid = h.guid
     </sql>
     <select id="selectObjHiddByGuid" parameterType="String" resultMap="ObjHiddResult">
         <include refid="selectObjHiddVo"/>
@@ -156,23 +166,24 @@
     </insert>
 
     <!-- 工程/非工程隐患聚合查询 -->
+    <!-- 注意: PG 未加引号的别名会转小写,必须用双引号保留驼峰,否则前端取不到字段 -->
     <select id="selectHiddGroupBy" parameterType="java.util.Map" resultType="java.util.LinkedHashMap">
         SELECT
-            e.eng_name AS engName,
-            org.org_name AS orgName,
-            count(h.guid) AS totalCount,
-            coalesce(sum(case when h.hidd_grad = '1' then 1 else 0 end), 0) AS normalCount,
-            coalesce(sum(case when h.hidd_grad = '2' then 1 else 0 end), 0) AS majorCount,
-            coalesce(sum(case when h.hidd_stat = '2' then 1 else 0 end), 0) AS solvedCount
+            e.eng_name AS "engName",
+            org.org_name AS "orgName",
+            count(h.guid) AS "totalCount",
+            coalesce(sum(case when h.hidd_grad = '1' then 1 else 0 end), 0) AS "normalCount",
+            coalesce(sum(case when h.hidd_grad = '2' then 1 else 0 end), 0) AS "majorCount",
+            coalesce(sum(case when h.hidd_stat = '2' then 1 else 0 end), 0) AS "solvedCount"
         FROM obj_hidd h
         LEFT JOIN obj_eng e ON h.eng_guid = e.guid
         LEFT JOIN att_org_base org ON h.org_guid = org.guid
         <where>
             <if test="engName != null and engName != ''">AND e.eng_name LIKE '%' || #{engName} || '%'</if>
             <if test="orgName != null and orgName != ''">AND org.org_name LIKE '%' || #{orgName} || '%'</if>
-            <if test="collTime != null and collTime != ''">AND h.coll_time LIKE #{collTime} || '%'</if>
+            <if test="collTime != null and collTime != ''">AND h.coll_time >= CAST(#{collTime} AS timestamp) AND h.coll_time &lt; CAST(#{collTime} AS timestamp) + INTERVAL '1 day'</if>
         </where>
         GROUP BY e.eng_name, org.org_name
-        ORDER BY totalCount DESC
+        ORDER BY "totalCount" DESC
     </select>
 </mapper>

+ 14 - 0
gw-slaj/src/main/resources/mapper/slaj/hidd/RelBisMedMapper.xml

@@ -30,6 +30,15 @@
         <include refid="selectRelBisMedVo"/>
         where bis_tablename = #{bisTablename} and bis_guid = #{bisGuid}
     </select>
+    <!-- 查询业务关联的多媒体附件(含名称/路径,用于前端编辑回显) -->
+    <select id="selectMedListByBisInfo" parameterType="java.util.Map" resultType="java.util.LinkedHashMap">
+        select m.med_name as "name",
+               m.med_path as "path",
+               m.guid as "medGuid"
+        from rel_bis_med r
+        left join att_med_base m on m.guid = r.med_guid
+        where r.bis_tablename = #{bisTablename} and r.bis_guid = #{bisGuid}
+    </select>
     <insert id="insertRelBisMed" parameterType="com.goldenwater.slaj.hidd.domain.RelBisMed">
         insert into rel_bis_med (guid, bis_guid, bis_tablename, med_guid, bis_rel_columns, from_date, to_date)
         values (#{guid}, #{bisGuid}, #{bisTablename}, #{medGuid}, #{bisRelColumns}, #{fromDate}, #{toDate})
@@ -58,4 +67,9 @@
     <delete id="deleteRelBisMedByBisInfo">
         delete from rel_bis_med where bis_tablename = #{bisTablename} and bis_guid = #{bisGuid}
     </delete>
+
+    <update id="updateBisGuid">
+        update rel_bis_med set bis_guid = #{newBisGuid}
+        where bis_guid = #{oldBisGuid} and bis_tablename = #{bisTablename}
+    </update>
 </mapper>

+ 92 - 8
gw-slaj/src/main/resources/mapper/slaj/hidd/TBusiHiddCountMapper.xml

@@ -102,11 +102,12 @@
         </foreach>
     </delete>
 
+    <!-- 注意: PG 未加引号的别名会转小写,Map 返回必须用双引号保留驼峰,否则前端取不到字段 -->
     <select id="selectReportRateChart" parameterType="java.util.Map" resultType="java.util.LinkedHashMap">
-        select c.org_guid as orgGuid,
-               org.wiun_name as orgName,
-               c.pcl as rateData,
-               c.create_time as repTime
+        select c.org_guid as "orgGuid",
+               org.wiun_name as "orgName",
+               c.pcl as "rateData",
+               c.create_time as "repTime"
         from t_busi_hidd_count c
         left join att_org_ext org on org.org_guid = c.org_guid
         <where>
@@ -116,10 +117,10 @@
     </select>
 
     <select id="selectRectifyRateChart" parameterType="java.util.Map" resultType="java.util.LinkedHashMap">
-        select c.org_guid as orgGuid,
-               org.wiun_name as orgName,
-               c.hidd_zgl as rateData,
-               c.create_time as repTime
+        select c.org_guid as "orgGuid",
+               org.wiun_name as "orgName",
+               c.hidd_zgl as "rateData",
+               c.create_time as "repTime"
         from t_busi_hidd_count c
         left join att_org_ext org on org.org_guid = c.org_guid
         <where>
@@ -198,6 +199,89 @@
         order by c.create_time desc
     </select>
 
+    <!-- 隐患统计列表查询(实时聚合,不依赖 t_busi_hidd_count 表)
+         口径:按单位实时统计名下隐患,与旧版 selectHiddCount 一致 -->
+    <select id="selectTBusiHiddCountRealtimeList" parameterType="com.goldenwater.slaj.hidd.domain.TBusiHiddCountVo" resultMap="TBusiHiddCountVoResult">
+        select
+            o.guid as org_guid,
+            o.org_name as org_name,
+            -- 排查情况:非工程单位(下级单位中无工程关联的)
+            coalesce(stat.oeng_org, 0) as oeng_org,
+            -- 已排查非工程单位(有隐患记录的下级单位)
+            coalesce(stat.hidd_org, 0) as hidd_org,
+            -- 工程总数(该单位名下的工程)
+            coalesce(stat.eng_num, 0) as eng_num,
+            -- 有隐患的工程数
+            coalesce(stat.hidd_eng, 0) as hidd_eng,
+            -- 排查率 = 已排查单位/单位总数
+            case when coalesce(stat.total_org, 0) > 0
+                 then round(coalesce(stat.hidd_org, 0) * 100.0 / stat.total_org, 2)
+                 else 0 end as pcl,
+            -- 综合整改率
+            case when coalesce(stat.total_hidd, 0) > 0
+                 then round(coalesce(stat.solved_hidd, 0) * 100.0 / stat.total_hidd, 2)
+                 else 0 end as hidd_zgl,
+            -- 一般隐患数
+            coalesce(stat.yb_hidd, 0) as yb_hidd,
+            -- 已整改一般隐患数
+            coalesce(stat.zg_yb_hidd, 0) as zg_yb_hidd,
+            -- 一般整改率
+            case when coalesce(stat.yb_hidd, 0) > 0
+                 then round(coalesce(stat.zg_yb_hidd, 0) * 100.0 / stat.yb_hidd, 2)
+                 else 0 end as yb_zgl,
+            -- 重大隐患数
+            coalesce(stat.zd_hidd, 0) as zd_hidd,
+            -- 已整改重大隐患数
+            coalesce(stat.zg_zd_hidd, 0) as zg_zd_hidd,
+            -- 重大整改率
+            case when coalesce(stat.zd_hidd, 0) > 0
+                 then round(coalesce(stat.zg_zd_hidd, 0) * 100.0 / stat.zd_hidd, 2)
+                 else 0 end as zd_zgl
+        from att_org_base o
+        left join (
+            select
+                u.guid as org_guid,
+                -- 下级单位总数(非工程单位 = 无工程关联的下级单位)
+                count(distinct case when e.guid is null then sub.guid end) as total_org,
+                -- 非工程单位总数
+                count(distinct case when e.guid is null then sub.guid end) as oeng_org,
+                -- 有隐患记录的下级单位(已排查)
+                count(distinct case when e.guid is null and h.guid is not null then sub.guid end) as hidd_org,
+                -- 该单位名下工程总数
+                count(distinct e.guid) as eng_num,
+                -- 有隐患的工程数
+                count(distinct case when eh.guid is not null then e.guid end) as hidd_eng,
+                -- 隐患统计(该单位名下)
+                count(distinct h.guid) as total_hidd,
+                count(distinct case when h.hidd_grad = '1' then h.guid end) as yb_hidd,
+                count(distinct case when h.hidd_grad = '1' and h.hidd_stat in ('2','3') then h.guid end) as zg_yb_hidd,
+                count(distinct case when h.hidd_grad = '2' then h.guid end) as zd_hidd,
+                count(distinct case when h.hidd_grad = '2' and h.hidd_stat in ('2','3') then h.guid end) as zg_zd_hidd,
+                count(distinct case when h.hidd_stat in ('2','3') then h.guid end) as solved_hidd
+            from att_org_base u
+            left join att_org_base sub on sub.pguid = u.guid
+            left join att_eng_base e on e.org_guid = sub.guid
+            left join obj_hidd h on h.org_guid = sub.guid
+            left join obj_hidd eh on eh.eng_guid = e.guid
+            group by u.guid
+        ) stat on stat.org_guid = o.guid
+        <where>
+            <if test="orgName != null and orgName != ''">AND o.org_name like concat('%', #{orgName}, '%')</if>
+            <if test="unitType != null and unitType != ''">
+                AND o.guid in (
+                    select org_guid from att_org_ext where wiun_code like concat(
+                        case #{unitType}
+                            when '1' then '%000000'
+                            when '2' then '%000'
+                            when '3' then '%0000'
+                        end
+                    )
+                )
+            </if>
+        </where>
+        order by o.org_name
+    </select>
+
     <!-- 月度统计列表查询 -->
     <select id="selectTBusiHiddCountMonListWithCalc" parameterType="com.goldenwater.slaj.hidd.domain.TBusiHiddCountMonVo" resultType="com.goldenwater.slaj.hidd.domain.TBusiHiddCountMon">
         select 

+ 5 - 5
gw-system/src/main/java/com/goldenwater/system/domain/SysPost.java

@@ -11,7 +11,7 @@ import com.goldenwater.common.core.domain.BaseEntity;
 
 /**
  * 岗位表 sys_post
- * 
+ *
  * @author goldenwater
  */
 public class SysPost extends BaseEntity
@@ -20,7 +20,7 @@ public class SysPost extends BaseEntity
 
     /** 岗位序号 */
     @Excel(name = "岗位序号", cellType = ColumnType.NUMERIC)
-    private Long postId;
+    private String postId;
 
     /** 岗位编码 */
     @Excel(name = "岗位编码")
@@ -41,12 +41,12 @@ public class SysPost extends BaseEntity
     /** 用户是否存在此岗位标识 默认不存在 */
     private boolean flag = false;
 
-    public Long getPostId()
+    public String getPostId()
     {
         return postId;
     }
 
-    public void setPostId(Long postId)
+    public void setPostId(String postId)
     {
         this.postId = postId;
     }
@@ -105,7 +105,7 @@ public class SysPost extends BaseEntity
     {
         this.flag = flag;
     }
-    
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 8 - 8
gw-system/src/main/java/com/goldenwater/system/domain/SysRoleDept.java

@@ -5,33 +5,33 @@ import org.apache.commons.lang3.builder.ToStringStyle;
 
 /**
  * 角色和部门关联 sys_role_dept
- * 
+ *
  * @author goldenwater
  */
 public class SysRoleDept
 {
     /** 角色ID */
-    private Long roleId;
-    
+    private String roleId;
+
     /** 部门ID */
-    private Long deptId;
+    private String deptId;
 
-    public Long getRoleId()
+    public String getRoleId()
     {
         return roleId;
     }
 
-    public void setRoleId(Long roleId)
+    public void setRoleId(String roleId)
     {
         this.roleId = roleId;
     }
 
-    public Long getDeptId()
+    public String getDeptId()
     {
         return deptId;
     }
 
-    public void setDeptId(Long deptId)
+    public void setDeptId(String deptId)
     {
         this.deptId = deptId;
     }

+ 5 - 5
gw-system/src/main/java/com/goldenwater/system/domain/SysRoleMenu.java

@@ -5,23 +5,23 @@ import org.apache.commons.lang3.builder.ToStringStyle;
 
 /**
  * 角色和菜单关联 sys_role_menu
- * 
+ *
  * @author goldenwater
  */
 public class SysRoleMenu
 {
     /** 角色ID */
-    private Long roleId;
-    
+    private String roleId;
+
     /** 菜单ID */
     private Long menuId;
 
-    public Long getRoleId()
+    public String getRoleId()
     {
         return roleId;
     }
 
-    public void setRoleId(Long roleId)
+    public void setRoleId(String roleId)
     {
         this.roleId = roleId;
     }

+ 5 - 5
gw-system/src/main/java/com/goldenwater/system/domain/SysUserPost.java

@@ -5,16 +5,16 @@ import org.apache.commons.lang3.builder.ToStringStyle;
 
 /**
  * 用户和岗位关联 sys_user_post
- * 
+ *
  * @author goldenwater
  */
 public class SysUserPost
 {
     /** 用户ID */
     private String userId;
-    
+
     /** 岗位ID */
-    private Long postId;
+    private String postId;
 
     public String getUserId()
     {
@@ -26,12 +26,12 @@ public class SysUserPost
         this.userId = userId;
     }
 
-    public Long getPostId()
+    public String getPostId()
     {
         return postId;
     }
 
-    public void setPostId(Long postId)
+    public void setPostId(String postId)
     {
         this.postId = postId;
     }

+ 5 - 5
gw-system/src/main/java/com/goldenwater/system/domain/SysUserRole.java

@@ -5,16 +5,16 @@ import org.apache.commons.lang3.builder.ToStringStyle;
 
 /**
  * 用户和角色关联 sys_user_role
- * 
+ *
  * @author goldenwater
  */
 public class SysUserRole
 {
     /** 用户ID */
     private String userId;
-    
+
     /** 角色ID */
-    private Long roleId;
+    private String roleId;
 
     public String getUserId()
     {
@@ -26,12 +26,12 @@ public class SysUserRole
         this.userId = userId;
     }
 
-    public Long getRoleId()
+    public String getRoleId()
     {
         return roleId;
     }
 
-    public void setRoleId(Long roleId)
+    public void setRoleId(String roleId)
     {
         this.roleId = roleId;
     }

+ 1 - 1
gw-system/src/main/java/com/goldenwater/system/mapper/SysDeptMapper.java

@@ -26,7 +26,7 @@ public interface SysDeptMapper
      * @param deptCheckStrictly 部门树选择项是否关联显示
      * @return 选中部门列表
      */
-    public List<Long> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);
+    public List<Long> selectDeptListByRoleId(@Param("roleId") String roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);
 
     /**
      * 根据部门ID查询信息

+ 2 - 2
gw-system/src/main/java/com/goldenwater/system/mapper/SysMenuMapper.java

@@ -40,7 +40,7 @@ public interface SysMenuMapper
      * @param roleId 角色ID
      * @return 权限列表
      */
-    public List<String> selectMenuPermsByRoleId(Long roleId);
+    public List<String> selectMenuPermsByRoleId(String roleId);
 
     /**
      * 根据用户ID查询权限
@@ -72,7 +72,7 @@ public interface SysMenuMapper
      * @param menuCheckStrictly 菜单树选择项是否关联显示
      * @return 选中菜单列表
      */
-    public List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
+    public List<Long> selectMenuListByRoleId(@Param("roleId") String roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
 
     /**
      * 根据菜单ID查询信息

+ 15 - 15
gw-system/src/main/java/com/goldenwater/system/mapper/SysPostMapper.java

@@ -5,14 +5,14 @@ import com.goldenwater.system.domain.SysPost;
 
 /**
  * 岗位信息 数据层
- * 
+ *
  * @author goldenwater
  */
 public interface SysPostMapper
 {
     /**
      * 查询岗位数据集合
-     * 
+     *
      * @param post 岗位信息
      * @return 岗位数据集合
      */
@@ -20,22 +20,22 @@ public interface SysPostMapper
 
     /**
      * 查询所有岗位
-     * 
+     *
      * @return 岗位列表
      */
     public List<SysPost> selectPostAll();
 
     /**
      * 通过岗位ID查询岗位信息
-     * 
+     *
      * @param postId 岗位ID
      * @return 角色对象信息
      */
-    public SysPost selectPostById(Long postId);
+    public SysPost selectPostById(String postId);
 
     /**
      * 根据用户ID获取岗位选择框列表
-     * 
+     *
      * @param userId 用户ID
      * @return 选中岗位ID列表
      */
@@ -43,7 +43,7 @@ public interface SysPostMapper
 
     /**
      * 查询用户所属岗位组
-     * 
+     *
      * @param userName 用户名
      * @return 结果
      */
@@ -51,23 +51,23 @@ public interface SysPostMapper
 
     /**
      * 删除岗位信息
-     * 
+     *
      * @param postId 岗位ID
      * @return 结果
      */
-    public int deletePostById(Long postId);
+    public int deletePostById(String postId);
 
     /**
      * 批量删除岗位信息
-     * 
+     *
      * @param postIds 需要删除的岗位ID
      * @return 结果
      */
-    public int deletePostByIds(Long[] postIds);
+    public int deletePostByIds(String[] postIds);
 
     /**
      * 修改岗位信息
-     * 
+     *
      * @param post 岗位信息
      * @return 结果
      */
@@ -75,7 +75,7 @@ public interface SysPostMapper
 
     /**
      * 新增岗位信息
-     * 
+     *
      * @param post 岗位信息
      * @return 结果
      */
@@ -83,7 +83,7 @@ public interface SysPostMapper
 
     /**
      * 校验岗位名称
-     * 
+     *
      * @param postName 岗位名称
      * @return 结果
      */
@@ -91,7 +91,7 @@ public interface SysPostMapper
 
     /**
      * 校验岗位编码
-     * 
+     *
      * @param postCode 岗位编码
      * @return 结果
      */

+ 7 - 7
gw-system/src/main/java/com/goldenwater/system/mapper/SysRoleDeptMapper.java

@@ -5,30 +5,30 @@ import com.goldenwater.system.domain.SysRoleDept;
 
 /**
  * 角色与部门关联表 数据层
- * 
+ *
  * @author goldenwater
  */
 public interface SysRoleDeptMapper
 {
     /**
      * 通过角色ID删除角色和部门关联
-     * 
+     *
      * @param roleId 角色ID
      * @return 结果
      */
-    public int deleteRoleDeptByRoleId(Long roleId);
+    public int deleteRoleDeptByRoleId(String roleId);
 
     /**
      * 批量删除角色部门关联信息
-     * 
+     *
      * @param ids 需要删除的数据ID
      * @return 结果
      */
-    public int deleteRoleDept(Long[] ids);
+    public int deleteRoleDept(String[] ids);
 
     /**
      * 查询部门使用数量
-     * 
+     *
      * @param deptId 部门ID
      * @return 结果
      */
@@ -36,7 +36,7 @@ public interface SysRoleDeptMapper
 
     /**
      * 批量新增角色部门信息
-     * 
+     *
      * @param roleDeptList 角色部门列表
      * @return 结果
      */

+ 16 - 16
gw-system/src/main/java/com/goldenwater/system/mapper/SysRoleMapper.java

@@ -5,14 +5,14 @@ import com.goldenwater.common.core.domain.entity.SysRole;
 
 /**
  * 角色表 数据层
- * 
+ *
  * @author goldenwater
  */
 public interface SysRoleMapper
 {
     /**
      * 根据条件分页查询角色数据
-     * 
+     *
      * @param role 角色信息
      * @return 角色数据集合信息
      */
@@ -20,7 +20,7 @@ public interface SysRoleMapper
 
     /**
      * 根据用户ID查询角色
-     * 
+     *
      * @param userId 用户ID
      * @return 角色列表
      */
@@ -28,14 +28,14 @@ public interface SysRoleMapper
 
     /**
      * 查询所有角色
-     * 
+     *
      * @return 角色列表
      */
     public List<SysRole> selectRoleAll();
 
     /**
      * 根据用户ID获取角色选择框列表
-     * 
+     *
      * @param userId 用户ID
      * @return 选中角色ID列表
      */
@@ -43,15 +43,15 @@ public interface SysRoleMapper
 
     /**
      * 通过角色ID查询角色
-     * 
+     *
      * @param roleId 角色ID
      * @return 角色对象信息
      */
-    public SysRole selectRoleById(Long roleId);
+    public SysRole selectRoleById(String roleId);
 
     /**
      * 根据用户ID查询角色
-     * 
+     *
      * @param userName 用户名
      * @return 角色列表
      */
@@ -59,7 +59,7 @@ public interface SysRoleMapper
 
     /**
      * 校验角色名称是否唯一
-     * 
+     *
      * @param roleName 角色名称
      * @return 角色信息
      */
@@ -67,7 +67,7 @@ public interface SysRoleMapper
 
     /**
      * 校验角色权限是否唯一
-     * 
+     *
      * @param roleKey 角色权限
      * @return 角色信息
      */
@@ -75,7 +75,7 @@ public interface SysRoleMapper
 
     /**
      * 修改角色信息
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -83,7 +83,7 @@ public interface SysRoleMapper
 
     /**
      * 新增角色信息
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -91,17 +91,17 @@ public interface SysRoleMapper
 
     /**
      * 通过角色ID删除角色
-     * 
+     *
      * @param roleId 角色ID
      * @return 结果
      */
-    public int deleteRoleById(Long roleId);
+    public int deleteRoleById(String roleId);
 
     /**
      * 批量删除角色信息
-     * 
+     *
      * @param roleIds 需要删除的角色ID
      * @return 结果
      */
-    public int deleteRoleByIds(Long[] roleIds);
+    public int deleteRoleByIds(String[] roleIds);
 }

+ 7 - 7
gw-system/src/main/java/com/goldenwater/system/mapper/SysRoleMenuMapper.java

@@ -5,14 +5,14 @@ import com.goldenwater.system.domain.SysRoleMenu;
 
 /**
  * 角色与菜单关联表 数据层
- * 
+ *
  * @author goldenwater
  */
 public interface SysRoleMenuMapper
 {
     /**
      * 查询菜单使用数量
-     * 
+     *
      * @param menuId 菜单ID
      * @return 结果
      */
@@ -20,23 +20,23 @@ public interface SysRoleMenuMapper
 
     /**
      * 通过角色ID删除角色和菜单关联
-     * 
+     *
      * @param roleId 角色ID
      * @return 结果
      */
-    public int deleteRoleMenuByRoleId(Long roleId);
+    public int deleteRoleMenuByRoleId(String roleId);
 
     /**
      * 批量删除角色菜单关联信息
-     * 
+     *
      * @param ids 需要删除的数据ID
      * @return 结果
      */
-    public int deleteRoleMenu(Long[] ids);
+    public int deleteRoleMenu(String[] ids);
 
     /**
      * 批量新增角色菜单信息
-     * 
+     *
      * @param roleMenuList 角色菜单列表
      * @return 结果
      */

+ 1 - 1
gw-system/src/main/java/com/goldenwater/system/mapper/SysUserPostMapper.java

@@ -24,7 +24,7 @@ public interface SysUserPostMapper
      * @param postId 岗位ID
      * @return 结果
      */
-    public int countUserPostById(Long postId);
+    public int countUserPostById(String postId);
 
     /**
      * 批量删除用户和岗位关联

+ 2 - 2
gw-system/src/main/java/com/goldenwater/system/mapper/SysUserRoleMapper.java

@@ -33,7 +33,7 @@ public interface SysUserRoleMapper
      * @param roleId 角色ID
      * @return 结果
      */
-    public int countUserRoleByRoleId(Long roleId);
+    public int countUserRoleByRoleId(String roleId);
 
     /**
      * 批量新增用户角色信息
@@ -58,5 +58,5 @@ public interface SysUserRoleMapper
      * @param userIds 需要删除的用户数据ID
      * @return 结果
      */
-    public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") String[] userIds);
+    public int deleteUserRoleInfos(@Param("roleId") String roleId, @Param("userIds") String[] userIds);
 }

+ 1 - 1
gw-system/src/main/java/com/goldenwater/system/service/ISysDeptService.java

@@ -49,7 +49,7 @@ public interface ISysDeptService
      * @param roleId 角色ID
      * @return 选中部门列表
      */
-    public List<Long> selectDeptListByRoleId(Long roleId);
+    public List<Long> selectDeptListByRoleId(String roleId);
 
     /**
      * 根据部门ID查询信息

+ 2 - 2
gw-system/src/main/java/com/goldenwater/system/service/ISysMenuService.java

@@ -44,7 +44,7 @@ public interface ISysMenuService
      * @param roleId 角色ID
      * @return 权限列表
      */
-    public Set<String> selectMenuPermsByRoleId(Long roleId);
+    public Set<String> selectMenuPermsByRoleId(String roleId);
 
     /**
      * 根据用户ID查询菜单树信息
@@ -60,7 +60,7 @@ public interface ISysMenuService
      * @param roleId 角色ID
      * @return 选中菜单列表
      */
-    public List<Long> selectMenuListByRoleId(Long roleId);
+    public List<Long> selectMenuListByRoleId(String roleId);
 
     /**
      * 构建前端路由所需要的菜单

+ 16 - 16
gw-system/src/main/java/com/goldenwater/system/service/ISysPostService.java

@@ -5,14 +5,14 @@ import com.goldenwater.system.domain.SysPost;
 
 /**
  * 岗位信息 服务层
- * 
+ *
  * @author goldenwater
  */
 public interface ISysPostService
 {
     /**
      * 查询岗位信息集合
-     * 
+     *
      * @param post 岗位信息
      * @return 岗位列表
      */
@@ -20,22 +20,22 @@ public interface ISysPostService
 
     /**
      * 查询所有岗位
-     * 
+     *
      * @return 岗位列表
      */
     public List<SysPost> selectPostAll();
 
     /**
      * 通过岗位ID查询岗位信息
-     * 
+     *
      * @param postId 岗位ID
      * @return 角色对象信息
      */
-    public SysPost selectPostById(Long postId);
+    public SysPost selectPostById(String postId);
 
     /**
      * 根据用户ID获取岗位选择框列表
-     * 
+     *
      * @param userId 用户ID
      * @return 选中岗位ID列表
      */
@@ -43,7 +43,7 @@ public interface ISysPostService
 
     /**
      * 校验岗位名称
-     * 
+     *
      * @param post 岗位信息
      * @return 结果
      */
@@ -51,7 +51,7 @@ public interface ISysPostService
 
     /**
      * 校验岗位编码
-     * 
+     *
      * @param post 岗位信息
      * @return 结果
      */
@@ -59,31 +59,31 @@ public interface ISysPostService
 
     /**
      * 通过岗位ID查询岗位使用数量
-     * 
+     *
      * @param postId 岗位ID
      * @return 结果
      */
-    public int countUserPostById(Long postId);
+    public int countUserPostById(String postId);
 
     /**
      * 删除岗位信息
-     * 
+     *
      * @param postId 岗位ID
      * @return 结果
      */
-    public int deletePostById(Long postId);
+    public int deletePostById(String postId);
 
     /**
      * 批量删除岗位信息
-     * 
+     *
      * @param postIds 需要删除的岗位ID
      * @return 结果
      */
-    public int deletePostByIds(Long[] postIds);
+    public int deletePostByIds(String[] postIds);
 
     /**
      * 新增保存岗位信息
-     * 
+     *
      * @param post 岗位信息
      * @return 结果
      */
@@ -91,7 +91,7 @@ public interface ISysPostService
 
     /**
      * 修改保存岗位信息
-     * 
+     *
      * @param post 岗位信息
      * @return 结果
      */

+ 28 - 28
gw-system/src/main/java/com/goldenwater/system/service/ISysRoleService.java

@@ -7,14 +7,14 @@ import com.goldenwater.system.domain.SysUserRole;
 
 /**
  * 角色业务层
- * 
+ *
  * @author goldenwater
  */
 public interface ISysRoleService
 {
     /**
      * 根据条件分页查询角色数据
-     * 
+     *
      * @param role 角色信息
      * @return 角色数据集合信息
      */
@@ -22,7 +22,7 @@ public interface ISysRoleService
 
     /**
      * 根据用户ID查询角色列表
-     * 
+     *
      * @param userId 用户ID
      * @return 角色列表
      */
@@ -30,7 +30,7 @@ public interface ISysRoleService
 
     /**
      * 根据用户ID查询角色权限
-     * 
+     *
      * @param userId 用户ID
      * @return 权限列表
      */
@@ -38,14 +38,14 @@ public interface ISysRoleService
 
     /**
      * 查询所有角色
-     * 
+     *
      * @return 角色列表
      */
     public List<SysRole> selectRoleAll();
 
     /**
      * 根据用户ID获取角色选择框列表
-     * 
+     *
      * @param userId 用户ID
      * @return 选中角色ID列表
      */
@@ -53,15 +53,15 @@ public interface ISysRoleService
 
     /**
      * 通过角色ID查询角色
-     * 
+     *
      * @param roleId 角色ID
      * @return 角色对象信息
      */
-    public SysRole selectRoleById(Long roleId);
+    public SysRole selectRoleById(String roleId);
 
     /**
      * 校验角色名称是否唯一
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -69,7 +69,7 @@ public interface ISysRoleService
 
     /**
      * 校验角色权限是否唯一
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -77,29 +77,29 @@ public interface ISysRoleService
 
     /**
      * 校验角色是否允许操作
-     * 
+     *
      * @param role 角色信息
      */
     public void checkRoleAllowed(SysRole role);
 
     /**
      * 校验角色是否有数据权限
-     * 
+     *
      * @param roleIds 角色id
      */
-    public void checkRoleDataScope(Long... roleIds);
+    public void checkRoleDataScope(String... roleIds);
 
     /**
      * 通过角色ID查询角色使用数量
-     * 
+     *
      * @param roleId 角色ID
      * @return 结果
      */
-    public int countUserRoleByRoleId(Long roleId);
+    public int countUserRoleByRoleId(String roleId);
 
     /**
      * 新增保存角色信息
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -107,7 +107,7 @@ public interface ISysRoleService
 
     /**
      * 修改保存角色信息
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -115,7 +115,7 @@ public interface ISysRoleService
 
     /**
      * 修改角色状态
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -123,7 +123,7 @@ public interface ISysRoleService
 
     /**
      * 修改数据权限信息
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
@@ -131,23 +131,23 @@ public interface ISysRoleService
 
     /**
      * 通过角色ID删除角色
-     * 
+     *
      * @param roleId 角色ID
      * @return 结果
      */
-    public int deleteRoleById(Long roleId);
+    public int deleteRoleById(String roleId);
 
     /**
      * 批量删除角色信息
-     * 
+     *
      * @param roleIds 需要删除的角色ID
      * @return 结果
      */
-    public int deleteRoleByIds(Long[] roleIds);
+    public int deleteRoleByIds(String[] roleIds);
 
     /**
      * 取消授权用户角色
-     * 
+     *
      * @param userRole 用户和角色关联信息
      * @return 结果
      */
@@ -155,19 +155,19 @@ public interface ISysRoleService
 
     /**
      * 批量取消授权用户角色
-     * 
+     *
      * @param roleId 角色ID
      * @param userIds 需要取消授权的用户数据ID
      * @return 结果
      */
-    public int deleteAuthUsers(Long roleId, String[] userIds);
+    public int deleteAuthUsers(String roleId, String[] userIds);
 
     /**
      * 批量选择授权用户角色
-     * 
+     *
      * @param roleId 角色ID
      * @param userIds 需要删除的用户数据ID
      * @return 结果
      */
-    public int insertAuthUsers(Long roleId, String[] userIds);
+    public int insertAuthUsers(String roleId, String[] userIds);
 }

+ 25 - 25
gw-system/src/main/java/com/goldenwater/system/service/ISysUserService.java

@@ -6,14 +6,14 @@ import com.goldenwater.common.core.domain.entity.SysUser;
 
 /**
  * 用户 业务层
- * 
+ *
  * @author goldenwater
  */
 public interface ISysUserService
 {
     /**
      * 根据条件分页查询用户列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -21,7 +21,7 @@ public interface ISysUserService
 
     /**
      * 根据条件分页查询已分配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -29,7 +29,7 @@ public interface ISysUserService
 
     /**
      * 根据条件分页查询未分配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -37,7 +37,7 @@ public interface ISysUserService
 
     /**
      * 通过用户名查询用户
-     * 
+     *
      * @param userName 用户名
      * @return 用户对象信息
      */
@@ -45,7 +45,7 @@ public interface ISysUserService
 
     /**
      * 通过用户ID查询用户
-     * 
+     *
      * @param userId 用户ID
      * @return 用户对象信息
      */
@@ -53,7 +53,7 @@ public interface ISysUserService
 
     /**
      * 根据用户ID查询用户所属角色组
-     * 
+     *
      * @param userName 用户名
      * @return 结果
      */
@@ -61,7 +61,7 @@ public interface ISysUserService
 
     /**
      * 根据用户ID查询用户所属岗位组
-     * 
+     *
      * @param userName 用户名
      * @return 结果
      */
@@ -69,7 +69,7 @@ public interface ISysUserService
 
     /**
      * 校验用户名称是否唯一
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -93,21 +93,21 @@ public interface ISysUserService
 
     /**
      * 校验用户是否允许操作
-     * 
+     *
      * @param user 用户信息
      */
     public void checkUserAllowed(SysUser user);
 
     /**
      * 校验用户是否有数据权限
-     * 
+     *
      * @param userId 用户id
      */
     public void checkUserDataScope(String userId);
 
     /**
      * 新增用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -115,7 +115,7 @@ public interface ISysUserService
 
     /**
      * 注册用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -123,7 +123,7 @@ public interface ISysUserService
 
     /**
      * 修改用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -131,15 +131,15 @@ public interface ISysUserService
 
     /**
      * 用户授权角色
-     * 
+     *
      * @param userId 用户ID
      * @param roleIds 角色组
      */
-    public void insertUserAuth(String userId, Long[] roleIds);
+    public void insertUserAuth(String userId, String[] roleIds);
 
     /**
      * 修改用户状态
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -147,7 +147,7 @@ public interface ISysUserService
 
     /**
      * 修改用户基本信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -155,7 +155,7 @@ public interface ISysUserService
 
     /**
      * 修改用户头像
-     * 
+     *
      * @param userId 用户ID
      * @param avatar 头像地址
      * @return 结果
@@ -164,7 +164,7 @@ public interface ISysUserService
 
     /**
      * 更新用户登录信息(IP和登录时间)
-     * 
+     *
      * @param userId 用户ID
      * @param loginIp 登录IP地址
      * @param loginDate 登录时间
@@ -174,7 +174,7 @@ public interface ISysUserService
 
     /**
      * 重置用户密码
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -182,7 +182,7 @@ public interface ISysUserService
 
     /**
      * 重置用户密码
-     * 
+     *
      * @param userId 用户ID
      * @param password 密码
      * @return 结果
@@ -191,7 +191,7 @@ public interface ISysUserService
 
     /**
      * 通过用户ID删除用户
-     * 
+     *
      * @param userId 用户ID
      * @return 结果
      */
@@ -199,7 +199,7 @@ public interface ISysUserService
 
     /**
      * 批量删除用户信息
-     * 
+     *
      * @param userIds 需要删除的用户ID
      * @return 结果
      */
@@ -207,7 +207,7 @@ public interface ISysUserService
 
     /**
      * 导入用户数据
-     * 
+     *
      * @param userList 用户数据列表
      * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
      * @param operName 操作用户

+ 1 - 1
gw-system/src/main/java/com/goldenwater/system/service/impl/SysDeptServiceImpl.java

@@ -110,7 +110,7 @@ public class SysDeptServiceImpl implements ISysDeptService
      * @return 选中部门列表
      */
     @Override
-    public List<Long> selectDeptListByRoleId(Long roleId)
+    public List<Long> selectDeptListByRoleId(String roleId)
     {
         SysRole role = roleMapper.selectRoleById(roleId);
         return deptMapper.selectDeptListByRoleId(roleId, role.isDeptCheckStrictly());

+ 2 - 2
gw-system/src/main/java/com/goldenwater/system/service/impl/SysMenuServiceImpl.java

@@ -115,7 +115,7 @@ public class SysMenuServiceImpl implements ISysMenuService
      * @return 权限列表
      */
     @Override
-    public Set<String> selectMenuPermsByRoleId(Long roleId)
+    public Set<String> selectMenuPermsByRoleId(String roleId)
     {
         List<String> perms = menuMapper.selectMenuPermsByRoleId(roleId);
         Set<String> permsSet = new HashSet<>();
@@ -157,7 +157,7 @@ public class SysMenuServiceImpl implements ISysMenuService
      * @return 选中菜单列表
      */
     @Override
-    public List<Long> selectMenuListByRoleId(Long roleId)
+    public List<Long> selectMenuListByRoleId(String roleId)
     {
         SysRole role = roleMapper.selectRoleById(roleId);
         return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly());

+ 21 - 21
gw-system/src/main/java/com/goldenwater/system/service/impl/SysPostServiceImpl.java

@@ -13,7 +13,7 @@ import com.goldenwater.system.service.ISysPostService;
 
 /**
  * 岗位信息 服务层处理
- * 
+ *
  * @author goldenwater
  */
 @Service
@@ -27,7 +27,7 @@ public class SysPostServiceImpl implements ISysPostService
 
     /**
      * 查询岗位信息集合
-     * 
+     *
      * @param post 岗位信息
      * @return 岗位信息集合
      */
@@ -39,7 +39,7 @@ public class SysPostServiceImpl implements ISysPostService
 
     /**
      * 查询所有岗位
-     * 
+     *
      * @return 岗位列表
      */
     @Override
@@ -50,19 +50,19 @@ public class SysPostServiceImpl implements ISysPostService
 
     /**
      * 通过岗位ID查询岗位信息
-     * 
+     *
      * @param postId 岗位ID
      * @return 角色对象信息
      */
     @Override
-    public SysPost selectPostById(Long postId)
+    public SysPost selectPostById(String postId)
     {
         return postMapper.selectPostById(postId);
     }
 
     /**
      * 根据用户ID获取岗位选择框列表
-     * 
+     *
      * @param userId 用户ID
      * @return 选中岗位ID列表
      */
@@ -74,16 +74,16 @@ public class SysPostServiceImpl implements ISysPostService
 
     /**
      * 校验岗位名称是否唯一
-     * 
+     *
      * @param post 岗位信息
      * @return 结果
      */
     @Override
     public boolean checkPostNameUnique(SysPost post)
     {
-        Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
+        String postId = StringUtils.isBlank(post.getPostId()) ? null : post.getPostId();
         SysPost info = postMapper.checkPostNameUnique(post.getPostName());
-        if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue())
+        if (StringUtils.isNotNull(info) && !info.getPostId().equals(postId))
         {
             return UserConstants.NOT_UNIQUE;
         }
@@ -92,16 +92,16 @@ public class SysPostServiceImpl implements ISysPostService
 
     /**
      * 校验岗位编码是否唯一
-     * 
+     *
      * @param post 岗位信息
      * @return 结果
      */
     @Override
     public boolean checkPostCodeUnique(SysPost post)
     {
-        Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
+        String postId = StringUtils.isNull(post.getPostId()) ? null : post.getPostId();
         SysPost info = postMapper.checkPostCodeUnique(post.getPostCode());
-        if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue())
+        if (StringUtils.isNotNull(info) && !info.getPostId().equals(postId))
         {
             return UserConstants.NOT_UNIQUE;
         }
@@ -110,38 +110,38 @@ public class SysPostServiceImpl implements ISysPostService
 
     /**
      * 通过岗位ID查询岗位使用数量
-     * 
+     *
      * @param postId 岗位ID
      * @return 结果
      */
     @Override
-    public int countUserPostById(Long postId)
+    public int countUserPostById(String postId)
     {
         return userPostMapper.countUserPostById(postId);
     }
 
     /**
      * 删除岗位信息
-     * 
+     *
      * @param postId 岗位ID
      * @return 结果
      */
     @Override
-    public int deletePostById(Long postId)
+    public int deletePostById(String postId)
     {
         return postMapper.deletePostById(postId);
     }
 
     /**
      * 批量删除岗位信息
-     * 
+     *
      * @param postIds 需要删除的岗位ID
      * @return 结果
      */
     @Override
-    public int deletePostByIds(Long[] postIds)
+    public int deletePostByIds(String[] postIds)
     {
-        for (Long postId : postIds)
+        for (String postId : postIds)
         {
             SysPost post = selectPostById(postId);
             if (countUserPostById(postId) > 0)
@@ -154,7 +154,7 @@ public class SysPostServiceImpl implements ISysPostService
 
     /**
      * 新增保存岗位信息
-     * 
+     *
      * @param post 岗位信息
      * @return 结果
      */
@@ -166,7 +166,7 @@ public class SysPostServiceImpl implements ISysPostService
 
     /**
      * 修改保存岗位信息
-     * 
+     *
      * @param post 岗位信息
      * @return 结果
      */

+ 72 - 116
gw-system/src/main/java/com/goldenwater/system/service/impl/SysRoleServiceImpl.java

@@ -1,13 +1,5 @@
 package com.goldenwater.system.service.impl;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 import com.goldenwater.common.annotation.DataScope;
 import com.goldenwater.common.constant.UserConstants;
 import com.goldenwater.common.core.domain.entity.SysRole;
@@ -23,15 +15,19 @@ import com.goldenwater.system.mapper.SysRoleMapper;
 import com.goldenwater.system.mapper.SysRoleMenuMapper;
 import com.goldenwater.system.mapper.SysUserRoleMapper;
 import com.goldenwater.system.service.ISysRoleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
 
 /**
  * 角色 业务层处理
- * 
+ *
  * @author goldenwater
  */
 @Service
-public class SysRoleServiceImpl implements ISysRoleService
-{
+public class SysRoleServiceImpl implements ISysRoleService {
     @Autowired
     private SysRoleMapper roleMapper;
 
@@ -46,34 +42,29 @@ public class SysRoleServiceImpl implements ISysRoleService
 
     /**
      * 根据条件分页查询角色数据
-     * 
+     *
      * @param role 角色信息
      * @return 角色数据集合信息
      */
     @Override
     @DataScope(deptAlias = "d")
-    public List<SysRole> selectRoleList(SysRole role)
-    {
+    public List<SysRole> selectRoleList(SysRole role) {
         return roleMapper.selectRoleList(role);
     }
 
     /**
      * 根据用户ID查询角色
-     * 
+     *
      * @param userId 用户ID
      * @return 角色列表
      */
     @Override
-    public List<SysRole> selectRolesByUserId(String userId)
-    {
+    public List<SysRole> selectRolesByUserId(String userId) {
         List<SysRole> userRoles = roleMapper.selectRolePermissionByUserId(userId);
         List<SysRole> roles = selectRoleAll();
-        for (SysRole role : roles)
-        {
-            for (SysRole userRole : userRoles)
-            {
-                if (role.getRoleId().longValue() == userRole.getRoleId().longValue())
-                {
+        for (SysRole role : roles) {
+            for (SysRole userRole : userRoles) {
+                if (role.getRoleId().equals(userRole.getRoleId())) {
                     role.setFlag(true);
                     break;
                 }
@@ -84,19 +75,16 @@ public class SysRoleServiceImpl implements ISysRoleService
 
     /**
      * 根据用户ID查询权限
-     * 
+     *
      * @param userId 用户ID
      * @return 权限列表
      */
     @Override
-    public Set<String> selectRolePermissionByUserId(String userId)
-    {
+    public Set<String> selectRolePermissionByUserId(String userId) {
         List<SysRole> perms = roleMapper.selectRolePermissionByUserId(userId);
         Set<String> permsSet = new HashSet<>();
-        for (SysRole perm : perms)
-        {
-            if (StringUtils.isNotNull(perm))
-            {
+        for (SysRole perm : perms) {
+            if (StringUtils.isNotNull(perm)) {
                 permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
             }
         }
@@ -105,52 +93,47 @@ public class SysRoleServiceImpl implements ISysRoleService
 
     /**
      * 查询所有角色
-     * 
+     *
      * @return 角色列表
      */
     @Override
-    public List<SysRole> selectRoleAll()
-    {
+    public List<SysRole> selectRoleAll() {
         return SpringUtils.getAopProxy(this).selectRoleList(new SysRole());
     }
 
     /**
      * 根据用户ID获取角色选择框列表
-     * 
+     *
      * @param userId 用户ID
      * @return 选中角色ID列表
      */
     @Override
-    public List<String> selectRoleListByUserId(String userId)
-    {
+    public List<String> selectRoleListByUserId(String userId) {
         return roleMapper.selectRoleListByUserId(userId);
     }
 
     /**
      * 通过角色ID查询角色
-     * 
+     *
      * @param roleId 角色ID
      * @return 角色对象信息
      */
     @Override
-    public SysRole selectRoleById(Long roleId)
-    {
+    public SysRole selectRoleById(String roleId) {
         return roleMapper.selectRoleById(roleId);
     }
 
     /**
      * 校验角色名称是否唯一
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
     @Override
-    public boolean checkRoleNameUnique(SysRole role)
-    {
-        Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
+    public boolean checkRoleNameUnique(SysRole role) {
+        String roleId = StringUtils.isNull(role.getRoleId()) ? null : role.getRoleId();
         SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName());
-        if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue())
-        {
+        if (StringUtils.isNotNull(info) && !info.getRoleId().equals(roleId)) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -158,17 +141,15 @@ public class SysRoleServiceImpl implements ISysRoleService
 
     /**
      * 校验角色权限是否唯一
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
     @Override
-    public boolean checkRoleKeyUnique(SysRole role)
-    {
-        Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
+    public boolean checkRoleKeyUnique(SysRole role) {
+        String roleId = StringUtils.isNull(role.getRoleId()) ? null : role.getRoleId();
         SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey());
-        if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue())
-        {
+        if (StringUtils.isNotNull(info) && !info.getRoleId().equals(roleId)) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -176,35 +157,29 @@ public class SysRoleServiceImpl implements ISysRoleService
 
     /**
      * 校验角色是否允许操作
-     * 
+     *
      * @param role 角色信息
      */
     @Override
-    public void checkRoleAllowed(SysRole role)
-    {
-        if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin())
-        {
+    public void checkRoleAllowed(SysRole role) {
+        if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) {
             throw new ServiceException("不允许操作超级管理员角色");
         }
     }
 
     /**
      * 校验角色是否有数据权限
-     * 
+     *
      * @param roleIds 角色id
      */
     @Override
-    public void checkRoleDataScope(Long... roleIds)
-    {
-        if (!SecurityUtils.isAdmin())
-        {
-            for (Long roleId : roleIds)
-            {
+    public void checkRoleDataScope(String... roleIds) {
+        if (!SecurityUtils.isAdmin()) {
+            for (String roleId : roleIds) {
                 SysRole role = new SysRole();
                 role.setRoleId(roleId);
                 List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role);
-                if (StringUtils.isEmpty(roles))
-                {
+                if (StringUtils.isEmpty(roles)) {
                     throw new ServiceException("没有权限访问角色数据!");
                 }
             }
@@ -213,26 +188,24 @@ public class SysRoleServiceImpl implements ISysRoleService
 
     /**
      * 通过角色ID查询角色使用数量
-     * 
+     *
      * @param roleId 角色ID
      * @return 结果
      */
     @Override
-    public int countUserRoleByRoleId(Long roleId)
-    {
+    public int countUserRoleByRoleId(String roleId) {
         return userRoleMapper.countUserRoleByRoleId(roleId);
     }
 
     /**
      * 新增保存角色信息
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
     @Override
     @Transactional
-    public int insertRole(SysRole role)
-    {
+    public int insertRole(SysRole role) {
         // 新增角色信息
         roleMapper.insertRole(role);
         return insertRoleMenu(role);
@@ -240,14 +213,13 @@ public class SysRoleServiceImpl implements ISysRoleService
 
     /**
      * 修改保存角色信息
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
     @Override
     @Transactional
-    public int updateRole(SysRole role)
-    {
+    public int updateRole(SysRole role) {
         // 修改角色信息
         roleMapper.updateRole(role);
         // 删除角色与菜单关联
@@ -257,26 +229,24 @@ public class SysRoleServiceImpl implements ISysRoleService
 
     /**
      * 修改角色状态
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
     @Override
-    public int updateRoleStatus(SysRole role)
-    {
+    public int updateRoleStatus(SysRole role) {
         return roleMapper.updateRole(role);
     }
 
     /**
      * 修改数据权限信息
-     * 
+     *
      * @param role 角色信息
      * @return 结果
      */
     @Override
     @Transactional
-    public int authDataScope(SysRole role)
-    {
+    public int authDataScope(SysRole role) {
         // 修改角色信息
         roleMapper.updateRole(role);
         // 删除角色与部门关联
@@ -287,23 +257,20 @@ public class SysRoleServiceImpl implements ISysRoleService
 
     /**
      * 新增角色菜单信息
-     * 
+     *
      * @param role 角色对象
      */
-    public int insertRoleMenu(SysRole role)
-    {
+    public int insertRoleMenu(SysRole role) {
         int rows = 1;
         // 新增用户与角色管理
         List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
-        for (Long menuId : role.getMenuIds())
-        {
+        for (Long menuId : role.getMenuIds()) {
             SysRoleMenu rm = new SysRoleMenu();
             rm.setRoleId(role.getRoleId());
             rm.setMenuId(menuId);
             list.add(rm);
         }
-        if (list.size() > 0)
-        {
+        if (list.size() > 0) {
             rows = roleMenuMapper.batchRoleMenu(list);
         }
         return rows;
@@ -314,20 +281,17 @@ public class SysRoleServiceImpl implements ISysRoleService
      *
      * @param role 角色对象
      */
-    public int insertRoleDept(SysRole role)
-    {
+    public int insertRoleDept(SysRole role) {
         int rows = 1;
         // 新增角色与部门(数据权限)管理
         List<SysRoleDept> list = new ArrayList<SysRoleDept>();
-        for (Long deptId : role.getDeptIds())
-        {
+        for (String deptId : role.getDeptIds()) {
             SysRoleDept rd = new SysRoleDept();
             rd.setRoleId(role.getRoleId());
             rd.setDeptId(deptId);
             list.add(rd);
         }
-        if (list.size() > 0)
-        {
+        if (list.size() > 0) {
             rows = roleDeptMapper.batchRoleDept(list);
         }
         return rows;
@@ -335,14 +299,13 @@ public class SysRoleServiceImpl implements ISysRoleService
 
     /**
      * 通过角色ID删除角色
-     * 
+     *
      * @param roleId 角色ID
      * @return 结果
      */
     @Override
     @Transactional
-    public int deleteRoleById(Long roleId)
-    {
+    public int deleteRoleById(String roleId) {
         // 删除角色与菜单关联
         roleMenuMapper.deleteRoleMenuByRoleId(roleId);
         // 删除角色与部门关联
@@ -352,21 +315,18 @@ public class SysRoleServiceImpl implements ISysRoleService
 
     /**
      * 批量删除角色信息
-     * 
+     *
      * @param roleIds 需要删除的角色ID
      * @return 结果
      */
     @Override
     @Transactional
-    public int deleteRoleByIds(Long[] roleIds)
-    {
-        for (Long roleId : roleIds)
-        {
+    public int deleteRoleByIds(String[] roleIds) {
+        for (String roleId : roleIds) {
             checkRoleAllowed(new SysRole(roleId));
             checkRoleDataScope(roleId);
             SysRole role = selectRoleById(roleId);
-            if (countUserRoleByRoleId(roleId) > 0)
-            {
+            if (countUserRoleByRoleId(roleId) > 0) {
                 throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName()));
             }
         }
@@ -379,43 +339,39 @@ public class SysRoleServiceImpl implements ISysRoleService
 
     /**
      * 取消授权用户角色
-     * 
+     *
      * @param userRole 用户和角色关联信息
      * @return 结果
      */
     @Override
-    public int deleteAuthUser(SysUserRole userRole)
-    {
+    public int deleteAuthUser(SysUserRole userRole) {
         return userRoleMapper.deleteUserRoleInfo(userRole);
     }
 
     /**
      * 批量取消授权用户角色
-     * 
-     * @param roleId 角色ID
+     *
+     * @param roleId  角色ID
      * @param userIds 需要取消授权的用户数据ID
      * @return 结果
      */
     @Override
-    public int deleteAuthUsers(Long roleId, String[] userIds)
-    {
+    public int deleteAuthUsers(String roleId, String[] userIds) {
         return userRoleMapper.deleteUserRoleInfos(roleId, userIds);
     }
 
     /**
      * 批量选择授权用户角色
-     * 
-     * @param roleId 角色ID
+     *
+     * @param roleId  角色ID
      * @param userIds 需要授权的用户数据ID
      * @return 结果
      */
     @Override
-    public int insertAuthUsers(Long roleId, String[] userIds)
-    {
+    public int insertAuthUsers(String roleId, String[] userIds) {
         // 新增用户与角色管理
         List<SysUserRole> list = new ArrayList<SysUserRole>();
-        for (String userId : userIds)
-        {
+        for (String userId : userIds) {
             SysUserRole ur = new SysUserRole();
             ur.setUserId(userId);
             ur.setRoleId(roleId);

+ 32 - 32
gw-system/src/main/java/com/goldenwater/system/service/impl/SysUserServiceImpl.java

@@ -35,7 +35,7 @@ import com.goldenwater.system.service.ISysUserService;
 
 /**
  * 用户 业务层处理
- * 
+ *
  * @author goldenwater
  */
 @Service
@@ -69,7 +69,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 根据条件分页查询用户列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -82,7 +82,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 根据条件分页查询已分配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -95,7 +95,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 根据条件分页查询未分配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -108,7 +108,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 通过用户名查询用户
-     * 
+     *
      * @param userName 用户名
      * @return 用户对象信息
      */
@@ -120,7 +120,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 通过用户ID查询用户
-     * 
+     *
      * @param userId 用户ID
      * @return 用户对象信息
      */
@@ -132,7 +132,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 查询用户所属角色组
-     * 
+     *
      * @param userName 用户名
      * @return 结果
      */
@@ -149,7 +149,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 查询用户所属岗位组
-     * 
+     *
      * @param userName 用户名
      * @return 结果
      */
@@ -166,7 +166,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 校验用户名称是否唯一
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -220,7 +220,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 校验用户是否允许操作
-     * 
+     *
      * @param user 用户信息
      */
     @Override
@@ -234,7 +234,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 校验用户是否有数据权限
-     * 
+     *
      * @param userId 用户id
      */
     @Override
@@ -254,7 +254,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 新增保存用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -276,7 +276,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 注册用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -288,7 +288,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 修改保存用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -310,13 +310,13 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 用户授权角色
-     * 
+     *
      * @param userId 用户ID
      * @param roleIds 角色组
      */
     @Override
     @Transactional
-    public void insertUserAuth(String userId, Long[] roleIds)
+    public void insertUserAuth(String userId, String[] roleIds)
     {
         userRoleMapper.deleteUserRoleByUserId(userId);
         insertUserRole(userId, roleIds);
@@ -324,7 +324,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 修改用户状态
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -336,7 +336,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 修改用户基本信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -348,7 +348,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 修改用户头像
-     * 
+     *
      * @param userId 用户ID
      * @param avatar 头像地址
      * @return 结果
@@ -361,7 +361,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 更新用户登录信息(IP和登录时间)
-     * 
+     *
      * @param userId 用户ID
      * @param loginIp 登录IP地址
      * @param loginDate 登录时间
@@ -374,7 +374,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 重置用户密码
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -386,7 +386,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 重置用户密码
-     * 
+     *
      * @param userId 用户ID
      * @param password 密码
      * @return 结果
@@ -399,7 +399,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 新增用户角色信息
-     * 
+     *
      * @param user 用户对象
      */
     public void insertUserRole(SysUser user)
@@ -409,17 +409,17 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 新增用户岗位信息
-     * 
+     *
      * @param user 用户对象
      */
     public void insertUserPost(SysUser user)
     {
-        Long[] posts = user.getPostIds();
+        String[] posts = user.getPostIds();
         if (StringUtils.isNotEmpty(posts))
         {
             // 新增用户与岗位管理
             List<SysUserPost> list = new ArrayList<SysUserPost>(posts.length);
-            for (Long postId : posts)
+            for (String postId : posts)
             {
                 SysUserPost up = new SysUserPost();
                 up.setUserId(user.getUserId());
@@ -432,17 +432,17 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 新增用户角色信息
-     * 
+     *
      * @param userId 用户ID
      * @param roleIds 角色组
      */
-    public void insertUserRole(String userId, Long[] roleIds)
+    public void insertUserRole(String userId, String[] roleIds)
     {
         if (StringUtils.isNotEmpty(roleIds))
         {
             // 新增用户与角色管理
             List<SysUserRole> list = new ArrayList<SysUserRole>(roleIds.length);
-            for (Long roleId : roleIds)
+            for (String roleId : roleIds)
             {
                 SysUserRole ur = new SysUserRole();
                 ur.setUserId(userId);
@@ -455,7 +455,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 通过用户ID删除用户
-     * 
+     *
      * @param userId 用户ID
      * @return 结果
      */
@@ -472,7 +472,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 批量删除用户信息
-     * 
+     *
      * @param userIds 需要删除的用户ID
      * @return 结果
      */
@@ -494,7 +494,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 导入用户数据
-     * 
+     *
      * @param userList 用户数据列表
      * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
      * @param operName 操作用户

+ 8 - 8
gw-system/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -59,8 +59,8 @@
 		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.query, m.route_name, m.visible, m.status, coalesce(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
 		from sys_menu m
 		left join sys_role_menu rm on m.menu_id = rm.menu_id
-		left join sys_user_role ur on rm.role_id::text = ur.role_id::text
-		left join sys_role ro on ur.role_id::text = ro.role_id::text
+		left join sys_user_role ur on rm.role_id = ur.role_id
+		left join sys_role ro on ur.role_id = ro.role_id
 		where ur.user_id = #{params.userId}
 		<if test="menuName != null and menuName != ''">
             AND m.menu_name like '%' || #{menuName} || '%'
@@ -78,9 +78,9 @@
 		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.query, m.route_name, m.visible, m.status, coalesce(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
 		from sys_menu m
 			 left join sys_role_menu rm on m.menu_id = rm.menu_id
-			 left join sys_user_role ur on rm.role_id::text = ur.role_id::text
-			 left join sys_role ro on ur.role_id::text = ro.role_id::text
-			 left join sys_user u on ur.user_id::text = u.user_id
+			 left join sys_user_role ur on rm.role_id = ur.role_id
+			 left join sys_role ro on ur.role_id = ro.role_id
+			 left join sys_user u on ur.user_id = u.user_id
 		where u.user_id = #{userId} and m.menu_type in ('M', 'C') and m.status = 0  AND ro.status = 0
 		order by m.parent_id, m.order_num
 	</select>
@@ -100,15 +100,15 @@
 		select distinct m.perms
 		from sys_menu m
 			 left join sys_role_menu rm on m.menu_id = rm.menu_id
-			 left join sys_user_role ur on rm.role_id::text = ur.role_id::text
+			 left join sys_user_role ur on rm.role_id = ur.role_id
 	</select>
 
 	<select id="selectMenuPermsByUserId" parameterType="String" resultType="String">
 		select distinct m.perms
 		from sys_menu m
 			 left join sys_role_menu rm on m.menu_id = rm.menu_id
-			 left join sys_user_role ur on rm.role_id::text = ur.role_id::text
-			 left join sys_role r on r.role_id::text = ur.role_id::text
+			 left join sys_user_role ur on rm.role_id = ur.role_id
+			 left join sys_role r on r.role_id = ur.role_id
 		where m.status = '0' and r.status = '0' and ur.user_id = #{userId}
 	</select>
 

+ 17 - 17
gw-system/src/main/resources/mapper/system/SysPostMapper.xml

@@ -16,12 +16,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="updateTime"    column="update_time"   />
 		<result property="remark"        column="remark"        />
 	</resultMap>
-	
+
 	<sql id="selectPostVo">
-        select post_id, post_code, post_name, post_sort, status, create_by, create_time, remark 
+        select post_id, post_code, post_name, post_sort, status, create_by, create_time, remark
 		from sys_post
     </sql>
-	
+
 	<select id="selectPostList" parameterType="SysPost" resultMap="SysPostResult">
 	    <include refid="selectPostVo"/>
 		<where>
@@ -36,42 +36,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			</if>
 		</where>
 	</select>
-	
+
 	<select id="selectPostAll" resultMap="SysPostResult">
 		<include refid="selectPostVo"/>
 	</select>
-	
+
 	<select id="selectPostById" parameterType="Long" resultMap="SysPostResult">
 		<include refid="selectPostVo"/>
 		where post_id = #{postId}
 	</select>
-	
+
 	<select id="selectPostListByUserId" parameterType="String" resultType="String">
 		select p.post_id
         from sys_post p
 	        left join sys_user_post up on up.post_id = p.post_id
-	        left join sys_user u on u.user_id = up.user_id::varchar
+	        left join sys_user u on u.user_id = up.user_id
 	    where u.user_id = #{userId}
 	</select>
-	
+
 	<select id="selectPostsByUserName" parameterType="String" resultMap="SysPostResult">
 		select p.post_id, p.post_name, p.post_code
 		from sys_post p
 			 left join sys_user_post up on up.post_id = p.post_id
-			 left join sys_user u on u.user_id = up.user_id::varchar
+			 left join sys_user u on u.user_id = up.user_id
 		where u.user_name = #{userName}
 	</select>
-	
+
 	<select id="checkPostNameUnique" parameterType="String" resultMap="SysPostResult">
 		<include refid="selectPostVo"/>
 		 where post_name=#{postName} limit 1
 	</select>
-	
+
 	<select id="checkPostCodeUnique" parameterType="String" resultMap="SysPostResult">
 		<include refid="selectPostVo"/>
 		 where post_code=#{postCode} limit 1
 	</select>
-	
+
 	<update id="updatePost" parameterType="SysPost">
  		update sys_post
  		<set>
@@ -85,7 +85,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  		</set>
  		where post_id = #{postId}
 	</update>
- 	
+
  	<insert id="insertPost" parameterType="SysPost" useGeneratedKeys="true" keyProperty="postId">
  		insert into sys_post(
  			<if test="postId != null and postId != ''">post_id,</if>
@@ -107,16 +107,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			now()
  		)
 	</insert>
-	
+
 	<delete id="deletePostById" parameterType="Long">
 		delete from sys_post where post_id = #{postId}
 	</delete>
-	
+
 	<delete id="deletePostByIds" parameterType="Long">
  		delete from sys_post where post_id in
  		<foreach collection="array" item="postId" open="(" separator="," close=")">
  			#{postId}
-        </foreach> 
+        </foreach>
  	</delete>
 
-</mapper> 
+</mapper>

+ 33 - 33
gw-system/src/main/resources/mapper/system/SysRoleMapper.xml

@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
@@ -20,16 +20,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="updateTime"         column="update_time"           />
 		<result property="remark"             column="remark"                />
 	</resultMap>
-	
-	<sql id="selectRoleVo">
-	    select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly,
-            r.status, r.del_flag, r.create_time, r.remark 
+
+    <sql id="selectRoleVo">
+        select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly,
+            r.status, r.del_flag, r.create_time, r.remark
         from sys_role r
-	        left join sys_user_role ur on ur.role_id::text = r.role_id::text
-	        left join sys_user u on u.user_id::text = ur.user_id::text
-	        left join sys_dept d on u.dept_id::text = d.dept_id::text
+        left join sys_user_role ur on ur.role_id = r.role_id
+        left join sys_user u on u.user_id = ur.user_id
+        left join sys_dept d on u.dept_id = d.dept_id
     </sql>
-    
+
     <select id="selectRoleList" parameterType="SysRole" resultMap="SysRoleResult">
 		<include refid="selectRoleVo"/>
 		where r.del_flag = '0'
@@ -55,44 +55,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		${params.dataScope}
 		order by r.role_sort
 	</select>
-    
+
 	<select id="selectRolePermissionByUserId" parameterType="String" resultMap="SysRoleResult">
 		<include refid="selectRoleVo"/>
 		WHERE r.del_flag = '0' and ur.user_id = #{userId}
 	</select>
-	
+
 	<select id="selectRoleAll" resultMap="SysRoleResult">
 		<include refid="selectRoleVo"/>
 	</select>
-	
-	<select id="selectRoleListByUserId" parameterType="String" resultType="String">
-		select r.role_id
+
+    <select id="selectRoleListByUserId" parameterType="String" resultType="String">
+        select r.role_id
         from sys_role r
-	        left join sys_user_role ur on ur.role_id::text = r.role_id::text
-	        left join sys_user u on u.user_id::text = ur.user_id::text
-	    where u.user_id = #{userId}
-	</select>
-	
-	<select id="selectRoleById" parameterType="Long" resultMap="SysRoleResult">
-		<include refid="selectRoleVo"/>
-		where r.role_id = #{roleId}
-	</select>
-	
+        left join sys_user_role ur on ur.role_id = r.role_id
+        left join sys_user u on u.user_id = ur.user_id
+        where u.user_id = #{userId}
+    </select>
+
+    <select id="selectRoleById" parameterType="String" resultMap="SysRoleResult">
+        <include refid="selectRoleVo"/>
+        where r.role_id = #{roleId}
+    </select>
+
 	<select id="selectRolesByUserName" parameterType="String" resultMap="SysRoleResult">
 		<include refid="selectRoleVo"/>
 		WHERE r.del_flag = '0' and u.user_name = #{userName}
 	</select>
-	
+
 	<select id="checkRoleNameUnique" parameterType="String" resultMap="SysRoleResult">
 		<include refid="selectRoleVo"/>
 		 where r.role_name=#{roleName} and r.del_flag = '0' limit 1
 	</select>
-	
+
 	<select id="checkRoleKeyUnique" parameterType="String" resultMap="SysRoleResult">
 		<include refid="selectRoleVo"/>
 		 where r.role_key=#{roleKey} and r.del_flag = '0' limit 1
 	</select>
-	
+
  	<insert id="insertRole" parameterType="SysRole" useGeneratedKeys="true" keyProperty="roleId">
  		insert into sys_role(
  			<if test="roleId != null and roleId != ''">role_id,</if>
@@ -120,7 +120,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			now()
  		)
 	</insert>
-	
+
 	<update id="updateRole" parameterType="SysRole">
  		update sys_role
  		<set>
@@ -137,16 +137,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  		</set>
  		where role_id = #{roleId}
 	</update>
-	
+
 	<delete id="deleteRoleById" parameterType="Long">
  		update sys_role set del_flag = '2' where role_id = #{roleId}
  	</delete>
- 	
+
  	<delete id="deleteRoleByIds" parameterType="Long">
  	    update sys_role set del_flag = '2' where role_id in
  		<foreach collection="array" item="roleId" open="(" separator="," close=")">
  			#{roleId}
-        </foreach> 
+        </foreach>
  	</delete>
- 	
-</mapper> 
+
+</mapper>

+ 12 - 12
gw-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -52,9 +52,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
         r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
         from sys_user u
-		    left join sys_dept d on u.dept_id::text = d.dept_id::text
-		    left join sys_user_role ur on u.user_id::text = ur.user_id::text
-		    left join sys_role r on r.role_id::text = ur.role_id::text
+		    left join sys_dept d on u.dept_id = d.dept_id
+		    left join sys_user_role ur on u.user_id = ur.user_id
+		    left join sys_role r on r.role_id = ur.role_id
     </sql>
 
     <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
@@ -89,10 +89,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
 	    select distinct u.user_id, u.dept_id, u.user_name, u.real_name, u.email, u.phonenumber, u.status, u.create_time
 	    from sys_user u
-			 left join sys_dept d on u.dept_id::text = d.dept_id::text
-			 left join sys_user_role ur on u.user_id::text = ur.user_id::text
-			 left join sys_role r on r.role_id::text = ur.role_id::text
-	    where u.del_flag = '0' and r.role_id::text = #{roleId}
+			 left join sys_dept d on u.dept_id = d.dept_id
+			 left join sys_user_role ur on u.user_id = ur.user_id
+			 left join sys_role r on r.role_id = ur.role_id
+	    where u.del_flag = '0' and r.role_id = #{roleId}
 	    <if test="userName != null and userName != ''">
 			AND u.user_name like '%' || #{userName} || '%'
 		</if>
@@ -106,11 +106,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	<select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
 	    select distinct u.user_id, u.dept_id, u.user_name, u.real_name, u.email, u.phonenumber, u.status, u.create_time
 	    from sys_user u
-			 left join sys_dept d on u.dept_id::text = d.dept_id::text
-			 left join sys_user_role ur on u.user_id::text = ur.user_id::text
-			 left join sys_role r on r.role_id::text = ur.role_id::text
-	    where u.del_flag = '0' and (r.role_id::text != #{roleId} or r.role_id IS NULL)
-	    and u.user_id::text not in (select u.user_id::text from sys_user u inner join sys_user_role ur on u.user_id::text = ur.user_id::text and ur.role_id::text = #{roleId})
+			 left join sys_dept d on u.dept_id = d.dept_id
+			 left join sys_user_role ur on u.user_id = ur.user_id
+			 left join sys_role r on r.role_id = ur.role_id
+	    where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)
+	    and u.user_id not in (select u.user_id from sys_user u inner join sys_user_role ur on u.user_id = ur.user_id and ur.role_id = #{roleId})
 	    <if test="userName != null and userName != ''">
 			AND u.user_name like '%' || #{userName} || '%'
 		</if>

BIN
gw-ui/public/favicon.ico


+ 8 - 0
gw-ui/src/api/slaj/hidd.js

@@ -17,6 +17,14 @@ export function getObjHidd(guid) {
   })
 }
 
+// 查询隐患关联附件(编辑回显)
+export function getObjHiddMedList(guid) {
+  return request({
+    url: '/hidd/objhidd/medList/' + guid,
+    method: 'get'
+  })
+}
+
 // 工程/非工程隐患聚合查询
 export function getHiddGroupBy(query) {
   return request({

+ 11 - 24
gw-ui/src/components/FileUpload/index.vue

@@ -1,33 +1,20 @@
 <template>
   <div class="file-upload-container">
-    <el-upload
-        ref="uploadRef"
-        :action="uploadUrl"
-        :headers="headers"
-        :data="uploadData"
-        :file-list="fileList"
-        :before-upload="beforeUpload"
-        :on-success="handleSuccess"
-        :on-error="handleError"
-        :on-remove="handleRemove"
-        :on-preview="handlePreview"
-        :limit="limit"
-        :accept="accept"
-        :multiple="multiple"
-        :disabled="disabled"
-    >
+    <el-upload ref="uploadRef" :action="uploadUrl" :headers="headers" :data="uploadData" :file-list="fileList"
+      :before-upload="beforeUpload" :on-success="handleSuccess" :on-error="handleError" :on-remove="handleRemove"
+      :on-preview="handlePreview" :limit="limit" :accept="accept" :multiple="multiple" :disabled="disabled">
       <el-button type="primary" plain icon="Upload" :disabled="disabled">上传附件</el-button>
-      <template #tip>
+      <!-- <template #tip>
         <div class="el-upload__tip" slot="describe">
           支持{{ acceptText }}上传,单个文件不超过{{ maxSize }}MB,最多上传{{ limit }}个文件
         </div>
-      </template>
+      </template> -->
     </el-upload>
 
     <!-- 文件预览对话框 -->
     <el-dialog v-model="previewVisible" :title="previewTitle" width="800px" append-to-body>
       <div class="preview-container">
-        <img v-if="isImage" :src="previewUrl" class="preview-image"/>
+        <img v-if="isImage" :src="previewUrl" class="preview-image" />
         <iframe v-else :src="previewUrl" class="preview-iframe"></iframe>
       </div>
     </el-dialog>
@@ -35,8 +22,8 @@
 </template>
 
 <script setup name="FileUpload">
-import {computed, ref, watch} from 'vue'
-import {getToken} from '@/utils/auth'
+import { computed, ref, watch } from 'vue'
+import { getToken } from '@/utils/auth'
 
 const props = defineProps({
   modelValue: {
@@ -95,7 +82,7 @@ const props = defineProps({
 
 const emit = defineEmits(['update:modelValue', 'change', 'upload-success', 'remove-success'])
 
-const {proxy} = getCurrentInstance()
+const { proxy } = getCurrentInstance()
 
 const uploadRef = ref(null)
 const fileList = ref([])
@@ -114,7 +101,7 @@ const uploadUrl = computed(() => {
 /** 动态计算上传附加数据:bizMedia 模式自动携带 bisTablename 和 bisGuid */
 const uploadData = computed(() => {
   if (props.bizMedia) {
-    return {bisTablename: props.bisTablename, bisGuid: props.bisGuid}
+    return { bisTablename: props.bisTablename, bisGuid: props.bisGuid }
   }
   return props.data
 })
@@ -135,7 +122,7 @@ const isImage = computed(() => {
 
 watch(() => props.modelValue, (val) => {
   fileList.value = val || []
-}, {immediate: true})
+}, { immediate: true })
 
 /** 上传前校验 */
 function beforeUpload(file) {

+ 13 - 30
gw-ui/src/components/OrgSelect/index.vue

@@ -1,34 +1,17 @@
 <template>
-  <el-form-item
-    :label="label"
-    :prop="prop"
-    :rules="required ? [{ required: true, message: label + '不能为空', trigger: 'change' }] : undefined"
-  >
-    <div style="display:flex;gap:8px">
-      <el-select v-model="currentScope" placeholder="范围" style="width:110px;flex-shrink:0" size="default" v-if="showScope">
-        <el-option label="全部" value="all"/>
-        <el-option label="水利机构" value="water"/>
-        <el-option label="非水利机构" value="uwat"/>
+  <el-form-item :label="label" :prop="prop"
+    :rules="required ? [{ required: true, message: label + '不能为空', trigger: 'change' }] : undefined">
+    <div style="width: 100%;display:flex;gap:8px">
+      <el-select v-model="currentScope" placeholder="范围" style="width:110px;flex-shrink:0" size="default"
+        v-if="showScope">
+        <el-option label="全部" value="all" />
+        <el-option label="水利机构" value="water" />
+        <el-option label="非水利机构" value="uwat" />
       </el-select>
-      <el-select
-        :model-value="modelValue"
-        filterable
-        remote
-        clearable
-        reserve-keyword
-        :remote-method="remoteSearch"
-        :loading="loading"
-        :disabled="disabled"
-        :placeholder="placeholder"
-        style="width: 100%"
-        @update:model-value="handleChange"
-      >
-        <el-option
-          v-for="item in options"
-          :key="item.value"
-          :label="item.label"
-          :value="item.value"
-        />
+      <el-select :model-value="modelValue" filterable remote clearable reserve-keyword :remote-method="remoteSearch"
+        :loading="loading" :disabled="disabled" :placeholder="placeholder" style="width: 100%"
+        @update:model-value="handleChange">
+        <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
       </el-select>
     </div>
   </el-form-item>
@@ -97,7 +80,7 @@ watch(() => props.modelValue, (val) => {
       if (d && d.guid && (!props.excludeGuid || d.guid !== props.excludeGuid)) {
         options.value = [{ value: d.guid, label: d.orgName }, ...options.value]
       }
-    }).catch(() => {})
+    }).catch(() => { })
   }
 }, { immediate: true })
 </script>

+ 111 - 0
gw-ui/src/components/SubOrgSelect/index.vue

@@ -0,0 +1,111 @@
+<template>
+  <el-form-item
+    :label="label"
+    :prop="prop"
+    :rules="required ? [{ required: true, message: label + '不能为空', trigger: 'change' }] : undefined"
+  >
+    <el-tree-select
+      v-model="currentValue"
+      :data="treeData"
+      :props="treeProps"
+      :filter-node-method="filterNode"
+      :multiple="multiple"
+      :show-checkbox="multiple"
+      check-strictly
+      :render-after-expand="false"
+      lazy
+      :load="loadNode"
+      filterable
+      clearable
+      :placeholder="placeholder"
+      :disabled="disabled"
+      style="width: 100%"
+    />
+  </el-form-item>
+</template>
+
+<script setup>
+import { ref, computed } from 'vue'
+import { listDeptChildren } from '@/api/system/dept'
+
+const props = defineProps({
+  /** v-model: 单选为 String,多选为 Array */
+  modelValue: { type: [String, Array], default: undefined },
+  /** 是否多选 */
+  multiple: { type: Boolean, default: false },
+  /** 表单标签 */
+  label: { type: String, default: '下级机构' },
+  /** 表单校验字段名 */
+  prop: { type: String, default: undefined },
+  /** 占位提示 */
+  placeholder: { type: String, default: '请选择机构' },
+  /** 是否必填 */
+  required: { type: Boolean, default: false },
+  /** 是否禁用 */
+  disabled: { type: Boolean, default: false },
+  /** 根部门ID,默认 '' 加载全部顶级部门 */
+  rootDeptId: { type: String, default: '' }
+})
+
+const emit = defineEmits(['update:modelValue'])
+
+const treeData = ref([])
+
+const treeProps = {
+  label: 'label',
+  children: 'children',
+  isLeaf: 'leaf',
+  value: 'value'
+}
+
+const currentValue = computed({
+  get: () => props.modelValue,
+  set: (val) => emit('update:modelValue', val)
+})
+
+/** 搜索过滤 */
+function filterNode(value, data) {
+  if (!value) return true
+  return (data.label || '').toLowerCase().includes(value.toLowerCase())
+}
+
+/** 将接口返回的行转为树节点 */
+function toNode(row) {
+  return {
+    value: row.deptId,
+    label: row.deptName,
+    leaf: row.hasChildren === false,
+    ...row
+  }
+}
+
+/** 懒加载子节点 */
+async function loadNode(node, resolve) {
+  try {
+    if (node.level === 0) {
+      // 根节点:加载顶级部门
+      const res = await listDeptChildren(rootParams())
+      const rows = extractRows(res)
+      resolve(rows.map(toNode))
+    } else {
+      const res = await listDeptChildren({ parentId: node.data.value })
+      const children = extractRows(res)
+      resolve(children.map(toNode))
+    }
+  } catch {
+    resolve([])
+  }
+}
+
+/** 根节点的请求参数 */
+function rootParams() {
+  return props.rootDeptId ? { parentId: props.rootDeptId } : {}
+}
+
+/** 兼容两种响应格式 */
+function extractRows(res) {
+  if (res.data && Array.isArray(res.data.rows)) return res.data.rows
+  if (Array.isArray(res.data)) return res.data
+  return []
+}
+</script>

Разница между файлами не показана из-за своего большого размера
+ 861 - 303
gw-ui/src/views/slaj/eme/conplanbasic/index.vue


+ 2 - 1
gw-ui/src/views/slaj/hidd/month.vue

@@ -425,7 +425,8 @@ function submitReturn() {
 
 function handlePendingApproval() {
   revokeApproveList().then(res => {
-    pendingList.value = res.rows || res.data || []
+    // 只展示待审批记录(revo_veri_resu='0')
+    pendingList.value = (res.rows || res.data || []).filter(r => r.revoVeriResu === '0' || r.revoVeriResu === undefined || r.revoVeriResu === null)
     pendingOpen.value = true
   }).catch(() => {
     pendingList.value = []

+ 2 - 2
gw-ui/src/views/slaj/hidd/monthDetail.vue

@@ -86,7 +86,7 @@
           <el-table-column label="整改状态" align="center" width="100">
             <template #default="scope">
               <el-link type="primary" @click="handleRectClick(scope.row)">
-                {{ scope.row.hiddStat === '0' ? '未落实整改' : scope.row.hiddStat === '1' ? '正在整改' : scope.row.hiddStat === '2' ? '完成整改' : '--' }}
+                {{ scope.row.hiddStat === '0' ? '未落实整改' : scope.row.hiddStat === '1' ? '正在整改' : scope.row.hiddStat === '2' ? '完成整改' : scope.row.hiddStat === '3' ? '已销号' : '--' }}
               </el-link>
             </template>
           </el-table-column>
@@ -172,7 +172,7 @@
       <el-descriptions :column="2" border v-if="rectImplRow">
         <el-descriptions-item label="隐患名称" :span="2">{{ rectImplRow.hiddName }}</el-descriptions-item>
         <el-descriptions-item label="整改状态">
-          {{ rectImplRow.hiddStat === '0' ? '未落实整改' : rectImplRow.hiddStat === '1' ? '正在整改' : rectImplRow.hiddStat === '2' ? '完成整改' : '--' }}
+          {{ rectImplRow.hiddStat === '0' ? '未落实整改' : rectImplRow.hiddStat === '1' ? '正在整改' : rectImplRow.hiddStat === '2' ? '完成整改' : rectImplRow.hiddStat === '3' ? '已销号' : '--' }}
         </el-descriptions-item>
         <el-descriptions-item label="整改负责人">{{ rectImplRow.rectPers }}</el-descriptions-item>
         <el-descriptions-item label="要求整改完成日期">{{ rectImplRow.requCompDate }}</el-descriptions-item>

+ 36 - 17
gw-ui/src/views/slaj/hidd/orgEngQuery.vue

@@ -148,6 +148,15 @@
                 <dict-tag :options="hidd_stat" :value="scope.row.hiddStat" />
               </template>
             </el-table-column>
+            <el-table-column label="上报状态" align="center" width="100">
+              <template #default="scope">
+                <el-tooltip v-if="scope.row.repAct === '2'" :content="scope.row.returnDesc || ''" placement="top">
+                  <el-tag type="danger" size="small">已退回</el-tag>
+                </el-tooltip>
+                <el-tag v-else-if="scope.row.repAct === '1'" type="success" size="small">已上报</el-tag>
+                <el-tag v-else type="info" size="small">未上报</el-tag>
+              </template>
+            </el-table-column>
           </el-table>
            <div class="pagination">
             <el-pagination v-model:current-page="queryParams2.pageNum" v-model:page-size="queryParams2.pageSize" :total="total2" :page-sizes="[10, 20, 50, 100]" layout="total, sizes, prev, pager, next, jumper" @size-change="getList2" @current-change="getList2" />
@@ -734,7 +743,8 @@
 </template>
 
 <script setup name="OrgEngQuery">
-import { listObjHidd, delObjHidd, addObjHidd, updateObjHidd, compoundSaveHidd, getHiddGroupBy, listBisHiddRectImpl, addBisHiddRectImpl, updateBisHiddRectImpl, listBisHiddRectAcce, addBisHiddRectAcce, updateBisHiddRectAcce, listBisHiddRectProg, addBisHiddRectProg, listAttEngBase, listNextDepHidd, writeOffBisMajHiddSup, getHiddListByName, listAttOrgBase, applyWriteOffBisMajHiddSup, approveWriteOffBisMajHiddSup, reportHidd, returnHidd, addBisMajHiddSup } from "@/api/slaj/hidd"
+import { listObjHidd, delObjHidd, addObjHidd, updateObjHidd, compoundSaveHidd, getHiddGroupBy, getObjHiddMedList, listBisHiddRectImpl, addBisHiddRectImpl, updateBisHiddRectImpl, listBisHiddRectAcce, addBisHiddRectAcce, updateBisHiddRectAcce, listBisHiddRectProg, addBisHiddRectProg, listNextDepHidd, writeOffBisMajHiddSup, getHiddListByName, listAttOrgBase, applyWriteOffBisMajHiddSup, approveWriteOffBisMajHiddSup, reportHidd, returnHidd, addBisMajHiddSup } from "@/api/slaj/hidd"
+import { listObjEng } from "@/api/slaj/eng"
 import { getToken } from "@/utils/auth"
 import useUserStore from '@/store/modules/user'
 import { Search, Plus, Download, Delete, Upload, Edit, Position, Back } from '@element-plus/icons-vue'
@@ -832,7 +842,7 @@ function queryHiddName(queryString, cb) {
 function handleAdd() {
   formTitle.value = '本级单位工程隐患新增'
   form.value = { hiddGrad: '1', hiddStat: '0', inspDate: '', inspLeader: '', inspLeaderPost: '', proPart: '', hiddDesc: '', engGuid: '', tendGuid: '', engName: '', tendName: '', orgGuid: userStore.orgGuid || '' }
-  listAttEngBase({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
+  listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
   fileAttachList.value = []
   uploadFileList.value = []
   formDrawer.value = true
@@ -844,10 +854,9 @@ function handleUpdate(row) {
   const data = list.value.find(d => d.guid === guid)
   if (data) {
     form.value = { ...data, engGuid: data.engGuid || '', tendGuid: data.tendGuid || '' }
-    listAttEngBase({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
+    listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
     formTitle.value = '本级单位工程隐患修改'
-    fileAttachList.value = []
-    uploadFileList.value = []
+    loadHiddMedList(data.guid)
     formDrawer.value = true
   }
 }
@@ -864,6 +873,19 @@ function handleUploadRemove(file, fileList) {
   uploadFileList.value = fileList
 }
 
+// 编辑时回填已有附件,避免保存时旧附件被清空
+function loadHiddMedList(guid) {
+  if (!guid) { fileAttachList.value = []; uploadFileList.value = []; return }
+  getObjHiddMedList(guid).then(res => {
+    const list = res.data || []
+    fileAttachList.value = list.map(m => ({ name: m.name, path: m.path, medGuid: m.medGuid }))
+    uploadFileList.value = list.map(m => ({ name: m.name, url: m.path }))
+  }).catch(() => {
+    fileAttachList.value = []
+    uploadFileList.value = []
+  })
+}
+
 function submitFormDrawer() {
   if (!form.value.hiddName) { proxy.$modal.msgWarning('请输入隐患名称'); return }
   formLoading.value = true
@@ -1028,7 +1050,7 @@ function getList4() {
 function handleAdd4() {
   formTitle.value = '施工单位隐患新增'
   form.value = { hiddGrad: '1', hiddStat: '0', hiddSour: '1', inspDate: '', inspLeader: '', inspLeaderPost: '', proPart: '', hiddDesc: '', engGuid: '', tendGuid: '', engName: '', tendName: '', orgName: '', orgGuid: userStore.orgGuid || '' }
-  listAttEngBase({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
+  listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
   listAttOrgBase({ orgNature: '7' }).then(res => {
     consOrgList.value = (res.rows || []).map(o => ({ value: o.guid, label: o.orgName }))
   })
@@ -1040,10 +1062,9 @@ function handleUpdate4(row) {
   const data = row || (ids4.value.length ? list4.value.find(d => d.guid === ids4.value[0]) : null)
   if (!data) { proxy.$modal.msgWarning('请先选择一条数据'); return }
   form.value = { ...data, engGuid: data.engGuid || '', tendGuid: data.tendGuid || '' }
-  listAttEngBase({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
+  listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
   formTitle.value = '施工单位隐患修改'
-  fileAttachList.value = []
-  uploadFileList.value = []
+  loadHiddMedList(data.guid)
   formDrawer.value = true
 }
 function handleDelete4(row) {
@@ -1086,7 +1107,7 @@ function getList5() {
 function handleAdd5() {
   formTitle.value = '参建单位隐患新增'
   form.value = { hiddGrad: '1', hiddStat: '0', inspDate: '', inspLeader: '', inspLeaderPost: '', proPart: '', hiddDesc: '', engGuid: '', tendGuid: '', engName: '', tendName: '', orgGuid: userStore.orgGuid || '' }
-  listAttEngBase({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
+  listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
   fileAttachList.value = []
   uploadFileList.value = []
   formDrawer.value = true
@@ -1095,10 +1116,9 @@ function handleUpdate5(row) {
   const data = row || (ids5.value.length ? list5.value.find(d => d.guid === ids5.value[0]) : null)
   if (!data) { proxy.$modal.msgWarning('请先选择一条数据'); return }
   form.value = { ...data, engGuid: data.engGuid || '', tendGuid: data.tendGuid || '' }
-  listAttEngBase({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
+  listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
   formTitle.value = '参建单位隐患修改'
-  fileAttachList.value = []
-  uploadFileList.value = []
+  loadHiddMedList(data.guid)
   formDrawer.value = true
 }
 function handleDelete5(row) {
@@ -1120,7 +1140,7 @@ function handleSelectionChange3(selection) { ids3.value = selection.map(item =>
 function handleAdd3() {
   formTitle.value = '本级单位标段隐患新增'
   form.value = { hiddGrad: '1', hiddStat: '0', inspDate: '', inspLeader: '', inspLeaderPost: '', proPart: '', hiddDesc: '', engGuid: '', tendGuid: '', engName: '', tendName: '', orgGuid: userStore.orgGuid || '' }
-  listAttEngBase({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
+  listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
   fileAttachList.value = []
   uploadFileList.value = []
   formDrawer.value = true
@@ -1131,10 +1151,9 @@ function handleUpdate3(row) {
   const data = list3.value.find(d => d.guid === guid)
   if (data) {
     form.value = { ...data, engGuid: data.engGuid || '', tendGuid: data.tendGuid || '' }
-    listAttEngBase({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
+    listObjEng({}).then(res => { engList.value = (res.rows || []).map(e => ({ value: e.guid, label: e.engName })) })
     formTitle.value = '本级单位标段隐患修改'
-    fileAttachList.value = []
-    uploadFileList.value = []
+    loadHiddMedList(data.guid)
     formDrawer.value = true
   }
 }

+ 9 - 8
gw-ui/src/views/slaj/hidd/supList.vue

@@ -71,9 +71,12 @@
             {{ formatDate(scope.row.collTime) }}
           </template>
         </el-table-column>
+        <!-- TODO: supStatValue 由后端 SQL 根据 bis_hidd_rect_acce.cancel_state 派生,直接返回中文 -->
+        <!-- 业务逻辑: null/'0'=未销号→已督办  '1'=待销号审批→待销号  '2'=销号审批通过→已销号 -->
+        <!-- 注意: 如需国际化需改为编码+字典,前后端同步修改 -->
         <el-table-column label="督办情况" align="center" prop="supStatValue" v-if="columns.supStat.visible" min-width="80">
           <template #default="scope">
-            <dict-tag :options="sup_stat" :value="supStatMap[scope.row.supStatValue] || scope.row.supStatValue" />
+            {{ scope.row.supStatValue }}
           </template>
         </el-table-column>
         <el-table-column label="整改情况" align="center" prop="hiddStat" v-if="columns.hiddStat.visible" min-width="80">
@@ -83,8 +86,8 @@
         </el-table-column>
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width" min-width="150">
           <template #default="scope">
-            <el-button link type="primary" v-if="supStatMap[scope.row.supStatValue] === '0' && scope.row.hiddStat !== '2'" @click="handleSup(scope.row)" v-hasPermi="['hidd:majhiddsup:add']">督办</el-button>
-            <el-button link type="primary" v-if="supStatMap[scope.row.supStatValue] === '2'" @click="handleWriteOff(scope.row)" v-hasPermi="['hidd:majhiddsup:edit']">销号</el-button>
+            <el-button link type="primary" v-if="scope.row.supStatValue === '已督办' && scope.row.hiddStat !== '2'" @click="handleSup(scope.row)" v-hasPermi="['hidd:majhiddsup:add']">督办</el-button>
+            <el-button link type="primary" v-if="scope.row.supStatValue === '待销号'" @click="handleWriteOff(scope.row)" v-hasPermi="['hidd:majhiddsup:edit']">销号</el-button>
             <el-button link type="primary" @click="handleDetail(scope.row)">详情</el-button>
           </template>
         </el-table-column>
@@ -305,11 +308,9 @@ const supRules = {
   rectPeri: [{ required: true, message: "请选择督办期限", trigger: "change" }]
 }
 
-const supStatMap = {
-  '已督办': '0',
-  '待销号': '2',
-  '已销号': '3'
-}
+// TODO: supStatValue 由后端 SQL 根据 bis_hidd_rect_acce.cancel_state 派生并直接返回中文
+// 业务逻辑: null/'0'=未销号→已督办  '1'=待销号审批→待销号  '2'=销号审批通过→已销号
+// 注意: 如需国际化需改为编码+字典,前后端同步修改
 
 const writeOffOpen = ref(false)
 const writeOffRow = ref({})

Некоторые файлы не были показаны из-за большого количества измененных файлов