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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easy.admin.auth.model.SysUser; import com.easy.admin.auth.model.SysUser;
import com.easy.admin.common.core.exception.EasyException; import com.easy.admin.common.core.exception.EasyException;
import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV;
import com.easy.admin.util.ShiroUtil; import com.easy.admin.util.ShiroUtil;
import org.activiti.engine.RuntimeService; import org.activiti.engine.RuntimeService;
import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.runtime.ProcessInstance;
@ -40,108 +41,80 @@ import java.util.*;
public class HuzhouPlanController { public class HuzhouPlanController {
@Autowired @Autowired
private IHuzhouPlaninfoService planinfoService; 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 multipartFile 模板文件
* @param projectid * @param projectid 项目id
* @return * @return 返回值
* @throws Exception * @throws Exception
*/ */
@PostMapping("/submitplaninfoUploadFile") @PostMapping("/submitplaninfoUploadFile")
public Result<?> submitPlaninfoUploadFile(@RequestParam(value = "file",required = false) MultipartFile multipartFile, public Result<?> submitPlaninfoUploadFile(@RequestParam(value = "file",required = false) MultipartFile multipartFile,
@RequestParam String projectid) throws Exception { @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); planinfoService.submitPlaninfoUploadFile(multipartFile,projectid);
WorkFlow workFlow = workflowService.createFlow("createPlaninfo",projectid);
projectinfoService.modifyStageById(projectid,"4");
return Result.ok("成功"); return Result.ok("成功");
} }
/**
* 审批项目计划
* @param file 重新提交要啊传文件
* @param taskId 流程任务id
* @param flag 审批标志
* @param projectid 项目id
* @param comment 审批意见
* @return 返回值
* @throws Exception
*/
@PostMapping("/approvePlaninfo") @PostMapping("/approvePlaninfo")
public Result<?> approvePlaninfo(@RequestParam(value = "file",required = false) MultipartFile file, public Result<?> approvePlaninfo(@RequestParam(value = "file",required = false) MultipartFile file,
@RequestParam String taskId, @RequestParam String taskId,
@RequestParam String flag, @RequestParam String flag,
@RequestParam String projectid, @RequestParam String projectid,
@RequestParam String comment) throws Exception { @RequestParam String comment) throws Exception {
SysUser currentUser = ShiroUtil.getCurrentUser(); planinfoService.approvePlaninfo(file,taskId,flag,projectid,comment);
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");
}
return Result.ok("审批成功"); return Result.ok("审批成功");
} }
/**
* 修改项目计划
* @param multipartFile 需要解析的文件
* @param projectid 项目id
* @return 返回值
* @throws Exception
*/
@PostMapping("/modifyPlaninfo") @PostMapping("/modifyPlaninfo")
public Result<?> modifyPlaninfo(@RequestParam(value = "file",required = false) MultipartFile multipartFile, public Result<?> modifyPlaninfo(@RequestParam(value = "file",required = false) MultipartFile multipartFile,
@RequestParam String projectid) throws Exception { @RequestParam String projectid) throws Exception {
HashMap<String, Object> hashMap = planinfoService.getPlanInfoListFromFile(multipartFile, projectid); planinfoService.modifyPlaninfo(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);
return Result.ok("修改计划成功"); return Result.ok("修改计划成功");
} }
/**
* 获取项目计划的树形结构List
* @param projectid 项目id
* @param isArchive 是否已归档
* @param pageNo 页码
* @param pageSize 页数
* @return 返回值
*/
@GetMapping("/queryPlanInfoMainTimeline") @GetMapping("/queryPlanInfoMainTimeline")
public Result<?> queryPlanInfoMainTimeline(String projectid,String isArchive,@RequestParam(name="current", defaultValue="1") Integer pageNo, public Result<?> queryPlanInfoMainTimeline(String projectid,String isArchive,@RequestParam(name="current", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
@ -152,6 +125,12 @@ public class HuzhouPlanController {
ArrayList<HuzhouPlaninfoOV> planInfoMainTimelineList = planinfoService.getPlanInfoMainTimelineList(projectid); ArrayList<HuzhouPlaninfoOV> planInfoMainTimelineList = planinfoService.getPlanInfoMainTimelineList(projectid);
return Result.ok(planInfoMainTimelineList); return Result.ok(planInfoMainTimelineList);
} }
/**
* 根据计划id获取当前计划阶段的数据
* @param planinfoid 计划id
* @return 返回值
*/
@GetMapping("/qetplaninfoByid") @GetMapping("/qetplaninfoByid")
public Result<?> getplaninfoByid(String planinfoid){ public Result<?> getplaninfoByid(String planinfoid){
HuzhouPlaninfo planinfo = planinfoService.getById(planinfoid); HuzhouPlaninfo planinfo = planinfoService.getById(planinfoid);
@ -159,6 +138,14 @@ public class HuzhouPlanController {
huzhouPlaninfos.add(planinfo); huzhouPlaninfos.add(planinfo);
return Result.OK(huzhouPlaninfos); return Result.OK(huzhouPlaninfos);
} }
/**
* 项目计划汇总展示
* @param projectinfo 项目计划信息
* @param pageNo 页码
* @param pageSize 页数
* @return 返回值
*/
@GetMapping("/getplanSummary") @GetMapping("/getplanSummary")
public Result<?> getplanSummary(HuzhouProjectinfo projectinfo, public Result<?> getplanSummary(HuzhouProjectinfo projectinfo,
@RequestParam(name="current", defaultValue="1") Integer pageNo, @RequestParam(name="current", defaultValue="1") Integer pageNo,
@ -166,57 +153,15 @@ public class HuzhouPlanController {
Page<Map> mapPage = planinfoService.getplanSummary(projectinfo, pageNo, pageSize); Page<Map> mapPage = planinfoService.getplanSummary(projectinfo, pageNo, pageSize);
return Result.OK(mapPage); return Result.OK(mapPage);
} }
/**
* 根据项目id下载项目计划内容
* @param response 返回内容
* @param projectid 项目id
*/
@GetMapping("/downloadPlanInfo") @GetMapping("/downloadPlanInfo")
public void downloadPlanInfo(HttpServletResponse response, String projectid){ public void downloadPlanInfo(HttpServletResponse response, String projectid){
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>(); planinfoService.downloadPlanInfo(response,projectid);
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);
} }
} }

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.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easy.admin.common.api.vo.Result; 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.common.core.exception.EasyException;
import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo; import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo;
import com.easy.admin.modules.huzhou.entity.HuzhouWorkreport; import com.easy.admin.modules.huzhou.entity.HuzhouWorkreport;
@ -21,19 +22,26 @@ import java.util.List;
public class HuzhouWorkreportController { public class HuzhouWorkreportController {
@Autowired @Autowired
private IHuzhouWorkreportService workreportService; 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); workreportService.setProjectWorkReport(huzhouProjectinfo);
return Result.ok();
} }
/** /**
* 获取未创建周月报类型的项目 * 获取未创建周月报类型的项目
* @param projectinfo 查询条件 * @param projectinfo 查询条件
* @param pageNo * @param pageNo 页码
* @param pageSize * @param pageSize 页数
* @return IPage<HuzhouProjectinfo> * @return IPage<HuzhouProjectinfo>
*/ */
@GetMapping("getNoTypeWorkReportPageList") @GetMapping("/getNoTypeWorkReportPageList")
public Result<?> getNoTypeWorkReportPageList(HuzhouProjectinfo projectinfo,@RequestParam(name="current", defaultValue="1") Integer pageNo, public Result<?> getNoTypeWorkReportPageList(HuzhouProjectinfo projectinfo,@RequestParam(name="current", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
IPage<HuzhouProjectinfo> res=workreportService.getNoTypeWorkReportPageList(projectinfo,pageNo,pageSize); IPage<HuzhouProjectinfo> res=workreportService.getNoTypeWorkReportPageList(projectinfo,pageNo,pageSize);
@ -42,10 +50,10 @@ public class HuzhouWorkreportController {
/** /**
* 获取已创建的周月报项目 * 获取已创建的周月报项目
* @param workreportOV * @param huzhouProjectinfo 查询条件
* @param pageNo * @param pageNo 页码
* @param pageSize * @param pageSize 页数
* @return * @return Page<HuzhouProjectinfo>
*/ */
@GetMapping("/workreportPageList") @GetMapping("/workreportPageList")
public Result<?> workreportPageList(HuzhouProjectinfo huzhouProjectinfo,@RequestParam(name="current", defaultValue="1") Integer pageNo, 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); Page<HuzhouProjectinfo> pageList = workreportService.getWorkreportPageList(huzhouProjectinfo, pageNo, pageSize);
return Result.ok(pageList); 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") @GetMapping("/getWorkreportById")
public Result<?> getWorkreportById(String id){ public Result<?> getWorkreportById(String id){
HuzhouWorkreport byId = workreportService.getById(id); HuzhouWorkreport byId = workreportService.getById(id);
return Result.ok(byId); return Result.ok(byId);
} }
/**
* 新增项目周月报
* @param file 文件信息
* @param workreport 周月报信息
* @return 返回值
* @throws IOException
*/
@PostMapping("/addWorkreport") @PostMapping("/addWorkreport")
public Result<?> addWorkreport(@RequestParam(value = "file") MultipartFile file, HuzhouWorkreport workreport) throws IOException { public Result<?> addWorkreport(@RequestParam(value = "file") MultipartFile file, HuzhouWorkreport workreport) throws IOException {
workreportService.addWorkreport(file,workreport); workreportService.addWorkreport(file,workreport);
return Result.ok("上传成功"); return Result.ok("上传成功");
} }
/**
* 修改周报
* @param file 文件非必输
* @param workreport
* @return 返回值
* @throws IOException
*/
@PostMapping("/modifyWorkreport") @PostMapping("/modifyWorkreport")
public Result<?> modifyContractinfo(@RequestParam(value = "file",required = false) MultipartFile file, HuzhouWorkreport workreport) throws IOException { public Result<?> modifyContractinfo(@RequestParam(value = "file",required = false) MultipartFile file, HuzhouWorkreport workreport) throws IOException {
Boolean aBoolean = workreportService.modifyWorkreport(file, workreport); 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); Page<HuzhouProjectinfo> getWorkreportPageList(Page page, HuzhouProjectinfo info);
IPage<HuzhouProjectinfo> getNoTypeWorkReportPageList(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"?> <?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"> <!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"> <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 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--> select a.*,b.project_name from huzhou_workreport a LEFT JOIN huzhou_projectinfo b on a.projectid =b.id
<!-- <where>--> <where>
<!-- b.stage >= 2--> a.projectid = #{info.projectid}
<!-- <if test="info.projectContacts!=null and info.projectContacts!=''">--> <if test="info.documentName!=null and info.documentName!=''">
<!-- and b.id in(--> <bind name="tempStr" value="'%' + info.documentName + '%'" />
<!-- select DISTINCT project_id from huzhou_userproject where user_id=#{info.projectContacts}--> and a.document_name like #{tempStr}
<!-- )--> </if>
<!-- </if>--> <if test="info.projectName!=null and info.projectName!=''">
<!-- <if test="info.supervisorContactor!=null and info.supervisorContactor!=''">--> <bind name="tempStr" value="'%' + info.projectName + '%'" />
<!-- and b.id in(--> and b.project_name like #{tempStr}
<!-- SELECT DISTINCT id from huzhou_projectinfo e where e.admin_division in(--> </if>
<!-- SELECT DISTINCT a.admin_division from huzhou_projectinfo a where a.id in (select c.project_id from--> </where>
<!-- huzhou_userproject c where c.user_id=#{info.supervisorContactor})--> order by b.project_name,a.create_date
<!-- )--> </select>
<!-- 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="getWorkreportPageList" resultType="com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo" parameterType="com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo"> <select id="getWorkreportPageList" resultType="com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo" parameterType="com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo">
SELECT * from huzhou_projectinfo u SELECT * from huzhou_projectinfo u
<where> <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月报 * 类型 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; 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.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo; import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo;
import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV;
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Sheet;
import com.easy.admin.modules.huzhou.entity.HuzhouPlaninfo; import com.easy.admin.modules.huzhou.entity.HuzhouPlaninfo;
import com.easy.admin.modules.huzhou.vo.HuzhouPlaninfoOV; 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.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -62,4 +65,13 @@ public interface IHuzhouPlaninfoService extends IService<HuzhouPlaninfo> {
*/ */
Boolean isExitTaskNameInPlanInfo(String projectid,String taskName); 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); void setProjectWorkReport(HuzhouProjectinfo huzhouProjectinfo);
IPage<HuzhouProjectinfo> getNoTypeWorkReportPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize); 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.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.HuzhouPlaninfoMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouPlaninfofileMapper; import com.easy.admin.modules.huzhou.dao.HuzhouPlaninfofileMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouProcessinfoMapper; import com.easy.admin.modules.huzhou.dao.HuzhouProcessinfoMapper;
import com.easy.admin.modules.huzhou.entity.*; import com.easy.admin.modules.huzhou.entity.*;
import com.easy.admin.modules.huzhou.service.IHuzhouFieldchangehistoryService; import com.easy.admin.modules.huzhou.service.*;
import com.easy.admin.modules.huzhou.service.IHuzhouProjectinfoService;
import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV; import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV;
import org.activiti.engine.HistoryService; import org.activiti.engine.HistoryService;
import org.activiti.engine.RuntimeService; import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService; import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricTaskInstance; 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.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.easy.admin.common.util.CommonUtils; import com.easy.admin.common.util.CommonUtils;
import com.easy.admin.modules.huzhou.common.HuzhouCommonUtils; 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 com.easy.admin.modules.huzhou.vo.HuzhouPlaninfoOV;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.FileCopyUtils; import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -57,6 +56,7 @@ import java.util.regex.Pattern;
* @since 2024-01-30 16:01:09 * @since 2024-01-30 16:01:09
*/ */
@Service @Service
@Transactional
public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,HuzhouPlaninfo> implements IHuzhouPlaninfoService { public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,HuzhouPlaninfo> implements IHuzhouPlaninfoService {
@Value(value = "${jeecg.path.upload}") @Value(value = "${jeecg.path.upload}")
private String uploadpath; private String uploadpath;
@ -71,7 +71,13 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
@Autowired @Autowired
private HistoryService historyService; private HistoryService historyService;
@Autowired @Autowired
private IWorkflowService workflowService;
@Autowired
private RuntimeService runtimeService; private RuntimeService runtimeService;
@Autowired
private IHuzhouPlaninfoHistoryService planinfoHistoryService;
@Autowired
private IHuzhouProcessinfoService processinfoService;
@Override @Override
public HashMap<String,Object> getPlanInfoListFromFile(MultipartFile multipartFile,String projectid) throws Exception { public HashMap<String,Object> getPlanInfoListFromFile(MultipartFile multipartFile,String projectid) throws Exception {
HashMap<String, Object> resHashMap = new HashMap<>(); HashMap<String, Object> resHashMap = new HashMap<>();
@ -554,6 +560,147 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
return false; 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){ private HuzhouPlaninfoOV setchild(HuzhouPlaninfoOV planinfoOV){
//在流程这的是否可编辑 //在流程这的是否可编辑
if("1".equals(planinfoOV.getIsfinish())){ 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.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.FileCopyUtils; import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -28,6 +29,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@Service @Service
@Transactional
public class HuzhouWorkreportServiceImpl extends ServiceImpl<HuzhouWorkreportMapper,HuzhouWorkreport> implements IHuzhouWorkreportService { public class HuzhouWorkreportServiceImpl extends ServiceImpl<HuzhouWorkreportMapper,HuzhouWorkreport> implements IHuzhouWorkreportService {
@Autowired @Autowired
private HuzhouWorkreportMapper workreportMapper; private HuzhouWorkreportMapper workreportMapper;
@ -92,6 +94,13 @@ public class HuzhouWorkreportServiceImpl extends ServiceImpl<HuzhouWorkreportMap
return res; 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 { private void addContractFile(MultipartFile file, HuzhouWorkreport workreport) throws IOException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String currentDay = dateFormat.format(new Date()); String currentDay = dateFormat.format(new Date());

Loading…
Cancel
Save