|
|
@ -1,23 +1,28 @@ |
|
|
|
package com.epmet.service.impl; |
|
|
|
|
|
|
|
import com.alibaba.excel.EasyExcel; |
|
|
|
import com.alibaba.excel.ExcelWriter; |
|
|
|
import com.alibaba.excel.write.metadata.WriteSheet; |
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg; |
|
|
|
import com.epmet.commons.tools.constant.AppClientConstant; |
|
|
|
import com.epmet.commons.tools.constant.NumConstant; |
|
|
|
import com.epmet.commons.tools.constant.StrConstant; |
|
|
|
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; |
|
|
|
import com.epmet.commons.tools.enums.OrgTypeEnum; |
|
|
|
import com.epmet.commons.tools.exception.EpmetErrorCode; |
|
|
|
import com.epmet.commons.tools.exception.EpmetException; |
|
|
|
import com.epmet.commons.tools.exception.ExceptionUtils; |
|
|
|
import com.epmet.commons.tools.exception.RenException; |
|
|
|
import com.epmet.commons.tools.page.PageData; |
|
|
|
import com.epmet.commons.tools.redis.common.CustomerStaffRedis; |
|
|
|
import com.epmet.commons.tools.scan.param.TextScanParamDTO; |
|
|
|
import com.epmet.commons.tools.scan.param.TextTaskDTO; |
|
|
|
import com.epmet.commons.tools.scan.result.SyncScanResult; |
|
|
|
import com.epmet.commons.tools.security.dto.TokenDto; |
|
|
|
import com.epmet.commons.tools.security.user.LoginUserUtil; |
|
|
|
import com.epmet.commons.tools.utils.ConvertUtils; |
|
|
|
import com.epmet.commons.tools.utils.IpUtils; |
|
|
|
import com.epmet.commons.tools.utils.Result; |
|
|
|
import com.epmet.commons.tools.utils.ScanContentUtils; |
|
|
|
import com.epmet.commons.tools.utils.*; |
|
|
|
import com.epmet.constant.*; |
|
|
|
import com.epmet.dao.ProjectOrgRelationDao; |
|
|
|
import com.epmet.dao.ProjectProcessAttachmentDao; |
|
|
@ -29,22 +34,24 @@ import com.epmet.dto.ProjectStaffDTO; |
|
|
|
import com.epmet.dto.form.*; |
|
|
|
import com.epmet.dto.result.*; |
|
|
|
import com.epmet.entity.*; |
|
|
|
import com.epmet.excel.ApprovaledListExcel; |
|
|
|
import com.epmet.feign.*; |
|
|
|
import com.epmet.send.SendMqMsgUtil; |
|
|
|
import com.epmet.service.*; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.apache.commons.collections4.CollectionUtils; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.apache.logging.log4j.LogManager; |
|
|
|
import org.apache.logging.log4j.Logger; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.util.CollectionUtils; |
|
|
|
import org.springframework.util.StringUtils; |
|
|
|
import org.springframework.web.context.request.RequestContextHolder; |
|
|
|
import org.springframework.web.context.request.ServletRequestAttributes; |
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
@ -882,6 +889,85 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS |
|
|
|
return resultDTO; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 【网格员工作统计】项目列表 |
|
|
|
* |
|
|
|
* @param formDTO |
|
|
|
* @Param formDTO |
|
|
|
* @Return {@link PageData < ApprovaledListResultDTO>} |
|
|
|
* @Author zhaoqifeng |
|
|
|
* @Date 2022/1/4 15:33 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public PageData<ApprovaledListResultDTO> approvaledList(ApprovaledListFromDTO formDTO) { |
|
|
|
//获取项目列表
|
|
|
|
PageData<ApprovaledListResultDTO> result = projectService.approvaledList(formDTO); |
|
|
|
//获取项目分类
|
|
|
|
Result<Map<String, String>> categoryMapResult = govIssueOpenFeignClient.getCategoryMap(formDTO.getCustomerId()); |
|
|
|
if (!categoryMapResult.success()) { |
|
|
|
throw new EpmetException(categoryMapResult.getCode(),categoryMapResult.getMsg()); |
|
|
|
} |
|
|
|
Map<String, String> categoryMap = categoryMapResult.getData(); |
|
|
|
if(CollectionUtils.isNotEmpty(result.getList())) { |
|
|
|
List<String> projectIds = result.getList().stream().map(ApprovaledListResultDTO::getProjectId).collect(Collectors.toList()); |
|
|
|
Map<String, Set<String>> projectCategory = projectCategoryService.getProjectCategoryMap(projectIds); |
|
|
|
result.getList().forEach(item -> { |
|
|
|
//工作人员姓名
|
|
|
|
CustomerStaffInfoCacheResult staff = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), item.getStaffId()); |
|
|
|
item.setStaffName(staff.getRealName()); |
|
|
|
//项目分类
|
|
|
|
Set<String> categoryList = projectCategory.get(item.getProjectId()); |
|
|
|
if (null != categoryList) { |
|
|
|
List<String> categoryNames = new ArrayList<>(); |
|
|
|
categoryList.forEach(category -> { |
|
|
|
if (StringUtils.isNotBlank(categoryMap.get(category))) { |
|
|
|
categoryNames.add(categoryMap.get(category)); |
|
|
|
} |
|
|
|
} ); |
|
|
|
item.setProjectCategory(StringUtils.join(categoryNames.toArray(), StrConstant.SEMICOLON)); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 【网格员工作统计】项目列表导出 |
|
|
|
* |
|
|
|
* @param formDTO |
|
|
|
* @Param formDTO |
|
|
|
* @Return {@link PageData< ApprovaledListResultDTO>} |
|
|
|
* @Author zhaoqifeng |
|
|
|
* @Date 2022/1/4 15:33 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void approvaledListExport(HttpServletResponse response, ApprovaledListFromDTO formDTO) { |
|
|
|
formDTO.setPageNo(NumConstant.ONE); |
|
|
|
formDTO.setPageSize(NumConstant.ONE_THOUSAND); |
|
|
|
ExcelWriter excelWriter = null; |
|
|
|
try { |
|
|
|
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("直接立项记录.xlsx", response)).build(); |
|
|
|
WriteSheet writeSheet = EasyExcel.writerSheet().build(); |
|
|
|
writeSheet.setClazz(ApprovaledListExcel.class); |
|
|
|
Integer num; |
|
|
|
//一千条一循环分批写入
|
|
|
|
do { |
|
|
|
List<ApprovaledListResultDTO> list = approvaledList(formDTO).getList(); |
|
|
|
List<ApprovaledListExcel> data = ConvertUtils.sourceToTarget(list, ApprovaledListExcel.class); |
|
|
|
excelWriter.write(data, writeSheet); |
|
|
|
num = data.size(); |
|
|
|
formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); |
|
|
|
} while (num > NumConstant.ZERO && num.compareTo(formDTO.getPageSize()) == NumConstant.ZERO); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} finally { |
|
|
|
if (excelWriter != null) { |
|
|
|
excelWriter.finish(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private List<StaffListResultDTO> queryStaffListRes(List<TickStaffFormDTO> staffList,String currentUserId) { |
|
|
|
List<String> staffIdList = staffList.stream().map(TickStaffFormDTO::getStaffId).collect(Collectors.toList()); |
|
|
|
staffIdList.add(currentUserId); |
|
|
|