diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouPlanController.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouPlanController.java index a4662ef..55ff2c2 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouPlanController.java +++ b/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("修改计划成功"); } /** diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java index cd9dd32..242c119 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java +++ b/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 diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouProjectinfoMapper.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouProjectinfoMapper.java index 76c536a..3036ca2 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouProjectinfoMapper.java +++ b/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; diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouPlaninfo.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouPlaninfo.java index 2bf1b98..f68053d 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouPlaninfo.java +++ b/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; + /** * 计划结束时间 */ diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java index 4877ef0..3c929af 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java +++ b/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; } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouSubProjectinfo.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouSubProjectinfo.java index 47ff780..3eb9c40 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouSubProjectinfo.java +++ b/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; } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectPlanListener.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectPlanListener.java new file mode 100644 index 0000000..b6787a7 --- /dev/null +++ b/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 { + + @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) { + + } +} diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectScoreListener.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectScoreListener.java index 979fcc9..436475a 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectScoreListener.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectScoreListener.java @@ -32,13 +32,13 @@ public class ProjectScoreListener implements ReadListener { /** * 每读一行数据都会调用这个方法 * - * @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){ // 操作数据库 diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfoService.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfoService.java index 3665c14..55d2220 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfoService.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfoService.java @@ -122,4 +122,15 @@ public interface IHuzhouPlaninfoService extends IService { Boolean deleteContractMoney(String projectid); Boolean taskNameIsFinished(String projectid); + + void addData(List list); + + void dealPlanInfo(HuzhouPlaninfo planInfo); + + /** + * 修改特殊项目计划信息(监理) + * @param multipartFile + * @param projectid + */ + void modifyPlanSpecialProject(MultipartFile multipartFile, String projectid,HttpServletResponse response) throws IOException; } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java index ced0985..6172fdc 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java @@ -254,5 +254,7 @@ public interface IHuzhouProjectinfoService extends IService { List queryContractPaySituation(); List queryTempInfo(); + + void archiveProject(String projectid); } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java index 51446da..a2793ca 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java +++ b/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 list) { + this.saveBatch(list); + } + + @Override + public void dealPlanInfo(HuzhouPlaninfo planInfo) { + + } + + @Override + public void modifyPlanSpecialProject(MultipartFile multipartFile, String projectid,HttpServletResponse response) throws IOException { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid) + .last("LIMIT 1"); + HuzhouPlaninfo oldPlanInfo = planInfoMapper.selectOne(queryWrapper); + String groupId = oldPlanInfo.getGroupId(); + // 1. 删除原先的计划 + LambdaQueryWrapper 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 newQw = new LambdaQueryWrapper<>(); + newQw.eq(HuzhouPlaninfo::getProjectId,projectid); + List 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 updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(HuzhouPlaninfo::getProjectId,projectid) + .set(HuzhouPlaninfo::getGroupId,groupId) + .set(HuzhouPlaninfo::getIsfinish, "0"); + planInfoMapper.update(null, updateWrapper); + // 5. 更新子项目计划更新标志, +// LambdaUpdateWrapper subUpdateWrapper = new LambdaUpdateWrapper<>(); +// subUpdateWrapper.eq(HuzhouSubProjectinfo::getId, projectid); +// subUpdateWrapper.set(HuzhouSubProjectinfo::getUpdatePlanFlag, "2"); +// subProjectInfoMapper.update(null, subUpdateWrapper); + } } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java index a46e22d..b4e7ac0 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java @@ -450,13 +450,24 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectId); + List 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 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(); diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouProjectinfoOV.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouProjectinfoOV.java index 4cee09d..8e13609 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouProjectinfoOV.java +++ b/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; + + + }