瀏覽代碼

feat: 初始化控制器

shc 3 年之前
父節點
當前提交
54df6e8aca

+ 131 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/InitController.java

@@ -0,0 +1,131 @@
+package com.qunzhixinxi.hnqz.admin.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
+import com.qunzhixinxi.hnqz.admin.entity.SysDeptSub;
+import com.qunzhixinxi.hnqz.admin.entity.SysUserSub;
+import com.qunzhixinxi.hnqz.admin.enums.GigChannelEnum;
+import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
+import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
+import com.qunzhixinxi.hnqz.admin.service.SysDeptSubService;
+import com.qunzhixinxi.hnqz.admin.service.SysUserService;
+import com.qunzhixinxi.hnqz.admin.service.SysUserSubService;
+import com.qunzhixinxi.hnqz.common.core.util.R;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.MediaType;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 初始化控制器
+ *
+ * @author jimmy
+ * @date 2022/05/07 12:59
+ */
+@Slf4j
+@RequestMapping(value = "/init", produces = MediaType.APPLICATION_JSON_VALUE)
+public class InitController {
+
+	private SysDeptService deptService;
+	private SysDeptSubService deptSubService;
+	private SysUserService userService;
+	private SysUserSubService userSubService;
+
+	@PostMapping(value = "/user-sub")
+	@Transactional(rollbackFor = Exception.class)
+	public R<Boolean> doUserSubInit() {
+
+		// 获取企业的结算通道
+		List<SysDeptSub> deptSubList = deptSubService.list(Wrappers.<SysDeptSub>lambdaQuery().eq(SysDeptSub::getEnableFlag, "1"));
+
+		// 按照企业id分组
+		Map<Integer, List<SysDeptSub>> deptSubMap = deptSubList.stream().collect(Collectors.groupingBy(SysDeptSub::getDeptId));
+
+		// 获取所有可用的用户
+		List<SysUser> userList = userService.list(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getDelFlag, "0").eq(SysUser::getLockFlag, "0"));
+
+		// 按照企业分组
+		Map<Integer, List<SysUser>> deptUserMap = userList.stream().collect(Collectors.groupingBy(SysUser::getDeptId));
+
+		List<SysUserSub> initUserSubList = new ArrayList<>();
+
+		// 封装初始化数据
+		for (Map.Entry<Integer, List<SysDeptSub>> entry : deptSubMap.entrySet()) {
+			// 获取部门id
+			int deptId = entry.getKey();
+			// 获取企业结算
+			List<SysDeptSub> deptSubs = entry.getValue();
+			// 无结算渠道自动跳过
+			if (CollUtil.isEmpty(deptSubs)) {
+				continue;
+			}
+			// 获取企业的员工
+			List<SysUser> deptUsers = deptUserMap.get(deptId);
+
+			// 无结算员工自动跳过
+			if (CollUtil.isEmpty(deptUsers)) {
+				continue;
+			}
+
+			// 封装初始化数据
+			deptSubs.stream()
+					// 过滤出税邦云和人力家结算渠道
+					.filter(deptSub -> "0".equals(deptSub.getSubjectType()) || "1".equals(deptSub.getSubjectType()))
+					.forEach(deptSub -> {
+
+						int subjectType = Integer.parseInt(deptSub.getSubjectType());
+
+						GigTypeEnum gigTypeEnum = GigTypeEnum.resolve(subjectType);
+
+						Integer subjectChannel = deptSub.getSubjectChannel();
+						GigChannelEnum gigChannelEnum = GigChannelEnum.resolve(subjectChannel);
+
+						if (gigChannelEnum == null) {
+							log.warn("结算通道不存在");
+							return;
+						}
+
+						List<SysUserSub> userSubs = deptUsers.stream()
+								// 过滤出没有状态的
+								.filter(sysUser -> {
+									if (GigTypeEnum.REN_LI_JIA.equals(gigTypeEnum)) {
+										return sysUser.getRljCertStatus() != null;
+									} else {
+										return sysUser.getCertStatus() != null;
+									}
+								}).map(sysUser -> {
+									SysUserSub userSub = new SysUserSub();
+									userSub.setUserId(sysUser.getUserId());
+									userSub.setDeptId(sysUser.getDeptId());
+									userSub.setBankCardNumber(sysUser.getBankCardNumber());
+									userSub.setCertStatus(GigTypeEnum.REN_LI_JIA.equals(gigTypeEnum) ? sysUser.getCertStatus() : sysUser.getRljCertStatus());
+									userSub.setGigType(gigTypeEnum);
+									userSub.setGigChannel(gigChannelEnum);
+									return userSub;
+
+								}).collect(Collectors.toList());
+
+						initUserSubList.addAll(userSubs);
+
+
+					});
+		}
+
+
+		// 初始化user_sub
+
+		userSubService.saveBatch(initUserSubList);
+
+
+		return R.ok(Boolean.TRUE);
+	}
+
+
+}

+ 9 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/GigTypeEnum.java

@@ -25,4 +25,13 @@ public enum GigTypeEnum {
 	private int code;
 
 	private String desc;
+
+	public static GigTypeEnum resolve(int code) {
+		for (GigTypeEnum gigTypeEnum : GigTypeEnum.values()) {
+			if (code == gigTypeEnum.getCode()) {
+				return gigTypeEnum;
+			}
+		}
+		return null;
+	}
 }