From 7ade5c7b95e2d5205fc1843ad493a56469f24f80 Mon Sep 17 00:00:00 2001 From: pengjie <17373303529@163.com> Date: Sat, 27 Jul 2024 15:43:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E5=91=98=E4=BF=A1=E6=81=AF=E5=90=8C?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BaseDataController.java | 162 ++++++++++++------ .../basicdata/controller/LoginController.java | 19 ++ .../modules/basicdata/entity/Company.java | 3 + .../basicdata/mapper/CompanyConfigMapper.java | 2 +- .../mapper/xml/CompanyConfigMapper.xml | 4 +- .../basicdata/service/ISystemUserService.java | 2 + .../service/impl/BaseModuleServiceImpl.java | 12 +- .../service/impl/SystemUserServiceImpl.java | 32 +++- src/main/resources/application.properties | 5 +- 9 files changed, 178 insertions(+), 63 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/BaseDataController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/BaseDataController.java index 3ba59a350..52f7bfc0b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/BaseDataController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/BaseDataController.java @@ -1,5 +1,6 @@ package com.zhgd.xmgl.modules.basicdata.controller; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.asymmetric.KeyType; @@ -8,11 +9,14 @@ import cn.hutool.http.HttpRequest; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.redis.lock.RedisRepository; +import com.zhgd.xmgl.modules.basicdata.entity.Company; import com.zhgd.xmgl.modules.basicdata.entity.OrganizationDept; import com.zhgd.xmgl.modules.basicdata.entity.OrganizationJob; import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; +import com.zhgd.xmgl.modules.basicdata.service.ICompanyService; import com.zhgd.xmgl.modules.basicdata.service.IOrganizationDeptService; import com.zhgd.xmgl.modules.basicdata.service.IOrganizationJobService; import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService; @@ -24,12 +28,10 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.*; +import java.util.stream.Collectors; @RestController @RequestMapping("/xmgl/baseData") @@ -55,9 +57,12 @@ public class BaseDataController { @Autowired private ISystemUserService systemUserService; + @Autowired + private ICompanyService companyService; + @ApiOperation(value = "获取分部数据进行同步", notes = "获取分部数据进行同步", httpMethod="POST") - @PostMapping(value = "/getSubCompanyData") - public Result> getSubCompanyData(@RequestBody Map map) { + @GetMapping(value = "/getSubCompanyData") + public Result> getSubCompanyData() { Map jsonParams = new HashMap<>(); Map params = new HashMap<>(); params.put("pagesize", 1000); @@ -67,50 +72,84 @@ public class BaseDataController { if (StringUtils.isNotBlank(result)) { JSONObject obj = JSONObject.parseObject(result); JSONArray jsonArray = obj.getJSONObject("data").getJSONArray("dataList"); - for (int i = 0; i < jsonArray.size(); i++) { - JSONObject subCompany = jsonArray.getJSONObject(i); + Company companyParent = companyService.getOne(Wrappers.lambdaQuery().eq(Company::getCompanyName, "九柱集团") + .eq(Company::getCompanyType, 2)); + if (companyParent != null) { + List companyList = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject companyObj = jsonArray.getJSONObject(i); + Company company = new Company(); + company.setCompanySn(companyObj.getString("subcompanycode")); + company.setCompanyName(companyObj.getString("subcompanyname")); + company.setExternalId(companyObj.getString("id")); + company.setCreateTime(DateUtil.formatDateTime(new Date())); + company.setCompanyType(3); + company.setParentId(companyParent.getCompanyId()); + company.setHeadquartersSn(companyParent.getHeadquartersSn()); + company.setLongitude(companyParent.getLongitude()); + company.setLatitude(companyParent.getLatitude()); + company.setRangeAddr(companyParent.getRangeAddr()); + company.setFullSn(companyParent.getFullSn()); + companyList.add(company); + } + companyService.saveBatch(companyList); } } return Result.success(null); } - @ApiOperation(value = "获取岗位数据进行同步", notes = "获取岗位数据进行同步", httpMethod="POST") - @PostMapping(value = "/getJobData") - public Result> getJobData(@RequestBody Map map) { - Map jsonParams = new HashMap<>(); - Map params = new HashMap<>(); - params.put("pagesize", 1000); - params.put("curpage", 1); - jsonParams.put("params", params); - String result = testRestful(ADDRESS, "/api/hrm/resful/getJobtitleInfoWithPage", JSONObject.toJSONString(jsonParams)); - if (StringUtils.isNotBlank(result)) { - JSONObject obj = JSONObject.parseObject(result); - JSONArray jsonArray = obj.getJSONObject("data").getJSONArray("dataList"); - List deptList = new ArrayList<>(); - for (int i = 0; i < jsonArray.size(); i++) { - JSONObject dept = jsonArray.getJSONObject(i); - OrganizationDept organizationDept = new OrganizationDept(); - organizationDept.setId(Long.valueOf(dept.getString("id"))); - organizationDept.setDeptName(dept.getString("jobtitlename")); - deptList.add(organizationDept); - } - organizationDeptService.saveBatch(deptList); - - } - - return Result.success(null); - } - @ApiOperation(value = "获取部门数据进行同步", notes = "获取部门数据进行同步", httpMethod="POST") - @PostMapping(value = "/getDeptData") - public Result> getDeptData(@RequestBody Map map) { + @GetMapping(value = "/getDeptData") + public Result> getDeptData() { Map jsonParams = new HashMap<>(); Map params = new HashMap<>(); params.put("pagesize", 1000); params.put("curpage", 1); jsonParams.put("params", params); String result = testRestful(ADDRESS, "/api/hrm/resful/getHrmdepartmentWithPage", JSONObject.toJSONString(jsonParams)); + if (StringUtils.isNotBlank(result)) { + JSONObject obj = JSONObject.parseObject(result); + JSONArray jsonArray = obj.getJSONObject("data").getJSONArray("dataList"); + Company companyParent = companyService.getOne(Wrappers.lambdaQuery().eq(Company::getCompanyName, "九柱集团") + .eq(Company::getCompanyType, 2)); + if (companyParent != null) { + List companyList = new ArrayList<>(); + List subCompanyList = companyService.list(Wrappers.lambdaQuery() + .eq(Company::getCompanyType, 3) + .eq(Company::getHeadquartersSn, companyParent.getHeadquartersSn())); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject companyObj = jsonArray.getJSONObject(i); + Company company = new Company(); + company.setCompanySn(companyObj.getString("departmentcode")); + company.setCompanyName(companyObj.getString("departmentname")); + company.setExternalId(companyObj.getString("id")); + company.setCreateTime(DateUtil.formatDateTime(new Date())); + company.setCompanyType(4); + List parentDept = subCompanyList.stream().filter(d -> d.getExternalId() != null && d.getExternalId().toString().equals(companyObj.getString("subcompanyid1"))).collect(Collectors.toList()); + company.setParentId(parentDept.get(0).getCompanyId()); + company.setHeadquartersSn(companyParent.getHeadquartersSn()); + company.setLongitude(companyParent.getLongitude()); + company.setLatitude(companyParent.getLatitude()); + company.setRangeAddr(companyParent.getRangeAddr()); + company.setFullSn(companyParent.getFullSn()); + companyList.add(company); + } + companyService.saveBatch(companyList); + } + } + return Result.success(null); + } + + @ApiOperation(value = "获取岗位数据进行同步", notes = "获取岗位数据进行同步", httpMethod="POST") + @GetMapping(value = "/getJobData") + public Result> getJobData() { + Map jsonParams = new HashMap<>(); + Map params = new HashMap<>(); + params.put("pagesize", 1000); + params.put("curpage", 1); + jsonParams.put("params", params); + String result = testRestful(ADDRESS, "/api/hrm/resful/getJobtitleInfoWithPage", JSONObject.toJSONString(jsonParams)); if (StringUtils.isNotBlank(result)) { JSONObject obj = JSONObject.parseObject(result); JSONArray jsonArray = obj.getJSONObject("data").getJSONArray("dataList"); @@ -119,37 +158,54 @@ public class BaseDataController { JSONObject dept = jsonArray.getJSONObject(i); OrganizationJob organizationJob = new OrganizationJob(); organizationJob.setId(Long.valueOf(dept.getString("id"))); - organizationJob.setJobName(dept.getString("departmentname")); + organizationJob.setJobName(dept.getString("jobtitlename")); jobList.add(organizationJob); } organizationJobService.saveBatch(jobList); } - return Result.success(null); } @ApiOperation(value = "获取人员数据进行同步", notes = "获取人员数据进行同步", httpMethod="POST") - @PostMapping(value = "/getUserData") - public Result> getUserData(@RequestBody Map map) { + @GetMapping(value = "/getUserData") + public Result> getUserData() { Map jsonParams = new HashMap<>(); Map params = new HashMap<>(); + params.put("pagesize", 1000); + params.put("curpage", 1); jsonParams.put("params", params); String result = testRestful(ADDRESS, "/api/hrm/resful/getHrmUserInfoWithPage", JSONObject.toJSONString(jsonParams)); if (StringUtils.isNotBlank(result)) { JSONObject obj = JSONObject.parseObject(result); JSONArray jsonArray = obj.getJSONObject("data").getJSONArray("dataList"); - List userList = new ArrayList<>(); - for (int i = 0; i < jsonArray.size(); i++) { - JSONObject dept = jsonArray.getJSONObject(i); - SystemUser systemUser = new SystemUser(); - systemUser.setUserId(Long.valueOf(dept.getString("id"))); - systemUser.setAccount(dept.getString("loginid")); - systemUser.setRealName(dept.getString("lastname")); - systemUser.setJobId(Long.valueOf(dept.getString("departmentid"))); - systemUser.setDepartment(dept.getString("jobtitle")); - userList.add(systemUser); + Company companyParent = companyService.getOne(Wrappers.lambdaQuery().eq(Company::getCompanyName, "九柱集团") + .eq(Company::getCompanyType, 2)); + if (companyParent != null) { + List deptList = companyService.list(Wrappers.lambdaQuery() + .eq(Company::getCompanyType, 4) + .eq(Company::getHeadquartersSn, companyParent.getHeadquartersSn())); + List userList = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject dept = jsonArray.getJSONObject(i); + String loginid = dept.getString("loginid"); + if (StringUtils.isNotBlank(loginid)) { + SystemUser systemUser = new SystemUser(); + systemUser.setUserId(Long.valueOf(dept.getString("id"))); + systemUser.setAccount(loginid); + String departmentId = dept.getString("departmentid"); + List myDept = deptList.stream().filter(d -> d.getExternalId() != null && d.getExternalId().toString().equals(departmentId)).collect(Collectors.toList()); + systemUser.setSn(myDept.size() > 0 ? myDept.get(0).getCompanySn() : ""); + systemUser.setAccountType(7); + systemUser.setRealName(dept.getString("lastname")); + String jobtitle = dept.getString("jobtitle"); + if (StringUtils.isNotBlank(jobtitle)) { + systemUser.setJobId(Long.valueOf(dept.getString("jobtitle"))); + } + userList.add(systemUser); + } + } + systemUserService.saveBatch(userList); } - systemUserService.saveBatch(userList); } return Result.success(null); } @@ -251,7 +307,7 @@ public class BaseDataController { //ECOLOGY返回的token // TODO 为Token缓存设置过期时间 - redisRepository.set("JIUZHU_SERVER_TOKEN",StrUtil.nullToEmpty((String)datas.get("token"))); + redisRepository.setExpire("JIUZHU_SERVER_TOKEN",StrUtil.nullToEmpty((String)datas.get("token")), 60 * 30); return datas; } } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/LoginController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/LoginController.java index 6ed51c53f..a437670e8 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/LoginController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/LoginController.java @@ -1,6 +1,7 @@ package com.zhgd.xmgl.modules.basicdata.controller; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.zhgd.annotation.OperLog; import com.zhgd.jeecg.common.api.vo.Result; @@ -20,7 +21,9 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import springfox.documentation.annotations.ApiIgnore; +import java.util.Date; import java.util.Map; /** @@ -178,6 +181,18 @@ public class LoginController { return Result.success(resultMap); } + @ApiOperation(value = "通过用户登录名登录信息", notes = "通过用户登录名登录信息", httpMethod = "POST") + @ApiImplicitParams({ + @ApiImplicitParam(name = "t", required = true, value = "时间戳", paramType = "body"), + @ApiImplicitParam(name = "u", required = true, value = "用户名", paramType = "body"), + @ApiImplicitParam(name = "p", required = true, value = "用户名+时间戳+系统简称的MD5值", paramType = "body") + }) + @PostMapping(value = "/getUserByAccount") + public Result> getUserByAccount(@ApiIgnore @RequestBody Map map) { + Map resultMap = systemUserService.getUserByAccount(map); + return Result.success(resultMap); + } + @ApiOperation(value = "通过项目编号直接获取用户登录信息", notes = "通过项目编号直接获取用户登录信息", httpMethod = "POST") @ApiImplicitParams({ @ApiImplicitParam(name = "projectNumber", required = true, value = "项目编号", paramType = "body"), @@ -188,6 +203,10 @@ public class LoginController { return Result.success(resultMap); } + public static void main(String[] args) { + System.out.println(DateUtil.offsetDay(new Date(), 1).getTime()); + } + @ApiOperation(value = "app端退出登录", notes = "app端退出登录", httpMethod = "POST") @PostMapping(value = "/logout") public Result logout(@RequestBody Map map) { diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/Company.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/Company.java index 3b1e95e99..2bd9dfa6f 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/Company.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/Company.java @@ -85,6 +85,9 @@ public class Company implements Serializable { @ApiModelProperty(value = "管辖区域范围") private java.lang.String rangeAddr; + @ApiModelProperty(value="外部主键ID") + private java.lang.String externalId; + @ApiModelProperty(value = "父级Sn") @TableField(exist = false) private java.lang.String parentSn; diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/CompanyConfigMapper.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/CompanyConfigMapper.java index afecf53e1..62386d6f7 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/CompanyConfigMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/CompanyConfigMapper.java @@ -15,7 +15,7 @@ import org.apache.ibatis.annotations.Param; public interface CompanyConfigMapper extends BaseMapper { - CompanyConfig getCompanyConfigBySN(String companySn); + CompanyConfig getCompanyConfigBySn(String companySn); CompanyConfig getCompanyConfigByProject(String sn); diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/CompanyConfigMapper.xml b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/CompanyConfigMapper.xml index 1ad3e03ed..e015eb549 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/CompanyConfigMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/CompanyConfigMapper.xml @@ -8,12 +8,12 @@ - SELECT b.*, a.headquarters_sn, c.company_name, c.propagate_file FROM company a INNER JOIN company_config b ON a.headquarters_sn = b.company_sn LEFT JOIN company c ON a.headquarters_sn = c.company_sn - WHERE a.company_sn = #{companySn} + WHERE a.company_sn = #{companySn} LIMIT 1