master
chen 4 years ago
parent d909f94e58
commit 378c0bf641
  1. 150
      dq-financial-guarantee/src/main/java/com/daqing/financial/guarantee/controller/DgEfficiencyController.java
  2. 30
      dq-financial-guarantee/src/main/java/com/daqing/financial/guarantee/model/request/PersonalEfficiencyListRequest.java
  3. 20
      dq-financial-guarantee/src/main/java/com/daqing/financial/guarantee/model/response/PersonalEfficiencyListResponse.java
  4. 4
      dq-financial-guarantee/src/main/java/com/daqing/financial/guarantee/service/IDgEfficiencyService.java
  5. 434
      dq-financial-guarantee/src/main/java/com/daqing/financial/guarantee/service/impl/DgEfficiencyServiceImpl.java
  6. 31
      dq-framework-model/src/main/java/com/daqing/framework/domain/guarantee/po/StatusPO.java
  7. 87
      dq-framework-utils/src/main/java/com/daqing/framework/utils/excel/TaskNodeConverter.java

@ -1,23 +1,28 @@
package com.daqing.financial.guarantee.controller;
import com.alibaba.fastjson.JSONObject;
import com.daqing.financial.guarantee.feign.HrmsFeignService;
import com.daqing.financial.guarantee.model.request.DgEfficiencyTeamRequest;
import com.daqing.financial.guarantee.model.request.PersonalEfficiencyListRequest;
import com.daqing.financial.guarantee.model.response.PersonalEfficiencyListResponse;
import com.daqing.financial.guarantee.service.IDgEfficiencyService;
import com.daqing.financial.guarantee.util.DateUtils;
import com.daqing.framework.model.StatusCode;
import com.daqing.framework.model.response.ResponseResult;
import com.daqing.framework.utils.excel.EasyExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import com.daqing.financial.guarantee.service.IDgEfficiencyService;
import com.daqing.framework.model.response.ResponseResult;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 流程效率
@ -33,6 +38,9 @@ public class DgEfficiencyController {
@Autowired
private IDgEfficiencyService dgEfficiencyService;
@Autowired
private HrmsFeignService hrmsFeignService;
/**
* 团队效率
*/
@ -51,4 +59,126 @@ public class DgEfficiencyController {
Map result = dgEfficiencyService.approvalNum();
return ResponseResult.SUCCESS(result);
}
@ApiOperation(value = "个人效率记录列表")
@PostMapping("/personalEfficiencyList")
public ResponseResult personalEfficiencyList(
@ApiParam(name = "personalEfficiencyListRequest", value = "个人效率列表查询对象")
@RequestBody PersonalEfficiencyListRequest personalEfficiencyListRequest){
List<PersonalEfficiencyListResponse> responseList = dgEfficiencyService.queryPersonalEfficiencyList();
if(responseList.size()>0){
List<Integer> arr = new ArrayList<>();
for (PersonalEfficiencyListResponse res : responseList) {
arr.add(res.getApplicantId());
}
//根据提单人id查询其部门名称
ResponseResult responseResult = hrmsFeignService.getAccountAndDeptNameById(arr);
List<LinkedHashMap> employeeMessage = null;
if(responseResult.getData() != null){
employeeMessage = (List<LinkedHashMap>) responseResult.getData();
}
for (PersonalEfficiencyListResponse response:responseList) {
for(LinkedHashMap res : employeeMessage){
if(response.getApplicantId().equals(res.get("id"))){//如果提单人id相同情况下,就往对象里面赋值
response.setApplicant(JSONObject.toJSONString(res.get("account")).replace("\"",""));
}
}
}
}
//根据条件筛选数据
if (personalEfficiencyListRequest.getOperatingStatus()!=null){
// 已发起
if (personalEfficiencyListRequest.getOperatingStatus().equals(StatusCode.CZ_LAUNCH)){
responseList = responseList.stream().filter(p -> p.getOperatingStatus().equals(StatusCode.CZ_LAUNCH)).collect(Collectors.toList());
// 待处理
}else if (personalEfficiencyListRequest.getOperatingStatus().equals(StatusCode.CZ_ON_HAND)){
responseList = responseList.stream().filter(p -> p.getOperatingStatus().equals(StatusCode.CZ_ON_HAND)).collect(Collectors.toList());
// 已处理
}else if (personalEfficiencyListRequest.getOperatingStatus().equals(StatusCode.CZ_PROCESSED)){
responseList = responseList.stream().filter(p -> p.getOperatingStatus().equals(StatusCode.CZ_PROCESSED)).collect(Collectors.toList());
}
}
// 时间筛选(固定时间)
if (personalEfficiencyListRequest.getCreateFixedTime() != null && personalEfficiencyListRequest.getStartTime() == null && personalEfficiencyListRequest.getEndTime() == null) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
switch (personalEfficiencyListRequest.getCreateFixedTime()) {
case 0:
personalEfficiencyListRequest.setStartTime(dateFormat.format(DateUtils.getDayBegin()));
personalEfficiencyListRequest.setEndTime(dateFormat.format(DateUtils.getDayEnd()));// 今天
break;
case 1:
personalEfficiencyListRequest.setStartTime(dateFormat.format(DateUtils.getBeginDayOfYesterday()));
personalEfficiencyListRequest.setEndTime(dateFormat.format(DateUtils.getEndDayOfYesterDay()));// 昨天
break;
case 2:
personalEfficiencyListRequest.setStartTime(dateFormat.format(DateUtils.getBeginDayOfWeek()));
personalEfficiencyListRequest.setEndTime(dateFormat.format(DateUtils.getEndDayOfWeek()));// 本周
break;
case 3:
personalEfficiencyListRequest.setStartTime(dateFormat.format(DateUtils.getBeginDayOfMonth()));
personalEfficiencyListRequest.setEndTime(dateFormat.format(DateUtils.getEndDayOfMonth()));// 本月
break;
case 4:
personalEfficiencyListRequest.setStartTime(dateFormat.format(DateUtils.getBeginDayOfYear()));
personalEfficiencyListRequest.setEndTime(dateFormat.format(DateUtils.getEndDayOfYear()));// 本年
break;
default:
personalEfficiencyListRequest.setStartTime(null);
personalEfficiencyListRequest.setEndTime(null);
}
//获取毫秒数
long longStart = getLongDate(personalEfficiencyListRequest.getStartTime());
long longEnd = getLongDate(personalEfficiencyListRequest.getEndTime());
Stream<Boolean> booleanStream = responseList.stream().map(p -> getLongDate(p.getApplicationDate()) > longStart && getLongDate(p.getApplicationDate()) < longEnd);
}
return ResponseResult.SUCCESS(responseList);
}
public static long getLongDate(String stringDate){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(stringDate);
return date.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return 0L;
}
@ApiOperation(value = "个人效率记录列表导出")
@GetMapping("/personalEfficiencyListExport")
public void personalEfficiencyListExport(HttpServletResponse httpServletResponse){
List<PersonalEfficiencyListResponse> responseList = dgEfficiencyService.queryPersonalEfficiencyList();
if(responseList.size()>0){
List<Integer> arr = new ArrayList<>();
for (PersonalEfficiencyListResponse res : responseList) {
arr.add(res.getApplicantId());
}
//根据提单人id查询其部门名称
ResponseResult responseResult = hrmsFeignService.getAccountAndDeptNameById(arr);
List<LinkedHashMap> employeeMessage = null;
if(responseResult.getData() != null){
employeeMessage = (List<LinkedHashMap>) responseResult.getData();
}
for (PersonalEfficiencyListResponse response:responseList) {
for(LinkedHashMap res : employeeMessage){
if(response.getApplicantId().equals(res.get("id"))){//如果提单人id相同情况下,就往对象里面赋值
response.setApplicant(JSONObject.toJSONString(res.get("account")).replace("\"",""));
}
}
}
}
try {
EasyExcelUtil.download(httpServletResponse,PersonalEfficiencyListResponse.class,responseList,"个人效率记录列表","第一页");
} catch (IOException e) {
e.printStackTrace();
}
}
}

@ -0,0 +1,30 @@
package com.daqing.financial.guarantee.model.request;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
/**
* @Author chen
* @DATE 2020/12/31 15:35
* @Version 1.0
*/
@Data
@ToString
public class PersonalEfficiencyListRequest {
@ApiModelProperty("申请时间,固定类型,0:今天,1:昨天,2:本周,3:本月,4:本年")
private Integer createFixedTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty("起始时间")
private String startTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty("结束时间")
private String endTime;
@ApiModelProperty("操作状态")
private Integer operatingStatus;
}

@ -1,15 +1,14 @@
package com.daqing.financial.guarantee.model.response;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.daqing.framework.utils.excel.ApprovalStatusConverter;
import com.daqing.framework.utils.excel.BusinessStatusConverter;
import com.daqing.framework.utils.excel.OperatingStatusConverter;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.daqing.framework.utils.excel.TaskNodeConverter;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @Author chen
* @DATE 2020/12/28 16:31
@ -18,6 +17,14 @@ import java.util.Date;
@Data
public class PersonalEfficiencyListResponse {
@ExcelIgnore
@ApiModelProperty(value = "业务id")
private Integer businessId;
@ExcelIgnore
@ApiModelProperty(value = "提单人")
private Integer applicantId;
@ApiModelProperty(value = "提单人")
@ExcelProperty(value = "提单人",index = 1)
private String applicant;
@ -28,8 +35,7 @@ public class PersonalEfficiencyListResponse {
@ApiModelProperty("申请日期")
@ExcelProperty(value = "申请日期",index = 3)
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date applicationDate;
private String applicationDate;
@ApiModelProperty("累计耗时")
@ExcelProperty(value = "累计耗时",index = 4)
@ -40,8 +46,8 @@ public class PersonalEfficiencyListResponse {
private String completeTime;
@ApiModelProperty("任务节点")
@ExcelProperty(value = "任务节点",index = 6)
private Double taskNode;
@ExcelProperty(value = "任务节点",index = 6,converter = TaskNodeConverter.class)
private Integer taskNode;
@ApiModelProperty("审批状态")
@ExcelProperty(value = "审核状态",index = 7,converter = ApprovalStatusConverter.class)

@ -2,10 +2,12 @@ package com.daqing.financial.guarantee.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.daqing.financial.guarantee.model.request.DgEfficiencyTeamRequest;
import com.daqing.financial.guarantee.model.response.PersonalEfficiencyListResponse;
import com.daqing.framework.domain.guarantee.DgApplyAmountInfo;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -16,4 +18,6 @@ public interface IDgEfficiencyService extends IService<DgApplyAmountInfo> {
Map approvalNum();
HashMap<Integer, HashMap<Integer, String>> queryList(DgEfficiencyTeamRequest dgEfficiencyTeamRequest);
List<PersonalEfficiencyListResponse> queryPersonalEfficiencyList();
}

@ -1,25 +1,33 @@
package com.daqing.financial.guarantee.service.impl;
import cn.hutool.core.util.ObjectUtil;
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 com.daqing.financial.guarantee.controller.DgApplyAmountInfoController;
import com.daqing.financial.guarantee.mapper.DgAuditProcessMapper;
import com.daqing.financial.guarantee.mapper.DgEfficiencyMapper;
import com.daqing.financial.guarantee.mapper.*;
import com.daqing.financial.guarantee.model.request.DgComplianceInvestigationRequest;
import com.daqing.financial.guarantee.model.request.DgEfficiencyTeamRequest;
import com.daqing.financial.guarantee.model.response.EfficiencyApprovalResponse;
import com.daqing.financial.guarantee.model.response.*;
import com.daqing.financial.guarantee.service.IDgEfficiencyService;
import com.daqing.financial.guarantee.util.DateUtils;
import com.daqing.framework.domain.guarantee.DgApplyAmountInfo;
import org.springframework.stereotype.Service;
import com.daqing.framework.domain.guarantee.DgAuditProcess;
import com.daqing.framework.domain.guarantee.po.DgTeamEfficiencyPO;
import java.text.SimpleDateFormat;
import java.util.*;
import com.daqing.framework.domain.guarantee.po.DgWorkConferencePO;
import com.daqing.framework.domain.guarantee.po.StatusPO;
import com.daqing.framework.model.response.PromptSuccess;
import com.daqing.framework.util.RedisUtil;
import com.google.common.collect.Maps;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @auther River
@ -30,9 +38,44 @@ public class DgEfficiencyServiceImpl extends ServiceImpl<DgEfficiencyMapper, DgA
@Autowired
private DgApplyAmountInfoController dgApplyAmountInfoController;
@Autowired
private DgApplyAmountInfoMapper applyAmountInfoMapper;
@Autowired
private DgAuditProcessMapper dgAuditProcessMapper;
@Autowired
private DgApplyAmountListMapper applyAmountListMapper;
@Autowired
private DgGuaranteeAssignUserMapper guaranteeAssignUserMapper;
@Autowired
private DgAssetsInvestigationMapper assetsInvestigationMapper;
@Autowired
private DgMessageInvestigationMapper messageInvestigationMapper;
@Autowired
private DgComplianceInvestigationMapper complianceInvestigationMapper;
@Autowired
private DgWorkConferenceConsiderMapper workConferenceConsiderMapper;
@Autowired
private DgLoanCommitteeConsiderMapper loanCommitteeConsiderMapper;
@Autowired
private DgGuaranteeLetterAssignUserMapper guaranteeLetterAssignUserMapper;
@Autowired
private DgPaymentConfirmationConsiderMapper paymentConfirmationConsiderMapper;
@Autowired
private DgLoanNoticeMapper loanNoticeMapper;
/**
* 团队效率
*/
@ -134,8 +177,10 @@ public class DgEfficiencyServiceImpl extends ServiceImpl<DgEfficiencyMapper, DgA
return hashMap;
}
}
/**
* 查询审批数目的值的数组
*
* @return
*/
@Override
@ -144,12 +189,373 @@ public class DgEfficiencyServiceImpl extends ServiceImpl<DgEfficiencyMapper, DgA
//String userId = dgApplyAmountInfoController.getUserId();
String userId = "5";
//近十天的日期数组
List<String>timeList = dgAuditProcessMapper.selectTenDays(Integer.parseInt(userId));
List<String> timeList = dgAuditProcessMapper.selectTenDays(Integer.parseInt(userId));
//近十天审批数目的值的数组
List<Integer>approvalList = dgAuditProcessMapper.selectApprovalNum(Integer.parseInt(userId));
List<Integer> approvalList = dgAuditProcessMapper.selectApprovalNum(Integer.parseInt(userId));
Map map = new HashMap();
map.put("timeArr",timeList);
map.put("approvalNumArr",approvalList);
map.put("timeArr", timeList);
map.put("approvalNumArr", approvalList);
return map;
}
@Override
public List<PersonalEfficiencyListResponse> queryPersonalEfficiencyList() {
int size = 100;
List<PersonalEfficiencyListResponse> efficiencyList = new ArrayList<>();
//获取当前登录用户id
int currentUser = Integer.parseInt(this.getUserId());
//获取当前用户拥有的角色ids
String roleIds = RedisUtil.get("dq:userRole:" + currentUser);
//字符串格式
List<String> roleIdList = new ArrayList<>();
if (roleIds != null) {
String[] ids = roleIds.split(",");
roleIdList = Arrays.asList(ids);
}
//数字格式
List<Integer> roleList = new ArrayList<>();
if (roleIds != null) {
String[] roleId = roleIds.split(",");
for (String id : roleId) {
roleList.add(Integer.parseInt(id));
}
}
//查询用户处理过的业务
QueryWrapper<DgAuditProcess> wrapper = new QueryWrapper<>();
wrapper.eq("user_id", currentUser).groupBy("business_id").select("business_id");
List<DgAuditProcess> auditProcessList = dgAuditProcessMapper.selectList(wrapper);
if (auditProcessList != null && auditProcessList.size() != 0) {
List<Integer> businessIdList = new ArrayList<>();
auditProcessList.forEach(dgAuditProcess -> {
businessIdList.add(dgAuditProcess.getBusinessId());
});
//根据业务id查询业务流程,统计耗时,完成时间
businessIdList.forEach(businessId -> {
//new返回对象
PersonalEfficiencyListResponse efficiencyListResponse = new PersonalEfficiencyListResponse();
efficiencyListResponse.setBusinessId(businessId);
//根据业务id查询业务
DgApplyAmountInfo dgApplyAmountInfo = applyAmountInfoMapper.selectById(businessId);
//业务申请日期
Date createTime = dgApplyAmountInfo.getCreateTime();
//客户公司id
Integer companyId = dgApplyAmountInfo.getCompanyId();
//提单人id
Integer presenterId = dgApplyAmountInfo.getPresenterId();
efficiencyListResponse.setApplicantId(presenterId);
efficiencyListResponse.setApplicationDate(new SimpleDateFormat("yyyy-MM-dd").format(createTime));
efficiencyListResponse.setClientName(String.valueOf(companyId));
//获取累计耗时,完成时间,任务节点
HashMap<String, Object> hashMap = getTime(businessId, currentUser);
Object countTime = hashMap.get("countTime");
Object endTime = hashMap.get("endTime");
efficiencyListResponse.setTimeConsuming(String.valueOf(countTime));
efficiencyListResponse.setCompleteTime(String.valueOf(endTime));
efficiencyList.add(efficiencyListResponse);
});
//获取每个业务id的三种状态
HashMap<Integer, Object> hashMap = Maps.newHashMap();
//角色不为空
//担保业务员角色、担保经理角色
if (roleIdList.contains(String.valueOf(PromptSuccess.DB_YWY_ID)) | roleIdList.contains(String.valueOf(PromptSuccess.DB_JL_ID))) {
//业务申请列表查询
IPage<BusinessApplicationListResponse> positionVO = applyAmountListMapper.pageByCondition(new Page(1, size), "", roleIdList, this.getUserId());
List<BusinessApplicationListResponse> records = positionVO.getRecords();
if (records!=null && records.size()!=0){
records.forEach(businessApplicationListResponse -> {
StatusPO statusPO = new StatusPO();
Integer businessId = businessApplicationListResponse.getBusinessId();
String name = businessApplicationListResponse.getName();
Integer status = businessApplicationListResponse.getStatus();
Integer operatingStatus = businessApplicationListResponse.getOperatingStatus();
Integer businessStatus = businessApplicationListResponse.getBusinessStatus();
statusPO.setBusinessStatus(businessStatus);
statusPO.setName(name);
statusPO.setOperatingStatus(operatingStatus);
statusPO.setProcessId(1);
statusPO.setStatus(status);
hashMap.put(businessId, statusPO);
});
}
}
//担保经理角色、担保A角角色、担保B角角色、担保领导角色
if (roleIdList.contains(String.valueOf(PromptSuccess.DB_JL_ID)) | roleIdList.contains(String.valueOf(PromptSuccess.DB_A_ID)) | roleIdList.contains(String.valueOf(PromptSuccess.DB_B_ID)) | roleIdList.contains(String.valueOf(PromptSuccess.DB_LD_ID))) {
// 担保部调查列表
IPage<GuaranteeListResponse> positionVO = guaranteeAssignUserMapper.pageByCondition(new Page(1, size), "", roleIdList, this.getUserId(), null);
List<GuaranteeListResponse> records = positionVO.getRecords();
if (records!=null && records.size()!=0) {
records.forEach(guaranteeListResponse -> {
StatusPO statusPO = new StatusPO();
Integer businessId = guaranteeListResponse.getBusinessId();
Integer status = guaranteeListResponse.getStatus();
String name = guaranteeListResponse.getName();
Integer operatingStatus = guaranteeListResponse.getOperatingStatus();
Integer businessStatus = guaranteeListResponse.getBusinessStatus();
statusPO.setBusinessStatus(businessStatus);
statusPO.setOperatingStatus(operatingStatus);
statusPO.setProcessId(2);
statusPO.setName(name);
statusPO.setStatus(status);
hashMap.put(businessId, statusPO);
});
}
}
//资产经理角色、资产专员角色、资产领导角色
if (roleIdList.contains(String.valueOf(PromptSuccess.ZC_JL_ID)) | roleIdList.contains(String.valueOf(PromptSuccess.ZC_ZY_ID)) | roleIdList.contains(String.valueOf(PromptSuccess.ZC_LD_ID))) {
// 资产部调查列表
IPage<AssetsInvestigationListResponse> positionVO = assetsInvestigationMapper.pageByCondition(new Page(1, size), "", roleIdList, this.getUserId(), null);
List<AssetsInvestigationListResponse> records = positionVO.getRecords();
if (records!=null && records.size()!=0) {
records.forEach(assetsInvestigationListResponse -> {
StatusPO statusPO = new StatusPO();
Integer businessId = assetsInvestigationListResponse.getBusinessId();
Integer status = assetsInvestigationListResponse.getStatus();
String name = assetsInvestigationListResponse.getName();
Integer operatingStatus = assetsInvestigationListResponse.getOperatingStatus();
Integer businessStatus = assetsInvestigationListResponse.getBusinessStatus();
statusPO.setBusinessStatus(businessStatus);
statusPO.setOperatingStatus(operatingStatus);
statusPO.setProcessId(3);
statusPO.setName(name);
statusPO.setStatus(status);
hashMap.put(businessId, statusPO);
});
}
}
//信息经理角色、信息专员角色、信息领导角色
if (roleIdList.contains(String.valueOf(PromptSuccess.XX_JL_ID)) | roleIdList.contains(String.valueOf(PromptSuccess.XX_ZY_ID)) | roleIdList.contains(String.valueOf(PromptSuccess.XX_LD_ID))) {
// 信息部调查列表
IPage<MessageInvestigationListResponse> positionVO = messageInvestigationMapper.pageByCondition(new Page(1, size), "", roleIdList, this.getUserId(), null);
List<MessageInvestigationListResponse> records = positionVO.getRecords();
if (records!=null && records.size()!=0) {
records.forEach(messageInvestigationListResponse -> {
StatusPO statusPO = new StatusPO();
Integer businessId = messageInvestigationListResponse.getBusinessId();
Integer status = messageInvestigationListResponse.getStatus();
String name = messageInvestigationListResponse.getName();
Integer operatingStatus = messageInvestigationListResponse.getOperatingStatus();
Integer businessStatus = messageInvestigationListResponse.getBusinessStatus();
statusPO.setBusinessStatus(businessStatus);
statusPO.setOperatingStatus(operatingStatus);
statusPO.setProcessId(4);
statusPO.setName(name);
statusPO.setStatus(status);
hashMap.put(businessId, statusPO);
});
}
}
//担保部A/B角、法规经理角色、法规部C角、法规部分管领导
if (roleIdList.contains(String.valueOf(PromptSuccess.DB_A_ID))|roleIdList.contains(String.valueOf(PromptSuccess.DB_B_ID))|roleIdList.contains(String.valueOf(PromptSuccess.FG_JL_ID))|roleIdList.contains(String.valueOf(PromptSuccess.FG_C_ID))|roleIdList.contains(String.valueOf(PromptSuccess.FG_LD_ID))) {
// 合规调查列表
DgComplianceInvestigationRequest dgComplianceInvestigationRequest = new DgComplianceInvestigationRequest();
IPage<DgComplianceInvestigationResponse> list = complianceInvestigationMapper.list(new Page(1, size), dgComplianceInvestigationRequest, roleList, currentUser);
List<DgComplianceInvestigationResponse> records = list.getRecords();
if (records!=null && records.size()!=0) {
records.forEach(dgComplianceInvestigationResponse -> {
StatusPO statusPO = new StatusPO();
Integer businessId = dgComplianceInvestigationResponse.getBusinessId();
String name = dgComplianceInvestigationResponse.getName();
Integer status = dgComplianceInvestigationResponse.getAuditStatus();
Integer operatingStatus = dgComplianceInvestigationResponse.getOperationStatus();
Integer businessStatus = dgComplianceInvestigationResponse.getBusinessStatus();
statusPO.setBusinessStatus(businessStatus);
statusPO.setOperatingStatus(operatingStatus);
statusPO.setProcessId(5);
statusPO.setName(name);
statusPO.setStatus(status);
hashMap.put(businessId, statusPO);
});
}
}
//工作会
if (roleIdList.contains(String.valueOf(PromptSuccess.GZU_ID))) {
IPage<DgWorkConferencePO> list = workConferenceConsiderMapper.list(new Page(1, size), "", roleList, currentUser);
List<DgWorkConferencePO> records = list.getRecords();
if (records!=null && records.size()!=0) {
records.forEach(dgWorkConferencePO -> {
StatusPO statusPO = new StatusPO();
Integer businessId = dgWorkConferencePO.getBusinessId();
String name = dgWorkConferencePO.getName();
Integer status = dgWorkConferencePO.getAuditStatus();
Integer operatingStatus = dgWorkConferencePO.getOperationStatus();
Integer businessStatus = dgWorkConferencePO.getBusinessStatus();
statusPO.setBusinessStatus(businessStatus);
statusPO.setOperatingStatus(operatingStatus);
statusPO.setProcessId(6);
statusPO.setName(name);
statusPO.setStatus(status);
hashMap.put(businessId, statusPO);
});
}
}
//担保部A/B角、贷审会
if (roleIdList.contains(String.valueOf(PromptSuccess.DB_A_ID))|roleIdList.contains(String.valueOf(PromptSuccess.DB_B_ID))|roleIdList.contains(String.valueOf(PromptSuccess.DSH_ID))) {
IPage<DgLoanCommitteeConsiderResponse> list = loanCommitteeConsiderMapper.list(new Page(1, size), "", roleList, currentUser);
List<DgLoanCommitteeConsiderResponse> records = list.getRecords();
if (records!=null && records.size()!=0) {
records.forEach(dgLoanCommitteeConsiderResponse -> {
StatusPO statusPO = new StatusPO();
Integer businessId = dgLoanCommitteeConsiderResponse.getBusinessId();
Integer status = dgLoanCommitteeConsiderResponse.getStatus();
String name = dgLoanCommitteeConsiderResponse.getName();
Integer operatingStatus = dgLoanCommitteeConsiderResponse.getOperatingStatus();
Integer businessStatus = dgLoanCommitteeConsiderResponse.getBusinessStatus();
statusPO.setBusinessStatus(businessStatus);
statusPO.setOperatingStatus(operatingStatus);
statusPO.setProcessId(7);
statusPO.setName(name);
statusPO.setStatus(status);
hashMap.put(businessId, statusPO);
});
}
}
//法规经理、担保部A/B角、资产部经理
if (roleIdList.contains(String.valueOf(PromptSuccess.FG_JL_ID))|roleIdList.contains(String.valueOf(PromptSuccess.DB_A_ID))|roleIdList.contains(String.valueOf(PromptSuccess.DB_B_ID))|roleIdList.contains(String.valueOf(PromptSuccess.ZC_JL_ID)) ) {
//担保函
IPage<GuaranteeLetterListResponse> iPage = guaranteeLetterAssignUserMapper.pageByCondition(new Page(1, size), currentUser, roleIdList, null, null);
List<GuaranteeLetterListResponse> records = iPage.getRecords();
if (records!=null && records.size()!=0) {
records.forEach(guaranteeLetterListResponse -> {
StatusPO statusPO = new StatusPO();
String name = guaranteeLetterListResponse.getName();
Integer businessId = guaranteeLetterListResponse.getBusinessId();
Integer status = guaranteeLetterListResponse.getStatus();
Integer operatingStatus = guaranteeLetterListResponse.getOperatingStatus();
Integer businessStatus = guaranteeLetterListResponse.getBusinessStatus();
statusPO.setBusinessStatus(businessStatus);
statusPO.setOperatingStatus(operatingStatus);
statusPO.setProcessId(8);
statusPO.setName(name);
statusPO.setStatus(status);
hashMap.put(businessId, statusPO);
});
}
}
//财务部、法规经理
if (roleIdList.contains(String.valueOf(PromptSuccess.CWB_ID))|roleIdList.contains(String.valueOf(PromptSuccess.FG_JL_ID))) {
//回款确认
IPage<PaymentConfirmationListResponse> iPage = paymentConfirmationConsiderMapper.pageByCondition(new Page(1, size), roleIdList, currentUser, null, null);
List<PaymentConfirmationListResponse> records = iPage.getRecords();
if (records!=null && records.size()!=0) {
records.forEach(paymentConfirmationListResponse -> {
StatusPO statusPO = new StatusPO();
String name = paymentConfirmationListResponse.getName();
Integer businessId = paymentConfirmationListResponse.getBusinessId();
Integer status = paymentConfirmationListResponse.getStatus();
Integer operatingStatus = paymentConfirmationListResponse.getOperatingStatus();
Integer businessStatus = paymentConfirmationListResponse.getBusinessStatus();
statusPO.setBusinessStatus(businessStatus);
statusPO.setOperatingStatus(operatingStatus);
statusPO.setProcessId(9);
statusPO.setName(name);
statusPO.setStatus(status);
hashMap.put(businessId, statusPO);
});
}
}
//法规经理
if (roleIdList.contains(String.valueOf(PromptSuccess.FG_JL_ID))) {
//放款通知
IPage<LoanNoticeListResponse> iPage = loanNoticeMapper.pageByCondition(new Page(1, size), roleIdList, currentUser, null, null);
List<LoanNoticeListResponse> records = iPage.getRecords();
if (records!=null && records.size()!=0) {
records.forEach(loanNoticeListResponse -> {
StatusPO statusPO = new StatusPO();
String name = loanNoticeListResponse.getName();
Integer businessId = loanNoticeListResponse.getBusinessId();
Integer status = loanNoticeListResponse.getStatus();
Integer operatingStatus = loanNoticeListResponse.getOperatingStatus();
Integer businessStatus = loanNoticeListResponse.getBusinessStatus();
statusPO.setBusinessStatus(businessStatus);
statusPO.setOperatingStatus(operatingStatus);
statusPO.setProcessId(10);
statusPO.setName(name);
statusPO.setStatus(status);
hashMap.put(businessId, statusPO);
});
}
}
//再次循环,拼接数据
efficiencyList.forEach(personalEfficiencyListResponse -> {
Integer businessId = personalEfficiencyListResponse.getBusinessId();
Object o = hashMap.get(businessId);
//有数据
if (ObjectUtil.isNotNull(o)){
//强制转换
if (o instanceof StatusPO){
StatusPO statusPO = (StatusPO)o;
String name = statusPO.getName();
Integer operatingStatus = statusPO.getOperatingStatus();
Integer processId = statusPO.getProcessId();
Integer status = statusPO.getStatus();
Integer businessStatus = statusPO.getBusinessStatus();
personalEfficiencyListResponse.setTaskNode(processId);
personalEfficiencyListResponse.setBusinessStatus(businessStatus);
personalEfficiencyListResponse.setOperatingStatus(operatingStatus);
personalEfficiencyListResponse.setApproveStatus(status);
personalEfficiencyListResponse.setClientName(name);
}
}
String timeConsuming = personalEfficiencyListResponse.getTimeConsuming();
String totalTimeConsuming = countTime(timeConsuming);
personalEfficiencyListResponse.setTimeConsuming(totalTimeConsuming);
});
}
return efficiencyList;
}
//根据业务id和用户id统计耗时
private HashMap<String, Object> getTime(Integer businessId, Integer userId) {
HashMap<String, Object> hashMap = Maps.newHashMap();
//根据业务id查询业务流程表
QueryWrapper<DgAuditProcess> wrapper = new QueryWrapper<>();
wrapper.eq("business_id", businessId).orderByAsc("create_time");
List<DgAuditProcess> auditProcessList = dgAuditProcessMapper.selectList(wrapper);
long countTime = 0L;
if (auditProcessList.size()>1){
//遍历业务流程数据,统计该用户的耗时
for (int i = 1; i <= auditProcessList.size() - 1; i++) {
//从第二条数据开始,获取该数据
DgAuditProcess auditProcess = auditProcessList.get(i);
//该数据是当前用户处理的
if (auditProcess.getUserId().equals(userId)) {
//获取上一流程的时间节点
DgAuditProcess previousProcess = auditProcessList.get(i - 1);
Date previousTime = previousProcess.getCreateTime();
Date currentTime = auditProcess.getCreateTime();
long currentTimeTime = currentTime.getTime();
long previousTimeTime = previousTime.getTime();
//累计耗时,毫秒
countTime = currentTimeTime - previousTimeTime;
}
}
}
//查询结束时间
QueryWrapper<DgAuditProcess> wrapperTime = new QueryWrapper<>();
wrapperTime.eq("business_id", businessId).eq("user_id", userId).orderByDesc("create_time").last("limit 1");
DgAuditProcess auditProcess = dgAuditProcessMapper.selectOne(wrapperTime);
Date endTime = auditProcess.getCreateTime();
hashMap.put("countTime", countTime);
hashMap.put("endTime", new SimpleDateFormat("yyyy-MM-dd").format(endTime));
return hashMap;
}
public static String countTime(String totalTime) {
long time = Long.parseLong(totalTime);
long days = time/ (1000 * 60 * 60 * 24);
long hours = (time% (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
long minutes = (time% (1000 * 60 * 60)) / (1000 * 60);
long seconds = (time% (1000 * 60)) / 1000;
return days + "天" + hours + "小时"+ minutes +"分钟";
}
/**
* 获取当前登录用户信息
*/
private String getUserId() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
return RedisUtil.get("dq:token:" + token);
}
}

@ -0,0 +1,31 @@
package com.daqing.framework.domain.guarantee.po;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
/**
* @Author chen
* @DATE 2020/12/30 9:45
* @Version 1.0
*/
@Data
@ToString
public class StatusPO {
@ApiModelProperty("客户名称")
private String name;
@ApiModelProperty("进程id")
private Integer processId;
@ApiModelProperty("审核状态")
private Integer status;
@ApiModelProperty("业务状态")
private Integer businessStatus;
@ApiModelProperty("操作状态")
private Integer operatingStatus;
}

@ -0,0 +1,87 @@
package com.daqing.framework.utils.excel;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
/**
* @Author chen
* @DATE 2020/12/30 15:26
* @Version 1.0
* 任务节点转换器
*/
public class TaskNodeConverter implements Converter<Integer> {
@Override
public Class supportJavaTypeKey() {
return Integer.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
/**
* 这里读的时候会调用
*
* @param cellData
* NotNull
* @param contentProperty
* Nullable
* @param globalConfiguration
* NotNull
* @return
*/
@Override
public Integer convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
return 0;
}
/**
* 这里是写的时候会调用
*
* @param value
* NotNull
* @param contentProperty
* Nullable
* @param globalConfiguration
* NotNull
* @return
*/
@Override
public CellData convertToExcelData(Integer value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
switch (value){
case 1:
return new CellData("业务申请");
case 2:
return new CellData("担保部调查");
case 3:
return new CellData("资产部调查");
case 4:
return new CellData("信息部调查");
case 5:
return new CellData("合规调查");
case 6:
return new CellData("工作会");
case 7:
return new CellData("贷审会");
case 8:
return new CellData("担保函");
case 9:
return new CellData("回款确认");
case 10:
return new CellData("放款通知");
default:
return new CellData(String.valueOf(value));
}
}
}
Loading…
Cancel
Save