Преглед изворни кода

feat: 自由职家下调整为两个通道海南飞亿和金园数科

lixuesong пре 3 година
родитељ
комит
25bf932e6d

+ 6 - 1
db/v2.0/220617.sql

@@ -1,3 +1,8 @@
 -- 记录阿拉丁认证失败原因
 alter table sys_user_sub
-    add fail_reason varchar(255) null comment '认证失败原因' after cert_remark;
+    add fail_reason varchar(255) null comment '认证失败原因' after cert_remark;
+
+-- deptSub修改联合索引
+drop index dept_sub_type on sys_dept_sub;
+create unique index dept_sub_type
+    on sys_dept_sub (dept_id, subject_type, subject_channel);

+ 2 - 1
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/vo/UserVO.java

@@ -31,6 +31,7 @@ import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * @author hnqz
@@ -253,7 +254,7 @@ public class UserVO implements Serializable {
 	 * 结算主体和通道
 	 */
 	@ApiModelProperty(value="结算主体类型")
-	private Map<String, Integer> subjectTypeAndChannel;
+	private Map<String, List<Integer>> subjectTypeAndChannel;
 
 	/**
 	 * 不同渠道的认证状态

+ 3 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -749,9 +749,10 @@ public class ApiController {
 
 				// 结算通道
 
-				Map<String, Integer> collect = sysDeptSubService.list(Wrappers.<SysDeptSub>lambdaQuery().eq(SysDeptSub::getDeptId, sysU.getDeptId()))
+				Map<String, List<Integer>> collect = sysDeptSubService.list(Wrappers.<SysDeptSub>lambdaQuery().eq(SysDeptSub::getDeptId, sysU.getDeptId()))
 						.stream()
-						.collect(Collectors.toMap(SysDeptSub::getSubjectType, SysDeptSub::getSubjectChannel));
+						.collect(Collectors.groupingBy(SysDeptSub::getSubjectType,
+								Collectors.mapping(SysDeptSub::getSubjectChannel, Collectors.toList())));
 				mapOne.put("subjectTypeAndChannel", collect);
 
 				// 认证服务信息回显

+ 3 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysUserController.java

@@ -1443,9 +1443,10 @@ public class SysUserController {
 		Set<Integer> deptIds = userVosPage.getRecords().stream().map(UserVO::getDeptId).collect(Collectors.toSet());
 
 		if (CollUtil.isNotEmpty(deptIds)) {
-			Map<Integer, Map<String, Integer>> coll = sysDeptSubService.list(Wrappers.<SysDeptSub>lambdaQuery().in(SysDeptSub::getDeptId, deptIds))
+			Map<Integer, Map<String, List<Integer>>> coll = sysDeptSubService.list(Wrappers.<SysDeptSub>lambdaQuery().in(SysDeptSub::getDeptId, deptIds))
 					.stream()
-					.collect(Collectors.groupingBy(SysDeptSub::getDeptId, Collectors.toMap(SysDeptSub::getSubjectType, SysDeptSub::getSubjectChannel)));
+					.collect(Collectors.groupingBy(SysDeptSub::getDeptId,
+							Collectors.groupingBy(SysDeptSub::getSubjectType, Collectors.mapping(SysDeptSub::getSubjectChannel, Collectors.toList()))));
 
 			userVosPage.getRecords().forEach(item -> {
 				if ("0".equals(userDTO.getSubType())) {

+ 2 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmDaAgent.java

@@ -27,6 +27,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.time.LocalDateTime;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -181,7 +182,7 @@ public class WmDaAgent extends Model<WmDaAgent> {
 
 	@ApiModelProperty(value="结算主体类型和通道")
 	@TableField(exist = false)
-	private Map<String, Integer> subjectTypeAndChannel;
+	private Map<String, List<Integer>> subjectTypeAndChannel;
 
 	/**
 	 * 部门专用权限限制(0.导出)

+ 2 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmDaDrugEnt.java

@@ -27,6 +27,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.time.LocalDateTime;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -139,7 +140,7 @@ public class WmDaDrugEnt extends Model<WmDaDrugEnt> {
 	 */
 	@ApiModelProperty(value="结算主体类型")
 	@TableField(exist = false)
-	private Map<String, Integer> subjectTypeAndChannel;
+	private Map<String, List<Integer>> subjectTypeAndChannel;
 
 	/**
 	 * 部门专用权限限制(0.导出)

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/GigChannelEnum.java

@@ -18,7 +18,7 @@ public enum GigChannelEnum {
 	DEFAULT(0, "默认渠道"),
 	CICC(1, "中金"),
 	PINGAN(2, "平安银行"),
-	JIN_YUAN(31, "金园数科");
+	JIN_YUAN(21, "金园数科");
 
 	@EnumValue
 	private int code;

+ 61 - 62
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/impl/SysUserSignCertServiceImpl.java

@@ -180,8 +180,8 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		}
 		// 更新用户签约认证主体信息
 		userSignCertDTO.getGigTypeList().forEach(gigType -> {
-			// 税邦云单独设置渠道类型
-			GigChannelEnum gigChannel;
+			// 获取渠道下的 通道类型 放入gigChannelList
+			List<GigChannelEnum> gigChannelList = new ArrayList<>();
 			if (GigTypeEnum.TAX_HELPOR.equals(gigType)) {
 				// 读取用户所认证的企业的结算渠道
 				SysDeptSub deptSub = sysDeptSubService.getOne(Wrappers.<SysDeptSub>lambdaQuery()
@@ -189,49 +189,57 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 						.eq(SysDeptSub::getSubjectType, GigTypeEnum.TAX_HELPOR.getCode())
 						.eq(SysDeptSub::getEnableFlag, SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode()));
 				if (deptSub != null) {
-					gigChannel = GigChannelEnum.resolve(Integer.parseInt(deptSub.getSubjectType()));
+					gigChannelList.add(GigChannelEnum.resolve(deptSub.getSubjectChannel()));
 				} else {
-					gigChannel = GigChannelEnum.DEFAULT;
+					gigChannelList.add(GigChannelEnum.DEFAULT);
 				}
-			} else if (GigTypeEnum.YEE.equals(gigType)) {
-				// 读取用户所认证的企业的结算渠道
-				SysDeptSub deptSub = sysDeptSubService.getOne(Wrappers.<SysDeptSub>lambdaQuery()
+			} else if (GigTypeEnum.OLADING.equals(gigType)) {
+				// 读取用户所认证的企业的结算渠道(税源地)
+				List<SysDeptSub> deptSubList = sysDeptSubService.list(Wrappers.<SysDeptSub>lambdaQuery()
 						.eq(SysDeptSub::getDeptId, queryUser.getDeptId())
-						.eq(SysDeptSub::getSubjectType, GigTypeEnum.TAX_HELPOR.getCode())
+						.eq(SysDeptSub::getSubjectType, GigTypeEnum.OLADING.getCode())
 						.eq(SysDeptSub::getEnableFlag, SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode()));
-				if (deptSub != null && "1".equals(deptSub.getSubjectType())) {
-					gigChannel = GigChannelEnum.JIN_YUAN;
+				if (CollUtil.isNotEmpty(deptSubList)) {
+					deptSubList.forEach(sysDeptSub -> gigChannelList.add(GigChannelEnum.resolve(sysDeptSub.getSubjectChannel())));
 				} else {
-					gigChannel = GigChannelEnum.DEFAULT;
+					gigChannelList.add(GigChannelEnum.DEFAULT);
 				}
 			} else {
-				gigChannel = GigChannelEnum.DEFAULT;
-			}
-			SysUserSub queryUserSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
-					.eq(SysUserSub::getUserId, userSignCertDTO.getUserId())
-					.eq(SysUserSub::getGigType, gigType));
-			if (queryUserSub != null) {
-				SysUserSub updateUserSub = new SysUserSub();
-				updateUserSub.setId(queryUserSub.getId());
-				updateUserSub.setCallbackStatus(GigCallBackStatus.NOT_SUBMIT);
-				updateUserSub.setGigChannel(gigChannel);
-				updateUserSub.setBankCardNumber(userSignCertDTO.getBankCardNumber());
-				updateUserSub.setUpdateTime(LocalDateTime.now());
-				updateUserSub.setUpdateUser(operateUserId);
-				sysUserSubService.updateById(updateUserSub);
-			} else {
-				SysUserSub userSub = new SysUserSub();
-				userSub.setUserId(userSignCertDTO.getUserId());
-				userSub.setDeptId(queryUser.getDeptId());
-				userSub.setGigType(gigType);
-				userSub.setGigChannel(gigChannel);
-				userSub.setCallbackStatus(GigCallBackStatus.NOT_SUBMIT);
-				userSub.setBankCardNumber(userSignCertDTO.getBankCardNumber());
-				userSub.setBankPhone(userSignCertDTO.getBankPhone());
-				userSub.setCreateUser(operateUserId);
-				userSub.setCreateTime(LocalDateTime.now());
-				sysUserSubService.save(userSub);
+				gigChannelList.add(GigChannelEnum.DEFAULT);
 			}
+
+			// 遍历当前渠道下的通道 保存useSub
+			gigChannelList.forEach(gigChannel -> {
+				// 查询userId+渠道+通道是否存在
+				SysUserSub queryUserSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
+						.eq(SysUserSub::getUserId, userSignCertDTO.getUserId())
+						.eq(SysUserSub::getGigChannel, gigChannel)
+						.eq(SysUserSub::getGigType, gigType));
+				if (queryUserSub != null) {
+					// 更新
+					SysUserSub updateUserSub = new SysUserSub();
+					updateUserSub.setId(queryUserSub.getId());
+					updateUserSub.setCallbackStatus(GigCallBackStatus.NOT_SUBMIT);
+					updateUserSub.setGigChannel(gigChannel);
+					updateUserSub.setBankCardNumber(userSignCertDTO.getBankCardNumber());
+					updateUserSub.setUpdateTime(LocalDateTime.now());
+					updateUserSub.setUpdateUser(operateUserId);
+					sysUserSubService.updateById(updateUserSub);
+				} else {
+					// 保存
+					SysUserSub userSub = new SysUserSub();
+					userSub.setUserId(userSignCertDTO.getUserId());
+					userSub.setDeptId(queryUser.getDeptId());
+					userSub.setGigType(gigType);
+					userSub.setGigChannel(gigChannel);
+					userSub.setCallbackStatus(GigCallBackStatus.NOT_SUBMIT);
+					userSub.setBankCardNumber(userSignCertDTO.getBankCardNumber());
+					userSub.setBankPhone(userSignCertDTO.getBankPhone());
+					userSub.setCreateUser(operateUserId);
+					userSub.setCreateTime(LocalDateTime.now());
+					sysUserSubService.save(userSub);
+				}
+			});
 		});
 	}
 
@@ -284,8 +292,8 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	/**
 	 * 批量发起用户签约认证
 	 *
-	 * @param userSignCertDTO
-	 * @return
+	 * @param userSignCertDTO 参数
+	 * @return 结果
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
@@ -314,10 +322,6 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 						&& TaxHelperCertStatus.CHECKED_UNBIND.getCode() != sysUserSub.getCertStatus()
 						&& TaxHelperCertStatus.CERT.getCode() != sysUserSub.getCertStatus()) {
 					return true;
-				} else if (GigTypeEnum.YEE.equals(sysUserSub.getGigType())
-						&& GigChannelEnum.JIN_YUAN.equals(sysUserSub.getGigChannel())) {
-					// 易联并且渠道是金园数科(自由职家)
-					return true;
 				} else if (GigTypeEnum.YEE.equals(sysUserSub.getGigType())
 						&& GigChannelEnum.DEFAULT.equals(sysUserSub.getGigChannel())
 						&& !YeeCertStatus.SIGNED.getCode().equals(String.valueOf(sysUserSub.getCertStatus()))) {
@@ -339,7 +343,7 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				}
 				// 请求流水号
 				String requestId = RandomStringUtils.randomAlphabetic(16);
-				// 是否需要传核身视频,阿拉丁、易联默认都要传
+				// 是否需要传核身视频flag,阿拉丁要传
 				boolean uploadFaceID = userSignCertDTO.getUploadFaceID() != null && userSignCertDTO.getUploadFaceID();
 				// 封装请求参数
 				GigInfoModel infoModel = this.buildChannelCertModel(sysUser, userSub, dept.getTaxCode(), requestId, uploadFaceID);
@@ -363,12 +367,12 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	/**
 	 * 签约认证前的前置判断
 	 *
-	 * @param sysUser
-	 * @param userSub
-	 * @param userSignCertDTO
+	 * @param sysUser 用户
+	 * @param userSub 用户sub
+	 * @param userSignCertDTO 入参
+	 * @return true 发起认证,false 不发起认证
 	 */
 	private boolean preSignCert(SysUser sysUser, SysUserSub userSub, UserSignCertDTO userSignCertDTO) {
-		boolean flag = true;
 		// 校验是否有进行中的
 		if (GigCallBackStatus.IN_PROGRESS.equals(userSub.getCallbackStatus())) {
 			return false;
@@ -376,20 +380,13 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 
 		switch (userSub.getGigType()) {
 			case YEE:
-				// 如果不是金园数科,则返回true
-				// 否则继续执行case为OLADING下的代码(判断是否该用户对应姓名身份证已认证,是则直接同步)
-				if (!GigChannelEnum.JIN_YUAN.equals(userSub.getGigChannel())) {
-					return true;
-				}
+				return false;
+			case OLADING:
 				// 如果需要传核身视频,则返回true
 				if (userSignCertDTO.getUploadFaceID() != null && userSignCertDTO.getUploadFaceID()) {
 					return true;
 				}
-				// 如果已认证,则直接返回false
-				if (OladingCertStatus.CERT.getCode().equals(String.valueOf(userSub.getCertStatus()))) {
-					return false;
-				}
-			case OLADING:
+
 				// 如果存在相同手机号、身份证、姓名信息的用户,并且是认证过,则不发起,直接返回签约认证状态
 				List<SysUser> existUserList = sysUserService.list(Wrappers.<SysUser>lambdaQuery()
 						.eq(SysUser::getUsername, sysUser.getUsername())
@@ -411,7 +408,6 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 										.eq(SysUserSub::getGigChannel, GigChannelEnum.JIN_YUAN));
 							}));
 					if (CollUtil.isNotEmpty(existUserSubList)) {
-						flag = false;
 						SysUserSub existUserSub = existUserSubList.get(0);
 						// 更新状态
 						SysUserSub updateUserSub = new SysUserSub();
@@ -428,6 +424,8 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 						Map<String, Object> result = MapUtil.newHashMap(1);
 						result.put(userSub.getGigType().name(), subMap);
 						redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
+
+						return false;
 					}
 				}
 				break;
@@ -461,12 +459,13 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				Map<String, Object> result = MapUtil.newHashMap(1);
 				result.put("REN_LI_JIA", subMap);
 				redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
-				// 默认返回false,不触发发送mq
-				flag = false;
+
+				return false;
 			default:
 		}
 
-		return flag;
+		// 默认返回false,不触发发送认证mq
+		return false;
 	}
 
 	/**

+ 7 - 5
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysDeptSubServiceImpl.java

@@ -95,9 +95,10 @@ public class SysDeptSubServiceImpl extends ServiceImpl<SysDeptSubMapper, SysDept
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void saveSettleConfig(DeptSubLimitAmountInput input) {
-		// 更新结算主体
+		// 更新涉及到结算主体的表的字段
 		String[] subTypeArr = input.getSubList().stream()
 				.map(SysDeptSub::getSubjectType)
+				.distinct()
 				.toArray(String[]::new);
 		SysDept dept = sysDeptMapper.selectById(input.getDeptId());
 		if (dept.getLevel() == 2) {
@@ -119,18 +120,19 @@ public class SysDeptSubServiceImpl extends ServiceImpl<SysDeptSubMapper, SysDept
 		sysDeptMapper.update(null, Wrappers.<SysDept>lambdaUpdate()
 				.eq(SysDept::getDeptId, input.getDeptId())
 				.set(SysDept::getSubjectType, subTypeArr));
-		// 更新/保存deptSub
+
 		// 先设置所有deptSub为无效
-		SysDeptSub deptSubWhere = new SysDeptSub();
-		deptSubWhere.setDeptId(input.getDeptId());
-		sysDeptSubMapper.update(deptSubWhere, Wrappers.<SysDeptSub>lambdaUpdate()
+		sysDeptSubMapper.update(null, Wrappers.<SysDeptSub>lambdaUpdate()
 				.eq(SysDeptSub::getDeptId, input.getDeptId())
 				.set(SysDeptSub::getEnableFlag, SubjectTypeEnum.ENABLE_FLAG_FALSE.getCode()));
 
 		input.getSubList().forEach(sysDeptSub -> {
+			// 查询
 			SysDeptSub queryDeptSub = sysDeptSubMapper.selectOne(Wrappers.<SysDeptSub>lambdaQuery()
 					.eq(SysDeptSub::getDeptId, input.getDeptId())
+					.eq(SysDeptSub::getSubjectChannel, sysDeptSub.getSubjectChannel())
 					.eq(SysDeptSub::getSubjectType, sysDeptSub.getSubjectType()));
+			// 更新/保存deptSub
 			if (queryDeptSub != null) {
 				// 更新
 				SysDeptSub updateDeptSub = new SysDeptSub();

+ 22 - 20
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaAgentServiceImpl.java

@@ -263,7 +263,7 @@ public class WmDaAgentServiceImpl extends ServiceImpl<WmDaAgentMapper, WmDaAgent
 			sysDeptSub.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
 			List<SysDeptSub> subList = sysDeptSubMapper.selectList(Wrappers.query(sysDeptSub));
 			if (CollUtil.isNotEmpty(subList)) {
-				String[] subTypeArr = subList.stream().map(SysDeptSub::getSubjectType).toArray(String[]::new);
+				String[] subTypeArr = subList.stream().map(SysDeptSub::getSubjectType).distinct().toArray(String[]::new);
 				agent.setSubjectType(subTypeArr);
 			}
 		});
@@ -555,25 +555,27 @@ public class WmDaAgentServiceImpl extends ServiceImpl<WmDaAgentMapper, WmDaAgent
 					.set(SysDeptSub::getEnableFlag, SubjectTypeEnum.ENABLE_FLAG_FALSE.getCode()));
 
 			if (CollUtil.isNotEmpty(wmDaAgent.getSubjectTypeAndChannel())) {
-				for (Map.Entry<String, Integer> entry : wmDaAgent.getSubjectTypeAndChannel().entrySet()) {
-					SysDeptSub condition = new SysDeptSub();
-					condition.setDeptId(sysDept.getDeptId());
-					condition.setSubjectType(entry.getKey());
-					condition.setSubjectChannel(entry.getValue());
-					SysDeptSub existSub = sysDeptSubMapper.selectOne(Wrappers.query(condition));
-					if (null != existSub) {
-						existSub.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
-						existSub.setUpdateTime(LocalDateTime.now());
-						sysDeptSubMapper.updateById(existSub);
-					} else {
-						existSub = new SysDeptSub();
-						existSub.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
-						existSub.setDeptId(sysDept.getDeptId());
-						existSub.setSubjectType(entry.getKey());
-						existSub.setSubjectChannel(entry.getValue());
-						existSub.setUpdateTime(LocalDateTime.now());
-						sysDeptSubMapper.insert(existSub);
-					}
+				for (Map.Entry<String, List<Integer>> entry : wmDaAgent.getSubjectTypeAndChannel().entrySet()) {
+					entry.getValue().forEach(channel -> {
+						SysDeptSub condition = new SysDeptSub();
+						condition.setDeptId(sysDept.getDeptId());
+						condition.setSubjectType(entry.getKey());
+						condition.setSubjectChannel(channel);
+						SysDeptSub existSub = sysDeptSubMapper.selectOne(Wrappers.query(condition));
+						if (null != existSub) {
+							existSub.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
+							existSub.setUpdateTime(LocalDateTime.now());
+							sysDeptSubMapper.updateById(existSub);
+						} else {
+							existSub = new SysDeptSub();
+							existSub.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
+							existSub.setDeptId(sysDept.getDeptId());
+							existSub.setSubjectType(entry.getKey());
+							existSub.setSubjectChannel(channel);
+							existSub.setUpdateTime(LocalDateTime.now());
+							sysDeptSubMapper.insert(existSub);
+						}
+					});
 				}
 			}
 

+ 24 - 19
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaDrugEntServiceImpl.java

@@ -83,16 +83,18 @@ public class WmDaDrugEntServiceImpl extends ServiceImpl<WmDaDrugEntMapper, WmDaD
 			 */
 			if(sysDeptService.saveDept(sysDept) > 0){
 
-				Map<String, Integer> subjectTypeAndChannel = entity.getSubjectTypeAndChannel();
+				Map<String, List<Integer>> subjectTypeAndChannel = entity.getSubjectTypeAndChannel();
 				if (CollUtil.isNotEmpty(subjectTypeAndChannel)) {
-					for (Map.Entry<String, Integer> entry : subjectTypeAndChannel.entrySet()) {
-						SysDeptSub deptSub = new SysDeptSub();
-						deptSub.setDeptId(sysDept.getDeptId());
-						deptSub.setSubjectChannel(entry.getValue());
-						deptSub.setSubjectType(entry.getKey());
-						deptSub.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
-						deptSub.setUpdateTime(sysDept.getCreateTime());
-						sysDeptSubMapper.insert(deptSub);
+					for (Map.Entry<String, List<Integer>> entry : subjectTypeAndChannel.entrySet()) {
+						entry.getValue().forEach(channel -> {
+							SysDeptSub deptSub = new SysDeptSub();
+							deptSub.setDeptId(sysDept.getDeptId());
+							deptSub.setSubjectChannel(channel);
+							deptSub.setSubjectType(entry.getKey());
+							deptSub.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
+							deptSub.setUpdateTime(sysDept.getCreateTime());
+							sysDeptSubMapper.insert(deptSub);
+						});
 
 					}
 				}
@@ -159,14 +161,16 @@ public class WmDaDrugEntServiceImpl extends ServiceImpl<WmDaDrugEntMapper, WmDaD
 
 			// 创建结算渠道和通道
 			if (CollUtil.isNotEmpty(entity.getSubjectTypeAndChannel())) {
-				for (Map.Entry<String, Integer> entry : entity.getSubjectTypeAndChannel().entrySet()) {
-					SysDeptSub deptSub = new SysDeptSub();
-					deptSub.setDeptId(sysDept.getDeptId());
-					deptSub.setSubjectType(entry.getKey());
-					deptSub.setSubjectChannel(entry.getValue());
-					deptSub.setUpdateTime(LocalDateTime.now());
-					deptSub.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
-					sysDeptSubMapper.insert(deptSub);
+				for (Map.Entry<String, List<Integer>> entry : entity.getSubjectTypeAndChannel().entrySet()) {
+					entry.getValue().forEach(channel -> {
+						SysDeptSub deptSub = new SysDeptSub();
+						deptSub.setDeptId(sysDept.getDeptId());
+						deptSub.setSubjectType(entry.getKey());
+						deptSub.setSubjectChannel(channel);
+						deptSub.setUpdateTime(LocalDateTime.now());
+						deptSub.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
+						sysDeptSubMapper.insert(deptSub);
+					});
 				}
 			}
 
@@ -207,11 +211,12 @@ public class WmDaDrugEntServiceImpl extends ServiceImpl<WmDaDrugEntMapper, WmDaD
 		IPage<WmDaDrugEnt> listIPage = wmDaDrugEntMapper.selectPage(page, wmDaDrugEnt);
 
 		listIPage.getRecords().forEach(ent -> {
-				Map<String, Integer> collect = sysDeptSubMapper.selectList(Wrappers.<SysDeptSub>lambdaQuery()
+				Map<String, List<Integer>> collect = sysDeptSubMapper.selectList(Wrappers.<SysDeptSub>lambdaQuery()
 						.eq(SysDeptSub::getDeptId, ent.getDeptId())
 						.eq(SysDeptSub::getEnableFlag, SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode()))
 						.stream()
-						.collect(Collectors.toMap(SysDeptSub::getSubjectType, SysDeptSub::getSubjectChannel));
+						.collect(Collectors.groupingBy(SysDeptSub::getSubjectType,
+								Collectors.mapping(SysDeptSub::getSubjectChannel, Collectors.toList())));
 				ent.setSubjectType(collect.keySet().toArray(new String[0]));
 				ent.setSubjectTypeAndChannel(collect);
 		});