|
@@ -1,96 +1,253 @@
|
|
|
package com.ruoyi.system.service.conference.impl;
|
|
|
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
+import com.ruoyi.common.core.domain.entity.SysDictData;
|
|
|
+import com.ruoyi.common.core.domain.entity.SysRole;
|
|
|
+import com.ruoyi.common.core.domain.entity.SysUser;
|
|
|
import com.ruoyi.common.utils.DateUtils;
|
|
|
+import com.ruoyi.common.utils.SecurityUtils;
|
|
|
+import com.ruoyi.common.utils.StringUtils;
|
|
|
import com.ruoyi.system.domain.conference.SysUserConference;
|
|
|
+import com.ruoyi.system.domain.loan.LoanApplication;
|
|
|
+import com.ruoyi.system.mapper.LoanApplicationMapper;
|
|
|
+import com.ruoyi.system.mapper.SysUserMapper;
|
|
|
+import com.ruoyi.system.service.ISysDictTypeService;
|
|
|
import com.ruoyi.system.service.conference.ISysUserConferenceService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.ruoyi.system.mapper.SysUserConferenceMapper;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
/**
|
|
|
* 参会人员Service业务层处理
|
|
|
- *
|
|
|
+ *
|
|
|
* @author boman
|
|
|
* @date 2024-05-06
|
|
|
*/
|
|
|
@Service
|
|
|
-public class SysUserConferenceServiceImpl implements ISysUserConferenceService
|
|
|
-{
|
|
|
+public class SysUserConferenceServiceImpl implements ISysUserConferenceService {
|
|
|
@Autowired
|
|
|
private SysUserConferenceMapper sysUserConferenceMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SysUserMapper userMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private LoanApplicationMapper loanApplicationMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISysDictTypeService dictTypeService;
|
|
|
+
|
|
|
/**
|
|
|
* 查询参会人员
|
|
|
- *
|
|
|
+ *
|
|
|
* @param conferenceId 参会人员主键
|
|
|
* @return 参会人员
|
|
|
*/
|
|
|
@Override
|
|
|
- public SysUserConference selectSysUserConferenceByConferenceId(Long conferenceId)
|
|
|
- {
|
|
|
+ public SysUserConference selectSysUserConferenceByConferenceId(Long conferenceId) {
|
|
|
return sysUserConferenceMapper.selectSysUserConferenceByConferenceId(conferenceId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询参会人员列表
|
|
|
- *
|
|
|
+ *
|
|
|
* @param sysUserConference 参会人员
|
|
|
* @return 参会人员
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<SysUserConference> selectSysUserConferenceList(SysUserConference sysUserConference)
|
|
|
- {
|
|
|
+ public List<SysUserConference> selectSysUserConferenceList(SysUserConference sysUserConference) {
|
|
|
return sysUserConferenceMapper.selectSysUserConferenceList(sysUserConference);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 新增参会人员
|
|
|
- *
|
|
|
+ *
|
|
|
* @param sysUserConference 参会人员
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int insertSysUserConference(SysUserConference sysUserConference)
|
|
|
- {
|
|
|
+ public int insertSysUserConference(SysUserConference sysUserConference) {
|
|
|
sysUserConference.setCreateTime(DateUtils.getNowDate());
|
|
|
return sysUserConferenceMapper.insertSysUserConference(sysUserConference);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 修改参会人员
|
|
|
- *
|
|
|
+ *
|
|
|
* @param sysUserConference 参会人员
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int updateSysUserConference(SysUserConference sysUserConference)
|
|
|
- {
|
|
|
+ public int updateSysUserConference(SysUserConference sysUserConference) {
|
|
|
sysUserConference.setUpdateTime(DateUtils.getNowDate());
|
|
|
return sysUserConferenceMapper.updateSysUserConference(sysUserConference);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 批量删除参会人员
|
|
|
- *
|
|
|
+ *
|
|
|
* @param conferenceIds 需要删除的参会人员主键
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int deleteSysUserConferenceByConferenceIds(Long[] conferenceIds)
|
|
|
- {
|
|
|
+ public int deleteSysUserConferenceByConferenceIds(Long[] conferenceIds) {
|
|
|
return sysUserConferenceMapper.deleteSysUserConferenceByConferenceIds(conferenceIds);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 删除参会人员信息
|
|
|
- *
|
|
|
+ *
|
|
|
* @param conferenceId 参会人员主键
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int deleteSysUserConferenceByConferenceId(Long conferenceId)
|
|
|
- {
|
|
|
+ public int deleteSysUserConferenceByConferenceId(Long conferenceId) {
|
|
|
return sysUserConferenceMapper.deleteSysUserConferenceByConferenceId(conferenceId);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public AjaxResult randomAdd(SysUserConference sysUserConference) {
|
|
|
+
|
|
|
+ int num = 0;
|
|
|
+ //查询贷款信息
|
|
|
+ LoanApplication loanApplication = loanApplicationMapper.selectLoanApplicationByLoanApplicationId(sysUserConference.getLoanApplicationId());
|
|
|
+ //主表赋值
|
|
|
+ loanApplication.setReviewTime(sysUserConference.getConferenceTime());
|
|
|
+ loanApplicationMapper.updateLoanApplication(loanApplication);
|
|
|
+
|
|
|
+ //查询参会人员的字典值
|
|
|
+ List<SysDictData> data = dictTypeService.selectDictDataByType("conference_role");
|
|
|
+ List<String> strlist = data.stream().map(SysDictData::getDictValue).collect(Collectors.toList());
|
|
|
+ //查询人员
|
|
|
+ List<SysUser> userList = userMapper.selectUserManageList(strlist);
|
|
|
+ //生成0-n的随机数
|
|
|
+ Random random = new Random();
|
|
|
+ while (num <= 5) {
|
|
|
+ int randomNumber = random.nextInt(userList.size() - 1);
|
|
|
+ SysUser sysUser = userList.get(randomNumber);
|
|
|
+ //A
|
|
|
+ boolean b1 = sysUser.getUserId().equals(loanApplication.getaUserId());
|
|
|
+ //B
|
|
|
+ boolean b2 = sysUser.getUserId().equals(loanApplication.getbUserId());
|
|
|
+ //风险
|
|
|
+ boolean b3 = sysUser.getUserId().equals(loanApplication.getfUserId());
|
|
|
+ //只有同时满足随机人员不是这三个时才能加入参会人员
|
|
|
+ if (!b1 && !b2 && !b3) {
|
|
|
+ //将信息存入库
|
|
|
+ SysUserConference userConference = new SysUserConference();
|
|
|
+ userConference.setUserId(sysUser.getUserId());
|
|
|
+ userConference.setRealName(sysUser.getNickName());
|
|
|
+ userConference.setLoanApplicationId(sysUserConference.getLoanApplicationId());
|
|
|
+ userConference.setLoanApplicationName(loanApplication.getEnterpriseName());
|
|
|
+ userConference.setLoanApplicationNumber(loanApplication.getLoanApplicationNumber());
|
|
|
+ userConference.setConferenceTime(sysUserConference.getConferenceTime());
|
|
|
+ sysUserConferenceMapper.insertSysUserConference(userConference);
|
|
|
+ num++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return AjaxResult.success("成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AjaxResult timeTist(SysUserConference sysUserConference) {
|
|
|
+ List<SysUserConference> sysUserConferences = sysUserConferenceMapper.selectSysUserConferenceList(sysUserConference);
|
|
|
+ Map<String,List<SysUserConference>> map = sysUserConferences.stream().collect(Collectors.groupingBy(SysUserConference::getConferenceTime));
|
|
|
+
|
|
|
+ List<Map<String,Object>> listMap = new ArrayList<>();
|
|
|
+ for (Map.Entry<String, List<SysUserConference>> entry : map.entrySet()) {
|
|
|
+ Map<String,Object> resultMap = new HashMap<>();
|
|
|
+ resultMap.put("conferenceTime",entry.getKey());
|
|
|
+ resultMap.put("children",entry.getValue());
|
|
|
+ listMap.add(resultMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ return AjaxResult.success(listMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AjaxResult pcTimeTist(SysUserConference sysUserConference) {
|
|
|
+ List<SysUserConference> sysUserConferences = sysUserConferenceMapper.selectSysUserConferenceList(sysUserConference);
|
|
|
+ return AjaxResult.success(sysUserConferences);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public AjaxResult vote(SysUserConference sysUserConference) {
|
|
|
+ SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
|
+ sysUserConference.setUserId(user.getUserId());
|
|
|
+ sysUserConference.setUpdateTime(DateUtils.getNowDate());
|
|
|
+ sysUserConferenceMapper.updateSysUserConferenceByUserId(sysUserConference);
|
|
|
+ //判断当前角色是否是董事长
|
|
|
+ List<SysRole> roles = user.getRoles();
|
|
|
+ Boolean bl = false;
|
|
|
+ for (SysRole role : roles) {
|
|
|
+ if(role.getRoleKey().equals("sensible")){
|
|
|
+ bl = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //董事长是否一票否决
|
|
|
+ if(bl && sysUserConference.getVotingResult().equals("N")){
|
|
|
+ //修改主表信息 未通过
|
|
|
+ LoanApplication loanApplication = new LoanApplication();
|
|
|
+ loanApplication.setAuditType("4");
|
|
|
+ loanApplication.setReviewSchedule("6");
|
|
|
+ loanApplicationMapper.updateLoanApplication(loanApplication);
|
|
|
+ // todo 未通过 业务流程表插入数据
|
|
|
+
|
|
|
+ return AjaxResult.success("成功");
|
|
|
+ }
|
|
|
+ //除了本人外是否全部投票
|
|
|
+ Boolean b = true;
|
|
|
+ //不同意人数
|
|
|
+ int bty = 0;
|
|
|
+ if("N".equals(sysUserConference.getVotingResult())){
|
|
|
+ bty++;
|
|
|
+ }
|
|
|
+ //查询所有人员的投票结果
|
|
|
+ List<SysUserConference> sysUserConferences = sysUserConferenceMapper.selectSysUserConferenceList(sysUserConference);
|
|
|
+ for (SysUserConference userConference : sysUserConferences) {
|
|
|
+ //是否有人未投票
|
|
|
+ if(!userConference.getUserId().equals(user.getUserId()) && StringUtils.isEmpty(userConference.getVotingResult())){
|
|
|
+ b = false;
|
|
|
+ }
|
|
|
+ //排除掉本人
|
|
|
+ if(!userConference.getUserId().equals(user.getUserId()) && StringUtils.isNotEmpty(userConference.getVotingResult()) && "N".equals(userConference.getVotingResult())){
|
|
|
+ bty++;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(bty>=2){
|
|
|
+ //修改主表信息 未通过
|
|
|
+ LoanApplication loanApplication = new LoanApplication();
|
|
|
+ loanApplication.setAuditType("4");
|
|
|
+ loanApplication.setReviewSchedule("6");
|
|
|
+ loanApplicationMapper.updateLoanApplication(loanApplication);
|
|
|
+ // todo 未通过 业务流程表插入数据
|
|
|
+
|
|
|
+ return AjaxResult.success("成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(b && bty<2){
|
|
|
+ //修改主表信息 通过
|
|
|
+ LoanApplication loanApplication = new LoanApplication();
|
|
|
+ loanApplication.setAuditType("1");
|
|
|
+ loanApplication.setReviewSchedule("5");
|
|
|
+ loanApplication.setAuditSchedule("8");
|
|
|
+ loanApplication.setLoanSchedule("7");
|
|
|
+ loanApplicationMapper.updateLoanApplication(loanApplication);
|
|
|
+ // todo 通过 业务流程表插入数据
|
|
|
+
|
|
|
+
|
|
|
+ return AjaxResult.success("成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ return AjaxResult.success("成功");
|
|
|
+ }
|
|
|
}
|