Browse Source

feat: 结算管理配置

lixuesong 3 years ago
parent
commit
2d7fff6eb0

+ 23 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysDeptSubController.java

@@ -1,5 +1,7 @@
 package com.qunzhixinxi.hnqz.admin.controller;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qunzhixinxi.hnqz.admin.entity.input.DeptSubLimitAmountInput;
@@ -73,6 +75,27 @@ public class SysDeptSubController {
 		return sysDeptSubService.updateSubLimitAmount(input);
 	}
 
+	/**
+	 * 结算管理配置
+	 *
+	 * @param input
+	 * @return
+	 */
+	@PostMapping("/save-settle-config")
+	public R<?> saveSettleConfig(@RequestBody DeptSubLimitAmountInput input) {
+		if (input.getDeptId() == null || CollUtil.isEmpty(input.getSubList())) {
+			return R.failed("必填参数为空");
+		}
+		for (SysDeptSub deptSub : input.getSubList()) {
+			if (StrUtil.isBlank(deptSub.getSubjectType()) || deptSub.getLimitAmount() == null
+					|| StrUtil.isBlank(deptSub.getSubjectInvoiceCategory())) {
+				return R.failed("必填参数为空");
+			}
+		}
+		sysDeptSubService.saveSettleConfig(input);
+
+		return R.ok();
+	}
 
     /**
      * 分页查询

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

@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
-import com.alibaba.csp.sentinel.util.StringUtil;
 import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
 import com.qunzhixinxi.hnqz.admin.entity.SysUserSub;
 import com.qunzhixinxi.hnqz.admin.entity.dto.UserSignCertDTO;
@@ -54,10 +53,10 @@ public class SysUserSignCertController {
 		if (CollUtil.isEmpty(userSignCertDTO.getGigTypeList())) {
 			return R.failed("认证渠道不能为空");
 		}
-		if (StringUtil.isBlank(userSignCertDTO.getBankPhone())) {
+		if (StrUtil.isBlank(userSignCertDTO.getBankPhone())) {
 			return R.failed("银行预留手机号不能为空");
 		}
-		if (StringUtil.isBlank(userSignCertDTO.getBankCardNumber())) {
+		if (StrUtil.isBlank(userSignCertDTO.getBankCardNumber())) {
 			return R.failed("银行卡号不能为空");
 		}
 		sysUserSignCertService.saveBaseInfo(userSignCertDTO);

+ 7 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SysDeptSubService.java

@@ -39,4 +39,11 @@ public interface SysDeptSubService extends IService<SysDeptSub> {
 	List<SettleAmountMonitorOutput> getSettleAmountMonitor(SettleAmountMonitorInput input);
 
 	List<SettleAmountMonitorOutput> getDeptAmountMonitor(SettleAmountMonitorInput input);
+
+	/**
+	 * 结算管理配置
+	 *
+	 * @param input
+	 */
+	void saveSettleConfig(DeptSubLimitAmountInput input);
 }

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

@@ -338,12 +338,6 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		if (userSub == null) {
 			throw new RuntimeException("数据异常");
 		}
-		// 更新银行预留手机号
-		SysUserSub updateUserSub = new SysUserSub();
-		updateUserSub.setId(userSub.getId());
-		updateUserSub.setBankPhone(userSignCertDTO.getBankPhone());
-		sysUserSubService.updateById(updateUserSub);
-		// 封装请求数据
 		// 查询user
 		SysUser sysUser = sysUserService.getById(userSignCertDTO.getUserId());
 		// 查询dept

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

@@ -16,18 +16,29 @@
  */
 package com.qunzhixinxi.hnqz.admin.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.entity.SysDeptSub;
+import com.qunzhixinxi.hnqz.admin.entity.WmDaAgent;
+import com.qunzhixinxi.hnqz.admin.entity.WmDaDrugEnt;
 import com.qunzhixinxi.hnqz.admin.entity.input.DeptSubLimitAmountInput;
 import com.qunzhixinxi.hnqz.admin.entity.input.SettleAmountMonitorInput;
 import com.qunzhixinxi.hnqz.admin.entity.output.SettleAmountMonitorOutput;
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
+import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
+import com.qunzhixinxi.hnqz.admin.enums.SubjectTypeEnum;
+import com.qunzhixinxi.hnqz.admin.mapper.SysDeptMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.SysDeptSubMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmDaAgentMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmDaDrugEntMapper;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptSubService;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -43,6 +54,12 @@ public class SysDeptSubServiceImpl extends ServiceImpl<SysDeptSubMapper, SysDept
 
 	private final SysDeptSubMapper sysDeptSubMapper;
 
+	private final SysDeptMapper sysDeptMapper;
+
+	private final WmDaAgentMapper wmDaAgentMapper;
+
+	private final WmDaDrugEntMapper wmDaDrugEntMapper;
+
 	@Override
 	@Transactional
 	public R updateSubLimitAmount(DeptSubLimitAmountInput input) {
@@ -64,4 +81,72 @@ public class SysDeptSubServiceImpl extends ServiceImpl<SysDeptSubMapper, SysDept
 	public List<SettleAmountMonitorOutput> getDeptAmountMonitor(SettleAmountMonitorInput input) {
 		return sysDeptSubMapper.getDeptAmountMonitor(input);
 	}
+
+	/**
+	 * 结算管理配置
+	 *
+	 * @param input
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void saveSettleConfig(DeptSubLimitAmountInput input) {
+		// 更新结算主体
+		String[] subTypeArr = input.getSubList().stream()
+				.map(SysDeptSub::getSubjectType)
+				.toArray(String[]::new);
+		SysDept dept = sysDeptMapper.selectById(input.getDeptId());
+		if (dept.getLevel() == 2) {
+			// 药企
+			wmDaDrugEntMapper.update(null, Wrappers.<WmDaDrugEnt>lambdaUpdate()
+					.eq(WmDaDrugEnt::getDeptId, String.valueOf(input.getDeptId()))
+					.eq(WmDaDrugEnt::getEnableFlag, EnableEnum.ENABLE.val())
+					.eq(WmDaDrugEnt::getDelFlag, DelEnum.NOT_DEL.val())
+					.set(WmDaDrugEnt::getSubjectType, subTypeArr));
+		} else if (dept.getLevel() == 3) {
+			// 更新agent
+			wmDaAgentMapper.update(null, Wrappers.<WmDaAgent>lambdaUpdate()
+					.eq(WmDaAgent::getDeptId, String.valueOf(input.getDeptId()))
+					.eq(WmDaAgent::getEnableFlag, EnableEnum.ENABLE.val())
+					.eq(WmDaAgent::getDelFlag, DelEnum.NOT_DEL.val())
+					.set(WmDaAgent::getSubjectType, subTypeArr));
+		}
+		// 更新dept
+		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()
+				.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::getSubjectType, sysDeptSub.getSubjectType()));
+			if (queryDeptSub != null) {
+				// 更新
+				SysDeptSub updateDeptSub = new SysDeptSub();
+				updateDeptSub.setSubId(queryDeptSub.getSubId());
+				updateDeptSub.setSubjectChannel(sysDeptSub.getSubjectChannel() == null ? 0 : sysDeptSub.getSubjectChannel());
+				updateDeptSub.setSubjectInvoiceCategory(sysDeptSub.getSubjectInvoiceCategory());
+				updateDeptSub.setLimitAmount(sysDeptSub.getLimitAmount());
+				updateDeptSub.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
+				updateDeptSub.setUpdateTime(LocalDateTime.now());
+				sysDeptSubMapper.updateById(updateDeptSub);
+			} else {
+				// 新增
+				SysDeptSub insertDeptSub = new SysDeptSub();
+				insertDeptSub.setDeptId(input.getDeptId());
+				insertDeptSub.setSubjectType(sysDeptSub.getSubjectType());
+				insertDeptSub.setSubjectChannel(sysDeptSub.getSubjectChannel() == null ? 0 : sysDeptSub.getSubjectChannel());
+				insertDeptSub.setSubjectInvoiceCategory(sysDeptSub.getSubjectInvoiceCategory());
+				insertDeptSub.setLimitAmount(sysDeptSub.getLimitAmount());
+				insertDeptSub.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
+				sysDeptSubMapper.insert(insertDeptSub);
+			}
+		});
+	}
 }