lishuangjiang@potevio.com 1 tahun lalu
induk
melakukan
25034bf90d

+ 3 - 0
iot-dao/iot-data-model/src/main/java/cc/iotkit/model/system/SysDept.java

@@ -79,4 +79,7 @@ public class SysDept extends BaseModel implements Id<Long>, Serializable {
     private String tenantId;
 
 
+    private String deptCode;
+
+
 }

+ 2 - 0
iot-dao/iot-data-service/src/main/java/cc/iotkit/data/system/ISysDeptData.java

@@ -54,4 +54,6 @@ public interface ISysDeptData extends ICommonData<SysDept, Long> {
     long selectNormalChildrenDeptById(Long deptId);
 
     List<SysDept> findAllDeptsByTenant(String tenantId);
+
+    SysDept selectDeptByCode(String companyCode);
 }

+ 7 - 0
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysDept.java

@@ -103,4 +103,11 @@ public class TbSysDept extends BaseEntity implements TenantAware {
     @ApiModelProperty(value = "祖级列表")
     private String ancestors;
 
+
+    /**
+     * 部门名称
+     */
+    @ApiModelProperty(value = "部门编码")
+    private String deptCode;
+
 }

+ 11 - 1
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysDeptDataImpl.java

@@ -70,7 +70,8 @@ public class SysDeptDataImpl implements ISysDeptData, IJPACommData<SysDept, Long
                 .and(ObjectUtil.isNotNull(dept.getParentId()), () -> tbSysDept.parentId.eq(dept.getParentId()))
                 .and(StringUtils.isNotEmpty(dept.getDeptName()), () -> tbSysDept.deptName.like("%"+dept.getDeptName()+"%"))
                 .and(StringUtils.isNotEmpty(dept.getTenantId()), () -> tbSysDept.tenantId.eq(dept.getTenantId()))
-                .and(StringUtils.isNotEmpty(dept.getStatus()), () -> tbSysDept.status.eq(dept.getStatus()));
+                .and(StringUtils.isNotEmpty(dept.getStatus()), () -> tbSysDept.status.eq(dept.getStatus()))
+                .and(StringUtils.isNotEmpty(dept.getDeptCode()), () -> tbSysDept.deptCode.eq(dept.getDeptCode()));
         checkDataPermission(predicateBuilder, TenantHelper.getTenantId());
         return MapstructUtils.convert(StreamSupport.stream(deptRepository.findAll(predicateBuilder.build()).spliterator(), false).collect(Collectors.toList()), SysDept.class);
     }
@@ -140,4 +141,13 @@ public class SysDeptDataImpl implements ISysDeptData, IJPACommData<SysDept, Long
 //     List<TbSysDept> list = jpaQueryFactory.select(tbSysDept).from(tbSysDept).where(tbSysDept.tenantId.eq(tenantId)).fetch();
      return MapstructUtils.convert(list, SysDept.class);
     }
+
+    @Override
+    public SysDept selectDeptByCode(String companyCode) {
+        PredicateBuilder predicateBuilder = PredicateBuilder.instance().and(tbSysDept.deptCode.eq(companyCode));
+        TbSysDept sysDept = jpaQueryFactory.selectFrom(tbSysDept)
+                .where(predicateBuilder.build())
+                .fetchOne();
+        return MapstructUtils.convert(sysDept, SysDept.class);
+    }
 }

+ 0 - 2
iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/controller/OpenAuthController.java

@@ -30,6 +30,4 @@ public class OpenAuthController {
     public InvokeResult getToken(@RequestBody @Validated Request<TokenVerifyBo> request) {
         return new InvokeResult(openBaseService.getToken(request.getData()));
     }
-
-
 }

+ 1 - 1
iot-module/iot-plugin/iot-plugin-main/src/main/resources/application.yml

@@ -7,4 +7,4 @@ plugin:
   mainPackage: cc.iotkit
   # 如果配置是 windows 下路径, mac、linux 自行修改
   pluginPath:
-    - ./data/plugins
+    - ./data/plugins

+ 82 - 0
iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysUserController.java

@@ -18,6 +18,7 @@ import cc.iotkit.common.utils.StringUtils;
 import cc.iotkit.common.validate.EditGroup;
 import cc.iotkit.common.validate.QueryGroup;
 import cc.iotkit.common.web.core.BaseController;
+import cc.iotkit.model.InvokeResult;
 import cc.iotkit.model.system.SysDept;
 import cc.iotkit.system.dto.bo.SysDeptBo;
 import cc.iotkit.system.dto.bo.SysUserBo;
@@ -26,6 +27,7 @@ import cc.iotkit.system.dto.vo.*;
 import cc.iotkit.system.listener.SysUserImportListener;
 import cc.iotkit.system.service.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.dev33.satoken.annotation.SaIgnore;
 import cn.dev33.satoken.secure.BCrypt;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.util.ObjectUtil;
@@ -33,6 +35,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.MediaType;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -309,4 +312,83 @@ public class SysUserController extends BaseController {
         return deptService.selectDeptTreeList(reqDept.getData());
     }
 
+    @SaIgnore
+    @ApiOperation(value = "同步用户数据", notes = "同步用户数据", httpMethod = "POST")
+    @PostMapping("/syncUserInfo")
+    @Transactional
+    public Map<String, Object>  syncUserInfo(@RequestBody Map<String,Object>  sysUserInfo) {
+        Map<String, Object> map = new HashMap<>();
+        try {
+            String companyName = (String) sysUserInfo.get("companyName");
+            String companyCode = (String) sysUserInfo.get("companyCode");
+            String instName = (String) sysUserInfo.get("instName");
+            String instCode = (String) sysUserInfo.get("instCode");
+            String userName = (String) sysUserInfo.get("userName");
+            String nickName = (String) sysUserInfo.get("nickName");
+            String mobile = (String) sysUserInfo.get("mobile");
+            if(StringUtils.isNotEmpty(companyName) && StringUtils.isNotEmpty(instName)){
+                if(companyName.equals(instName)){
+                    instName = null;
+                }
+            }
+            //创建分公司机构
+            SysDept company = null;
+            SysDept inst = null;
+            if(Objects.nonNull(companyCode)){
+                company = deptService.selectDeptByCode(companyCode);
+                if(Objects.isNull(company)){
+                    company = createNewDept(companyName,companyCode,100L);
+                }
+            }
+            if (Objects.nonNull(instName)){
+                inst = deptService.selectDeptByCode(instCode);
+                if(Objects.isNull(inst)){
+                    inst = createNewDept(instName,instCode,company.getId());
+                }
+            }
+            //创建user
+            SysUserVo sysUserVo = userService.selectUserByUserName(userName);
+            if(Objects.nonNull(sysUserVo)){
+                sysUserVo.setNickName(nickName);
+                sysUserVo.setPhonenumber(mobile);
+                userService.updateBaseUser(sysUserVo);
+            }else{
+                SysUserBo user =new SysUserBo();
+                user.setNickName(nickName);
+                user.setUserName(userName);
+                user.setPhonenumber(mobile);
+                user.setPassword(BCrypt.hashpw("Mm#"+mobile));
+                user.setRoleIds(Collections.singletonList(2L));
+                user.setUserType("sys_user");
+                user.setTenantId("000000");
+                if(Objects.nonNull(inst)){
+                    user.setDeptId(inst.getId());
+                }else if(Objects.nonNull(company)){
+                    user.setDeptId(company.getId());
+                }else{
+                    user.setDeptId(100L);
+                }
+                userService.insertUser(user);
+            }
+            userService.syncUserInfo(companyName,instName,userName,nickName);
+        } catch (Exception e) {
+            map.put("resp_code", 1);
+            map.put("resp_msg", e.getMessage());
+            return map;
+        }
+        map.put("resp_code", 0);//状态码:0-成功,1-失败
+        map.put("resp_msg", "");//响应结果详细信息
+        return map;
+    }
+
+    private SysDept createNewDept(String name, String code, Long parentId) {
+        SysDeptBo dept = new SysDeptBo();
+        dept.setDeptName(name);
+        dept.setDeptCode(code);
+        dept.setParentId(parentId);
+        dept.setStatus("0");
+        dept.setTenantId("0000000");
+        return deptService.createNewDept(dept);
+    }
+
 }

+ 2 - 0
iot-module/iot-system/src/main/java/cc/iotkit/system/dto/bo/SysDeptBo.java

@@ -77,4 +77,6 @@ public class SysDeptBo extends BaseDto {
      */
     private String tenantId;
 
+    private String deptCode;
+
 }

+ 4 - 0
iot-module/iot-system/src/main/java/cc/iotkit/system/service/ISysDeptService.java

@@ -118,4 +118,8 @@ public interface ISysDeptService {
     List<SysDept> selectAllDept();
 
     void reCacheDept(String tenantId);
+
+    SysDept selectDeptByCode(String companyCode);
+
+    SysDept createNewDept(SysDeptBo dept);
 }

+ 4 - 0
iot-module/iot-system/src/main/java/cc/iotkit/system/service/ISysUserService.java

@@ -2,6 +2,7 @@ package cc.iotkit.system.service;
 
 import cc.iotkit.common.api.PageRequest;
 import cc.iotkit.common.api.Paging;
+import cc.iotkit.model.InvokeResult;
 import cc.iotkit.system.dto.bo.SysUserBo;
 import cc.iotkit.system.dto.vo.SysUserVo;
 
@@ -201,4 +202,7 @@ public interface ISysUserService {
      */
     void deleteUserByIds(Collection<Long> userIds);
 
+    void syncUserInfo(String companyName, String companyName1, String companyName2,String nickName) throws Exception;
+
+    void updateBaseUser(SysUserVo sysUserVo);
 }

+ 19 - 0
iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysDeptServiceImpl.java

@@ -350,4 +350,23 @@ public class SysDeptServiceImpl implements ISysDeptService {
             }
         }
     }
+
+    @Override
+    public SysDept selectDeptByCode(String companyCode) {
+        return sysDeptData.selectDeptByCode(companyCode);
+    }
+
+
+    @Override
+    public SysDept createNewDept(SysDeptBo bo) {
+        SysDept parent = sysDeptData.findById(bo.getParentId());
+        // 如果父节点不为正常状态,则不允许新增子节点
+        if (!UserConstants.DEPT_NORMAL.equals(parent.getStatus())) {
+            throw new BizException("部门停用,不允许新增");
+        }
+        SysDept dept = MapstructUtils.convert(bo, SysDept.class);
+        dept.setAncestors(parent.getAncestors() + StringUtils.SEPARATOR + dept.getParentId());
+        sysDeptData.save(dept);
+        return dept;
+    }
 }

+ 18 - 4
iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysUserServiceImpl.java

@@ -10,6 +10,7 @@ import cc.iotkit.common.utils.JsonUtils;
 import cc.iotkit.common.utils.MapstructUtils;
 import cc.iotkit.common.utils.StreamUtils;
 import cc.iotkit.data.system.*;
+import cc.iotkit.model.InvokeResult;
 import cc.iotkit.model.system.*;
 import cc.iotkit.system.dto.bo.SysUserBo;
 import cc.iotkit.system.dto.vo.SysUserVo;
@@ -183,17 +184,17 @@ public class SysUserServiceImpl implements ISysUserService {
             String[] ancestors = userDept.getAncestors().split(",");
             if (ancestors.length == 1) {
                 //总公司人员
-                syncUserdata(null, null, user.getUserName());
+                syncUserdata(null, null, user.getUserName(),user.getNickName());
             } else if (ancestors.length == 2) {
                 //分公司
-                syncUserdata(userDept.getDeptName(), null, user.getUserName());
+                syncUserdata(userDept.getDeptName(), null, user.getUserName(),user.getNickName());
             } else if (ancestors.length == 3) {
                 //机构
                 parentDept = sysDeptData.findById(userDept.getParentId());
                 if (Objects.isNull(parentDept)) {
                     throw new BizException("机构信息有误!");
                 }
-                syncUserdata(parentDept.getDeptName(), userDept.getDeptName(), user.getUserName());
+                syncUserdata(parentDept.getDeptName(), userDept.getDeptName(), user.getUserName(),user.getNickName());
             } else {
                 //其他
                 return;
@@ -204,7 +205,7 @@ public class SysUserServiceImpl implements ISysUserService {
         }
     }
 
-    private void syncUserdata(String companyName, String deptName, String userName) throws Exception {
+    private void syncUserdata(String companyName, String deptName, String userName,String nickName) throws Exception {
         RestTemplate restTemplate = new RestTemplate();
         HttpHeaders headers = new HttpHeaders();
         //头部类型
@@ -212,8 +213,10 @@ public class SysUserServiceImpl implements ISysUserService {
         MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
         //接口参数
         map.add("companyName",companyName);
+        map.add("deptName",deptName);
         map.add("password",deptName);
         map.add("user",userName);
+        map.add("nickName",nickName);
         //构造实体对象
         HttpEntity<MultiValueMap<String, Object>> param = new HttpEntity<>(map, headers);
         ResponseEntity exchange = restTemplate.postForEntity(healthPlatFormUrl, param, Map.class);
@@ -398,4 +401,15 @@ public class SysUserServiceImpl implements ISysUserService {
     public void deleteUserByIds(Collection<Long> userIds) {
         sysUserData.deleteByIds(userIds);
     }
+
+    @Override
+    public void syncUserInfo(String companyName, String deptName, String userName,String nickName) throws Exception {
+        this.syncUserdata( companyName,  deptName,  userName,nickName);
+    }
+
+    @Override
+    public void updateBaseUser(SysUserVo sysUserVo) {
+        SysUser sysUser = MapstructUtils.convert(sysUserVo, SysUser.class);
+        sysUserData.save(sysUser);
+    }
 }