From b30ba53fc5c16b578921eeddf3e6a89832d23f8d Mon Sep 17 00:00:00 2001 From: liyawei Date: Tue, 1 Mar 2022 18:32:43 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=BB=84=E7=BB=87?= =?UTF-8?q?=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/system/vo/SysDepartTreeModel.java | 16 +- .../modules/system/entity/PPEmployee.java | 60 ++++ .../system/entity/PPOrgPosEmployee.java | 33 ++ .../modules/system/entity/PPOrganization.java | 29 ++ .../system/entity/PPOrganizationPosition.java | 25 ++ .../modules/system/entity/PPPosition.java | 24 ++ .../jero/modules/system/entity/SysDepart.java | 14 +- .../modules/system/entity/SysDepartRole.java | 4 + .../system/entity/SysDepartRoleUser.java | 5 + .../jero/modules/system/entity/SysRole.java | 10 + .../jero/modules/system/entity/SysUser.java | 2 + .../system/service/ISyncDataService.java | 27 ++ .../system/service/ISysDepartService.java | 7 + .../system/service/ISysRoleService.java | 9 + .../system/service/ISysUserService.java | 2 + .../service/impl/SyncDataServiceImpl.java | 301 ++++++++++++++++++ .../service/impl/SysDepartServiceImpl.java | 7 + .../service/impl/SysRoleServiceImpl.java | 9 + .../service/impl/SysUserServiceImpl.java | 7 + .../system/util/FindsDepartsChildrenUtil.java | 1 + 20 files changed, 583 insertions(+), 9 deletions(-) create mode 100644 jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPEmployee.java create mode 100644 jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPOrgPosEmployee.java create mode 100644 jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPOrganization.java create mode 100644 jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPOrganizationPosition.java create mode 100644 jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPPosition.java create mode 100644 jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISyncDataService.java create mode 100644 jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SyncDataServiceImpl.java diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/vo/SysDepartTreeModel.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/vo/SysDepartTreeModel.java index 63f30352b..f268080b4 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/vo/SysDepartTreeModel.java +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/vo/SysDepartTreeModel.java @@ -51,6 +51,8 @@ public class SysDepartTreeModel implements Serializable{ private String orgCode; + private String parentCode; + private String mobile; private String fax; @@ -74,6 +76,13 @@ public class SysDepartTreeModel implements Serializable{ private List children = new ArrayList<>(); + public String getParentCode() { + return parentCode; + } + + public void setParentCode(String parentCode) { + this.parentCode = parentCode; + } public boolean getIsLeaf() { return isLeaf; @@ -312,6 +321,7 @@ public class SysDepartTreeModel implements Serializable{ Objects.equals(orgCategory, model.orgCategory) && Objects.equals(orgType, model.orgType) && Objects.equals(orgCode, model.orgCode) && + Objects.equals(parentCode, model.parentCode) && Objects.equals(mobile, model.mobile) && Objects.equals(fax, model.fax) && Objects.equals(address, model.address) && @@ -332,9 +342,9 @@ public class SysDepartTreeModel implements Serializable{ public int hashCode() { return Objects.hash(id, parentId, departName, departNameEn, departNameAbbr, - departOrder, description, orgCategory, orgType, orgCode, mobile, fax, address, - memo, status, delFlag, createBy, createTime, updateBy, updateTime, - children); + departOrder, description, orgCategory, orgType, orgCode, parentCode, + mobile, fax, address, memo, status, delFlag, createBy, createTime, + updateBy, updateTime, children); } } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPEmployee.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPEmployee.java new file mode 100644 index 000000000..f76e8e2d0 --- /dev/null +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPEmployee.java @@ -0,0 +1,60 @@ +package com.jero.modules.system.entity; + +import lombok.Data; + +import java.util.Date; + +/** + * @Author: liyawei + * @Description: + * @Date: Created in 10:01 2022/3/1 + */ +@Data +public class PPEmployee { + private String data_difference; //数据来源[WORKDAY,XPT,NIOCAPITAL] + private String employee_difference; // 员工来源[CN, EU_US,EU] + private String employee_id; // 员工编号(员工唯一标识) + private String worker_user_id; //WD帐号创建SSO账号 / AD账户 + private String user_name; // WD同步到people的域帐号 + private String foreign_employee_id; // 兼职公司对应的员工编号 + private String name; // 全名 + private String formatted_name; // 全名-拼音及中文 + private String preferred_first_name; // 首选-名 + private String preferred_last_name; // 首选-姓 + private String first_name; //法定-名-拼音 + private String middle_name; // 中间-名 - 英文 + private String last_name; // 法定-姓-拼音 + private String english_name; // 英文名称 + private String name_in_local_script; // 法定-姓名-中文 + private String first_name_in_local_script; // 名-中文 + private String last_name_in_local_script; // 姓-中文 + private String delete_flag; // 删除标记[1:存在;0:删除] + private String delete_time; // 删除时间 + private String delay_flag; // 延期标记(0:延期,1:未延期,2:未操作) + private String delay_time; // 延期时间 + private String employee_status; // 员工状态[Active,Terminated] + private String outsourcing_type; // 外包形式 + private String worker_type; // 员工种类 Employee,Contingent Worker + private String hire_date; // 员工入职日期 + private String original_hire_date; // 员工原始入职日期 + private String rehire; // 重新雇用[1:是;0:否] + private String seniority_date; // 工龄开始日期 + private String is_terminated; // 离职状态[1:是;0:否] + private String termination_date; // 离职日期 + private String termination_last_day_of_work; // 最后工作日期 + private String primary_termination_reason; // 主要离职原因 + private String hire_reason; // 雇佣原因 + private String user_type; // 用户类型 + private String probation_end_date; // 试用期结束时间 + private String option_user; // 最后操作人 + private String data_provider; // 第三方数据提供商 + private String extension_attribute1; // O365标签 + private String working_hour; // 工作制 + private String domain; // 账号所属域 + private String ad_failed; // 创建ad失败原账号 + private String have_employees; // 是否有下属员工 + private String id; // id + private Date creation_time; // 创建时间 + private Date update_time; // 修改时间 + +} diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPOrgPosEmployee.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPOrgPosEmployee.java new file mode 100644 index 000000000..05ec436d6 --- /dev/null +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPOrgPosEmployee.java @@ -0,0 +1,33 @@ +package com.jero.modules.system.entity; + +import lombok.Data; + +import java.util.Date; + +/** + * @Author: liyawei + * @Description: + * @Date: Created in 15:27 2022/3/1 + */ +@Data +public class PPOrgPosEmployee { + private String worker_user_id; //域账号 + private String biz_org_code; //组织编码 + private String biz_org_path; //组织路径 + private String biz_org_path_name; //组织路径名 + private String biz_org_path_type; //组织路径类型 + private String sub_biz_org_path; //子组织路径 + private String sub_biz_org_path_name; //子组织路径名 + private String sub_biz_org_path_type; //子组织路径类型 + private String position_code; //岗位ID + private String position_name; //岗位名称 + private String attribute_template; //岗位属性配置 + private String position_custom_type; //岗位自定义类型 + private String employee_id; //员工号 + private String biz_org_x_position_id; //组织-岗位ID + private String attribute; //岗位属性 + private String id; + private Date creation_time; + private Date update_time; + +} diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPOrganization.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPOrganization.java new file mode 100644 index 000000000..da7d46d4b --- /dev/null +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPOrganization.java @@ -0,0 +1,29 @@ +package com.jero.modules.system.entity; + +import lombok.Data; + +import java.util.List; + +/** + * @Author: liyawei + * @Description: + * @Date: Created in 16:05 2022/2/28 + */ +@Data +public class PPOrganization { + private String id; //组织id + private String code; //组织编码 + private String name; //组织名称 + private String parent_code; //节点上级编码 + private String parent_path; //节点所有上级编码,按/分割 + private String full_path; //根节点到当前节点全路径 + private String full_path_name; //根节点到当前节点名称全路径,按/分割 + private String is_tree_leaf; //是否叶子节点 + private String tree_level; //节点层级,根节点为0 + private String type; //节点种类Enum, ("GEOGRAPHY", "BUSINESS") + private String full_path_type; //跟节点到节点路径上所有节点的类型,按/分割 + private String app_id; //业务节点:业务系统的APP ID + private String api; //存储业务系统的API接口 + private List children; //叶子节点 + +} diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPOrganizationPosition.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPOrganizationPosition.java new file mode 100644 index 000000000..e6e39109b --- /dev/null +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPOrganizationPosition.java @@ -0,0 +1,25 @@ +package com.jero.modules.system.entity; + +import lombok.Data; + +/** + * @Author: liyawei + * @Description: + * @Date: Created in 14:13 2022/3/1 + */ +@Data +public class PPOrganizationPosition { + private String id; + private String biz_org_code; //组织编码 + private String biz_org_path; //组织全路径 + private String biz_org_path_name; //组织全路径 - 名字 + private String biz_org_path_type; //组织全路径 - 类型 + private String sub_biz_org_path; //子组织全路径 + private String sub_biz_org_path_name; //子组织全路径 - 名字 + private String sub_biz_org_path_type; //子组织全路径 - 类型 + private String biz_position_code; //岗位编码 + private String biz_position_name; //岗位名字 + private String attribute_template; //岗位属性配置 + private String position_custom_type; //岗位自定义类型 + +} diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPPosition.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPPosition.java new file mode 100644 index 000000000..2d7f3f048 --- /dev/null +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/PPPosition.java @@ -0,0 +1,24 @@ +package com.jero.modules.system.entity; + +import lombok.Data; + +import java.util.List; + +/** + * @Author: liyawei + * @Description: + * @Date: Created in 10:01 2022/3/1 + */ +@Data +public class PPPosition { + private String id; //岗位编号 + private String code; //岗位code + private String name; //岗位名称 + private String parent_code; //父级岗位code + private String parent_name; //父级岗位名称 + private String is_tree_leaf; //是否为叶子节点 + private String attribute_template; //JSON字符串,属性配置 + private String custom_type; //自定义类型 + private List children; + +} diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDepart.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDepart.java index 62cc6b752..21c627b1c 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDepart.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDepart.java @@ -53,6 +53,8 @@ public class SysDepart implements Serializable { /**机构编码*/ @Excel(name="机构编码",width=15) private String orgCode; + /**父级机构编码*/ + private String parentCode; /**手机号*/ @Excel(name="手机号",width=15) private String mobile; @@ -83,7 +85,6 @@ public class SysDepart implements Serializable { @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date updateTime; - /** * 重写equals方法 */ @@ -109,10 +110,11 @@ public class SysDepart implements Serializable { Objects.equals(orgCategory, depart.orgCategory) && Objects.equals(orgType, depart.orgType) && Objects.equals(orgCode, depart.orgCode) && - Objects.equals(mobile, depart.mobile) && - Objects.equals(fax, depart.fax) && - Objects.equals(address, depart.address) && - Objects.equals(memo, depart.memo) && + Objects.equals(parentCode, depart.parentCode) && + Objects.equals(mobile, depart.mobile) && + Objects.equals(fax, depart.fax) && + Objects.equals(address, depart.address) && + Objects.equals(memo, depart.memo) && Objects.equals(status, depart.status) && Objects.equals(delFlag, depart.delFlag) && Objects.equals(createBy, depart.createBy) && @@ -129,7 +131,7 @@ public class SysDepart implements Serializable { return Objects.hash(super.hashCode(), id, parentId, departName, departNameEn, departNameAbbr, departOrder, description,orgCategory, - orgType, orgCode, mobile, fax, address, memo, status, + orgType, orgCode, parentCode, mobile, fax, address, memo, status, delFlag, createBy, createTime, updateBy, updateTime); } } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDepartRole.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDepartRole.java index 51f23ae11..32cec0c84 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDepartRole.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDepartRole.java @@ -71,5 +71,9 @@ public class SysDepartRole { @ApiModelProperty(value = "更新时间") private java.util.Date updateTime; + @ApiModelProperty(value = "角色id") + private java.lang.String roleId; + + } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDepartRoleUser.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDepartRoleUser.java index 7a5b29856..8730bf4e4 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDepartRoleUser.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDepartRoleUser.java @@ -41,6 +41,11 @@ public class SysDepartRoleUser { @ApiModelProperty(value = "角色id") private java.lang.String droleId; + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建时间") + private java.util.Date createTime; + public SysDepartRoleUser() { } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysRole.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysRole.java index c5ea10293..86d2ae021 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysRole.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysRole.java @@ -78,5 +78,15 @@ public class SysRole implements Serializable { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date updateTime; + /** + * 父级岗位code + */ + private String parentCode; + + /** + * 父级岗位code + */ + private Integer roleOrder; + } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java index e818862a7..9151c3163 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java @@ -175,4 +175,6 @@ public class SysUser implements Serializable { /**设备id uniapp推送用*/ private String clientId; + + private String thirdId;//用户域账号 } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISyncDataService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISyncDataService.java new file mode 100644 index 000000000..93d7bac1e --- /dev/null +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISyncDataService.java @@ -0,0 +1,27 @@ +package com.jero.modules.system.service; + +import com.jero.modules.system.entity.PPOrganization; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; + +/** + * @Author: liyawei + * @Description: + * @Date: Created in 15:37 2022/2/28 + */ +public interface ISyncDataService { + void syncDepartInfo() throws IOException, NoSuchAlgorithmException, InvalidKeyException; + + int insertDepartFromTree(PPOrganization root, int i); + + void syncRoleInfo() throws IOException, NoSuchAlgorithmException, InvalidKeyException; + + void syncDepartRoleInfo() throws IOException, NoSuchAlgorithmException, InvalidKeyException; + + void syncDepartRoleUserInfo() throws IOException, NoSuchAlgorithmException, InvalidKeyException; + + String getResultDataOfGet(String uri, String queryString) throws IOException, NoSuchAlgorithmException, InvalidKeyException; +} diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDepartService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDepartService.java index c38b75a43..76931001e 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDepartService.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDepartService.java @@ -123,4 +123,11 @@ public interface ISysDepartService extends IService{ * @param departId 部门id */ List listSonDepartsByDepId(String departId); + + /** + * 根据编码查询 + * @param departCode + * @return + */ + List queryByDepartCode(String departCode); } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysRoleService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysRoleService.java index a2c02569b..ac9ffc8ae 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysRoleService.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysRoleService.java @@ -6,6 +6,8 @@ import com.jero.modules.system.entity.SysRole; import org.jeecgframework.poi.excel.entity.ImportParams; import org.springframework.web.multipart.MultipartFile; +import java.util.List; + /** *

* 角色表 服务类 @@ -40,4 +42,11 @@ public interface ISysRoleService extends IService { */ public boolean deleteBatchRole(String[] roleids); + /** + * 根据编码查询 + * @param roleCode + * @return + */ + List queryByRoleCode(String roleCode); + } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java index ed237bf84..907cf3f8d 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java @@ -233,4 +233,6 @@ public interface ISysUserService extends IService { * @return */ List queryByDepIds(List departIds, String username); + + List queryByWorkNo(String workNo); } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SyncDataServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SyncDataServiceImpl.java new file mode 100644 index 000000000..8ea12d3b8 --- /dev/null +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SyncDataServiceImpl.java @@ -0,0 +1,301 @@ +package com.jero.modules.system.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jero.common.constant.CommonConstant; +import com.jero.common.system.util.JwtUtil; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.PasswordUtil; +import com.jero.common.util.oConvertUtils; +import com.jero.modules.system.entity.*; +import com.jero.modules.system.service.*; +import com.jero.modules.system.util.HmacSignUtil; +import com.jero.modules.system.util.HttpRequestUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.io.PipedOutputStream; +import java.net.MalformedURLException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Author: liyawei + * @Description: + * @Date: Created in 15:39 2022/2/28 + */ +@Slf4j +@Service +public class SyncDataServiceImpl implements ISyncDataService{ + @Value("${people.appId}") + private String appId; + + @Value("${people.host}") + private String host; + + @Value("${people.secret}") + private String secret; + + @Autowired + private ISysUserService sysUserService; + @Autowired + private ISysDepartService sysDepartService; + @Autowired + private ISysRoleService sysRoleService; + @Autowired + private ISysDepartRoleService sysDepartRoleService; + @Autowired + private ISysDepartRoleUserService sysDepartRoleUserService; + + public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException { + + } + + + /** + * 同步组织信息 + * @throws IOException + * @throws NoSuchAlgorithmException + * @throws InvalidKeyException + */ + public void syncDepartInfo() throws IOException, NoSuchAlgorithmException, InvalidKeyException { + //查询所有组织列表,children为空 + String path = "/people/v1/organization/list"; + String queryStr = "app_id=100679&hash_type=sha256"; + String resultData = getResultDataOfGet(path, queryStr); + //JSON转实体类 + List organizationList = JSONArray.parseArray(resultData, PPOrganization.class); + log.info("需要同步的组织数据总数:" + organizationList.size()); + for(PPOrganization ppo : organizationList){ + //添加当前节点的组织数据 + SysDepart sysDepart = new SysDepart(); + sysDepart.setId(ppo.getId()); + sysDepart.setDepartName(ppo.getName()); + sysDepart.setOrgCategory(ppo.getType()); + sysDepart.setOrgType(ppo.getTree_level()); + sysDepart.setOrgCode(ppo.getCode()); + if(StringUtils.isNotBlank(ppo.getParent_path())) { + String parentCode = ppo.getParent_path().substring(ppo.getParent_path().lastIndexOf("/")+1); + sysDepart.setParentCode(parentCode); + }else{ + sysDepart.setParentCode(ppo.getParent_path()); + } + sysDepart.setDepartOrder(Integer.valueOf(ppo.getId())); + +// LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); +// sysDepart.setCreateBy(sysUser.getRealname()); + sysDepart.setCreateBy("admin"); + sysDepart.setCreateTime(new Date()); + sysDepart.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); + sysDepartService.save(sysDepart); +// int insertRowNum = insertDepartFromTree(ppo, 1); +// log.info(ppo.getName() + "添加成功条数:" + insertRowNum); + } + } + + /** + * 先序遍历树,将数据插入数据库 + * @param root + */ + public int insertDepartFromTree(PPOrganization root, int i) { + if(root == null) + return i; + //添加当前节点的组织数据 + SysDepart sysDepart = new SysDepart(); + sysDepart.setId(root.getId()); + sysDepart.setDepartName(root.getName()); + sysDepart.setOrgCategory(root.getType()); + sysDepart.setOrgType(root.getTree_level()); + sysDepart.setOrgCode(root.getCode()); + String parentCode = root.getParent_path().substring(root.getParent_path().lastIndexOf("/")); + sysDepart.setParentCode(parentCode); + sysDepart.setDepartOrder(i); + + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + sysDepart.setCreateBy(sysUser.getRealname()); + sysDepart.setCreateTime(new Date()); + sysDepart.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); + sysDepartService.save(sysDepart); + + for(PPOrganization child:root.getChildren()) + { + insertDepartFromTree(child, ++i); + } + + return i; + } + + /** + * 同步岗位信息 + * @throws IOException + * @throws NoSuchAlgorithmException + * @throws InvalidKeyException + */ + public void syncRoleInfo() throws IOException, NoSuchAlgorithmException, InvalidKeyException { + //同步所有角色 + //查询所有角色列表,非树状,children为空 + String path = "/people/v1/position/list"; + String queryStr = "app_id=100679&hash_type=sha256"; + String resultData = getResultDataOfGet(path, queryStr); + //JSON转实体类 + List positionList = JSONArray.parseArray(resultData, PPPosition.class); + List positionCodeList = positionList.stream().map(PPPosition :: getCode).collect(Collectors.toList()); + String positionDetailPath = "/people/v1/position/detail"; + String positionDetailQueryStr = "app_id=100679&hash_type=sha256&code="; + log.info("需要同步的岗位数据总数:" + positionList.size()); + for(String code : positionCodeList){ + String queryStrDetail = positionDetailQueryStr + code; + String result = getResultDataOfGet(positionDetailPath, queryStrDetail); + PPPosition position = JSONObject.parseObject(result, PPPosition.class); + SysRole sysRole = new SysRole(); + sysRole.setId(position.getId()); + sysRole.setRoleName(position.getName()); + sysRole.setRoleCode(position.getCode()); + sysRole.setParentCode(position.getParent_code()); + sysRole.setRoleOrder(Integer.valueOf(position.getId())); + +// LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); +// sysRole.setCreateBy(sysUser.getRealname()); + sysRole.setCreateBy("admin"); + sysRole.setCreateTime(new Date()); + sysRoleService.save(sysRole); + } + } + + /** + * 同步组织岗位关系 + * @throws IOException + * @throws NoSuchAlgorithmException + * @throws InvalidKeyException + */ + public void syncDepartRoleInfo() throws IOException, NoSuchAlgorithmException, InvalidKeyException { + String path = "/people/v1/organization-position/all"; + String queryStr = "app_id=100679&hash_type=sha256"; + String resultData = getResultDataOfGet(path, queryStr); + //JSON转实体类 + List organizationPositionList = JSONArray.parseArray(resultData, PPOrganizationPosition.class); + log.info("需要同步的组织岗位关系数据总数:" + organizationPositionList.size()); + for(PPOrganizationPosition op : organizationPositionList){ + SysDepartRole sysDepartRole = new SysDepartRole(); + List sysDepartList = sysDepartService.queryByDepartCode(op.getBiz_org_code()); + if(CollectionUtil.isNotEmpty(sysDepartList)){ + sysDepartRole.setDepartId(sysDepartList.get(0).getId()); + } + List sysRoleList = sysRoleService.queryByRoleCode(op.getBiz_position_code()); + if(CollectionUtil.isNotEmpty(sysRoleList)){ + sysDepartRole.setRoleId(sysRoleList.get(0).getId()); + } + + sysDepartRole.setId(op.getId()); + sysDepartRoleService.save(sysDepartRole); + } + } + + /** + * 同步人员信息及人员-组织岗位关系 + * @throws IOException + * @throws NoSuchAlgorithmException + * @throws InvalidKeyException + */ + public void syncDepartRoleUserInfo() throws IOException, NoSuchAlgorithmException, InvalidKeyException { + //查询所有人员组织岗位 + String path = "/people/v1/employee/organization-position/list"; + String queryStr = "app_id=100679&hash_type=sha256"; + String resultData = getResultDataOfGet(path, queryStr); + //JSON转实体类 + List orgPosEmployeeList = JSONArray.parseArray(resultData, PPOrgPosEmployee.class); + log.info("需要同步的组织岗位人员关系数据总数:" + orgPosEmployeeList.size()); + String employeeDetailPath = "/people/v1/employee/detail"; + String employeeDetailQueryStr = "app_id=100679&hash_type=sha256&employee_id="; + for(PPOrgPosEmployee ope : orgPosEmployeeList){ + //查询人员详情 + String queryStrDetail = employeeDetailQueryStr + ope.getEmployee_id(); + String result = getResultDataOfGet(employeeDetailPath, queryStrDetail); + //JSON转实体类 + PPEmployee employee = JSONObject.parseObject(result, PPEmployee.class); + //判断用户信息是否已添加,人员-组织岗位关系为多对多 + List sysUserList = sysUserService.queryByWorkNo(ope.getEmployee_id()); + if (CollectionUtil.isEmpty(sysUserList)) { + //添加用户信息 + SysUser sysUser = new SysUser(); + sysUser.setId(employee.getId()); + sysUser.setUsername(employee.getUser_name()); + sysUser.setRealname(employee.getName_in_local_script()); + String username = employee.getUser_name(); + String password = "nio.com123"; //设置默认密码 + //用户默认密码处理 + String salt = oConvertUtils.randomGen(8); + String passwordEncode = PasswordUtil.encrypt(username, password, salt); + sysUser.setPassword(passwordEncode); + sysUser.setSalt(salt); + + sysUser.setOrgCode(ope.getBiz_org_code()); + sysUser.setStatus("Active".equals(employee.getEmployee_status())? CommonConstant.USER_UNFREEZE : CommonConstant.USER_FREEZE); + sysUser.setDelFlag("1".equals(employee.getDelete_flag())? CommonConstant.DEL_FLAG_0 : CommonConstant.DEL_FLAG_1); + sysUser.setThirdId(employee.getWorker_user_id()); + sysUser.setActivitiSync(CommonConstant.ACT_SYNC_1); + sysUser.setWorkNo(employee.getEmployee_id()); + sysUser.setUpdateTime(employee.getUpdate_time()); + + sysUser.setCreateTime(new Date()); + sysUser.setCreateBy("admin"); + sysUser.setUpdateBy("admin"); + sysUserService.save(sysUser); + } + + + //添加组织岗位-人员关系 + SysDepartRoleUser sysDepartRoleUser = new SysDepartRoleUser(); + sysDepartRoleUser.setId(ope.getId()); + sysDepartRoleUser.setUserId(employee.getId()); + sysDepartRoleUser.setDroleId(ope.getBiz_org_x_position_id()); + sysDepartRoleUserService.save(sysDepartRoleUser); + } + } + + /** + * 发送请求,获取同步数据 + * @param uri + * @param queryString + * @return + * @throws IOException + * @throws NoSuchAlgorithmException + * @throws InvalidKeyException + */ + public String getResultDataOfGet(String uri, String queryString) throws IOException, NoSuchAlgorithmException, InvalidKeyException { + String appId = "100679"; +// String appSecret = "CDf2D9404C6ac1B0f7c3e3845ae0282a"; + String appSecret = "7C3F03170E3ea489df04Ce8DEC7Df4f7"; + // 获取签名 + String method ="GET"; + String path = uri; + String queryStr = queryString; + Map header = new HashMap<>(); + String timestamp = HmacSignUtil.getSecondTimestamp(new Date()); + queryStr += "×tamp=" + timestamp; + String sign = HmacSignUtil.getSign(appSecret,method,path,queryStr,header); +// String url = "http://napoleon-fab-test.nioint.com"; + String url = "http://napoleon.nioint.com"; + url += path + "?"; + url += queryStr; + url += "&sign=" + sign; + Map headerMap = new HashMap<>(); + String response = HttpRequestUtil.getResponseOfGET(url, headerMap); + JSONObject myJson = JSONObject.parseObject(response); + + log.debug(myJson.toJSONString()); + if(!myJson.get("result_code").toString().equals("success")) { + log.error("请求出现异常:" + myJson.get("result_code") + " " + myJson); + } + log.debug("打印输出本次同步信息返回结果:"+myJson.get("data").toString()); + return myJson.get("data").toString(); + } +} diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDepartServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDepartServiceImpl.java index be8394bee..095d35d12 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDepartServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDepartServiceImpl.java @@ -527,4 +527,11 @@ public class SysDepartServiceImpl extends ServiceImpl queryByDepartCode(String departCode) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysDepart::getOrgCode, departCode); + return this.list(queryWrapper); + } } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysRoleServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysRoleServiceImpl.java index a0fd63aa8..ccb18afaf 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysRoleServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysRoleServiceImpl.java @@ -1,7 +1,9 @@ package com.jero.modules.system.service.impl; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang.StringUtils; import org.apache.poi.ss.formula.functions.T; import com.jero.common.api.vo.Result; import com.jero.common.constant.CommonConstant; @@ -90,4 +92,11 @@ public class SysRoleServiceImpl extends ServiceImpl impl this.removeByIds(Arrays.asList(roleIds)); return true; } + + @Override + public List queryByRoleCode(String roleCode) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysRole::getRoleCode, roleCode); + return this.list(queryWrapper); + } } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java index 18c1da9bd..55d9a28fa 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java @@ -439,4 +439,11 @@ public class SysUserServiceImpl extends ServiceImpl impl return userMapper.queryByDepIds(departIds,username); } + @Override + public List queryByWorkNo(String workNo) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysUser::getWorkNo, workNo); + return this.list(queryWrapper); + } + } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/util/FindsDepartsChildrenUtil.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/util/FindsDepartsChildrenUtil.java index ce47aa0ab..ec0dff4ea 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/util/FindsDepartsChildrenUtil.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/util/FindsDepartsChildrenUtil.java @@ -158,6 +158,7 @@ public class FindsDepartsChildrenUtil { sysDepartTreeModel.setOrgCategory(sysDepart.getOrgCategory()); sysDepartTreeModel.setOrgType(sysDepart.getOrgType()); sysDepartTreeModel.setOrgCode(sysDepart.getOrgCode()); + sysDepartTreeModel.setOrgCode(sysDepart.getParentCode()); sysDepartTreeModel.setMobile(sysDepart.getMobile()); sysDepartTreeModel.setFax(sysDepart.getFax()); sysDepartTreeModel.setAddress(sysDepart.getAddress()); From 812046c56d803efb31b3c500bbb2ffc8115d6a4c Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Tue, 1 Mar 2022 18:56:06 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=BA=93--=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E4=B8=AD=E5=AF=B9=E5=BA=94=E6=A0=87=E5=87=86,?= =?UTF-8?q?=E4=BB=A3=E6=9B=BF=E6=A0=87=E5=87=86,=E8=A2=AB=E4=BB=A3?= =?UTF-8?q?=E6=9B=BF=E6=A0=87=E5=87=86=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BussDocumentLibraryEOServiceImpl.java | 85 +++++++++++++++---- 1 file changed, 70 insertions(+), 15 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java index fc4ad7d23..5200fe0eb 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java @@ -341,23 +341,68 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl> getInfoById(String id, String cut) { - //处理被代替标准 - //根据代替标准查询被代替标准集合 - List> replaceStandardList = bussDocumentLibraryEOMapper.getInfoListByReplaceStandard(id); - List replaceStandardNameList = new ArrayList<>(); - for (Map map : replaceStandardList) { - String serialNumber = (String) map.get("serial_number"); - replaceStandardNameList.add(serialNumber); - } - //区域管理 - List areaList = onlCgformAreaServiceImpl.queryList(new OnlCgformArea()); - //字段属性 - List fieldList = onlCgformFieldService.getFieldList("1"); - //通过id查询数据 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(BussDocumentLibraryEO::getId, id); List> dataList = bussDocumentLibraryEOMapper.selectMaps(queryWrapper); + //查询所有 + List> mapList = bussDocumentLibraryEOMapper.selectMaps(null); + + //原始对应标准,代替标准,被代替标准(原始数据存的是iD) + String correspondingStandardId = (String) dataList.get(0).get("corresponding_standard");//对应标准 + String replaceStandardId = (String) dataList.get(0).get("replace_standard");//代替标准 + //被代替标准 + List replacedStandardIdList = new ArrayList<>();//代替标准 + + //对应标准,代替标准,被代替标准对应的编码 + List correspondingStandardNameList = new ArrayList<>();//对应标准编码 + List replaceStandardNameList = new ArrayList<>();//代替标准编码 + List replacedStandardNameList = new ArrayList<>();//被代替标准编码 + + List> listCorrespondingStandard = new ArrayList<>(); + List> listReplaceStandard = new ArrayList<>(); + List> listReplacedStandard = new ArrayList<>(); + + + //处理被代替标准和对应标准 + for (Map map : mapList) { + Map mapTemp = new HashMap<>(); + //对应标准处理 + if (StringUtils.isNotBlank(correspondingStandardId) && correspondingStandardId.contains((String) map.get("id"))) { + correspondingStandardNameList.add((String) map.get("serial_number")); + mapTemp.put("title",(String) map.get("serial_number")); + mapTemp.put("id",(String) map.get("id")); + if(ObjectUtils.isNotEmpty(mapTemp)){ + listCorrespondingStandard.add(mapTemp); + } + } + //代替标准 + if(StringUtils.isNotBlank(replaceStandardId) && replaceStandardId.contains((String) map.get("id"))){ + replaceStandardNameList.add((String) map.get("serial_number")); + mapTemp.put("title",(String) map.get("serial_number")); + mapTemp.put("id",(String) map.get("id")); + if(ObjectUtils.isNotEmpty(mapTemp)){ + listReplaceStandard.add(mapTemp); + } + } + //被代替标准 + String replaceStandard = (String) map.get("replace_standard"); + if (StringUtils.isNotBlank(replaceStandard) && replaceStandard.contains(id)) { + replacedStandardIdList.add((String) map.get("id")); + String serialNumber = (String) map.get("serial_number"); + replacedStandardNameList.add(serialNumber); + mapTemp.put("title",(String) map.get("serial_number")); + mapTemp.put("id",(String) map.get("id")); + if(ObjectUtils.isNotEmpty(mapTemp)){ + listReplacedStandard.add(mapTemp); + } + } + } + + //区域管理 + List areaList = onlCgformAreaServiceImpl.queryList(new OnlCgformArea()); + //字段属性 + List fieldList = onlCgformFieldService.getFieldList("1"); //过滤出下拉选 List onlCgformFieldList = fieldList.stream() @@ -428,9 +473,19 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl { if (onlCgformField.getDbFieldName().equals(entry.getKey())) { - if (onlCgformField.getDbFieldName().equals("replaced_standard")) { + if (onlCgformField.getDbFieldName().equals("replace_standard")) { + //代替标准 map.put("value", StringUtils.join(replaceStandardNameList, ",")); - } else { + map.put("list",listReplaceStandard); + } else if(onlCgformField.getDbFieldName().equals("replaced_standard")){ + //被代替标准 + map.put("value", StringUtils.join(replacedStandardNameList, ",")); + map.put("list",listReplacedStandard); + }else if(onlCgformField.getDbFieldName().equals("corresponding_standard")){ + //对应标准 + map.put("value", StringUtils.join(correspondingStandardNameList, ",")); + map.put("list",listCorrespondingStandard); + }else { map.put("value", entry.getValue()); } } From 66cece36c5f3599d11d0e2ea6fae373cdb4878a8 Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Tue, 1 Mar 2022 19:10:43 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=BA=93--=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E4=B8=AD=E8=8B=B1=E6=96=87=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BussDocumentLibraryEOServiceImpl.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java index 5200fe0eb..7f427e884 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java @@ -429,6 +429,12 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl> result = new ArrayList<>(); for (OnlCgformArea onlCgformAreaTemp : areaList) { + String areaName = ""; + if (CutEnum.CN.getValue().equals(cut)) { + areaName = onlCgformAreaTemp.getShowArea(); + } else { + areaName = onlCgformAreaTemp.getEnName(); + } Map mapTemp = new HashMap<>(); List> resultTemp = new ArrayList<>(); List fieldListTemp = fieldList.stream().filter(e -> onlCgformAreaTemp.getId().equals(e.getShowArea())).collect(Collectors.toList()); @@ -457,14 +463,14 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl mapNew = new HashMap<>(); mapNew.put("value", fileInfo); - mapPut(cut, mapNew, "field_show_type", onlCgformField.getFieldShowType(), "dict_field", onlCgformField.getDictField(), "db_field_name", onlCgformField.getDbFieldName(), "db_field_txt", onlCgformField.getDbFieldTxt(), "db_field_en_name", onlCgformField.getDbFieldEnName(), "area", onlCgformAreaTemp.getShowArea()); + mapPut(cut, mapNew, "field_show_type", onlCgformField.getFieldShowType(), "dict_field", onlCgformField.getDictField(), "db_field_name", onlCgformField.getDbFieldName(), "db_field_txt", onlCgformField.getDbFieldTxt(), "db_field_en_name", onlCgformField.getDbFieldEnName(), "area", areaName); resultTemp.add(mapNew); } } } else if (fileInfos.size() == 1) { //单个文件处理 map.put("value", fileInfos.get(0)); - mapPut(cut, map, "field_show_type", onlCgformField.getFieldShowType(), "dict_field", onlCgformField.getDictField(), "db_field_name", onlCgformField.getDbFieldName(), "db_field_txt", onlCgformField.getDbFieldTxt(), "db_field_en_name", onlCgformField.getDbFieldEnName(), "area", onlCgformAreaTemp.getShowArea()); + mapPut(cut, map, "field_show_type", onlCgformField.getFieldShowType(), "dict_field", onlCgformField.getDictField(), "db_field_name", onlCgformField.getDbFieldName(), "db_field_txt", onlCgformField.getDbFieldTxt(), "db_field_en_name", onlCgformField.getDbFieldEnName(), "area", areaName); resultTemp.add(map); } } @@ -491,13 +497,19 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl Date: Tue, 1 Mar 2022 19:11:09 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=A0=87=E7=AD=BE=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jero-boot/jero-boot-module-system/pom.xml | 8 ++- .../system/controller/SysDictController.java | 49 ++++++++++++-- .../controller/SysDictItemController.java | 30 +++++++++ .../jero/modules/system/entity/SysDict.java | 3 +- .../modules/system/entity/SysDictItem.java | 10 ++- .../system/service/ISysDictService.java | 3 + .../service/impl/SysDictItemServiceImpl.java | 2 +- .../service/impl/SysDictServiceImpl.java | 66 ++++++++++++++++++- jero-boot/jero-boot-modules/pom.xml | 5 ++ 9 files changed, 163 insertions(+), 13 deletions(-) diff --git a/jero-boot/jero-boot-module-system/pom.xml b/jero-boot/jero-boot-module-system/pom.xml index c00599e8f..902831bae 100644 --- a/jero-boot/jero-boot-module-system/pom.xml +++ b/jero-boot/jero-boot-module-system/pom.xml @@ -50,7 +50,13 @@ - + + com.belerweb + pinyin4j + 2.5.1 + compile + + \ No newline at end of file diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java index 585aa4081..6d06a5737 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java @@ -344,12 +344,17 @@ public class SysDictController { Result result = new Result(); try { if(StringUtils.isEmpty(sysDict.getDictName())){ - sysDict.setDictCode(sysDict.getDictName()); - }else { - sysDict.setCreateTime(new Date()); - sysDict.setDelFlag(CommonConstant.DEL_FLAG_0); + String pinYin = sysDictService.getAllPinyin(sysDict.getDictName()); + sysDict.setDictCode(pinYin); - sysDictService.save(sysDict); + }else { + Integer count = sysDictService.queryExitData(sysDict); + if (count > 0) { + sysDict.setDelFlag(CommonConstant.DEL_FLAG_0); + } else { + sysDict.setCreateTime(new Date()); + sysDictService.save(sysDict); + } result.success("保存成功!"); //添加成功后需要刷新缓存 sysDictService.refreshCache(); @@ -362,6 +367,7 @@ public class SysDictController { return result; } + /** * @功能:编辑 * @param sysDict @@ -377,7 +383,7 @@ public class SysDictController { result.error500("未找到对应实体"); }else { if (org.apache.commons.lang3.StringUtils.isNotBlank(String.valueOf(sysDict.getIsReadOnly()))) { - if (sysDict.getIsReadOnly() == 1) { + if (FixedFieldEnum.FIXED_FIELD_ENUM.getValue().equals(sysDict.getIsReadOnly())) { result.error500("固定字段,不可删除"); }else{ sysDict.setUpdateTime(new Date()); @@ -420,6 +426,37 @@ public class SysDictController { } return result; } + + /** + * @功能:删除 + * @param id + * @return + */ + @ApiOperation(value = "字典控制器-逻辑删除字典", notes = "字典控制器-逻辑删除字典") + @RequiresRoles({"admin"}) + @DeleteMapping(value = "/logicDelete") + @CacheEvict(value=CacheConstant.SYS_DICT_CACHE, allEntries=true) + public Result logicDelete(@RequestParam(name="id",required=true) String id) { + + Result result = new Result(); + try{ + SysDict sysDict = sysDictService.queryById(id); + if (StringUtils.isNotBlank(String.valueOf(sysDict.getIsReadOnly()))) { + if (FixedFieldEnum.FIXED_FIELD_ENUM.getValue().equals(sysDict.getIsReadOnly())) { + result.error500("固定字段,不可删除"); + } else { + sysDict.setDelFlag(CommonConstant.DEL_FLAG_1); + result.success("删除成功!"); + //添加成功后需要刷新缓存 + sysDictService.refreshCache(); + } + } + }catch (Exception e) { + log.error(e.getMessage(),e); + result.error500("删除失败"); + } + return result; + } /** * @功能:批量删除 * @param ids diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java index 127cd74a8..97f0c4fb7 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictItemController.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.api.vo.Result; import com.jero.common.constant.CacheConstant; +import com.jero.common.constant.CommonConstant; import com.jero.common.system.query.QueryGenerator; import com.jero.modules.enums.FixedFieldEnum; import com.jero.modules.system.entity.SysDictItem; @@ -73,6 +74,7 @@ public class SysDictItemController { Result result = new Result(); try { sysDictItem.setCreateTime(new Date()); + sysDictItem.setDelFlag(CommonConstant.DEL_FLAG_0); sysDictItemService.save(sysDictItem); result.success("保存成功!"); } catch (Exception e) { @@ -143,6 +145,34 @@ public class SysDictItemController { return result; } + /** + * @功能:逻辑删除字典数据 + * @param id + * @return + */ + //@RequiresRoles({"admin"}) + @RequiresPermissions("sys:dict:list") + @RequestMapping(value = "/logicDelete", method = RequestMethod.DELETE) + @CacheEvict(value=CacheConstant.SYS_DICT_CACHE, allEntries=true) + public Result logicDelete(@RequestParam(name="id",required=true) String id) { + Result result = new Result(); + SysDictItem joinSystem = sysDictItemService.getById(id); + if (joinSystem == null) { + result.error500("未找到对应实体"); + }else { + if (org.apache.commons.lang3.StringUtils.isNotBlank(String.valueOf(joinSystem.getIsReadOnly()))) { + if (FixedFieldEnum.FIXED_FIELD_ENUM.getValue().equals(joinSystem.getIsReadOnly())) { + result.error500("固定字段,不可删除"); + } + else { + joinSystem.setDelFlag(CommonConstant.DEL_FLAG_1); + result.success("删除成功!"); + } + } + } + return result; + } + /** * @功能:批量删除字典数据 * @param ids diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java index d1d3dfa8a..b89bac4fb 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java @@ -91,8 +91,9 @@ public class SysDict implements Serializable { /** * 是否为标签内容-数据字典(1是 0否) */ - @Excel(name = "是否为标签内容-数据字典(1是 0否)", width = 15, dictTable = "onl_cgform_field",dicText = "is_tag_dict", dicCode = "is_tag_dict") + @Excel(name = "是否为标签内容-数据字典(1是 0否)", width = 15, dicText = "is_tag_dict", dicCode = "is_tag_dict") @Dict(dictTable = "onl_cgform_field", dicText = "is_tag_dict", dicCode = "is_tag_dict") + @ApiModelProperty(value = "是否为标签内容-数据字典(1是 0否)") private java.lang.Integer isTagDict; /** diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java index 8e568e8bc..77d098f5e 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java @@ -3,6 +3,7 @@ package com.jero.modules.system.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.jero.common.aspect.annotation.Dict; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -47,7 +48,7 @@ public class SysDictItem implements Serializable { private String itemText; /** - * 字典项值 + * 字典项值-英文名 */ @Excel(name = "字典项值", width = 30) private String itemValue; @@ -82,7 +83,9 @@ public class SysDictItem implements Serializable { private Date updateTime; /**是否为标签内容-数据字典(1是 0否)*/ - @Excel(name = "是否为标签内容", width = 15) + @Excel(name = "是否为标签内容-数据字典(1是 0否)", width = 15, dicText = "is_tag_dict", dicCode = "is_tag_dict") + @Dict(dictTable = "onl_cgform_field", dicText = "is_tag_dict", dicCode = "is_tag_dict") + @ApiModelProperty(value = "是否为标签内容-数据字典(1是 0否)") private java.lang.Integer isTagDict; /**是否是只读(2字段固定,内部可配1固定字段 0非固定字段)*/ @@ -97,4 +100,7 @@ public class SysDictItem implements Serializable { @Dict(dicCode = "attribute_type") private java.lang.String attributeType; + /**逻辑删除标识*/ + @TableLogic + public Integer delFlag; } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictService.java index 8735f66d0..dfef477b9 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictService.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictService.java @@ -157,4 +157,7 @@ public interface ISysDictService extends IService { * @return */ Integer queryExitData(SysDict sysDict); + + + String getAllPinyin(String dictName); } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java index b1e9a426f..3597c2798 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java @@ -1,9 +1,9 @@ package com.jero.modules.system.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.mapper.SysDictItemMapper; import com.jero.modules.system.service.ISysDictItemService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java index 47c5339a5..59cd37496 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.extern.slf4j.Slf4j; import com.jero.common.constant.CacheConstant; import com.jero.common.constant.CommonConstant; import com.jero.common.system.vo.DictModel; @@ -17,6 +16,13 @@ import com.jero.modules.system.mapper.SysDictItemMapper; import com.jero.modules.system.mapper.SysDictMapper; import com.jero.modules.system.model.TreeSelectModel; import com.jero.modules.system.service.ISysDictService; +import lombok.extern.slf4j.Slf4j; +import net.sourceforge.pinyin4j.PinyinHelper; +import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; +import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; @@ -341,10 +347,66 @@ public class SysDictServiceImpl extends ServiceImpl impl @Override public Integer queryExitData(SysDict sysDict) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (StringUtils.isNotBlank(sysDict.getDictName())) {// && StringUtils.isNotBlank(onlCgformTag.getDbFieldName())) { + if (StringUtils.isNotBlank(sysDict.getDictName())) { queryWrapper.eq(SysDict::getDictName, sysDict.getDictName()).and(wq -> wq.eq(SysDict::getAttributeType, sysDict.getAttributeType())); } Integer count = sysDictMapper.selectCount(queryWrapper); return count; } + + /** + * 将Code值设为字典名称的中文拼音 + */ + public String getAllPinyin(String hanzi) { + //输出格式设置 + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + /** + * 输出大小写设置 + * + * LOWERCASE:输出小写 + * UPPERCASE:输出大写 + */ + format.setCaseType(HanyuPinyinCaseType.LOWERCASE); + + /** + * 输出音标设置 + * + * WITH_TONE_MARK:直接用音标符(必须设置WITH_U_UNICODE,否则会抛出异常) + * WITH_TONE_NUMBER:1-4数字表示音标 + * WITHOUT_TONE:没有音标 + */ + format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK); + + /** + * 特殊音标ü设置 + * + * WITH_V:用v表示ü + * WITH_U_AND_COLON:用"u:"表示ü + * WITH_U_UNICODE:直接用ü + */ + format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); + + char[] hanYuArr = hanzi.trim().toCharArray(); + StringBuilder pinYin = new StringBuilder(); + + try { + for (int i = 0, len = hanYuArr.length; i < len; i++) { + //匹配是否是汉字 + if (Character.toString(hanYuArr[i]).matches("[\\u4E00-\\u9FA5]+")) { + //如果是多音字,返回多个拼音,这里只取第一个 + String[] pys = PinyinHelper.toHanyuPinyinStringArray(hanYuArr[i], format); + pinYin.append(pys[0]).append(" "); + } else { + pinYin.append(hanYuArr[i]).append(" "); + } + } + } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) { + badHanyuPinyinOutputFormatCombination.printStackTrace(); + } + return pinYin.toString(); + } + + + + } diff --git a/jero-boot/jero-boot-modules/pom.xml b/jero-boot/jero-boot-modules/pom.xml index 531616feb..df7d93333 100644 --- a/jero-boot/jero-boot-modules/pom.xml +++ b/jero-boot/jero-boot-modules/pom.xml @@ -107,6 +107,11 @@ org.springframework.cloud spring-cloud-starter-openfeign + + com.belerweb + pinyin4j + 2.5.1 + From 4f37cb7ae2023c3dc8b8ee2a49a1023351a51e11 Mon Sep 17 00:00:00 2001 From: xiejunyu Date: Tue, 1 Mar 2022 19:17:23 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E6=A0=87=E7=AD=BE=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/jero/modules/system/entity/SysDict.java | 4 ++-- .../main/java/com/jero/modules/system/entity/SysDictItem.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java index b89bac4fb..3cba02a4a 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDict.java @@ -91,8 +91,8 @@ public class SysDict implements Serializable { /** * 是否为标签内容-数据字典(1是 0否) */ - @Excel(name = "是否为标签内容-数据字典(1是 0否)", width = 15, dicText = "is_tag_dict", dicCode = "is_tag_dict") - @Dict(dictTable = "onl_cgform_field", dicText = "is_tag_dict", dicCode = "is_tag_dict") + @Excel(name = "是否为标签内容-数据字典(1是 0否)", width = 15)/*, dicText = "is_tag_dict", dicCode = "is_tag_dict") + @Dict(dictTable = "onl_cgform_field", dicText = "is_tag_dict", dicCode = "is_tag_dict")*/ @ApiModelProperty(value = "是否为标签内容-数据字典(1是 0否)") private java.lang.Integer isTagDict; diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java index 77d098f5e..4a23509f1 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java @@ -83,8 +83,8 @@ public class SysDictItem implements Serializable { private Date updateTime; /**是否为标签内容-数据字典(1是 0否)*/ - @Excel(name = "是否为标签内容-数据字典(1是 0否)", width = 15, dicText = "is_tag_dict", dicCode = "is_tag_dict") - @Dict(dictTable = "onl_cgform_field", dicText = "is_tag_dict", dicCode = "is_tag_dict") + @Excel(name = "是否为标签内容-数据字典(1是 0否)", width = 15)/*, dicText = "is_tag_dict", dicCode = "is_tag_dict") + @Dict(dictTable = "onl_cgform_field", dicText = "is_tag_dict", dicCode = "is_tag_dict")*/ @ApiModelProperty(value = "是否为标签内容-数据字典(1是 0否)") private java.lang.Integer isTagDict; From aed3b9583b9e2f29d865705fa717324e7a7cdf0c Mon Sep 17 00:00:00 2001 From: xiejunyu Date: Tue, 1 Mar 2022 20:10:49 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E6=A0=87=E7=AD=BE=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jero/modules/system/entity/SysDictItem.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java index 4a23509f1..0e799ec2e 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysDictItem.java @@ -103,4 +103,12 @@ public class SysDictItem implements Serializable { /**逻辑删除标识*/ @TableLogic public Integer delFlag; + + /** + * 字典英文名称 + */ + @Excel(name = "字典英文名称", width = 15) + @ApiModelProperty(value = "字典英文名称") + private String enName; + } From cafaa48f09ae31316c0963b56856e96d1e513ffb Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Tue, 1 Mar 2022 20:39:12 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=BA=93--=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E5=8A=A0=E5=9C=A8=E6=95=B0=E6=8D=AE=E5=AD=97=E5=85=B8?= =?UTF-8?q?(=E6=B7=BB=E5=8A=A0=E8=8B=B1=E6=96=87)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/jero/common/system/vo/DictModel.java | 9 +++++++-- .../modules/system/service/impl/SysDictServiceImpl.java | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/vo/DictModel.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/vo/DictModel.java index dfd5dfa65..f73530275 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/vo/DictModel.java +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/vo/DictModel.java @@ -17,12 +17,12 @@ public class DictModel implements Serializable{ public DictModel() { } - + public DictModel(String value, String text) { this.value = value; this.text = text; } - + /** * 字典value */ @@ -32,6 +32,11 @@ public class DictModel implements Serializable{ */ private String text; + /** + * 字典文本 + */ + private String textEn; + /** * 特殊用途: JgEditableTable * @return diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java index 59cd37496..8f200416b 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictServiceImpl.java @@ -78,6 +78,7 @@ public class SysDictServiceImpl extends ServiceImpl impl List dictModelList = sysDictItemList.stream().filter(s -> d.getId().equals(s.getDictId())).map(item -> { DictModel dictModel = new DictModel(); dictModel.setText(item.getItemText()); + dictModel.setTextEn(item.getEnName()); dictModel.setValue(item.getItemValue()); return dictModel; }).collect(Collectors.toList());