|
@@ -502,10 +502,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
int finalI = i;
|
|
|
double sumDay=0;
|
|
|
sumDay = dataDetailList.stream().filter(
|
|
|
- d -> d.get("id").toString().equals(objectMap.get("id").toString())
|
|
|
- &&d.get("dayOnly")!=null
|
|
|
- && d.get("dayOnly").toString().equals("" + finalI)
|
|
|
- && d.get("userId").toString().equals(objectMap.get("userId").toString())
|
|
|
+ d -> d.get("id").toString().equals(objectMap.get("id").toString())
|
|
|
+ &&d.get("dayOnly")!=null
|
|
|
+ && d.get("dayOnly").toString().equals("" + finalI)
|
|
|
+ && d.get("userId").toString().equals(objectMap.get("userId").toString())
|
|
|
)
|
|
|
.mapToDouble(d -> Double.parseDouble(d.get("cost").toString())) // 映射到 cost
|
|
|
.sum();
|
|
@@ -587,8 +587,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
for (int i = 2; i <= daysInMonth; i++) {
|
|
|
headsecondList.add("");
|
|
|
}
|
|
|
+ headsecondList.add("项目工时分配");
|
|
|
if (!allProjectNew.isEmpty()){
|
|
|
- headsecondList.add("项目工时分配");
|
|
|
for (int i = 1; i <= allProjectNew.size()-1; i++) {
|
|
|
headsecondList.add("");
|
|
|
}
|
|
@@ -607,6 +607,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
for (Map<String, Object> map : allProjectNew) {
|
|
|
headsecondList_new.add(map.get("projectName")==null?"":map.get("projectName").toString());
|
|
|
}
|
|
|
+ }else {
|
|
|
+ headsecondList_new.add("");
|
|
|
}
|
|
|
secondList.add(headsecondList_new);
|
|
|
|
|
@@ -630,18 +632,23 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
row.add(sum+"");
|
|
|
}
|
|
|
}
|
|
|
- for (Map<String, Object> objectMap : allProjectNew) {
|
|
|
- double sum=0;
|
|
|
- sum = costTimeByUserForDay.stream().filter(c -> c.get("projectId").toString().equals(objectMap.get("projectId").toString())
|
|
|
- && c.get("userId").toString().equals(map.get("userId").toString()))
|
|
|
- .mapToDouble(d -> Double.parseDouble(d.get("cost").toString()))
|
|
|
- .sum();
|
|
|
- if (sum==0){
|
|
|
- row.add("");
|
|
|
- }else {
|
|
|
- row.add(sum+"");
|
|
|
+ if (!allProjectNew.isEmpty()){
|
|
|
+ for (Map<String, Object> objectMap : allProjectNew) {
|
|
|
+ double sum=0;
|
|
|
+ sum = costTimeByUserForDay.stream().filter(c -> c.get("projectId").toString().equals(objectMap.get("projectId").toString())
|
|
|
+ && c.get("userId").toString().equals(map.get("userId").toString()))
|
|
|
+ .mapToDouble(d -> Double.parseDouble(d.get("cost").toString()))
|
|
|
+ .sum();
|
|
|
+ if (sum==0){
|
|
|
+ row.add("");
|
|
|
+ }else {
|
|
|
+ row.add(sum+"");
|
|
|
+ }
|
|
|
}
|
|
|
+ }else {
|
|
|
+ row.add("");
|
|
|
}
|
|
|
+
|
|
|
secondList.add(row);
|
|
|
}
|
|
|
}
|
|
@@ -1039,10 +1046,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
projectVO.setProviderInfoList(mapList);
|
|
|
}
|
|
|
if(companyId==936){
|
|
|
- Optional<ProjectSeparate> first1 = projectSeparateList.stream().filter(ps -> ps.getId().equals(project.getId())).findFirst();
|
|
|
- if(first1.isPresent()){
|
|
|
- projectVO.setProjectSeparate(first1.get());
|
|
|
- }
|
|
|
+ Optional<ProjectSeparate> first1 = projectSeparateList.stream().filter(ps -> ps.getId().equals(project.getId())).findFirst();
|
|
|
+ if(first1.isPresent()){
|
|
|
+ projectVO.setProjectSeparate(first1.get());
|
|
|
+ }
|
|
|
}
|
|
|
//工程专业版:计算当前项目的总进度
|
|
|
if (company.getPackageEngineering() == 1) {
|
|
@@ -2132,7 +2139,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
//导出查询者所在公司每个项目的工时成本,包括项目人员明细统计
|
|
|
@Override
|
|
|
public HttpRespMsg exportTimeCost(Integer withMainProject, String exportContent,String startDate, String endDate,Integer projectId, String userIds,
|
|
|
- Boolean projectSum,Integer type,Integer deptId, Integer stateKey, Integer withPercent,Integer projectCategoryId, HttpServletRequest request) {
|
|
|
+ Boolean projectSum,Integer type,Integer deptId, Integer stateKey, Integer withPercent,Integer projectCategoryId, HttpServletRequest request) {
|
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
try {
|
|
|
User targetUser = userMapper.selectById(request.getHeader("Token"));
|
|
@@ -2792,7 +2799,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
ProjectSeparate projectSeparate = projectSeparateMapper.selectById(id);
|
|
|
project.setProjectSeparate(projectSeparate);
|
|
|
}
|
|
|
- //判断当前用户是否是这个项目所属BU的直接或者上级部门负责人(主要或其他负责人)
|
|
|
+ //判断当前用户是否是这个项目所属BU的直接或者上级部门负责人(主要或其他负责人)
|
|
|
String deptCascade = project.getDeptCascade();
|
|
|
if (!StringUtils.isEmpty(deptCascade)) {
|
|
|
if (user.getManageDeptId() > 0) {
|
|
@@ -2817,7 +2824,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- List<ProjectCustom> proCustomList = projectCustomMapper.selectList(new QueryWrapper<ProjectCustom>().eq("company_id", companyId));
|
|
|
+ List<ProjectCustom> proCustomList = projectCustomMapper.selectList(new QueryWrapper<ProjectCustom>().eq("company_id", companyId));
|
|
|
//按顺序存储项目自定义字段 对应plate
|
|
|
HashMap map=new HashMap();
|
|
|
for(int i=0;i<proCustomList.size();i++){
|
|
@@ -2876,7 +2883,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}
|
|
|
}
|
|
|
project.setPlateMap(map);
|
|
|
- HttpRespMsg msg = new HttpRespMsg();
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
msg.data = project;
|
|
|
return msg;
|
|
|
}
|
|
@@ -2898,11 +2905,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
project.setEstimatedWorkTime(format);
|
|
|
//todo:计算剩余工时
|
|
|
List<Report> reportList;
|
|
|
- if(project.getManDayStartDate()!=null){
|
|
|
- reportList = reportMapper.selectList(new QueryWrapper<Report>().eq("project_id", project.getId()).gt("create_date",project.getManDayStartDate()).and(wrapper -> wrapper.eq("state", 0).or().eq("state", 1).or().eq("state", 3)));
|
|
|
- }else {
|
|
|
- reportList = reportMapper.selectList(new QueryWrapper<Report>().eq("project_id", project.getId()).and(wrapper -> wrapper.eq("state", 0).or().eq("state", 1).or().eq("state", 3)));
|
|
|
- }
|
|
|
+ if(project.getManDayStartDate()!=null){
|
|
|
+ reportList = reportMapper.selectList(new QueryWrapper<Report>().eq("project_id", project.getId()).gt("create_date",project.getManDayStartDate()).and(wrapper -> wrapper.eq("state", 0).or().eq("state", 1).or().eq("state", 3)));
|
|
|
+ }else {
|
|
|
+ reportList = reportMapper.selectList(new QueryWrapper<Report>().eq("project_id", project.getId()).and(wrapper -> wrapper.eq("state", 0).or().eq("state", 1).or().eq("state", 3)));
|
|
|
+ }
|
|
|
//已发送工时
|
|
|
double sum = reportList.stream().mapToDouble(Report::getWorkingTime).sum();
|
|
|
bigDecimal=bigDecimal.subtract(new BigDecimal(sum));
|
|
@@ -4069,8 +4076,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
parent.text=department.getDepartmentName();
|
|
|
parent.type="";
|
|
|
if(department.getSuperiorId()!=null){
|
|
|
- parent.parent=String.valueOf(department.getSuperiorId());
|
|
|
- parent.type="milestone";
|
|
|
+ parent.parent=String.valueOf(department.getSuperiorId());
|
|
|
+ parent.type="milestone";
|
|
|
}
|
|
|
Set set=new HashSet();
|
|
|
if(set.add(parent.id)){
|
|
@@ -4465,8 +4472,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
List<Integer> inchagerIds=null;
|
|
|
if(functionAllList.size()==0){
|
|
|
if(functionInchargeList.size()>0){
|
|
|
- record = projectMapper.selectWithStage(companyId, null, null, null,user.getId(),startDate,endDate);
|
|
|
- allStageCostList = projectMapper.selectStageSum(projectIds,projectId,user.getId(),startDate,endDate);
|
|
|
+ record = projectMapper.selectWithStage(companyId, null, null, null,user.getId(),startDate,endDate);
|
|
|
+ allStageCostList = projectMapper.selectStageSum(projectIds,projectId,user.getId(),startDate,endDate);
|
|
|
}
|
|
|
}
|
|
|
//获取全部的列
|
|
@@ -6195,7 +6202,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
case "全部":
|
|
|
case "whole":
|
|
|
project.setStatus(0);
|
|
|
- break;
|
|
|
+ break;
|
|
|
case "进行中":
|
|
|
case "on going":
|
|
|
project.setStatus(1);
|
|
@@ -6371,18 +6378,18 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
//兼容中英文逗号
|
|
|
String mainName = mainNameCell.getStringCellValue();
|
|
|
if (mainName != null) {
|
|
|
- if (!StringUtils.isEmpty(mainName)) {
|
|
|
- Optional<ProjectMain> first = projectMainList.stream().filter(pm -> pm.getName().equals(mainName)).findFirst();
|
|
|
- if(first.isPresent()){
|
|
|
- project.setProjectMainId(first.get().getId());
|
|
|
- project.setCategory(first.get().getCategoryId());
|
|
|
- project.setCategoryName(first.get().getCategoryName());
|
|
|
- }else {
|
|
|
- //msg.setError("主项目["+mainName+"]不存在");
|
|
|
- msg.setError(MessageUtils.message("project.masterProjectNull",mainName));
|
|
|
- return msg;
|
|
|
- }
|
|
|
+ if (!StringUtils.isEmpty(mainName)) {
|
|
|
+ Optional<ProjectMain> first = projectMainList.stream().filter(pm -> pm.getName().equals(mainName)).findFirst();
|
|
|
+ if(first.isPresent()){
|
|
|
+ project.setProjectMainId(first.get().getId());
|
|
|
+ project.setCategory(first.get().getCategoryId());
|
|
|
+ project.setCategoryName(first.get().getCategoryName());
|
|
|
+ }else {
|
|
|
+ //msg.setError("主项目["+mainName+"]不存在");
|
|
|
+ msg.setError(MessageUtils.message("project.masterProjectNull",mainName));
|
|
|
+ return msg;
|
|
|
}
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -6425,7 +6432,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
projectSeparate.setProjectCategorySub(projectCategorySubCell.getStringCellValue());
|
|
|
}
|
|
|
if(exists&&check){
|
|
|
- projectSeparateMapper.updateById(projectSeparate);
|
|
|
+ projectSeparateMapper.updateById(projectSeparate);
|
|
|
List<ProjectKeyNodes> nodes = projectKeyNodesMapper.selectList(new QueryWrapper<ProjectKeyNodes>().eq("project_id", id));
|
|
|
for (int x = 0; x < projectKeyNodesSettingList.size(); x++) {
|
|
|
ProjectKeyNodesSetting projectKeyNodesSetting = projectKeyNodesSettingList.get(x);
|
|
@@ -6792,7 +6799,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
for (String str : partSplit) {
|
|
|
String s1;
|
|
|
if(str.startsWith("/")){
|
|
|
- s1=str.substring(1,str.length());
|
|
|
+ s1=str.substring(1,str.length());
|
|
|
}else s1=str;
|
|
|
String s2;
|
|
|
if(s1.endsWith("/")){
|
|
@@ -7616,11 +7623,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
if (inchargerId!=null&&!inchargerId.equals("")) {
|
|
|
Optional<User> incharger = userList.stream().filter(u -> u.getId().equals(inchargerId)).findFirst();
|
|
|
if(incharger.isPresent()){
|
|
|
- if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
- item.add("$userName="+incharger.get().getCorpwxUserid()+"$");
|
|
|
- }else if(dingding!=null&&dingding.getContactNeedTranslate()==1) {
|
|
|
- item.add("$userName="+incharger.get().getDingdingUserid()+"$");
|
|
|
- }
|
|
|
+ if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
|
|
|
+ item.add("$userName="+incharger.get().getCorpwxUserid()+"$");
|
|
|
+ }else if(dingding!=null&&dingding.getContactNeedTranslate()==1) {
|
|
|
+ item.add("$userName="+incharger.get().getDingdingUserid()+"$");
|
|
|
+ }
|
|
|
}else {
|
|
|
item.add("");
|
|
|
}
|
|
@@ -8895,7 +8902,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
long total = list.size();
|
|
|
List<Map<String, Object>> resultList = null;
|
|
|
if (pageIndex!=null && pageSize!=null){
|
|
|
- resultList = list.stream().skip((pageIndex - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
|
|
|
+ resultList = list.stream().skip((pageIndex - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
|
|
|
}else {
|
|
|
resultList = list;
|
|
|
}
|
|
@@ -9223,10 +9230,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
//根据设置
|
|
|
switch (timeliness){
|
|
|
case 1:createDate=createDate.plusDays(1);
|
|
|
- while(!WorkDayCalculateUtils.isWorkDay(createDate)){
|
|
|
- createDate=createDate.plusDays(1);
|
|
|
- }
|
|
|
- break;
|
|
|
+ while(!WorkDayCalculateUtils.isWorkDay(createDate)){
|
|
|
+ createDate=createDate.plusDays(1);
|
|
|
+ }
|
|
|
+ break;
|
|
|
case 2:
|
|
|
Integer a=0;
|
|
|
while(a!=2){
|
|
@@ -9235,7 +9242,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
a++;
|
|
|
}
|
|
|
}
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
if(createTimeDate.isBefore(createDate)||createTimeDate.isEqual(createDate)){
|
|
|
num++;
|
|
@@ -9250,7 +9257,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
BigDecimal divide;
|
|
|
BigDecimal divideWithLeave;
|
|
|
if(days!=0){
|
|
|
- divide = bigDecimal.divide(BigDecimal.valueOf(days), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ divide = bigDecimal.divide(BigDecimal.valueOf(days), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
}else if(days==0){
|
|
|
divide=new BigDecimal(1);
|
|
|
//查看当天有请假直接算100%
|
|
@@ -9507,11 +9514,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}
|
|
|
OperationRecord operationRecord=new OperationRecord();
|
|
|
operationRecord.setModuleName("项目管理")
|
|
|
- .setOperatorName(user.getName())
|
|
|
- .setProjectName(project.getProjectName())
|
|
|
- .setCompanyId(user.getCompanyId())
|
|
|
- .setOperationTime(LocalDateTime.now())
|
|
|
- .setContent("批量添加项目参与人");
|
|
|
+ .setOperatorName(user.getName())
|
|
|
+ .setProjectName(project.getProjectName())
|
|
|
+ .setCompanyId(user.getCompanyId())
|
|
|
+ .setOperationTime(LocalDateTime.now())
|
|
|
+ .setContent("批量添加项目参与人");
|
|
|
operationRecordService.save(operationRecord);
|
|
|
}
|
|
|
participationService.saveBatch(list);
|
|
@@ -9536,7 +9543,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
return new HttpRespMsg();
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
+ @Override
|
|
|
public HttpRespMsg getUserWorkingTimeStatic(String startDate, String endDate, Integer pageIndex, Integer pageSize, HttpServletRequest request,String userId,Integer departmentId) {
|
|
|
HttpRespMsg httpRespMsg =new HttpRespMsg();
|
|
|
DecimalFormat dft = new DecimalFormat("0%");
|
|
@@ -9650,7 +9657,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
|
|
|
|
|
|
|
|
|
- @Override
|
|
|
+ @Override
|
|
|
public HttpRespMsg batchDeleteProject(String projectIdArray, HttpServletRequest request) {
|
|
|
String token = request.getHeader("TOKEN");
|
|
|
User user = userMapper.selectById(token);
|
|
@@ -10448,44 +10455,44 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
//msg.data = "成功导入" + importCount + "条数据。";
|
|
|
msg.data = MessageUtils.message("data.importSucRow",importCount);
|
|
|
}catch(IOException e){
|
|
|
- e.printStackTrace();
|
|
|
- //msg.setError("文件处理出错");
|
|
|
- msg.setError(MessageUtils.message("file.error"));
|
|
|
- return msg;
|
|
|
- } catch(NullPointerException e){
|
|
|
- e.printStackTrace();
|
|
|
- //msg.setError("数据格式有误或存在空数据 导入失败");
|
|
|
- msg.setError(MessageUtils.message("file.dataFormatError"));
|
|
|
- return msg;
|
|
|
- }catch(InvalidFormatException e){
|
|
|
- e.printStackTrace();
|
|
|
- //msg.setError("文件格式错误,如果安装了加密软件需要先解密再上传");
|
|
|
- msg.setError(MessageUtils.message("file.FormatErrorAndDecrypt"));
|
|
|
- }catch(EncryptedDocumentException e){
|
|
|
- e.printStackTrace();
|
|
|
- //msg.setError("文件加密状态,需要先解除加密状态再上传");
|
|
|
- msg.setError(MessageUtils.message("file.encryption"));
|
|
|
- return msg;
|
|
|
- } catch(Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- //msg.setError("上传失败:" + e.getMessage());
|
|
|
- msg.setError(MessageUtils.message("file.uploadError",e.getMessage()));
|
|
|
- return msg;
|
|
|
- } finally{
|
|
|
- //关闭流
|
|
|
- try {
|
|
|
- if (outputStream != null && inputStream != null) {
|
|
|
- outputStream.close();
|
|
|
- inputStream.close();
|
|
|
- System.out.println("流已关闭");
|
|
|
- }
|
|
|
- } catch (IOException e) {
|
|
|
- e.printStackTrace();
|
|
|
+ e.printStackTrace();
|
|
|
+ //msg.setError("文件处理出错");
|
|
|
+ msg.setError(MessageUtils.message("file.error"));
|
|
|
+ return msg;
|
|
|
+ } catch(NullPointerException e){
|
|
|
+ e.printStackTrace();
|
|
|
+ //msg.setError("数据格式有误或存在空数据 导入失败");
|
|
|
+ msg.setError(MessageUtils.message("file.dataFormatError"));
|
|
|
+ return msg;
|
|
|
+ }catch(InvalidFormatException e){
|
|
|
+ e.printStackTrace();
|
|
|
+ //msg.setError("文件格式错误,如果安装了加密软件需要先解密再上传");
|
|
|
+ msg.setError(MessageUtils.message("file.FormatErrorAndDecrypt"));
|
|
|
+ }catch(EncryptedDocumentException e){
|
|
|
+ e.printStackTrace();
|
|
|
+ //msg.setError("文件加密状态,需要先解除加密状态再上传");
|
|
|
+ msg.setError(MessageUtils.message("file.encryption"));
|
|
|
+ return msg;
|
|
|
+ } catch(Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ //msg.setError("上传失败:" + e.getMessage());
|
|
|
+ msg.setError(MessageUtils.message("file.uploadError",e.getMessage()));
|
|
|
+ return msg;
|
|
|
+ } finally{
|
|
|
+ //关闭流
|
|
|
+ try {
|
|
|
+ if (outputStream != null && inputStream != null) {
|
|
|
+ outputStream.close();
|
|
|
+ inputStream.close();
|
|
|
+ System.out.println("流已关闭");
|
|
|
}
|
|
|
-// file.deleteOnExit();//程序退出时删除临时文件
|
|
|
- System.out.println(file.delete());
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
- return msg;
|
|
|
+// file.deleteOnExit();//程序退出时删除临时文件
|
|
|
+ System.out.println(file.delete());
|
|
|
+ }
|
|
|
+ return msg;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -12532,9 +12539,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
itemList=new ArrayList<>();
|
|
|
}
|
|
|
for (GanttDataItem ganttDataItem : itemList) {
|
|
|
- if(ganttDataItem.getId().equals(userGantt.parent)){
|
|
|
- ganttDataItem.children.add(userGantt);
|
|
|
- }
|
|
|
+ if(ganttDataItem.getId().equals(userGantt.parent)){
|
|
|
+ ganttDataItem.children.add(userGantt);
|
|
|
+ }
|
|
|
getUserGanttDataItemList(userGantt,ganttDataItem.children);
|
|
|
}
|
|
|
return itemList;
|
|
@@ -14753,7 +14760,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}
|
|
|
String fileName = "项目耗用进度表_"+System.currentTimeMillis();
|
|
|
try {
|
|
|
- return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName , dataList, path);
|
|
|
+ return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName , dataList, path);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|