Browse Source

项目归档,与信息导出(cf)

master
gjh 5 days ago
parent
commit
829669c62c
  1. 63
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouPlanController.java
  2. 7
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java
  3. 4
      huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouProjectinfoMapper.java
  4. 4
      huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouPlaninfo.java
  5. 5
      huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java
  6. 6
      huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouSubProjectinfo.java
  7. 52
      huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectPlanListener.java
  8. 6
      huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectScoreListener.java
  9. 11
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfoService.java
  10. 2
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java
  11. 61
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java
  12. 22
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java
  13. 7
      huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouProjectinfoOV.java

63
huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouPlanController.java

@ -1,50 +1,45 @@
package com.easy.admin.modules.huzhou.controller;
import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.Query;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easy.admin.auth.model.SysUser;
import com.easy.admin.common.api.vo.Result;
import com.easy.admin.common.core.common.select.Select;
import com.easy.admin.common.core.exception.EasyException;
import com.easy.admin.modules.huzhou.dao.HuzhouPlaninfoMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouSubProjectinfoMapper;
import com.easy.admin.modules.huzhou.entity.HuzhouPlaninfo;
import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo;
import com.easy.admin.modules.huzhou.listener.ProjectPlanListener;
import com.easy.admin.modules.huzhou.service.IHuzhouPlaninfoService;
import com.easy.admin.modules.huzhou.vo.HuzhouPlaninfoOV;
import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV;
import com.easy.admin.modules.huzhou.vo.TaskLevelDetailVo;
import com.easy.admin.util.ShiroUtil;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.runtime.ProcessInstance;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.shiro.SecurityUtils;
import com.easy.admin.common.api.vo.Result;
import com.easy.admin.modules.huzhou.entity.*;
import com.easy.admin.modules.huzhou.service.*;
import com.easy.admin.modules.huzhou.vo.HuzhouPlaninfoOV;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@RequestMapping("/huzhouPlan")
public class HuzhouPlanController {
@Autowired
private IHuzhouPlaninfoService planinfoService;
@Autowired
private HuzhouSubProjectinfoMapper subProjectInfoMapper;
@Autowired
private HuzhouPlaninfoMapper planInfoMapper;
/**
* 项目计划列表信息分页
* @param projectinfo 查询条件
@ -104,11 +99,17 @@ public class HuzhouPlanController {
* @throws Exception
*/
@PostMapping("/modifyPlaninfo")
public Result<?> modifyPlaninfo(@RequestParam(value = "file",required = false) MultipartFile multipartFile,
@RequestParam String projectid) throws Exception {
planinfoService.modifyPlaninfo(multipartFile,projectid);
return Result.ok("修改计划成功");
public Result<?> modifyPlaninfo(@RequestParam(value = "file", required = false) MultipartFile multipartFile,
@RequestParam String projectid,
HttpServletResponse response) throws Exception {
String projectName = subProjectInfoMapper.getSubProjectName(projectid);
if (StrUtil.isNotBlank(projectName) && projectName.endsWith("-监理项目")){
planinfoService.modifyPlanSpecialProject(multipartFile,projectid,response);
}else {
planinfoService.modifyPlaninfo(multipartFile, projectid);
}
return Result.ok("修改计划成功");
}
/**

7
huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java

@ -260,6 +260,13 @@ public class HuzhouProjectController {
return Result.OK(pageList);
}
@GetMapping("/archiveProject")
public Result<?> archiveProject(String projectid){
projectinfoService.archiveProject(projectid);
return Result.ok("归档项目成功!");
}
/**
* 批量导出项目信息
* @param response response

4
huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouProjectinfoMapper.java

@ -3,11 +3,9 @@ package com.easy.admin.modules.huzhou.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easy.admin.modules.huzhou.vo.*;
import org.apache.ibatis.annotations.Mapper;
import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo;
import com.easy.admin.modules.huzhou.vo.*;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.math.BigDecimal;
import java.util.List;

4
huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouPlaninfo.java

@ -4,7 +4,9 @@ import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.io.Serializable;
@ -21,7 +23,6 @@ public class HuzhouPlaninfo extends BaseEntity implements Serializable {
/**
* 项目计划id
*/
//@ExcelProperty(value = "评分细则")
@ExcelIgnore
private String id;
@ -50,6 +51,7 @@ public class HuzhouPlaninfo extends BaseEntity implements Serializable {
@JSONField(format="yyyy-MM-dd")
@ExcelProperty(value = "开始时间")
private Date scheduledStartTime;
/**
* 计划结束时间
*/

5
huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java

@ -296,5 +296,10 @@ public class HuzhouProjectinfo extends BaseEntity {
*/
@TableField(exist = false)
private String hasSub;
/**
* 是否完成归档 false:0 1:true
*/
private Boolean isArchiveFinish;
}

6
huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouSubProjectinfo.java

@ -27,7 +27,11 @@ public class HuzhouSubProjectinfo extends HuzhouProjectinfo implements Serializa
@TableField(exist = false)
String contractStatus;
/**
* 是否完成归档 false:0 1:true
*/
@TableField(exist = false)
private Boolean isArchiveFinish;
}

52
huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectPlanListener.java

@ -0,0 +1,52 @@
package com.easy.admin.modules.huzhou.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.easy.admin.modules.huzhou.entity.HuzhouPlaninfo;
import com.easy.admin.modules.huzhou.service.IHuzhouPlaninfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 自定义监听器读数据
*
* @author gjh
*/
@Slf4j
public class ProjectPlanListener implements ReadListener<HuzhouPlaninfo> {
@Autowired
private IHuzhouPlaninfoService planInfoService;
private final String projectId;
public ProjectPlanListener(IHuzhouPlaninfoService planInfoService, String projectId) {
this.planInfoService = planInfoService;
this.projectId = projectId;
}
/**
* 每读一行数据都会调用这个方法
*
* @param planInfo
* @param analysisContext
*/
@Override
public void invoke(HuzhouPlaninfo planInfo, AnalysisContext analysisContext) {
planInfo.setProjectId(projectId);
planInfoService.save(planInfo);
}
/**
* 读完整个excel之后再调用这个方法
*
* @param analysisContext
*/
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}

6
huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectScoreListener.java

@ -32,13 +32,13 @@ public class ProjectScoreListener implements ReadListener<ProjectScore> {
/**
* 每读一行数据都会调用这个方法
*
* @param projectManager
* @param projectScore
* @param analysisContext
*/
@Override
public void invoke(ProjectScore projectManager, AnalysisContext analysisContext) {
public void invoke(ProjectScore projectScore, AnalysisContext analysisContext) {
// 读取一行数据就添加到集合
list.add(projectManager);
list.add(projectScore);
// 判断是否到达缓存量了
if (list.size() >= BATCH_COUNT){
// 操作数据库

11
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfoService.java

@ -122,4 +122,15 @@ public interface IHuzhouPlaninfoService extends IService<HuzhouPlaninfo> {
Boolean deleteContractMoney(String projectid);
Boolean taskNameIsFinished(String projectid);
void addData(List<HuzhouPlaninfo> list);
void dealPlanInfo(HuzhouPlaninfo planInfo);
/**
* 修改特殊项目计划信息(监理)
* @param multipartFile
* @param projectid
*/
void modifyPlanSpecialProject(MultipartFile multipartFile, String projectid,HttpServletResponse response) throws IOException;
}

2
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java

@ -254,5 +254,7 @@ public interface IHuzhouProjectinfoService extends IService<HuzhouProjectinfo> {
List<ContractPayInfoDTO> queryContractPaySituation();
List<HuzhouProjectinfo> queryTempInfo();
void archiveProject(String projectid);
}

61
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java

@ -1,6 +1,7 @@
package com.easy.admin.modules.huzhou.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -18,6 +19,7 @@ import com.easy.admin.modules.huzhou.dao.HuzhouPlaninfofileMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouProcessinfoMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouSubProjectinfoMapper;
import com.easy.admin.modules.huzhou.entity.*;
import com.easy.admin.modules.huzhou.listener.ProjectPlanListener;
import com.easy.admin.modules.huzhou.service.*;
import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV;
import com.easy.admin.modules.huzhou.vo.TaskLevelDetailVo;
@ -1670,4 +1672,63 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
}
return false;
}
@Override
public void addData(List<HuzhouPlaninfo> list) {
this.saveBatch(list);
}
@Override
public void dealPlanInfo(HuzhouPlaninfo planInfo) {
}
@Override
public void modifyPlanSpecialProject(MultipartFile multipartFile, String projectid,HttpServletResponse response) throws IOException {
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid)
.last("LIMIT 1");
HuzhouPlaninfo oldPlanInfo = planInfoMapper.selectOne(queryWrapper);
String groupId = oldPlanInfo.getGroupId();
// 1. 删除原先的计划
LambdaQueryWrapper<HuzhouPlaninfo> deleteWrapper = new LambdaQueryWrapper<>();
deleteWrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
baseMapper.delete(deleteWrapper);
// 2. 插入新计划
EasyExcel.read(multipartFile.getInputStream(), HuzhouPlaninfo.class, new ProjectPlanListener(this,projectid))
.sheet().doRead();
response.setContentType("text/html;charset=utf8");
// 4. 设置上级任务
LambdaQueryWrapper<HuzhouPlaninfo> newQw = new LambdaQueryWrapper<>();
newQw.eq(HuzhouPlaninfo::getProjectId,projectid);
List<HuzhouPlaninfo> newPlanList = planInfoMapper.selectList(newQw);
for (HuzhouPlaninfo newPlan : newPlanList) {
String taskLevel = newPlan.getTaskLevel();
if (taskLevel != null && !taskLevel.isEmpty() && taskLevel.contains(".")) {
int dotIndex = taskLevel.indexOf('.');
String parentLevel = taskLevel.substring(0, dotIndex);
newPlan.setSuperior(parentLevel);
} else {
// 如果没有 '.' 或为空,设置为 "0" 或者保持不变,根据业务需求决定
newPlan.setSuperior("0");
}
// 使用主键更新
planInfoMapper.updateById(newPlan);
}
// 4. 更新新计划的组id
LambdaUpdateWrapper<HuzhouPlaninfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(HuzhouPlaninfo::getProjectId,projectid)
.set(HuzhouPlaninfo::getGroupId,groupId)
.set(HuzhouPlaninfo::getIsfinish, "0");
planInfoMapper.update(null, updateWrapper);
// 5. 更新子项目计划更新标志,
// LambdaUpdateWrapper<HuzhouSubProjectinfo> subUpdateWrapper = new LambdaUpdateWrapper<>();
// subUpdateWrapper.eq(HuzhouSubProjectinfo::getId, projectid);
// subUpdateWrapper.set(HuzhouSubProjectinfo::getUpdatePlanFlag, "2");
// subProjectInfoMapper.update(null, subUpdateWrapper);
}
}

22
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java

@ -450,13 +450,24 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
item.setChildren(null);
}
});
// 填充当且项目所处节点
for (HuzhouProjectinfoOV record : records) {
String projectId = record.getId();
String currentPointName = planinfoMapper.getCurrentPointName(projectId);
if (StringUtils.isNotBlank(currentPointName)){
record.setCurrentPointName(currentPointName);
}
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectId);
List<HuzhouPlaninfo> planInfoList = planinfoMapper.selectList(queryWrapper);
// 判断是否所有 isfinish 都等于 "2"
boolean allFinished = planInfoList.stream()
.allMatch(plan -> "2".equals(plan.getIsfinish()));
record.setIsArchive(allFinished);
}
return projectAndChildInfoPageList;
}
@ -3157,6 +3168,17 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
return projectInfoList;
}
@Override
public void archiveProject(String projectid) {
LambdaUpdateWrapper<HuzhouProjectinfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(HuzhouProjectinfo::getId, projectid);
updateWrapper.set(HuzhouProjectinfo::getIsArchiveFinish, true);
boolean flag = this.update(updateWrapper);
if (!flag) {
throw new EasyException("归档失败!");
}
}
private void processProjectFundingRate(HuzhouProjectinfo projectInfo) {
String projectId = projectInfo.getId();

7
huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouProjectinfoOV.java

@ -26,4 +26,11 @@ public class HuzhouProjectinfoOV extends HuzhouProjectinfo {
String utrIsfinish;
/**
* 是否可以归档
*/
Boolean isArchive;
}

Loading…
Cancel
Save