Browse Source

提交变更文件

master
zhouhaibin 5 months ago
parent
commit
76474d8c60
  1. 201
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouPlanController.java
  2. 63
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouWorkreportController.java
  3. 1
      huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouWorkreportMapper.java
  4. 49
      huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouWorkreportMapper.xml
  5. 2
      huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouWorkreport.java
  6. 12
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfoService.java
  7. 2
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouWorkreportService.java
  8. 159
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java
  9. 9
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouWorkreportServiceImpl.java

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

@ -9,6 +9,7 @@ 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.core.exception.EasyException;
import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV;
import com.easy.admin.util.ShiroUtil;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.runtime.ProcessInstance;
@ -40,108 +41,80 @@ import java.util.*;
public class HuzhouPlanController {
@Autowired
private IHuzhouPlaninfoService planinfoService;
@Autowired
private IWorkflowService workflowService;
@Autowired
private IHuzhouProcessinfoService processinfoService;
@Autowired
private IHuzhouProjectinfoService projectinfoService;
@Autowired
private IHuzhouPlaninfoHistoryService planinfoHistoryService;
@Autowired
private RuntimeService runtimeService;
@Value(value = "${jeecg.path.upload}")
private String uploadpath;
/**
* 项目计划列表信息
* @param projectinfo 查询条件
* @param pageNo 页码
* @param pageSize 每页条数
* @return 返回值
*/
@GetMapping("/projectPlanPageList")
public Result<IPage<HuzhouProjectinfoOV>> projectPlanPageList(HuzhouProjectinfo projectinfo,
@RequestParam(name="current", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
IPage<HuzhouProjectinfoOV> infoPageList =planinfoService.projectPlanPageList(projectinfo, pageNo, pageSize);
return Result.OK(infoPageList);
}
/**
* 上传计划信息
* @param multipartFile
* @param projectid
* @return
* 上传计划信息创建审批流程
* @param multipartFile 模板文件
* @param projectid 项目id
* @return 返回值
* @throws Exception
*/
@PostMapping("/submitplaninfoUploadFile")
public Result<?> submitPlaninfoUploadFile(@RequestParam(value = "file",required = false) MultipartFile multipartFile,
@RequestParam String projectid) throws Exception {
HashMap<String, Object> hashMap = planinfoService.getPlanInfoListFromFile(multipartFile, projectid);
boolean res = (boolean) hashMap.get("res");
if(!res){
throw new EasyException((String)hashMap.get("msg"));
}
ArrayList<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr");
planinfoService.saveBatch(huzhouPlaninfoArrayList);
WorkFlow workFlow = workflowService.createFlow("createPlaninfo",projectid);
projectinfoService.modifyStageById(projectid,"4");
planinfoService.submitPlaninfoUploadFile(multipartFile,projectid);
return Result.ok("成功");
}
/**
* 审批项目计划
* @param file 重新提交要啊传文件
* @param taskId 流程任务id
* @param flag 审批标志
* @param projectid 项目id
* @param comment 审批意见
* @return 返回值
* @throws Exception
*/
@PostMapping("/approvePlaninfo")
public Result<?> approvePlaninfo(@RequestParam(value = "file",required = false) MultipartFile file,
@RequestParam String taskId,
@RequestParam String flag,
@RequestParam String projectid,
@RequestParam String comment) throws Exception {
SysUser currentUser = ShiroUtil.getCurrentUser();
String userId = currentUser.getId();
if(file!=null&&"1".equals(flag)){
//发生了修改
HashMap<String, Object> hashMap = planinfoService.getPlanInfoListFromFile(file, projectid);
boolean res = (boolean) hashMap.get("res");
if(!res){
throw new EasyException((String)hashMap.get("msg"));
}
ArrayList<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr");
String isAllow = planinfoService.IsAllowModifyPlaninfo(projectid,huzhouPlaninfoArrayList);
if(!"1".equals(isAllow)){
throw new EasyException(isAllow);
}
//保存历史记录
planinfoHistoryService.savePlanInfoToHistory(projectid);
//删除原纪录
planinfoService.removeByProjectId(projectid);
planinfoService.saveBatch(huzhouPlaninfoArrayList);
}
WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment);
if("3".equals(flag)){
projectinfoService.modifyStageById(projectid,"0");
processinfoService.modifyStatusByProjectId(projectid,"0","createPlaninfo");
return Result.ok("作废成功!");
}
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(workFlow.getProcessInstanceId()).singleResult();
if(processInstance==null&&"1".equals(flag)){
projectinfoService.modifyStageById(projectid,"5");
processinfoService.modifyStatusByProjectId(projectid,"2","createPlaninfo");
}
planinfoService.approvePlaninfo(file,taskId,flag,projectid,comment);
return Result.ok("审批成功");
}
/**
* 修改项目计划
* @param multipartFile 需要解析的文件
* @param projectid 项目id
* @return 返回值
* @throws Exception
*/
@PostMapping("/modifyPlaninfo")
public Result<?> modifyPlaninfo(@RequestParam(value = "file",required = false) MultipartFile multipartFile,
@RequestParam String projectid) throws Exception {
HashMap<String, Object> hashMap = planinfoService.getPlanInfoListFromFile(multipartFile, projectid);
boolean res = (boolean) hashMap.get("res");
if(!res){
throw new EasyException((String)hashMap.get("msg"));
}
ArrayList<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr");
String isAllow = planinfoService.IsAllowModifyPlaninfo(projectid,huzhouPlaninfoArrayList);
if(!"1".equals(isAllow)){
throw new EasyException(isAllow);
}
WorkFlow workFlow = workflowService.createFlow("createPlaninfo",projectid);
projectinfoService.modifyStageById(projectid,"4");
planinfoHistoryService.savePlanInfoToHistory(projectid);
planinfoService.removeByProjectId(projectid);
LambdaUpdateWrapper<HuzhouPlaninfo> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
wrapper.set(HuzhouPlaninfo::getGroupId,huzhouPlaninfoArrayList.get(0).getGroupId());
planinfoService.update(null,wrapper);
planinfoService.saveBatch(huzhouPlaninfoArrayList);
planinfoService.modifyPlaninfo(multipartFile,projectid);
return Result.ok("修改计划成功");
}
/**
* 获取项目计划的树形结构List
* @param projectid 项目id
* @param isArchive 是否已归档
* @param pageNo 页码
* @param pageSize 页数
* @return 返回值
*/
@GetMapping("/queryPlanInfoMainTimeline")
public Result<?> queryPlanInfoMainTimeline(String projectid,String isArchive,@RequestParam(name="current", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
@ -152,6 +125,12 @@ public class HuzhouPlanController {
ArrayList<HuzhouPlaninfoOV> planInfoMainTimelineList = planinfoService.getPlanInfoMainTimelineList(projectid);
return Result.ok(planInfoMainTimelineList);
}
/**
* 根据计划id获取当前计划阶段的数据
* @param planinfoid 计划id
* @return 返回值
*/
@GetMapping("/qetplaninfoByid")
public Result<?> getplaninfoByid(String planinfoid){
HuzhouPlaninfo planinfo = planinfoService.getById(planinfoid);
@ -159,6 +138,14 @@ public class HuzhouPlanController {
huzhouPlaninfos.add(planinfo);
return Result.OK(huzhouPlaninfos);
}
/**
* 项目计划汇总展示
* @param projectinfo 项目计划信息
* @param pageNo 页码
* @param pageSize 页数
* @return 返回值
*/
@GetMapping("/getplanSummary")
public Result<?> getplanSummary(HuzhouProjectinfo projectinfo,
@RequestParam(name="current", defaultValue="1") Integer pageNo,
@ -166,57 +153,15 @@ public class HuzhouPlanController {
Page<Map> mapPage = planinfoService.getplanSummary(projectinfo, pageNo, pageSize);
return Result.OK(mapPage);
}
/**
* 根据项目id下载项目计划内容
* @param response 返回内容
* @param projectid 项目id
*/
@GetMapping("/downloadPlanInfo")
public void downloadPlanInfo(HttpServletResponse response, String projectid){
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
List<HuzhouPlaninfo> list = planinfoService.list(queryWrapper);
try (Workbook workbook = new XSSFWorkbook()) {
Sheet sheet = workbook.createSheet("项目计划内容");
Row headerRow0 = sheet.createRow(0);
headerRow0.createCell(0).setCellValue("taskLevel");
headerRow0.createCell(1).setCellValue("taskName");
headerRow0.createCell(2).setCellValue("scheduledStartTime");
headerRow0.createCell(3).setCellValue("scheduledEndTime");
headerRow0.createCell(4).setCellValue("taskFile");
headerRow0.setZeroHeight(true);//隐藏当前行
// 创建标题行
Row headerRow1 = sheet.createRow(1);
headerRow1.createCell(0).setCellValue("阶段序号");
headerRow1.createCell(1).setCellValue("阶段名称");
headerRow1.createCell(2).setCellValue("开始时间");
headerRow1.createCell(3).setCellValue("结束时间");
headerRow1.createCell(4).setCellValue("所需文件");
CellStyle dateCellStyle = workbook.createCellStyle();
CreationHelper createHelper = workbook.getCreationHelper();
dateCellStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd"));
// 填充数据行
int rowNum = 2;
for (HuzhouPlaninfo planinfo : list) {
Row row = sheet.createRow(rowNum++);
row.createCell(0).setCellValue(planinfo.getTaskLevel());
row.createCell(1).setCellValue(planinfo.getTaskName());
Cell cell2 = row.createCell(2);
cell2.setCellValue(planinfo.getScheduledStartTime());
cell2.setCellStyle(dateCellStyle);
Cell cell3 = row.createCell(3);
cell3.setCellValue(planinfo.getScheduledEndTime());
cell3.setCellStyle(dateCellStyle);
row.createCell(4).setCellValue(planinfo.getTaskFile());
}
// 自动调整列宽以适应内容
for (int i = 0; i < 5; i++) {
sheet.autoSizeColumn(i); // 使用Apache POI的autoSizeColumn方法
}
// 设置响应头
response.setCharacterEncoding("utf-8");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=项目计划.xlsx");
// 将Excel内容写入响应
workbook.write(response.getOutputStream());
} catch (IOException e) {
throw new RuntimeException("导出失败!");
}
// planinfoService.downloadPlanInfo(response,projectinfoid);
planinfoService.downloadPlanInfo(response,projectid);
}
}

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

@ -3,6 +3,7 @@ package com.easy.admin.modules.huzhou.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easy.admin.common.api.vo.Result;
import com.easy.admin.common.core.annotation.ResponseResult;
import com.easy.admin.common.core.exception.EasyException;
import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo;
import com.easy.admin.modules.huzhou.entity.HuzhouWorkreport;
@ -21,19 +22,26 @@ import java.util.List;
public class HuzhouWorkreportController {
@Autowired
private IHuzhouWorkreportService workreportService;
@PostMapping("setProjectWorkReport")
public void setProjectWorkReport(@RequestBody HuzhouProjectinfo huzhouProjectinfo){
/**
* 设置项目的周月报类型
* @param huzhouProjectinfo 参数
* @return
*/
@PostMapping("/setProjectWorkReport")
public Result setProjectWorkReport(@RequestBody HuzhouProjectinfo huzhouProjectinfo){
workreportService.setProjectWorkReport(huzhouProjectinfo);
return Result.ok();
}
/**
* 获取未创建周月报类型的项目
* @param projectinfo 查询条件
* @param pageNo
* @param pageSize
* @param pageNo 页码
* @param pageSize 页数
* @return IPage<HuzhouProjectinfo>
*/
@GetMapping("getNoTypeWorkReportPageList")
@GetMapping("/getNoTypeWorkReportPageList")
public Result<?> getNoTypeWorkReportPageList(HuzhouProjectinfo projectinfo,@RequestParam(name="current", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
IPage<HuzhouProjectinfo> res=workreportService.getNoTypeWorkReportPageList(projectinfo,pageNo,pageSize);
@ -42,10 +50,10 @@ public class HuzhouWorkreportController {
/**
* 获取已创建的周月报项目
* @param workreportOV
* @param pageNo
* @param pageSize
* @return
* @param huzhouProjectinfo 查询条件
* @param pageNo 页码
* @param pageSize 页数
* @return Page<HuzhouProjectinfo>
*/
@GetMapping("/workreportPageList")
public Result<?> workreportPageList(HuzhouProjectinfo huzhouProjectinfo,@RequestParam(name="current", defaultValue="1") Integer pageNo,
@ -53,16 +61,53 @@ public class HuzhouWorkreportController {
Page<HuzhouProjectinfo> pageList = workreportService.getWorkreportPageList(huzhouProjectinfo, pageNo, pageSize);
return Result.ok(pageList);
}
/**
* 根据项目id获取当前项目的所有周月报信息
* @param workreportOV 条件
* @param pageNo 页码
* @param pageSize 页数
* @return IPage<HuzhouWorkreportOV>
*/
@ResponseResult
@GetMapping("/getProjectWorkReportByProjectId")
public IPage<HuzhouWorkreportOV> getProjectWorkReportByProjectId(HuzhouWorkreportOV workreportOV,@RequestParam(name="current", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
IPage<HuzhouWorkreportOV> pageList = workreportService.getProjectWorkReportByProjectId(workreportOV,pageNo,pageSize);
return pageList;
}
/**
* 根据周月报id获取周月报的详情信息
* @param id 周月报id
* @return HuzhouWorkreport
*/
@GetMapping("/getWorkreportById")
public Result<?> getWorkreportById(String id){
HuzhouWorkreport byId = workreportService.getById(id);
return Result.ok(byId);
}
/**
* 新增项目周月报
* @param file 文件信息
* @param workreport 周月报信息
* @return 返回值
* @throws IOException
*/
@PostMapping("/addWorkreport")
public Result<?> addWorkreport(@RequestParam(value = "file") MultipartFile file, HuzhouWorkreport workreport) throws IOException {
workreportService.addWorkreport(file,workreport);
return Result.ok("上传成功");
}
/**
* 修改周报
* @param file 文件非必输
* @param workreport
* @return 返回值
* @throws IOException
*/
@PostMapping("/modifyWorkreport")
public Result<?> modifyContractinfo(@RequestParam(value = "file",required = false) MultipartFile file, HuzhouWorkreport workreport) throws IOException {
Boolean aBoolean = workreportService.modifyWorkreport(file, workreport);

1
huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouWorkreportMapper.java

@ -13,4 +13,5 @@ public interface HuzhouWorkreportMapper extends BaseMapper<HuzhouWorkreport> {
Page<HuzhouProjectinfo> getWorkreportPageList(Page page, HuzhouProjectinfo info);
IPage<HuzhouProjectinfo> getNoTypeWorkReportPageList(Page page, HuzhouProjectinfo info);
IPage<HuzhouWorkreportOV> getProjectWorkReportByProjectId(Page page,HuzhouWorkreportOV info);
}

49
huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouWorkreportMapper.xml

@ -1,40 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.easy.admin.modules.huzhou.dao.HuzhouWorkreportMapper">
<!-- <select id="getWorkreportPageList" resultType="com.easy.admin.modules.huzhou.vo.HuzhouWorkreportOV" parameterType="com.easy.admin.modules.huzhou.vo.HuzhouWorkreportOV">-->
<!-- select a.*,b.project_name from huzhou_workreport a LEFT JOIN huzhou_projectinfo b on a.projectid =b.id-->
<!-- <where>-->
<!-- b.stage >= 2-->
<!-- <if test="info.projectContacts!=null and info.projectContacts!=''">-->
<!-- and b.id in(-->
<!-- select DISTINCT project_id from huzhou_userproject where user_id=#{info.projectContacts}-->
<!-- )-->
<!-- </if>-->
<!-- <if test="info.supervisorContactor!=null and info.supervisorContactor!=''">-->
<!-- and b.id in(-->
<!-- SELECT DISTINCT id from huzhou_projectinfo e where e.admin_division in(-->
<!-- SELECT DISTINCT a.admin_division from huzhou_projectinfo a where a.id in (select c.project_id from-->
<!-- huzhou_userproject c where c.user_id=#{info.supervisorContactor})-->
<!-- )-->
<!-- OR-->
<!-- e.super_leader in (-->
<!-- SELECT DISTINCT b.super_leader from huzhou_projectinfo b where b.id in (select d.project_id from-->
<!-- huzhou_userproject d where d.user_id=#{info.supervisorContactor})-->
<!-- )-->
<!-- )-->
<!-- </if>-->
<!-- <if test="info.documentName!=null and info.documentName!=''">-->
<!-- <bind name="tempStr" value="'%' + info.documentName + '%'" />-->
<!-- and a.document_name like #{tempStr}-->
<!-- </if>-->
<!-- <if test="info.projectName!=null and info.projectName!=''">-->
<!-- <bind name="tempStr" value="'%' + info.projectName + '%'" />-->
<!-- and b.project_name like #{tempStr}-->
<!-- </if>-->
<!-- </where>-->
<!-- order by b.project_name,a.create_date-->
<!-- </select>-->
<select id="getProjectWorkReportByProjectId" resultType="com.easy.admin.modules.huzhou.vo.HuzhouWorkreportOV" parameterType="com.easy.admin.modules.huzhou.vo.HuzhouWorkreportOV">
select a.*,b.project_name from huzhou_workreport a LEFT JOIN huzhou_projectinfo b on a.projectid =b.id
<where>
a.projectid = #{info.projectid}
<if test="info.documentName!=null and info.documentName!=''">
<bind name="tempStr" value="'%' + info.documentName + '%'" />
and a.document_name like #{tempStr}
</if>
<if test="info.projectName!=null and info.projectName!=''">
<bind name="tempStr" value="'%' + info.projectName + '%'" />
and b.project_name like #{tempStr}
</if>
</where>
order by b.project_name,a.create_date
</select>
<select id="getWorkreportPageList" resultType="com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo" parameterType="com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo">
SELECT * from huzhou_projectinfo u
<where>

2
huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouWorkreport.java

@ -38,7 +38,7 @@ public class HuzhouWorkreport extends BaseEntity implements Serializable {
/**
* 类型 1周报2月报
*/
private String type;
private String reportType;
/**
* 文件名称
*/

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

@ -1,8 +1,10 @@
package com.easy.admin.modules.huzhou.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo;
import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV;
import org.apache.poi.ss.usermodel.Sheet;
import com.easy.admin.modules.huzhou.entity.HuzhouPlaninfo;
import com.easy.admin.modules.huzhou.vo.HuzhouPlaninfoOV;
@ -10,6 +12,7 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
@ -62,4 +65,13 @@ public interface IHuzhouPlaninfoService extends IService<HuzhouPlaninfo> {
*/
Boolean isExitTaskNameInPlanInfo(String projectid,String taskName);
IPage<HuzhouProjectinfoOV> projectPlanPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize);
void submitPlaninfoUploadFile(MultipartFile multipartFile, String projectid) throws Exception;
void approvePlaninfo(MultipartFile file, String taskId, String flag, String projectid, String comment) throws Exception;
void modifyPlaninfo(MultipartFile multipartFile, String projectid) throws Exception;
void downloadPlanInfo(HttpServletResponse response, String projectid);
}

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

@ -26,4 +26,6 @@ public interface IHuzhouWorkreportService extends IService<HuzhouWorkreport> {
void setProjectWorkReport(HuzhouProjectinfo huzhouProjectinfo);
IPage<HuzhouProjectinfo> getNoTypeWorkReportPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize);
IPage<HuzhouWorkreportOV> getProjectWorkReportByProjectId(HuzhouWorkreportOV workreportOV,Integer pageNo, Integer pageSize);
}

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

@ -6,37 +6,36 @@ 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.easy.admin.common.core.exception.EasyException;
import com.easy.admin.modules.huzhou.dao.HuzhouPlaninfoMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouPlaninfofileMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouProcessinfoMapper;
import com.easy.admin.modules.huzhou.entity.*;
import com.easy.admin.modules.huzhou.service.IHuzhouFieldchangehistoryService;
import com.easy.admin.modules.huzhou.service.IHuzhouProjectinfoService;
import com.easy.admin.modules.huzhou.service.*;
import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV;
import org.activiti.engine.HistoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.easy.admin.common.util.CommonUtils;
import com.easy.admin.modules.huzhou.common.HuzhouCommonUtils;
import com.easy.admin.modules.huzhou.service.IHuzhouPlaninfoService;
import com.easy.admin.modules.huzhou.vo.HuzhouPlaninfoOV;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils;
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.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@ -57,6 +56,7 @@ import java.util.regex.Pattern;
* @since 2024-01-30 16:01:09
*/
@Service
@Transactional
public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,HuzhouPlaninfo> implements IHuzhouPlaninfoService {
@Value(value = "${jeecg.path.upload}")
private String uploadpath;
@ -71,7 +71,13 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
@Autowired
private HistoryService historyService;
@Autowired
private IWorkflowService workflowService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private IHuzhouPlaninfoHistoryService planinfoHistoryService;
@Autowired
private IHuzhouProcessinfoService processinfoService;
@Override
public HashMap<String,Object> getPlanInfoListFromFile(MultipartFile multipartFile,String projectid) throws Exception {
HashMap<String, Object> resHashMap = new HashMap<>();
@ -554,6 +560,147 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
return false;
}
@Override
public IPage<HuzhouProjectinfoOV> projectPlanPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) {
projectinfo.setStage("2");
IPage<HuzhouProjectinfoOV> infoPageList = projectinfoService.getProjectInfoAndChildPageList(projectinfo, pageNo, pageSize);
return infoPageList;
}
@Override
public void submitPlaninfoUploadFile(MultipartFile multipartFile, String projectid) throws Exception {
//解析项目计划文件
HashMap<String, Object> hashMap = getPlanInfoListFromFile(multipartFile, projectid);
//res是true 表示项目计划文件没有问题,如果是false说明文件有问题,需要抛出异常
boolean res = (boolean) hashMap.get("res");
if(!res){
throw new EasyException((String)hashMap.get("msg"));
}
//获取解析后的结果
ArrayList<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr");
//批量保存
saveBatch(huzhouPlaninfoArrayList);
WorkFlow workFlow = workflowService.createFlow("createPlaninfo",projectid);
//修改项目的阶段状态
projectinfoService.modifyStageById(projectid,"4");
}
@Override
public void approvePlaninfo(MultipartFile file, String taskId, String flag, String projectid, String comment) throws Exception {
if(file!=null&&"1".equals(flag)){
HashMap<String, Object> hashMap = getPlanInfoListFromFile(file, projectid);
boolean res = (boolean) hashMap.get("res");
if(!res){
throw new EasyException((String)hashMap.get("msg"));
}
ArrayList<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr");
//检查List里面的内容是否支持修改,审批中或已完成无法修改
String isAllow = IsAllowModifyPlaninfo(projectid,huzhouPlaninfoArrayList);
if(!"1".equals(isAllow)){
throw new EasyException(isAllow);
}
//保存历史记录
planinfoHistoryService.savePlanInfoToHistory(projectid);
//删除原纪录
removeByProjectId(projectid);
saveBatch(huzhouPlaninfoArrayList);
}
WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment);
//作废暂时不需要注释掉
// if("3".equals(flag)){
// projectinfoService.modifyStageById(projectid,"0");
// processinfoService.modifyStatusByProjectId(projectid,"0","createPlaninfo");
// }
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(workFlow.getProcessInstanceId()).singleResult();
//审批通过修改项目要状态
if(processInstance==null&&"1".equals(flag)){
projectinfoService.modifyStageById(projectid,"5");
processinfoService.modifyStatusByProjectId(projectid,"2","createPlaninfo");
}
}
@Override
public void modifyPlaninfo(MultipartFile multipartFile, String projectid) throws Exception {
HashMap<String, Object> hashMap = getPlanInfoListFromFile(multipartFile, projectid);
boolean res = (boolean) hashMap.get("res");
if(!res){
throw new EasyException((String)hashMap.get("msg"));
}
ArrayList<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr");
String isAllow = IsAllowModifyPlaninfo(projectid,huzhouPlaninfoArrayList);
if(!"1".equals(isAllow)){
throw new EasyException(isAllow);
}
//修改项目计划会重新修改项目阶段类型
WorkFlow workFlow = workflowService.createFlow("createPlaninfo",projectid);
projectinfoService.modifyStageById(projectid,"4");
//保存历史记录
planinfoHistoryService.savePlanInfoToHistory(projectid);
//删除未开始的项目计划,保零六已完成或审批中的
removeByProjectId(projectid);
//将之前的分组id修改为最新的分组id
LambdaUpdateWrapper<HuzhouPlaninfo> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
wrapper.set(HuzhouPlaninfo::getGroupId,huzhouPlaninfoArrayList.get(0).getGroupId());
update(null,wrapper);
//批量新增
saveBatch(huzhouPlaninfoArrayList);
}
@Override
public void downloadPlanInfo(HttpServletResponse response, String projectid) {
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
List<HuzhouPlaninfo> list = list(queryWrapper);
try (Workbook workbook = new XSSFWorkbook()) {
Sheet sheet = workbook.createSheet("项目计划内容");
Row headerRow0 = sheet.createRow(0);
headerRow0.createCell(0).setCellValue("taskLevel");
headerRow0.createCell(1).setCellValue("taskName");
headerRow0.createCell(2).setCellValue("scheduledStartTime");
headerRow0.createCell(3).setCellValue("scheduledEndTime");
headerRow0.createCell(4).setCellValue("taskFile");
headerRow0.setZeroHeight(true);//隐藏当前行
// 创建标题行
Row headerRow1 = sheet.createRow(1);
headerRow1.createCell(0).setCellValue("阶段序号");
headerRow1.createCell(1).setCellValue("阶段名称");
headerRow1.createCell(2).setCellValue("开始时间");
headerRow1.createCell(3).setCellValue("结束时间");
headerRow1.createCell(4).setCellValue("所需文件");
CellStyle dateCellStyle = workbook.createCellStyle();
CreationHelper createHelper = workbook.getCreationHelper();
dateCellStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd"));
// 填充数据行
int rowNum = 2;
for (HuzhouPlaninfo planinfo : list) {
Row row = sheet.createRow(rowNum++);
row.createCell(0).setCellValue(planinfo.getTaskLevel());
row.createCell(1).setCellValue(planinfo.getTaskName());
Cell cell2 = row.createCell(2);
cell2.setCellValue(planinfo.getScheduledStartTime());
cell2.setCellStyle(dateCellStyle);
Cell cell3 = row.createCell(3);
cell3.setCellValue(planinfo.getScheduledEndTime());
cell3.setCellStyle(dateCellStyle);
row.createCell(4).setCellValue(planinfo.getTaskFile());
}
// 自动调整列宽以适应内容
for (int i = 0; i < 5; i++) {
sheet.autoSizeColumn(i); // 使用Apache POI的autoSizeColumn方法
}
// 设置响应头
response.setCharacterEncoding("utf-8");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=项目计划.xlsx");
// 将Excel内容写入响应
workbook.write(response.getOutputStream());
} catch (IOException e) {
throw new RuntimeException("导出失败!");
}
// planinfoService.downloadPlanInfo(response,projectinfoid);
}
private HuzhouPlaninfoOV setchild(HuzhouPlaninfoOV planinfoOV){
//在流程这的是否可编辑
if("1".equals(planinfoOV.getIsfinish())){

9
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouWorkreportServiceImpl.java

@ -16,6 +16,7 @@ import com.easy.admin.util.ShiroUtil;
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.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;
@ -28,6 +29,7 @@ import java.util.List;
import java.util.Map;
@Service
@Transactional
public class HuzhouWorkreportServiceImpl extends ServiceImpl<HuzhouWorkreportMapper,HuzhouWorkreport> implements IHuzhouWorkreportService {
@Autowired
private HuzhouWorkreportMapper workreportMapper;
@ -92,6 +94,13 @@ public class HuzhouWorkreportServiceImpl extends ServiceImpl<HuzhouWorkreportMap
return res;
}
@Override
public IPage<HuzhouWorkreportOV> getProjectWorkReportByProjectId(HuzhouWorkreportOV workreportOV,Integer pageNo, Integer pageSize) {
Page<HuzhouWorkreportOV> page = new Page<>(pageNo, pageSize);
IPage<HuzhouWorkreportOV> workreportOVIPage = workreportMapper.getProjectWorkReportByProjectId(page, workreportOV);
return workreportOVIPage;
}
private void addContractFile(MultipartFile file, HuzhouWorkreport workreport) throws IOException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String currentDay = dateFormat.format(new Date());

Loading…
Cancel
Save