Browse Source

完成合同和周报日报

master
zhouhaibin 7 months ago
parent
commit
c2e9f2e283
  1. 6
      huzhou/pom.xml
  2. 77
      huzhou/src/main/java/org/jeecg/modules/huzhou/common/TemplateExcelUtils.java
  3. 69
      huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouContractinfoController.java
  4. 166
      huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouPlanController.java
  5. 152
      huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouPlaninfofileController.java
  6. 185
      huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouProjectController.java
  7. 57
      huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouRegulationlabController.java
  8. 6
      huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouUploadfileinfoController.java
  9. 52
      huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouWorkreportController.java
  10. 58
      huzhou/src/main/java/org/jeecg/modules/huzhou/controller/WorkflowController.java
  11. 89
      huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouContractinfo.java
  12. 2
      huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouProjectinfo.java
  13. 53
      huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouRegulationlab.java
  14. 70
      huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouWorkreport.java
  15. 22
      huzhou/src/main/java/org/jeecg/modules/huzhou/entity/WorkflowBaseInfo.java
  16. 12
      huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouContractinfoMapper.java
  17. 9
      huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouRegulationlabMapper.java
  18. 14
      huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouWorkreportMapper.java
  19. 8
      huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/WorkflowMapper.java
  20. 18
      huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouContractinfoMapper.xml
  21. 2
      huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouProjectinfoHistoryMapper.xml
  22. 18
      huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouWorkreportMapper.xml
  23. 5
      huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/WorkflowMapper.xml
  24. 24
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouContractinfoService.java
  25. 13
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfoService.java
  26. 3
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfofileService.java
  27. 7
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouProjectinfoService.java
  28. 22
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouRegulationlabService.java
  29. 20
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouWorkreportService.java
  30. 3
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/IWorkflowService.java
  31. 111
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java
  32. 76
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java
  33. 24
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java
  34. 30
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java
  35. 139
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouRegulationlabServiceImpl.java
  36. 96
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouWorkreportServiceImpl.java
  37. 62
      huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/WorkflowServiceImpl.java
  38. 13
      huzhou/src/main/java/org/jeecg/modules/huzhou/vo/HuzhouContractinfoOV.java
  39. 9
      huzhou/src/main/java/org/jeecg/modules/huzhou/vo/HuzhouWorkreportOV.java
  40. BIN
      huzhou/src/main/resources/excelTemplate/项目入库导出模板.xlsx
  41. 0
      huzhou/src/main/resources/excelTemplate/项目入库模板.xlsx
  42. 0
      huzhou/src/main/resources/excelTemplate/项目计划模板.xlsx
  43. 1
      jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml
  44. 2
      jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml
  45. 2
      jeecg-module-system/jeecg-system-start/src/main/resources/application.yml
  46. 7
      jeecg-module-system/jeecg-system-start/src/main/resources/process/initiatesProjects.bpmn20.xml
  47. 54
      jeecg-module-system/jeecg-system-start/src/main/resources/process/项目归档审批流程.bpmn20.xml
  48. BIN
      jeecg-module-system/jeecg-system-start/src/main/resources/process/项目归档审批流程.png
  49. 11
      jeecg-module-system/jeecg-system-start/src/main/resources/process/项目资料审批流程.bpmn20.xml
  50. BIN
      jeecg-module-system/jeecg-system-start/src/main/resources/process/项目资料审批流程.png

6
huzhou/pom.xml

@ -32,6 +32,12 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>

77
huzhou/src/main/java/org/jeecg/modules/huzhou/common/TemplateExcelUtils.java

@ -0,0 +1,77 @@
package org.jeecg.modules.huzhou.common;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillWrapper;
import org.apache.poi.ss.formula.functions.T;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.core.io.ClassPathResource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
/**
* 根据Excel模板导出可以采用该工具类
*/
public class TemplateExcelUtils {
/**
* 根据模板导出数据
* @param fileName
* @param sourcePath resource/template文件夹下路径
* @param list
* @param response
* @throws Exception
*/
public static void downLoadExcel(String fileName, String sourcePath, List list, HttpServletResponse response)
throws Exception {
try{
OutputStream os = getOutputStream(fileName,response);
//读取模板
String path = "excelTemplate"+File.separator+sourcePath;
ClassPathResource classPathResource = new ClassPathResource(path);
InputStream is =classPathResource.getInputStream();
ExcelWriter excelWriter = EasyExcel.write(getOutputStream(fileName, response)).withTemplate(is).excelType(ExcelTypeEnum.XLSX).build();
WriteSheet writeSheet = EasyExcel.writerSheet().build();
// 这个 data 是官方约定就这么写, 传进去的 list 就是要遍历的表格数据,详见我定义的模板中图片位置右侧那部分
excelWriter.fill(new FillWrapper("list", list), writeSheet);
excelWriter.finish();
//向模板中写入内容
//写入成功后转化为输出流
}catch (Exception e){
e.printStackTrace();
throw e;
}
}
/**
* 导出文件时为Writer生成OutputStream.
* @param fileName 文件名
* @param response response
* @return ""
*/
private static OutputStream getOutputStream(String fileName,
HttpServletResponse response) throws Exception {
try {
fileName = URLEncoder.encode(fileName, "UTF-8");
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf8");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx");
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "no-store");
response.addHeader("Cache-Control", "max-age=0");
return response.getOutputStream();
} catch (IOException e) {
throw new Exception("导出excel表格失败!", e);
}
}
}

69
huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouContractinfoController.java

@ -0,0 +1,69 @@
package org.jeecg.modules.huzhou.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.huzhou.entity.HuzhouContractinfo;
import org.jeecg.modules.huzhou.service.IHuzhouContractinfoService;
import org.jeecg.modules.huzhou.vo.HuzhouContractinfoOV;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/huzhouContractinfo")
public class HuzhouContractinfoController {
@Autowired
private IHuzhouContractinfoService contractinfoService;
@GetMapping("/huzhouContractinfoPageList")
public Result<?> huzhouContractinfoPageList(HuzhouContractinfoOV contractinfo,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
Page<HuzhouContractinfoOV> pageList = contractinfoService.getContractinfoPageList(contractinfo, pageNo, pageSize);
return Result.ok(pageList);
}
@GetMapping("/getContractinfoById")
public Result<?> getContractinfoById(String id){
HuzhouContractinfo byId = contractinfoService.getById(id);
return Result.ok(byId);
} @GetMapping("/getContractinfoListById")
public Result<?> getContractinfoListById(String id){
HuzhouContractinfo byId = contractinfoService.getById(id);
List<HuzhouContractinfo> list = new ArrayList<>();
list.add(byId);
return Result.ok(list);
}
@GetMapping("/isExistContractinfo")
public Result<?> isExistContractinfo(String projectid){
List<HuzhouContractinfo> list = contractinfoService.getContractinfoByprojectId(projectid);
if(list.size()>0){
return Result.OK(true);
}
return Result.ok(false);
}
@PostMapping("/addContractinfo")
public Result<?> addContractinfo(@RequestParam(value = "file") MultipartFile file, HuzhouContractinfo contractinfo) throws IOException {
contractinfoService.addContractinfo(file,contractinfo);
return Result.ok("上传成功");
}
@PostMapping("/modifyContractinfo")
public Result<?> modifyContractinfo(@RequestParam(value = "file",required = false) MultipartFile file, HuzhouContractinfo contractinfo) throws IOException {
Boolean aBoolean = contractinfoService.modifyContractinfo(file, contractinfo);
if(aBoolean){
return Result.ok("修改成功");
}
return Result.error("修改失败");
}
@PostMapping("/deleteContractinfo")
public Result<?> deleteContractinfo(@RequestBody HuzhouContractinfo contractinfo) throws IOException {
Boolean aBoolean = contractinfoService.deleteContractinfo(contractinfo);
if(aBoolean){
return Result.ok("删除成功");
}
return Result.error("删除失败");
}
}

166
huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouPlanController.java

@ -1,43 +1,22 @@
package org.jeecg.modules.huzhou.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.shiro.SecurityUtils;
import org.checkerframework.checker.units.qual.A;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.SymbolConstant;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.CommonUtils;
import org.jeecg.modules.huzhou.common.HuzhouCommonUtils;
import org.jeecg.modules.huzhou.entity.*;
import org.jeecg.modules.huzhou.service.*;
import org.jeecg.modules.huzhou.vo.HuzhouPlaninfoOV;
import org.jeecg.modules.huzhou.vo.ProjectApproveOV;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.parameters.P;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@RestController
@ -49,8 +28,7 @@ public class HuzhouPlanController {
private IWorkflowService workflowService;
@Autowired
private IHuzhouProcessinfoService processinfoService;
@Autowired
private IHuzhouPlaninfofileService planinfofileService;
@Autowired
private IHuzhouProjectinfoService projectinfoService;
@Autowired
@ -74,60 +52,7 @@ public class HuzhouPlanController {
return Result.error((String)hashMap.get("msg"));
}
ArrayList<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr");
// int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
// HashMap<String, String> NameMap = new HashMap<String, String>();
// HashMap<String, String> chineseNameMap = new HashMap<String, String>();
//
// Row titlerow = sheet.getRow(0);
// Row chineseTitlerow = sheet.getRow(1);
// int cellNum = 5;
// //获取字段名称
// for (int i = 0; i < cellNum; i++) {
// NameMap.put(String.valueOf(i),titlerow.getCell(i).getStringCellValue());
// }
// for (int i = 1; i < cellNum; i++) {
// chineseNameMap.put(String.valueOf(i),chineseTitlerow.getCell(i).getStringCellValue());
// }
// for (int i = 2; i < physicalNumberOfRows; i++) {
// Row row = sheet.getRow(i);
// HuzhouPlaninfo huzhouPlaninfo = new HuzhouPlaninfo();
// for (int j = 0; j < cellNum; j++) {
// String value = "";
// if(row.getCell(j)!=null){
// row.getCell(j).setCellType(CellType.STRING);
// value = row.getCell(j).getStringCellValue();
// }
// if(value==null||value.length()==0){
// String s = chineseNameMap.get(String.valueOf(j));
// return Result.error("第"+(i+1)+"行,"+s+",不能为空");
// }
// String name = NameMap.get(String.valueOf(j));
// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
// if("scheduledEndTime".equals(name)){
// Date date = dateFormat.parse(value);
// huzhouPlaninfo.setScheduledEndTime(date);
// }else if("scheduledStartTime".equals(name)){
// Date date = dateFormat.parse(value);
// huzhouPlaninfo.setScheduledStartTime(date);
// }else {
// HuzhouCommonUtils.setObjectAttributes(huzhouPlaninfo,name,value);
// }
// if(value!=null&&"taskLevel".equals(name)){
// int index = value.lastIndexOf(".");
// if(index!=-1){
// String substring = value.substring(0, index);
// HuzhouCommonUtils.setObjectAttributes(huzhouPlaninfo,"superior",substring);
// }else {
//// String substring = value.substring(0, index);
// HuzhouCommonUtils.setObjectAttributes(huzhouPlaninfo,"superior","0");
// }
// }
// }
// huzhouPlaninfo.setProjectId(projectid);
// huzhouPlaninfo.setIsfinish("0");
// huzhouPlaninfoArrayList.add(huzhouPlaninfo);
//
// }
planinfoService.saveBatch(huzhouPlaninfoArrayList);
ArrayList<String> arrayList = new ArrayList<>();
@ -166,6 +91,10 @@ public class HuzhouPlanController {
return Result.error((String)hashMap.get("msg"));
}
ArrayList<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr");
String isAllow = planinfoService.IsAllowModifyPlaninfo(projectid,huzhouPlaninfoArrayList);
if(!"1".equals(isAllow)){
return Result.error(isAllow);
}
//保存历史记录
planinfoHistoryService.savePlanInfoToHistory(projectid);
//删除原纪录
@ -194,28 +123,26 @@ public class HuzhouPlanController {
return Result.error((String)hashMap.get("msg"));
}
ArrayList<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr");
List<HuzhouPlaninfo> planinfoHistoryList = planinfoService.getFinishListByProjectId(projectid);
if(planinfoHistoryList.size()>0){
for (HuzhouPlaninfo his:planinfoHistoryList){
boolean isexist=false;
String hisTaskLevel = his.getTaskLevel();
String hisTaskName = his.getTaskName();
for(int i =0;i<huzhouPlaninfoArrayList.size();i++){
// for (HuzhouPlaninfo now:huzhouPlaninfoArrayList){
HuzhouPlaninfo now = huzhouPlaninfoArrayList.get(i);
String nowTaskName = now.getTaskName();
String nowTaskLevel = now.getTaskLevel();
if(hisTaskLevel.equals(nowTaskLevel)&&hisTaskName.equals(nowTaskName)){
isexist=true;
huzhouPlaninfoArrayList.remove(now);
break;
}
}
if(!isexist){
return Result.error("任务级别:"+hisTaskLevel+",任务名称:"+hisTaskName+"已完成,无法修改!");
}
}
String isAllow = planinfoService.IsAllowModifyPlaninfo(projectid,huzhouPlaninfoArrayList);
if(!"1".equals(isAllow)){
return Result.error(isAllow);
}
ArrayList<String> arrayList = new ArrayList<>();
//设置下一个节点处理人
//使用角色查询
arrayList.add("1752895307869614081");
arrayList.add("1752895591849160705");
WorkFlow workFlow = workflowService.createFlow("项目计划审批流程", arrayList);
String businessKey = workFlow.getBusinessKey();
String processInstanceId = workFlow.getProcessInstanceId();
HuzhouProcessinfo huzhouProcessinfo = new HuzhouProcessinfo();
huzhouProcessinfo.setBusinesskey(businessKey);
huzhouProcessinfo.setStage("3");//项目计划
huzhouProcessinfo.setProcessstatus("1");
huzhouProcessinfo.setProcessinstanceid(processInstanceId);
huzhouProcessinfo.setProjectid(projectid);
processinfoService.save(huzhouProcessinfo);
projectinfoService.modifyStageById(projectid,"4");
planinfoHistoryService.savePlanInfoToHistory(projectid);
planinfoService.removeByProjectId(projectid);
planinfoService.saveBatch(huzhouPlaninfoArrayList);
@ -226,31 +153,12 @@ public class HuzhouPlanController {
ArrayList<HuzhouPlaninfoOV> planInfoMainTimelineList = planinfoService.getPlanInfoMainTimelineList(projectid);
return Result.ok(planInfoMainTimelineList);
}
@PostMapping("/planUploadFile")
@Transactional()
public Result<?> planUploadFile(@RequestParam(value = "file")
MultipartFile[] files,@RequestParam(value = "planinfoid") String planinfoid) throws IOException {
//获取当前时间
planinfoService.saveOrModifyPlanUploadFile(files,planinfoid,"1");
return Result.OK("上传成功!!");
}
@PostMapping("/planUploadModifyFile")
@Transactional()
public Result<?> planUploadModifyFile(@RequestParam(value = "file")
MultipartFile[] files,@RequestParam(value = "planinfoid") String planinfoid) throws IOException {
planinfoService.saveOrModifyPlanUploadFile(files,planinfoid,"2");
return Result.ok("修改成功");
}
@GetMapping("/queryPlaninfoFilePageByid")
public Result<?> queryPlaninfoFilePageByid(String planinfoid,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
LambdaQueryWrapper<HuzhouPlaninfofile> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(HuzhouPlaninfofile::getPlaninfoid,planinfoid);
lambdaQueryWrapper.orderByDesc(BaseEntity::getCreatetime);
Page<HuzhouPlaninfofile> page = new Page<>(pageNo, pageSize);
Page<HuzhouPlaninfofile> planinfofilePage = planinfofileService.page(page, lambdaQueryWrapper);
return Result.ok(planinfofilePage);
@GetMapping("/qetplaninfoByid")
public Result<?> getplaninfoByid(String planinfoid){
HuzhouPlaninfo planinfo = planinfoService.getById(planinfoid);
ArrayList<HuzhouPlaninfo> huzhouPlaninfos = new ArrayList<>();
huzhouPlaninfos.add(planinfo);
return Result.OK(huzhouPlaninfos);
}
}

152
huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouPlaninfofileController.java

@ -0,0 +1,152 @@
package org.jeecg.modules.huzhou.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.huzhou.entity.*;
import org.jeecg.modules.huzhou.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@RestController
@RequestMapping("/huzhouPlaninfofile")
public class HuzhouPlaninfofileController {
@Autowired
private IHuzhouPlaninfofileService planinfofileService;
@Autowired
private IHuzhouPlaninfoService planinfoService;
@Autowired
private IWorkflowService workflowService;
@Autowired
private IHuzhouProcessinfoService processinfoService;
@Autowired
private IHuzhouProjectinfoService projectinfoService;
@PostMapping("/planUploadFile")
@Transactional()
public Result<?> planUploadFile(@RequestParam(value = "file")
MultipartFile[] files, @RequestParam(value = "planinfoid") String planinfoid) throws IOException {
//检查是否可提交
HuzhouPlaninfo planinfo = planinfoService.getById(planinfoid);
String taskLevel = planinfo.getTaskLevel();
List<HuzhouPlaninfo> childPlanList = planinfoService.queryChildPlan(planinfo.getProjectId(), planinfo.getTaskLevel(),"0,1");
if(childPlanList.size()>0){
return Result.error("存在未完成(审批中)的子项。当前阶段不允许提交文件");
}
//获取当前时间
planinfoService.saveOrModifyPlanUploadFile(files,planinfoid,"1");
ArrayList<String> arrayList = new ArrayList<>();
//设置下一个节点处理人
//使用角色查询
arrayList.add("1752893978598207490");
WorkFlow workFlow = workflowService.createFlow("项目资料审批流程", arrayList);
String businessKey = workFlow.getBusinessKey();
String processInstanceId = workFlow.getProcessInstanceId();
HuzhouProcessinfo huzhouProcessinfo = new HuzhouProcessinfo();
huzhouProcessinfo.setBusinesskey(businessKey);
huzhouProcessinfo.setStage("4");//项目资料审批
huzhouProcessinfo.setProcessstatus("1");
huzhouProcessinfo.setProcessinstanceid(processInstanceId);
huzhouProcessinfo.setProjectid(planinfoid);
processinfoService.save(huzhouProcessinfo);
return Result.OK("上传成功!!");
}
@PostMapping("/planUploadModifyFile")
@Transactional()
public Result<?> planUploadModifyFile(@RequestParam(value = "file")
MultipartFile[] files,@RequestParam(value = "planinfoid") String planinfoid) throws IOException {
HuzhouPlaninfo planinfo = planinfoService.getById(planinfoid);
ArrayList<String> arrayList = new ArrayList<>();
//设置下一个节点处理人
//使用角色查询
arrayList.add("1752893978598207490");
WorkFlow workFlow = workflowService.createFlow("项目资料审批流程", arrayList);
String businessKey = workFlow.getBusinessKey();
String processInstanceId = workFlow.getProcessInstanceId();
HuzhouProcessinfo huzhouProcessinfo = new HuzhouProcessinfo();
huzhouProcessinfo.setBusinesskey(businessKey);
huzhouProcessinfo.setStage("4");//项目资料审批
huzhouProcessinfo.setProcessstatus("1");
huzhouProcessinfo.setProcessinstanceid(processInstanceId);
huzhouProcessinfo.setProjectid(planinfoid);
processinfoService.save(huzhouProcessinfo);
planinfoService.saveOrModifyPlanUploadFile(files,planinfoid,"2");
//修改项目状态
projectinfoService.modifyStageById(planinfo.getProjectId(),"5");
return Result.ok("修改成功");
}
@GetMapping("/queryPlaninfoFilePageByid")
public Result<?> queryPlaninfoFilePageByid(String planinfoid,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
LambdaQueryWrapper<HuzhouPlaninfofile> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(HuzhouPlaninfofile::getPlaninfoid,planinfoid);
lambdaQueryWrapper.orderByDesc(BaseEntity::getCreatetime);
Page<HuzhouPlaninfofile> page = new Page<>(pageNo, pageSize);
Page<HuzhouPlaninfofile> planinfofilePage = planinfofileService.page(page, lambdaQueryWrapper);
return Result.ok(planinfofilePage);
}
@GetMapping("/planFilePageList")
public Result<?> planFilePageList(HuzhouPlaninfofile planinfofile,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
Page<HuzhouPlaninfofile> planinfofilePage = planinfofileService.getplanFilePageList(planinfofile,pageNo,pageSize);
return Result.ok(planinfofilePage);
}
@PostMapping("/approvePlanFile")
public Result<?> approvePlanFile(@RequestParam(value = "file",required = false) MultipartFile[] files,
@RequestParam String taskId,
@RequestParam String flag,
@RequestParam String planinfoid,
@RequestParam String comment,
@RequestParam String stage) throws Exception {
WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment, stage);
String userTaskName = workFlow.getUserTask();
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(files!=null&&"1".equals(flag)){
planinfoService.saveOrModifyPlanUploadFile(files,planinfoid,"2");
}
HuzhouPlaninfo huzhouPlaninfo = new HuzhouPlaninfo();
huzhouPlaninfo.setId(planinfoid);
if("3".equals(flag)){
huzhouPlaninfo.setIsfinish("0");
planinfoService.updateById(huzhouPlaninfo);
planinfofileService.modifyStatusByPlaninfoid("0",planinfoid);
processinfoService.modifyStatusByProjectId(planinfoid,"0","4");
return Result.ok("作废成功!");
}
if("管理人员".equals(userTaskName)&&"1".equals(flag)){
huzhouPlaninfo.setIsfinish("2");
planinfoService.updateById(huzhouPlaninfo);
processinfoService.modifyStatusByProjectId(planinfoid,"2","4");
HuzhouPlaninfo planinfo = planinfoService.getById(planinfoid);
String projectId = planinfo.getProjectId();
HuzhouPlaninfo nodePlan = planinfoService.getNodePlan(projectId, planinfo.getTaskLevel());
//如果文件为空,检查子项是否全部完成,若以完成则为完成
if(nodePlan.getTaskFile()==null){
List<HuzhouPlaninfo> unfinishChildPlan = planinfoService.queryChildPlan(projectId, nodePlan.getTaskLevel(), "0,1");
if(unfinishChildPlan.size()==0){
HuzhouPlaninfo nodePlaninfo = new HuzhouPlaninfo();
nodePlaninfo.setIsfinish("2");
nodePlaninfo.setId(nodePlan.getId());
planinfoService.updateById(nodePlaninfo);
}
}
List<HuzhouPlaninfo> list = planinfoService.getUnFinishListByProjectId(projectId);
if(list.size()==0){
projectinfoService.modifyStageById(projectId,"6");
}
}
return Result.ok("审批成功");
}
}

185
huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouProjectController.java

@ -14,15 +14,20 @@ import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.SymbolConstant;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.CommonUtils;
import org.jeecg.common.util.PasswordUtil;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.huzhou.common.HuzhouCommonUtils;
import org.jeecg.modules.huzhou.common.TemplateExcelUtils;
import org.jeecg.modules.huzhou.entity.*;
import org.jeecg.modules.huzhou.service.*;
import org.jeecg.modules.huzhou.vo.ProjectApproveOV;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.ISysDictService;
import org.jeecg.modules.system.service.ISysUserService;
import org.springframework.beans.BeanUtils;
@ -37,6 +42,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
@ -47,6 +53,8 @@ import java.util.stream.Collectors;
@RestController
@RequestMapping("/huzhouProject")
public class HuzhouProjectController {
@Autowired
private ISysUserService sysUserService;
@Autowired
private RuntimeService runtimeService;
@ -62,6 +70,8 @@ public class HuzhouProjectController {
private ISysDictService sysDictService;
@Autowired
private IHuzhouProjectinfoHistoryService projectinfoHistoryService;
@Autowired
private ISysUserService userService;
/**
* 本地local miniominio 阿里alioss
*/
@ -72,6 +82,7 @@ public class HuzhouProjectController {
public Result<String> submitProject(@RequestBody HuzhouProjectinfo info){
//保存项目信息
info.setStage("1");//最开始的状态
info.setIsmodify("0");//0是新建,1是修改,2是完成
int constructionPeriod = Integer.parseInt(info.getConstructionPeriod());
LocalDate now = LocalDate.now();
LocalDate localDate = LocalDate.of(2025, 6, 30);
@ -183,7 +194,7 @@ public class HuzhouProjectController {
if("constructionPeriod".equals(name)){
int constructionPeriod = Integer.parseInt(value);
LocalDate now = LocalDate.now();
LocalDate localDate = LocalDate.of(2025, 6, 31);
LocalDate localDate = LocalDate.of(2025, 6, 30);
Period period = Period.between(now, localDate);
int month = period.getYears()*12+period.getMonths();
if(constructionPeriod>month){
@ -199,6 +210,15 @@ public class HuzhouProjectController {
}
}
if(name.contains("Contactor")){
SysUser user = userService.getUserByName(value);
if(user==null){
String s = chineseNameMap.get(String.valueOf(j));
return Result.error("第"+(i+1)+"行,"+s+",此人不在系统中,请增加");
}else {
value = user.getId();
}
}
HuzhouCommonUtils.setObjectAttributes(huzhouProjectinfo,name,value);
}
huzhouProjectinfo.setStage("1");
@ -230,14 +250,7 @@ public class HuzhouProjectController {
public Result<?> approveProjectInfo(@RequestBody ProjectApproveOV projectApproveOV){
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String userId = currentUser.getId();
// String taskId = (String) param.get("taskId");
// String flag = (String) param.get("flag");
// String comment = (String) param.get("comment");
// String projectid = (String) param.get("projectid");
// String stage = (String) param.get("stage");
// String isEdit = (String) param.get("isEdit");
// Map projectInfoMap = (Map) param.get("projectInfo");
// List<Map> projectArr = (List<Map>) param.get("projectArr");
String taskId = projectApproveOV.getTaskId();
HuzhouProjectinfo projectinfo = projectApproveOV.getProjectInfo();
String comment = projectApproveOV.getComment();
@ -246,11 +259,7 @@ public class HuzhouProjectController {
String stage = projectApproveOV.getStage();
String isEdit = projectApproveOV.getIsEdit();
List<HuzhouProjectinfo> projectArr = projectApproveOV.getProjectArr();
// HuzhouProjectinfo projectinfo =null;
// if(projectInfo!=null){
// String jsonString = JSON.toJSONString(projectInfo);
// projectinfo = JSON.parseObject(jsonString, HuzhouProjectinfo.class);
// }
if("1".equals(isEdit)&&"1".equals(flag)&&"1".equals(stage)){
if(null!=projectinfo){
//查询修改前信息进行保存
@ -280,25 +289,32 @@ public class HuzhouProjectController {
}
if(projectArr!=null){
if("管理单位审批".equals(userTaskName)&&"1".equals(flag)){
if("管理单位".equals(userTaskName)&&"1".equals(flag)){
for (HuzhouProjectinfo item:projectArr) {
String id = item.getId();
projectinfoService.modifyStageById(id,"2");
String ismodify = projectinfoService.getById(id).getIsmodify();
//0表示项目第一次创建需要修改状态,后续审批不修改状态
if("0".equals(ismodify)){
projectinfoService.modifyStageById(id,"2");
}
processinfoService.modifyStatusByProjectId(id,"2","1");
projectinfoService.modifyismodifyById(id,"2");
}
}
}else{
//管理单位审批通过,最后一个节点流程通过
if("管理单位审批".equals(userTaskName)&&"1".equals(flag)){
projectinfoService.modifyStageById(projectid,"2");
if("管理单位".equals(userTaskName)&&"1".equals(flag)){
String ismodify = projectinfoService.getById(projectid).getIsmodify();
//0表示项目第一次创建需要修改状态,后续审批不修改状态
if("0".equals(ismodify)){
projectinfoService.modifyStageById(projectid,"2");
}
processinfoService.modifyStatusByProjectId(projectid,"2","1");
projectinfoService.modifyismodifyById(projectid,"2");
}
}
if("计划审批二".equals(userTaskName)&&"1".equals(flag)){
projectinfoService.modifyStageById(projectid,"5");
processinfoService.modifyStatusByProjectId(projectid,"2","3");
}
return Result.ok("审批成功");
}
@ -316,6 +332,31 @@ public class HuzhouProjectController {
userprojectService.saveFromProject(huzhouProjectinfo);
return Result.ok("修改成功");
}
@PostMapping("/modifyProjectInfoApproval")
public Result<?> modifyProjectInfoApproval(@RequestBody HuzhouProjectinfo huzhouProjectinfo){
ArrayList<String> arrayList = new ArrayList<>();
//设置下一个节点处理人
//使用角色查询
arrayList.add("1752895307869614081");
arrayList.add("1752895591849160705");
WorkFlow workFlow = workflowService.createFlow("initiatesProjects", arrayList);
String processInstanceId = workFlow.getProcessInstanceId();
String businessKey = workFlow.getBusinessKey();
HuzhouProcessinfo huzhouProcessinfo = new HuzhouProcessinfo();
huzhouProcessinfo.setBusinesskey(businessKey);
huzhouProcessinfo.setStage("1");//该项目的第一个流程
huzhouProcessinfo.setProcessinstanceid(processInstanceId);
huzhouProcessinfo.setProjectid(huzhouProjectinfo.getId());
huzhouProcessinfo.setProcessstatus("1");
processinfoService.save(huzhouProcessinfo);
HuzhouProjectinfo projectinfoHistory= projectinfoService.getById(huzhouProjectinfo.getId());
huzhouProjectinfo.setIsmodify("1");
projectinfoService.updateById(huzhouProjectinfo);
projectinfoHistoryService.saveFromProject(projectinfoHistory);
userprojectService.removeByProjectId(huzhouProjectinfo.getId());
userprojectService.saveFromProject(huzhouProjectinfo);
return Result.ok("修改成功");
}
@GetMapping("/projectInfoPageList")
public Result<IPage<HuzhouProjectinfo>> queryPageList(HuzhouProjectinfo projectinfo,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@ -363,4 +404,104 @@ public class HuzhouProjectController {
Page<HuzhouProjectinfo> projectinfoPage = projectinfoService.page(huzhouProjectinfoPage, projectinfoQueryWrapper);
return Result.ok(projectinfoPage);
}
@GetMapping("/projectArchivePageList")
public Result<IPage<HuzhouProjectinfo>> projectArchivePageList(HuzhouProjectinfo projectinfo,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
projectinfo.setStage("6");
IPage<HuzhouProjectinfo> infoPageList = projectinfoService.getProjectInfoPageList(projectinfo, pageNo, pageSize);
return Result.OK(infoPageList);
}
@PostMapping("/submitProjectArchive")
public Result<?> submitProjectArchive(@RequestBody HashMap<String,String> param){
String projectid = param.get("projectid");
ArrayList<String> arrayList = new ArrayList<>();
//设置下一个节点处理人
//使用角色查询
arrayList.add("1752893978598207490");
WorkFlow workFlow = workflowService.createFlow("项目归档审批流程", arrayList);
String processInstanceId = workFlow.getProcessInstanceId();
String businessKey = workFlow.getBusinessKey();
HuzhouProjectinfo huzhouProjectinfo = new HuzhouProjectinfo();
huzhouProjectinfo.setId(projectid);
huzhouProjectinfo.setStage("7");
projectinfoService.updateById(huzhouProjectinfo);
HuzhouProcessinfo huzhouProcessinfo = new HuzhouProcessinfo();
huzhouProcessinfo.setBusinesskey(businessKey);
huzhouProcessinfo.setStage("5");//该项目的第一个流程
huzhouProcessinfo.setProcessinstanceid(processInstanceId);
huzhouProcessinfo.setProjectid(projectid);
huzhouProcessinfo.setProcessstatus("1");
processinfoService.save(huzhouProcessinfo);
return Result.ok("项目入库申请已发起成功");
}
@PostMapping("/approveProjectArchive")
public Result<?> approveProjectArchive(@RequestBody ProjectApproveOV approveOV
) throws Exception {
String taskId =approveOV.getTaskId();
String flag = approveOV.getFlag();
String projectid =approveOV.getProjectid();
String comment=approveOV.getComment();
String stage=approveOV.getStage();
WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment, stage);
String userTaskName = workFlow.getUserTask();
if("3".equals(flag)){
processinfoService.modifyStatusByProjectId(projectid,"0","5");
return Result.ok("作废成功!");
}
if("归档人".equals(userTaskName)&&"1".equals(flag)){
projectinfoService.modifyStageById(projectid,"8");
processinfoService.modifyStatusByProjectId(projectid,"2","5");
}
return Result.ok("审批成功");
}
@GetMapping("/batchdownloadProject")
public void batchdownloadProject(HttpServletResponse response,HuzhouProjectinfo projectinfo){
List<HuzhouProjectinfo> projectInfoList = projectinfoService.getProjectInfoList(projectinfo);
try {
projectInfoList.forEach(item->{
List<DictModel> reformTasks = sysDictService.getDictItems("reformTasks");
String dictValue = null;
for (DictModel dict:reformTasks) {
if(dict.getValue().equals(item.getReformName())){
dictValue=dict.getText();
item.setReformName(dictValue);
}
}
List<DictModel> room = sysDictService.getDictItems("room");
for (DictModel dict:room) {
if(dict.getValue().equals(item.getSuperLeader())){
dictValue=dict.getText();
item.setSuperLeader(dictValue);
}
}
Class<?> clazz = item.getClass();
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
try {
String name = method.getName();
if (name.startsWith("get")&&name.contains("Contactor")) { // 假设所有的getter方法都不带参数,并且返回一个基本数据类型或其包装类
Object value = method.invoke(item);
if (value != null) { // 过滤掉null值
SysUser user = userService.getById(value.toString());
String realname = user.getRealname();
String setName = "set"+name.substring(3);
Method method1 = clazz.getMethod(setName, String.class);
method1.invoke(item,realname);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
TemplateExcelUtils.downLoadExcel("项目入库导出模板", "项目入库导出模板.xlsx", projectInfoList, response);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

57
huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouRegulationlabController.java

@ -0,0 +1,57 @@
package org.jeecg.modules.huzhou.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.huzhou.entity.HuzhouRegulationlab;
import org.jeecg.modules.huzhou.service.IHuzhouRegulationlabService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@RestController
@RequestMapping("/huzhouRegulationlab")
public class HuzhouRegulationlabController {
@Autowired
private IHuzhouRegulationlabService regulationlabService;
@GetMapping("/regulationlabPageList")
public Result<?> regulationlabPageList(HuzhouRegulationlab regulationlab,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
Page<HuzhouRegulationlab> pageList = regulationlabService.getRegulationlabPageList(regulationlab, pageNo, pageSize);
return Result.ok(pageList);
}
@GetMapping("/getregulationlabById")
public Result<?> getregulationlabById(String id){
HuzhouRegulationlab byId = regulationlabService.getById(id);
return Result.ok(byId);
}
@PostMapping("/addRegulationlab")
public Result<?> addRegulationlab(@RequestParam(value = "file") MultipartFile file, HuzhouRegulationlab regulationlab) throws IOException {
regulationlabService.addRegulationlab(file,regulationlab);
return Result.ok("上传成功");
}
@PostMapping("/modifyRegulationlab")
public Result<?> modifyRegulationlab(@RequestParam(value = "file",required = false) MultipartFile file, HuzhouRegulationlab regulationlab) throws IOException {
Boolean aBoolean = regulationlabService.modifyRegulationlab(file, regulationlab);
if(aBoolean){
return Result.ok("修改成功");
}
return Result.error("修改失败");
}
@PostMapping("/deleteRegulationlab")
public Result<?> deleteRegulationlab(@RequestBody HuzhouRegulationlab regulationlab) throws IOException {
Boolean aBoolean = regulationlabService.deleteRegulationlab(regulationlab);
if(aBoolean){
return Result.ok("删除成功");
}
return Result.error("删除失败");
}
@GetMapping("/batchdownloadRegulationlabFiles")
public void batchdownloadRegulationlabFiles(HuzhouRegulationlab regulationlab, HttpServletResponse response){
regulationlabService.batchdownloadRegulationlabFiles(regulationlab,response);
}
}

6
huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouUploadfileinfoController.java

@ -40,7 +40,7 @@ public class HuzhouUploadfileinfoController {
InputStream fileInputStream =null;
File file = null;
if(path.startsWith("Resources")){
path = path.substring(path.indexOf("/")+1);
path = "excelTemplate"+File.separator+path.substring(path.indexOf("/")+1);
ClassPathResource classPathResource = new ClassPathResource(path);
fileInputStream =classPathResource.getInputStream();
}else{
@ -120,11 +120,11 @@ public class HuzhouUploadfileinfoController {
WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment, stage);
String userTaskName = workFlow.getUserTask();
if("发起人".equals(workFlow.getUserTask())&&null != file){
if("发起人".equals(workFlow.getUserTask())&&null != file&&"1".equals(flag)){
uploadfileinfoService.modifyUploadFile(file,projectid,"1");
}
//意见文件
if(adviceFile!=null&&"0".equals(flag)){
if(adviceFile!=null&&"1".equals(flag)){
uploadfileinfoService.modifyUploadFile(adviceFile,projectid,"2");
}
if("3".equals(flag)){

52
huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouWorkreportController.java

@ -0,0 +1,52 @@
package org.jeecg.modules.huzhou.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.huzhou.entity.HuzhouWorkreport;
import org.jeecg.modules.huzhou.service.IHuzhouWorkreportService;
import org.jeecg.modules.huzhou.vo.HuzhouWorkreportOV;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@RestController
@RequestMapping("/huzhouWorkreport")
public class HuzhouWorkreportController {
@Autowired
private IHuzhouWorkreportService workreportService;
@GetMapping("/workreportPageList")
public Result<?> workreportPageList(HuzhouWorkreportOV workreportOV,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
Page<HuzhouWorkreportOV> pageList = workreportService.getWorkreportPageList(workreportOV, pageNo, pageSize);
return Result.ok(pageList);
}
@GetMapping("/getWorkreportById")
public Result<?> getWorkreportById(String id){
HuzhouWorkreport byId = workreportService.getById(id);
return Result.ok(byId);
}
@PostMapping("/addWorkreport")
public Result<?> addWorkreport(@RequestParam(value = "file") MultipartFile file, HuzhouWorkreport workreport) throws IOException {
workreportService.addWorkreport(file,workreport);
return Result.ok("上传成功");
}
@PostMapping("/modifyWorkreport")
public Result<?> modifyContractinfo(@RequestParam(value = "file",required = false) MultipartFile file, HuzhouWorkreport workreport) throws IOException {
Boolean aBoolean = workreportService.modifyWorkreport(file, workreport);
if(aBoolean){
return Result.ok("修改成功");
}
return Result.error("修改失败");
}
@PostMapping("/deleteWorkreport")
public Result<?> deleteContractinfo(@RequestBody HuzhouWorkreport workreport) throws IOException {
Boolean aBoolean = workreportService.deleteWorkreport(workreport);
if(aBoolean){
return Result.ok("删除成功");
}
return Result.error("删除失败");
}
}

58
huzhou/src/main/java/org/jeecg/modules/huzhou/controller/WorkflowController.java

@ -21,8 +21,10 @@ import org.apache.shiro.SecurityUtils;
import org.checkerframework.checker.units.qual.A;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.huzhou.entity.BaseEntity;
import org.jeecg.modules.huzhou.entity.HuzhouProcessinfo;
import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo;
import org.jeecg.modules.huzhou.entity.WorkflowBaseInfo;
import org.jeecg.modules.huzhou.mapper.WorkflowMapper;
import org.jeecg.modules.huzhou.service.IHuzhouProcessinfoService;
import org.jeecg.modules.huzhou.service.IHuzhouProjectinfoService;
@ -95,13 +97,13 @@ public class WorkflowController {
}
if(processinfo!=null){
String projectid = processinfo.getProjectid();
stringObjectHashMap.put("projectid",projectid);
stringObjectHashMap.put("projectId",projectid);
//获取项目名称
LambdaQueryWrapper<HuzhouProjectinfo> projetcQueryWrapper = new LambdaQueryWrapper<>();
projetcQueryWrapper.eq(HuzhouProjectinfo::getId,projectid);
HuzhouProjectinfo projectInfo = projectinfoService.getOne(projetcQueryWrapper);
stringObjectHashMap.put("projectName",projectInfo.getProjectName());
stringObjectHashMap.put("createTime",projectInfo.getCreatetime());
WorkflowBaseInfo info = workflowMapper.getProjectInfo(projectid);
stringObjectHashMap.put("projectName",info.getProjectName());
stringObjectHashMap.put("createTime",info.getCreatetime());
stringObjectHashMap.put("stage",processinfo.getStage());
}
@ -179,7 +181,7 @@ public class WorkflowController {
if(huzhouProcessinfoList.size()>=1){
processinfo = huzhouProcessinfoList.get(0);
String projectid = processinfo.getProjectid();
reshashMap.put("projectid",projectid);
reshashMap.put("projectId",projectid);
}else {
}
@ -188,10 +190,10 @@ public class WorkflowController {
//获取项目名称
LambdaQueryWrapper<HuzhouProjectinfo> projetcQueryWrapper = new LambdaQueryWrapper<>();
projetcQueryWrapper.eq(HuzhouProjectinfo::getId,projectid);
HuzhouProjectinfo projectInfo = projectinfoService.getOne(projetcQueryWrapper);
reshashMap.put("projectName",projectInfo.getProjectName());
WorkflowBaseInfo info = workflowMapper.getProjectInfo(projectid);
reshashMap.put("projectName",info.getProjectName());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String createtime = dateFormat.format(projectInfo.getCreatetime());
String createtime = dateFormat.format(info.getCreatetime());
reshashMap.put("createTime",createtime);
reshashMap.put("stage",processinfo.getStage());
}
@ -235,18 +237,20 @@ public class WorkflowController {
return Result.ok(taskPage);
}
@GetMapping("/getprocessInfo")
public Result<IPage<HashMap<String,Object>>> getprocessInfo(String projectid,String stage,
public Result<IPage<HashMap<String,Object>>> getprocessInfo(String processInstanceId,String projectid, String stage,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
//通过项目id查询流程id
HuzhouProjectinfo projectinfo = projectinfoService.getById(projectid);
LambdaQueryWrapper<HuzhouProcessinfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid);
queryWrapper.eq(HuzhouProcessinfo::getStage,stage);//属于第几部流程
HuzhouProcessinfo processinfo = processinfoService.getOne(queryWrapper);
String processinstanceid = processinfo.getProcessinstanceid();
if(projectid!=null){
LambdaQueryWrapper<HuzhouProcessinfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid);
queryWrapper.eq(HuzhouProcessinfo::getStage,stage);
queryWrapper.orderByDesc(BaseEntity::getCreatetime);
HuzhouProcessinfo huzhouProcessinfo = processinfoService.list(queryWrapper).get(0);
processInstanceId=huzhouProcessinfo.getProcessinstanceid();
}
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processinstanceid)
.processInstanceId(processInstanceId)
.orderByTaskCreateTime().asc().listPage((pageNo-1)*pageSize,pageSize);
List<HashMap<String,Object>> approvalEntityList = new ArrayList<>();
String approvalSuggestion = "";
@ -279,7 +283,7 @@ public class WorkflowController {
approvalEntityList.add(hashMap);
}
int countSize = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processinstanceid)
.processInstanceId(processInstanceId)
.orderByTaskCreateTime().asc().list().size();
IPage<HashMap<String,Object>> listIPage = new Page<>();
listIPage.setRecords(approvalEntityList);
@ -291,7 +295,7 @@ public class WorkflowController {
@GetMapping("/getActionParam")
public Result<?> getActionParam(String projectid,String stage,String taskId,String procesType){
public Result<?> getActionParam(String processInstanceId,String taskId,String procesType){
HashMap<String,Object> outRes = new HashMap<>();
ArrayList<Object> actionButtons = new ArrayList<>();
//如果是已办
@ -300,15 +304,9 @@ public class WorkflowController {
outRes.put("showApprovalForm",false);
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String currentLoginuserId = currentUser.getId();
HuzhouProjectinfo projectinfo = projectinfoService.getById(projectid);
LambdaQueryWrapper<HuzhouProcessinfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid);
queryWrapper.eq(HuzhouProcessinfo::getStage,stage);//属于第几部流程
HuzhouProcessinfo processinfo = processinfoService.getOne(queryWrapper);
String processinstanceid = processinfo.getProcessinstanceid();
List<HistoricTaskInstance> list = historyService
.createHistoricTaskInstanceQuery()
.processInstanceId(processinstanceid)
.processInstanceId(processInstanceId)
.orderByTaskCreateTime()
.desc()
.list();
@ -322,7 +320,6 @@ public class WorkflowController {
if(task==null){
return Result.OK(outRes);
}
String processInstanceId = task.getProcessInstanceId();
//获取当前模型
BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
// 获取当前节点
@ -345,7 +342,6 @@ public class WorkflowController {
outRes.put("showApprovalForm",true);
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String processInstanceId = task.getProcessInstanceId();
//获取当前模型
BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
// 获取当前节点
@ -358,11 +354,11 @@ public class WorkflowController {
hashMap1.put("label","同意");
hashMap1.put("value","1");
actionButtons.add(hashMap1);
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("label","作废");
hashMap.put("value","3");
// HashMap<String, String> hashMap = new HashMap<>();
// hashMap.put("label","作废");
// hashMap.put("value","3");
// actionButtons.add(hashMap);
outRes.put("IsEdit",true);
actionButtons.add(hashMap);
}else {
HashMap<String, String> hashMap1 = new HashMap<>();
hashMap1.put("label","同意");

89
huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouContractinfo.java

@ -0,0 +1,89 @@
package org.jeecg.modules.huzhou.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.io.Serializable;
/**
* (HuzhouContractinfo)实体类
*
* @author makejava
* @since 2024-03-01 10:09:24
*/
@Data
public class HuzhouContractinfo extends BaseEntity implements Serializable {
/**
* id
*/
private String id;
/**
* 项目id
*/
private String projectid;
/**
* 首发时间
*/
@JsonFormat(pattern="yyyy-MM-dd")
@JSONField(format="yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date downpaymentDate;
/**
* 首付比例
*/
private String downpaymentRatio;
/**
* 初验时间
*/
@JsonFormat(pattern="yyyy-MM-dd")
@JSONField(format="yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date initialDate;
/**
* 初验比例
*/
private String initialRatio;
/**
* 终验时间
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
@JSONField(format="yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date finalDate;
/**
* 终验比例
*/
private String finalRatio;
/**
* 合同总金额
*/
private Double totalAmount;
/**
* 合同文件名称
*/
private String documentName;
/**
* 合同文件类型
*/
private String documentType;
/**
* 合同文件位置
*/
private String documentPath;
/**
* 文件尺寸
*/
private Long size;
/**
* 文件状态
*/
private String status;
}

2
huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouProjectinfo.java

@ -151,7 +151,7 @@ public class HuzhouProjectinfo extends BaseEntity implements Serializable{
*/
private Double payamount2025Money;
private String ismodify;
}

53
huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouRegulationlab.java

@ -0,0 +1,53 @@
package org.jeecg.modules.huzhou.entity;
import com.fasterxml.jackson.databind.ser.Serializers;
import lombok.Data;
import java.io.Serializable;
/**
* (HuzhouRegulationlab)实体类
*
* @author makejava
* @since 2024-02-29 11:03:40
*/
@Data
public class HuzhouRegulationlab extends BaseEntity implements Serializable {
private static final long serialVersionUID = -50005828024123796L;
/**
* 法规资料名称
*/
private String regulationlabName;
/**
* 法规资料描述
*/
private String regulationlabDescribe;
/**
* id
*/
private String id;
/**
* 文件名称
*/
private String documentName;
/**
* 文件类型
*/
private String documentType;
/**
* 文件位置
*/
private String documentPath;
/**
* 文件尺寸
*/
private Long size;
/**
* 文件状态
*/
private String status;
}

70
huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouWorkreport.java

@ -0,0 +1,70 @@
package org.jeecg.modules.huzhou.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.io.Serializable;
/**
* (HuzhouWorkreport)实体类
*
* @author makejava
* @since 2024-03-01 15:58:21
*/
@Data
public class HuzhouWorkreport extends BaseEntity implements Serializable {
private static final long serialVersionUID = -21931703968060883L;
/**
* id
*/
private String id;
/**
* 开始时间
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
@JSONField(format="yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
/**
* 结束时间
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
@JSONField(format="yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
/**
* 类型 1周报2月报
*/
private String type;
/**
* 文件名称
*/
private String documentName;
/**
* 文件类型
*/
private String documentType;
/**
* 文件地址
*/
private String documentPath;
/**
* 文件大小
*/
private Long size;
/**
* 是否有效
*/
private String status;
/**
* 项目id
*/
private String projectid;
}

22
huzhou/src/main/java/org/jeecg/modules/huzhou/entity/WorkflowBaseInfo.java

@ -0,0 +1,22 @@
package org.jeecg.modules.huzhou.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class WorkflowBaseInfo {
private String projectName;
private String taskName;
private String taskId;
private String projectId;
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
@JSONField(format="yyyy-MM-dd")
private Date createtime;
private String processStatus;
private String currentTaskName;
private String processName;
private String processInstanceId;
}

12
huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouContractinfoMapper.java

@ -0,0 +1,12 @@
package org.jeecg.modules.huzhou.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.jeecg.modules.huzhou.entity.HuzhouContractinfo;
import org.jeecg.modules.huzhou.vo.HuzhouContractinfoOV;
@Mapper
public interface HuzhouContractinfoMapper extends BaseMapper<HuzhouContractinfo> {
Page<HuzhouContractinfoOV> getContractinfoPageList(Page page, HuzhouContractinfoOV info);
}

9
huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouRegulationlabMapper.java

@ -0,0 +1,9 @@
package org.jeecg.modules.huzhou.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.jeecg.modules.huzhou.entity.HuzhouRegulationlab;
@Mapper
public interface HuzhouRegulationlabMapper extends BaseMapper<HuzhouRegulationlab> {
}

14
huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouWorkreportMapper.java

@ -0,0 +1,14 @@
package org.jeecg.modules.huzhou.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.jeecg.modules.huzhou.entity.HuzhouWorkreport;
import org.jeecg.modules.huzhou.vo.HuzhouWorkreportOV;
@Mapper
public interface HuzhouWorkreportMapper extends BaseMapper<HuzhouWorkreport> {
Page<HuzhouWorkreportOV> getWorkreportPageList(Page page, HuzhouWorkreportOV info);
}

8
huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/WorkflowMapper.java

@ -4,10 +4,18 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.huzhou.entity.WorkflowBaseInfo;
import java.util.Map;
@Mapper
public interface WorkflowMapper extends BaseMapper<Object> {
Page<Map<String,String>> getCompleteTaskByAssignee(Page page, @Param("userid") String id);
/**
* 获取与流程配对的信息
* @param projectId
* @return
*/
WorkflowBaseInfo getProjectInfo(String projectId);
}

18
huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouContractinfoMapper.xml

@ -0,0 +1,18 @@
<?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="org.jeecg.modules.huzhou.mapper.HuzhouContractinfoMapper">
<select id="getContractinfoPageList" resultType="org.jeecg.modules.huzhou.vo.HuzhouContractinfoOV" parameterType="org.jeecg.modules.huzhou.vo.HuzhouContractinfoOV">
select a.*,b.project_name,b.id pid from huzhou_projectinfo b LEFT JOIN huzhou_contractinfo a on a.projectid =b.id
<where>
b.stage > 2
<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>
</select>
</mapper>

2
huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouProjectinfoHistoryMapper.xml

@ -11,7 +11,7 @@
</if>
<if test="projectinfo.projectName!=null and projectinfo.projectName!=''">
<bind name="tempStr" value="'%' + projectinfo.projectName + '%'" />
and p.projectName like #{tempStr}
and p.project_name like #{tempStr}
</if>
</where>
</select>

18
huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouWorkreportMapper.xml

@ -0,0 +1,18 @@
<?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="org.jeecg.modules.huzhou.mapper.HuzhouWorkreportMapper">
<select id="getWorkreportPageList" resultType="org.jeecg.modules.huzhou.vo.HuzhouWorkreportOV" parameterType="org.jeecg.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.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>
</select>
</mapper>

5
huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/WorkflowMapper.xml

@ -14,4 +14,9 @@
ORDER BY res.START_TIME_ DESC
) a
</select>
<select id="getProjectInfo" resultType="org.jeecg.modules.huzhou.entity.WorkflowBaseInfo" parameterType="String">
SELECT project_Name,createTime,stage FROM `huzhou_projectinfo` WHERE id = #{projectId}
UNION ALL
SELECT task_name project_Name,createTime,null from huzhou_planinfo WHERE id = #{projectId}
</select>
</mapper>

24
huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouContractinfoService.java

@ -0,0 +1,24 @@
package org.jeecg.modules.huzhou.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.huzhou.entity.HuzhouContractinfo;
import org.jeecg.modules.huzhou.entity.HuzhouRegulationlab;
import org.jeecg.modules.huzhou.vo.HuzhouContractinfoOV;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
public interface IHuzhouContractinfoService extends IService<HuzhouContractinfo>{
Page<HuzhouContractinfoOV> getContractinfoPageList(HuzhouContractinfoOV contractinfo, Integer pageNo,
Integer pageSize);
void addContractinfo(MultipartFile file, HuzhouContractinfo contractinfo) throws IOException;
Boolean modifyContractinfo(MultipartFile file, HuzhouContractinfo contractinfo) throws IOException;
Boolean deleteContractinfo(HuzhouContractinfo contractinfo);
List<HuzhouContractinfo> getContractinfoByprojectId(String projectid);
}

13
huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfoService.java

@ -26,6 +26,17 @@ public interface IHuzhouPlaninfoService extends IService<HuzhouPlaninfo> {
void saveOrModifyPlanUploadFile(MultipartFile[] files,String planinfoid,String type) throws IOException;
List<HuzhouPlaninfo> getListByProjectId(String projectid);
void removeByProjectId(String projectid);
List<HuzhouPlaninfo> getFinishListByProjectId(String projectid);
List<HuzhouPlaninfo> getFinishOrApprovalListByProjectId(String projectid);
List<HuzhouPlaninfo> getUnFinishListByProjectId(String projectid);
/**
* 查询子计划
* @param projectid 项目id
* @param superior 父类id
* @param status 状态多状态用, 隔开
* @return
*/
List<HuzhouPlaninfo> queryChildPlan(String projectid,String superior,String status);
String IsAllowModifyPlaninfo(String projectid,List<HuzhouPlaninfo> newPlaninfo);
HuzhouPlaninfo getNodePlan(String projectid,String level);
}

3
huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfofileService.java

@ -1,7 +1,10 @@
package org.jeecg.modules.huzhou.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.huzhou.entity.HuzhouPlaninfofile;
public interface IHuzhouPlaninfofileService extends IService<HuzhouPlaninfofile> {
Page<HuzhouPlaninfofile> getplanFilePageList(HuzhouPlaninfofile planinfofile, Integer pageNo, Integer pageSize);
void modifyStatusByPlaninfoid(String status,String planinfo);
}

7
huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouProjectinfoService.java

@ -1,10 +1,14 @@
package org.jeecg.modules.huzhou.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
@ -17,5 +21,8 @@ public interface IHuzhouProjectinfoService extends IService<HuzhouProjectinfo>{
// void submitProject(HuzhouProjectinfo info);
void modifyStageById(String id,String stage);
void modifyismodifyById(String id,String ismodify);
IPage<HuzhouProjectinfo> getProjectInfoPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize);
List<HuzhouProjectinfo> getProjectInfoList(HuzhouProjectinfo projectinfo);
Result<?> batchImportProjects(MultipartFile multipartFile);
}

22
huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouRegulationlabService.java

@ -0,0 +1,22 @@
package org.jeecg.modules.huzhou.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.huzhou.entity.HuzhouRegulationlab;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public interface IHuzhouRegulationlabService extends IService<HuzhouRegulationlab> {
Page<HuzhouRegulationlab> getRegulationlabPageList(HuzhouRegulationlab regulationlab,Integer pageNo,
Integer pageSize);
void addRegulationlab(MultipartFile file,HuzhouRegulationlab regulationlab) throws IOException;
Boolean modifyRegulationlab(MultipartFile file, HuzhouRegulationlab regulationlab) throws IOException;
Boolean deleteRegulationlab(HuzhouRegulationlab regulationlab);
void batchdownloadRegulationlabFiles(HuzhouRegulationlab regulationlab,HttpServletResponse response);
}

20
huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouWorkreportService.java

@ -0,0 +1,20 @@
package org.jeecg.modules.huzhou.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.huzhou.entity.HuzhouWorkreport;
import org.jeecg.modules.huzhou.entity.HuzhouWorkreport;
import org.jeecg.modules.huzhou.vo.HuzhouWorkreportOV;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
public interface IHuzhouWorkreportService extends IService<HuzhouWorkreport> {
Page<HuzhouWorkreportOV> getWorkreportPageList(HuzhouWorkreportOV Workreport, Integer pageNo,
Integer pageSize);
void addWorkreport(MultipartFile file, HuzhouWorkreport Workreport) throws IOException;
Boolean modifyWorkreport(MultipartFile file, HuzhouWorkreport Workreport) throws IOException;
Boolean deleteWorkreport(HuzhouWorkreport Workreport);
}

3
huzhou/src/main/java/org/jeecg/modules/huzhou/service/IWorkflowService.java

@ -1,6 +1,7 @@
package org.jeecg.modules.huzhou.service;
import org.jeecg.modules.huzhou.entity.WorkFlow;
import org.jeecg.modules.huzhou.entity.WorkflowBaseInfo;
import java.util.ArrayList;
@ -8,4 +9,6 @@ public interface IWorkflowService {
WorkFlow createFlow(String processDefinitionKey, ArrayList<String> nextList);
void callBack(String processId,String flag);
WorkFlow approveProjectInfo(String taskId,String flag,String comment,String stage);
WorkflowBaseInfo getProjectInfo(String projectId);
}

111
huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java

@ -0,0 +1,111 @@
package org.jeecg.modules.huzhou.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.constant.SymbolConstant;
import org.jeecg.common.util.CommonUtils;
import org.jeecg.modules.huzhou.entity.HuzhouContractinfo;
import org.jeecg.modules.huzhou.entity.HuzhouRegulationlab;
import org.jeecg.modules.huzhou.mapper.HuzhouContractinfoMapper;
import org.jeecg.modules.huzhou.service.IHuzhouContractinfoService;
import org.jeecg.modules.huzhou.vo.HuzhouContractinfoOV;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Service
public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinfoMapper, HuzhouContractinfo> implements IHuzhouContractinfoService {
@Value(value = "${jeecg.path.upload}")
private String uploadpath;
@Autowired
private HuzhouContractinfoMapper contractinfoMapper;
@Override
public Page<HuzhouContractinfoOV> getContractinfoPageList(HuzhouContractinfoOV contractinfo, Integer pageNo, Integer pageSize) {
Page<HuzhouContractinfo> page = new Page<>(pageNo, pageSize);
Page<HuzhouContractinfoOV> contractinfoPageList = contractinfoMapper.getContractinfoPageList(page, contractinfo);
return contractinfoPageList;
}
@Override
public void addContractinfo(MultipartFile file, HuzhouContractinfo contractinfo) throws IOException {
addContractFile(file,contractinfo);
save(contractinfo);
}
@Override
public Boolean modifyContractinfo(MultipartFile file, HuzhouContractinfo contractinfo) throws IOException {
HuzhouContractinfo huzhouContractinfo = getById(contractinfo.getId());
String documentPath = huzhouContractinfo.getDocumentPath();
File contractfile = new File(documentPath);
if(file==null){
updateById(contractinfo);
return true;
}
if(contractfile.delete()){
addContractFile(file,contractinfo);
updateById(contractinfo);
return true;
}
return false;
}
@Override
public Boolean deleteContractinfo(HuzhouContractinfo contractinfo) {
String id = contractinfo.getId();
HuzhouContractinfo huzhouContractinfo = getById(id);
String documentPath = huzhouContractinfo.getDocumentPath();
File contractfile = new File(documentPath);
if(contractfile.delete()){
removeById(id);
return true;
}
return false;
}
@Override
public List<HuzhouContractinfo> getContractinfoByprojectId(String projectid) {
LambdaQueryWrapper<HuzhouContractinfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouContractinfo::getProjectid, projectid);
List<HuzhouContractinfo> list = list(queryWrapper);
return list;
}
private void addContractFile(MultipartFile file, HuzhouContractinfo contractinfo) throws IOException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String currentDay = dateFormat.format(new Date());
File filePath = new File(uploadpath +File.separator+"contract"+ File.separator + currentDay + File.separator);
//文件夹不存在则创建
if (!filePath.exists()) {
// 创建文件根目录
filePath.mkdirs();
}
String fileName =null;
String originalFilename = file.getOriginalFilename();
originalFilename = CommonUtils.getFileName(originalFilename);
if(originalFilename.indexOf(SymbolConstant.SPOT)!=-1){
fileName = originalFilename.substring(0, originalFilename.lastIndexOf(".")) + "_" + System.currentTimeMillis() + originalFilename.substring(originalFilename.lastIndexOf("."));
}else{
fileName = originalFilename+ "_" + System.currentTimeMillis();
}
String savePath = filePath.getPath() + File.separator + fileName;
File savefile = new File(savePath);
FileCopyUtils.copy(file.getBytes(), savefile);//保存文件
contractinfo.setDocumentName(originalFilename);//未加工过的文件名称
contractinfo.setDocumentType(file.getContentType());
contractinfo.setDocumentPath(savePath);
contractinfo.setSize(file.getSize());
contractinfo.setStatus("1");
}
}

76
huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java

@ -3,6 +3,7 @@ package org.jeecg.modules.huzhou.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
@ -103,7 +104,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
}
}
if(value==null||value.length()==0){
if((value==null||value.length()==0)&&j!=4){
String s = chineseNameMap.get(String.valueOf(j));
resHashMap.put("res",false);
resHashMap.put("msg","第"+(i+1)+"行,"+s+",不能为空");
@ -118,7 +119,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
continue;
}
Cell cell = row.getCell(j);
if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式
if (cell.getCellType().getCode()==CellType.NUMERIC.getCode()&&HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式
SimpleDateFormat sdf = null;
// 验证short值
if (cell.getCellStyle().getDataFormat() == 14) {
@ -152,7 +153,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
continue;
}
Cell cell = row.getCell(j);
if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式
if (cell.getCellType().getCode()==CellType.NUMERIC.getCode() && HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式
SimpleDateFormat sdf = null;
// 验证short值
if (cell.getCellStyle().getDataFormat() == 14) {
@ -223,7 +224,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
//所有:所有下级还要加他自己
long count = this.count(queryWrapper);
//查询完成的数量
queryWrapper.eq(HuzhouPlaninfo::getIsfinish,"1");
queryWrapper.eq(HuzhouPlaninfo::getIsfinish,"2");
long finishCount = this.count(queryWrapper);
BigDecimal a = new BigDecimal(count);
BigDecimal b = new BigDecimal(finishCount);
@ -231,13 +232,13 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
if("0.00".equals(percent)){
percent="0";
}else if("1.00".equals(percent)){
percent="1";
percent="100";
}
percent = percent.substring(percent.indexOf(".")+1);
setchilddata.setPercent(percent);
if(setchilddata.getScheduledEndTime().getTime()<new Date().getTime()){
setchilddata.setProgressStatus("exception");
}
// if(setchilddata.getScheduledEndTime().getTime()<new Date().getTime()){
// setchilddata.setProgressStatus("exception");
// }
mapArrayList.add(setchilddata);
}
return mapArrayList;
@ -314,13 +315,67 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
}
@Override
public List<HuzhouPlaninfo> getFinishListByProjectId(String projectid) {
public List<HuzhouPlaninfo> getFinishOrApprovalListByProjectId(String projectid) {
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
queryWrapper.in(HuzhouPlaninfo::getIsfinish, new String[]{"1", "2"});
List<HuzhouPlaninfo> huzhouPlaninfoList = this.list(queryWrapper);
return huzhouPlaninfoList;
}
@Override
public List<HuzhouPlaninfo> getUnFinishListByProjectId(String projectid) {
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
queryWrapper.eq(HuzhouPlaninfo::getIsfinish,"1");
queryWrapper.in(HuzhouPlaninfo::getIsfinish, new String[]{"0", "1"});
List<HuzhouPlaninfo> huzhouPlaninfoList = this.list(queryWrapper);
return huzhouPlaninfoList;
}
@Override
public List<HuzhouPlaninfo> queryChildPlan(String projectid, String superior,String status) {
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
queryWrapper.eq(HuzhouPlaninfo::getSuperior,superior);
String[] split = status.split(",");
queryWrapper.in(HuzhouPlaninfo::getIsfinish,split);
List<HuzhouPlaninfo> list = this.list(queryWrapper);
return list;
}
@Override
public String IsAllowModifyPlaninfo(String projectid,List<HuzhouPlaninfo> newPlaninfo) {
List<HuzhouPlaninfo> planinfoHistoryList = this.getFinishOrApprovalListByProjectId(projectid);
if(planinfoHistoryList.size()>0){
for (HuzhouPlaninfo his:planinfoHistoryList){
boolean isexist=false;
String hisTaskLevel = his.getTaskLevel();
String hisTaskName = his.getTaskName();
for(int i =0;i<newPlaninfo.size();i++){
// for (HuzhouPlaninfo now:huzhouPlaninfoArrayList){
HuzhouPlaninfo now = newPlaninfo.get(i);
String nowTaskName = now.getTaskName();
String nowTaskLevel = now.getTaskLevel();
if(hisTaskLevel.equals(nowTaskLevel)&&hisTaskName.equals(nowTaskName)){
isexist=true;
newPlaninfo.remove(now);
break;
}
}
if(!isexist){
return "任务级别:"+hisTaskLevel+",任务名称:"+hisTaskName+"已完成,无法修改!";
}
}
}
return "1";
}
@Override
public HuzhouPlaninfo getNodePlan(String projectid, String level) {
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
queryWrapper.eq(HuzhouPlaninfo::getTaskLevel,level);
HuzhouPlaninfo huzhouPlaninfo = this.getOne(queryWrapper);
return huzhouPlaninfo;
}
private HuzhouPlaninfoOV setchild(HuzhouPlaninfoOV planinfoOV){
ArrayList<HuzhouPlaninfoOV> mapArrayList = new ArrayList<>();
@ -361,4 +416,5 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
}
return doubleStr;
}
}

24
huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java

@ -1,11 +1,35 @@
package org.jeecg.modules.huzhou.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.checkerframework.checker.units.qual.A;
import org.jeecg.modules.huzhou.entity.BaseEntity;
import org.jeecg.modules.huzhou.entity.HuzhouPlaninfofile;
import org.jeecg.modules.huzhou.mapper.HuzhouPlaninfofileMapper;
import org.jeecg.modules.huzhou.service.IHuzhouPlaninfofileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofileMapper, HuzhouPlaninfofile> implements IHuzhouPlaninfofileService {
@Override
public Page<HuzhouPlaninfofile> getplanFilePageList(HuzhouPlaninfofile planinfofile,Integer pageNo, Integer pageSize) {
Page<HuzhouPlaninfofile> page = new Page<>(pageNo,pageSize);
LambdaQueryWrapper<HuzhouPlaninfofile> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouPlaninfofile::getPlaninfoid,planinfofile.getPlaninfoid());
queryWrapper.orderByDesc(BaseEntity::getCreatetime);
Page<HuzhouPlaninfofile> planinfofilePage = this.page(page, queryWrapper);
return planinfofilePage;
}
@Override
public void modifyStatusByPlaninfoid(String status, String planinfoid) {
LambdaUpdateWrapper<HuzhouPlaninfofile> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(HuzhouPlaninfofile::getPlaninfoid,planinfoid);
updateWrapper.set(HuzhouPlaninfofile::getStatus,status);
this.update(updateWrapper);
}
}

30
huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java

@ -7,11 +7,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.huzhou.entity.BaseEntity;
import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo;
import org.jeecg.modules.huzhou.mapper.HuzhouProjectinfoMapper;
import org.jeecg.modules.huzhou.service.IHuzhouProjectinfoService;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@Service
@ -26,6 +30,14 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
this.update(updateWrapper);
}
@Override
public void modifyismodifyById(String id, String ismodify) {
LambdaUpdateWrapper<HuzhouProjectinfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(HuzhouProjectinfo::getId,id);
updateWrapper.set(HuzhouProjectinfo::getIsmodify,ismodify);
this.update(updateWrapper);
}
@Override
public IPage<HuzhouProjectinfo> getProjectInfoPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) {
IPage page = new Page(pageNo, pageSize);
@ -40,4 +52,22 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
IPage pageList = this.page(page, huzhouProjectinfoLambdaQueryWrapper);
return pageList;
}
@Override
public List<HuzhouProjectinfo> getProjectInfoList(HuzhouProjectinfo projectinfo) {
LambdaQueryWrapper<HuzhouProjectinfo> huzhouProjectinfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
String projectName = projectinfo.getProjectName();
String projectId =projectinfo.getId();
String stage = projectinfo.getStage();
huzhouProjectinfoLambdaQueryWrapper.like(StringUtils.isNotBlank(projectName),HuzhouProjectinfo::getProjectName,projectName);
huzhouProjectinfoLambdaQueryWrapper.like(StringUtils.isNotBlank(projectId),HuzhouProjectinfo::getId,projectId);
huzhouProjectinfoLambdaQueryWrapper.ge(StringUtils.isNotBlank(stage),HuzhouProjectinfo::getStage,stage);
List<HuzhouProjectinfo> projectinfoList = this.list(huzhouProjectinfoLambdaQueryWrapper);
return projectinfoList;
}
@Override
public Result batchImportProjects(MultipartFile multipartFile) {
return null;
}
}

139
huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouRegulationlabServiceImpl.java

@ -0,0 +1,139 @@
package org.jeecg.modules.huzhou.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.SymbolConstant;
import org.jeecg.common.util.CommonUtils;
import org.jeecg.modules.huzhou.entity.HuzhouPlaninfofile;
import org.jeecg.modules.huzhou.entity.HuzhouRegulationlab;
import org.jeecg.modules.huzhou.mapper.HuzhouRegulationlabMapper;
import org.jeecg.modules.huzhou.service.IHuzhouRegulationlabService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@Service
public class HuzhouRegulationlabServiceImpl extends ServiceImpl<HuzhouRegulationlabMapper, HuzhouRegulationlab> implements IHuzhouRegulationlabService {
@Value(value = "${jeecg.path.upload}")
private String uploadpath;
@Override
public Page<HuzhouRegulationlab> getRegulationlabPageList(HuzhouRegulationlab regulationlab,
Integer pageNo,
Integer pageSize) {
LambdaQueryWrapper<HuzhouRegulationlab> queryWrapper = new LambdaQueryWrapper<>();
Page<HuzhouRegulationlab> huzhouRegulationlabPage = new Page<>(pageNo, pageSize);
String regulationlabName = regulationlab.getRegulationlabName();
String documentName = regulationlab.getDocumentName();
queryWrapper.like(StringUtils.isNotBlank(regulationlabName),HuzhouRegulationlab::getRegulationlabName,regulationlabName);
queryWrapper.like(StringUtils.isNotBlank(documentName),HuzhouRegulationlab::getDocumentName,documentName);
Page<HuzhouRegulationlab> page = this.page(huzhouRegulationlabPage, queryWrapper);
return page;
}
@Override
public void addRegulationlab(MultipartFile file, HuzhouRegulationlab regulationlab) throws IOException {
addFile(file,regulationlab);
this.save(regulationlab);
}
@Override
public Boolean modifyRegulationlab(MultipartFile file,HuzhouRegulationlab regulationlab) throws IOException {
String documentPath = this.getById(regulationlab.getId()).getDocumentPath();
File regulationlabFile = new File(documentPath);
if(file==null){
this.updateById(regulationlab);
return true;
}
if(regulationlabFile.delete()){
addFile(file,regulationlab);
this.updateById(regulationlab);
return true;
}
return false;
}
@Override
public Boolean deleteRegulationlab(HuzhouRegulationlab regulationlab) {
String id = regulationlab.getId();
regulationlab = this.getById(id);
File file = new File(regulationlab.getDocumentPath());
if(file.delete()){
this.removeById(id);
return Boolean.TRUE;
}
return Boolean.FALSE;
}
@Override
public void batchdownloadRegulationlabFiles(HuzhouRegulationlab regulationlab, HttpServletResponse response) {
LambdaQueryWrapper<HuzhouRegulationlab> queryWrapper = new LambdaQueryWrapper<>();
String regulationlabName = regulationlab.getRegulationlabName();
String documentName = regulationlab.getDocumentName();
queryWrapper.like(StringUtils.isNotBlank(regulationlabName),HuzhouRegulationlab::getRegulationlabName,regulationlabName);
queryWrapper.like(StringUtils.isNotBlank(documentName),HuzhouRegulationlab::getDocumentName,documentName);
List<HuzhouRegulationlab> list = this.list(queryWrapper);
List<String> pathList = list.stream().map(HuzhouRegulationlab::getDocumentPath).collect(Collectors.toList());
response.addHeader("Content-Type", "application/zip");
try (ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream()); ) {
for (String fileName : pathList) { //循环往zip中放入文件
File file = new File(fileName);
FileInputStream fileIn = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(file.getName());
zipOut.putNextEntry(zipEntry);
byte[] buffer = new byte[1024];
int len;
while ((len = fileIn.read(buffer)) > 0) {
zipOut.write(buffer, 0, len);
}
fileIn.close();
zipOut.closeEntry();
}
zipOut.finish();
} catch (Exception e) {
throw new RuntimeException("文件批量下载有误.", e);
}
}
private void addFile(MultipartFile file,HuzhouRegulationlab regulationlab) throws IOException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String currentDay = dateFormat.format(new Date());
File filePath = new File(uploadpath +File.separator+"regulationlab"+ File.separator + currentDay + File.separator);
//文件夹不存在则创建
if (!filePath.exists()) {
// 创建文件根目录
filePath.mkdirs();
}
String fileName =null;
String originalFilename = file.getOriginalFilename();
originalFilename = CommonUtils.getFileName(originalFilename);
if(originalFilename.indexOf(SymbolConstant.SPOT)!=-1){
fileName = originalFilename.substring(0, originalFilename.lastIndexOf(".")) + "_" + System.currentTimeMillis() + originalFilename.substring(originalFilename.lastIndexOf("."));
}else{
fileName = originalFilename+ "_" + System.currentTimeMillis();
}
String savePath = filePath.getPath() + File.separator + fileName;
File savefile = new File(savePath);
FileCopyUtils.copy(file.getBytes(), savefile);//保存文件
regulationlab.setDocumentName(originalFilename);//未加工过的文件名称
regulationlab.setDocumentType(file.getContentType());
regulationlab.setDocumentPath(savePath);
regulationlab.setSize(file.getSize());
regulationlab.setStatus("1");
}
}

96
huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouWorkreportServiceImpl.java

@ -0,0 +1,96 @@
package org.jeecg.modules.huzhou.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.constant.SymbolConstant;
import org.jeecg.common.util.CommonUtils;
import org.jeecg.modules.huzhou.entity.HuzhouContractinfo;
import org.jeecg.modules.huzhou.entity.HuzhouWorkreport;
import org.jeecg.modules.huzhou.mapper.HuzhouWorkreportMapper;
import org.jeecg.modules.huzhou.service.IHuzhouWorkreportService;
import org.jeecg.modules.huzhou.vo.HuzhouWorkreportOV;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
@Service
public class HuzhouWorkreportServiceImpl extends ServiceImpl<HuzhouWorkreportMapper,HuzhouWorkreport> implements IHuzhouWorkreportService {
@Autowired
private HuzhouWorkreportMapper workreportMapper;
@Value(value = "${jeecg.path.upload}")
private String uploadpath;
@Override
public Page<HuzhouWorkreportOV> getWorkreportPageList(HuzhouWorkreportOV workreport, Integer pageNo, Integer pageSize) {
Page<HuzhouWorkreportOV> page = new Page<>(pageNo, pageSize);
Page<HuzhouWorkreportOV> pageList = workreportMapper.getWorkreportPageList(page, workreport);
return pageList;
}
@Override
public void addWorkreport(MultipartFile file, HuzhouWorkreport workreport) throws IOException {
addContractFile(file,workreport);
save(workreport);
}
@Override
public Boolean modifyWorkreport(MultipartFile file, HuzhouWorkreport workreport) throws IOException {
String path = getById(workreport.getId()).getDocumentPath();
File contractfile = new File(path);
if(file==null){
updateById(workreport);
return true;
}
if(contractfile.delete()){
addContractFile(file,workreport);
updateById(workreport);
return true;
}
return false;
}
@Override
public Boolean deleteWorkreport(HuzhouWorkreport workreport) {
String id = workreport.getId();
HuzhouWorkreport byId = getById(id);
String documentPath = byId.getDocumentPath();
File contractfile = new File(documentPath);
if(contractfile.delete()){
removeById(id);
return true;
}
return false;
}
private void addContractFile(MultipartFile file, HuzhouWorkreport workreport) throws IOException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String currentDay = dateFormat.format(new Date());
File filePath = new File(uploadpath +File.separator+"workreport"+ File.separator + currentDay + File.separator);
//文件夹不存在则创建
if (!filePath.exists()) {
// 创建文件根目录
filePath.mkdirs();
}
String fileName =null;
String originalFilename = file.getOriginalFilename();
originalFilename = CommonUtils.getFileName(originalFilename);
if(originalFilename.indexOf(SymbolConstant.SPOT)!=-1){
fileName = originalFilename.substring(0, originalFilename.lastIndexOf(".")) + "_" + System.currentTimeMillis() + originalFilename.substring(originalFilename.lastIndexOf("."));
}else{
fileName = originalFilename+ "_" + System.currentTimeMillis();
}
String savePath = filePath.getPath() + File.separator + fileName;
File savefile = new File(savePath);
FileCopyUtils.copy(file.getBytes(), savefile);//保存文件
workreport.setDocumentName(originalFilename);//未加工过的文件名称
workreport.setDocumentType(file.getContentType());
workreport.setDocumentPath(savePath);
workreport.setSize(file.getSize());
workreport.setStatus("1");
}
}

62
huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/WorkflowServiceImpl.java

@ -19,6 +19,8 @@ import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.huzhou.entity.HuzhouProcessinfo;
import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo;
import org.jeecg.modules.huzhou.entity.WorkFlow;
import org.jeecg.modules.huzhou.entity.WorkflowBaseInfo;
import org.jeecg.modules.huzhou.mapper.WorkflowMapper;
import org.jeecg.modules.huzhou.service.IWorkflowService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -36,6 +38,8 @@ public class WorkflowServiceImpl implements IWorkflowService {
private RepositoryService repositoryService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private WorkflowMapper workflowMapper;
public WorkFlow createFlow(String processDefinitionKey,ArrayList<String> nextList){
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String userId = currentUser.getId();
@ -111,14 +115,14 @@ public class WorkflowServiceImpl implements IWorkflowService {
UserTask nextUserTask = (UserTask) targetFlowElement;
String nextUserTaskName = nextUserTask.getName();
if("监管单位审批".equals(nextUserTaskName)){
if("监管单位".equals(nextUserTaskName)){
ArrayList<String> arrayList = new ArrayList<>();
//设置下一个节点处理人
//使用角色查询
arrayList.add("1752895307869614081");
arrayList.add("1752895591849160705");
hashMap.put("users",arrayList);
}else if("管理单位审批".equals(nextUserTaskName)){
}else if("管理单位".equals(nextUserTaskName)){
ArrayList<String> arrayList = new ArrayList<>();
//设置下一个节点处理人
//使用角色查询
@ -126,7 +130,7 @@ public class WorkflowServiceImpl implements IWorkflowService {
hashMap.put("users",arrayList);
//TODO 流程审批通过,需要改变项目状态
}else {
if(!"管理单位审批".equals(userTask.getName())){
if(!"管理单位".equals(userTask.getName())){
throw new RuntimeException("找不到下一个节点");
}
}
@ -191,6 +195,50 @@ public class WorkflowServiceImpl implements IWorkflowService {
}
}
}
}else if("4".equals(stage)){
if(!"管理人员".equals(userTask.getName())){
//搞到当前userTask的出处
List<SequenceFlow> outgoingFlows = userTask.getOutgoingFlows();
//直接获得目标元素
FlowElement targetFlowElement = outgoingFlows.get(0).getTargetFlowElement();
//转换一下类型
UserTask nextUserTask = (UserTask) targetFlowElement;
String nextUserTaskName = nextUserTask.getName();
if("管理人员".equals(nextUserTaskName)){
ArrayList<String> arrayList = new ArrayList<>();
//设置下一个节点处理人
//使用角色查询
arrayList.add("1752893978598207490");
hashMap.put("users",arrayList);
}else {
if(!"管理人员".equals(userTask.getName())){
throw new RuntimeException("找不到下一个节点");
}
}
}
}else if("5".equals(stage)){
if(!"归档人".equals(userTask.getName())){
//搞到当前userTask的出处
List<SequenceFlow> outgoingFlows = userTask.getOutgoingFlows();
//直接获得目标元素
FlowElement targetFlowElement = outgoingFlows.get(0).getTargetFlowElement();
//转换一下类型
UserTask nextUserTask = (UserTask) targetFlowElement;
String nextUserTaskName = nextUserTask.getName();
if("归档人".equals(nextUserTaskName)){
ArrayList<String> arrayList = new ArrayList<>();
//设置下一个节点处理人
//使用角色查询
arrayList.add("1752893978598207490");
hashMap.put("users",arrayList);
}else {
if(!"归档人".equals(userTask.getName())){
throw new RuntimeException("找不到下一个节点");
}
}
}
}
taskService.claim(task.getId(), userId);//拾取任务
Authentication.setAuthenticatedUserId(userId);//添加审批人
@ -201,6 +249,14 @@ public class WorkflowServiceImpl implements IWorkflowService {
//Comment comment1 = taskService.getComment(taskId);
return workFlow;
}
@Override
public WorkflowBaseInfo getProjectInfo(String projectId) {
WorkflowBaseInfo mapperProjectInfo = workflowMapper.getProjectInfo(projectId);
return mapperProjectInfo;
}
public void callBack(String processId,String flag) {
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String userId = currentUser.getId();

13
huzhou/src/main/java/org/jeecg/modules/huzhou/vo/HuzhouContractinfoOV.java

@ -0,0 +1,13 @@
package org.jeecg.modules.huzhou.vo;
import lombok.Data;
import org.jeecg.modules.huzhou.entity.HuzhouContractinfo;
@Data
public class HuzhouContractinfoOV extends HuzhouContractinfo {
private String projectName;
/**
* 项目id
*/
private String pid;
}

9
huzhou/src/main/java/org/jeecg/modules/huzhou/vo/HuzhouWorkreportOV.java

@ -0,0 +1,9 @@
package org.jeecg.modules.huzhou.vo;
import lombok.Data;
import org.jeecg.modules.huzhou.entity.HuzhouWorkreport;
@Data
public class HuzhouWorkreportOV extends HuzhouWorkreport {
private String projectName;
}

BIN
huzhou/src/main/resources/excelTemplate/项目入库导出模板.xlsx

Binary file not shown.

0
huzhou/src/main/resources/项目入库模板.xlsx → huzhou/src/main/resources/excelTemplate/项目入库模板.xlsx

0
huzhou/src/main/resources/项目计划模板.xlsx → huzhou/src/main/resources/excelTemplate/项目计划模板.xlsx

1
jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml

@ -35,6 +35,7 @@ spring:
# 历史记录存储等级
history-level: full
check-process-definitions: true
process-definition-location-prefix: classpath:/process/
# 通过配置邮件服务器的相关信息,你可以在应用程序中发送邮件,例如发送验证码、通知等。
# mail:
# host: smtp.163.com

2
jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml

@ -35,7 +35,7 @@ spring:
# 历史记录存储等级
history-level: full
check-process-definitions: true
process-definition-location-prefix: classpath:/processes/
process-definition-location-prefix: classpath:/process/
# mail:
# host: smtp.163.com
# username: ??

2
jeecg-module-system/jeecg-system-start/src/main/resources/application.yml

@ -2,4 +2,4 @@ spring:
application:
name: 湖州市公立医院改革与高质量发展项目管理平台
profiles:
active: dev
active: prod

7
jeecg-module-system/jeecg-system-start/src/main/resources/process/initiatesProjects.bpmn20.xml

@ -19,6 +19,9 @@
<sequenceFlow id="sid-62fe5c25-6c97-4bbb-b460-c4df2e7989a8" sourceRef="sid-7a4a2aef-83ab-4d33-8cb2-13bb0f622632" targetRef="sid-8467fd8a-101e-4188-97f9-62eb1d3b32e3">
<conditionExpression>${type==0}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-c904b667-431b-40b9-b798-a992786e8cbe" sourceRef="sid-e3e4feb9-3ec8-4784-bd49-5ad75cb5aba9" targetRef="sid-4b932b6d-d74a-4bf8-8459-f6266b952e57">
<conditionExpression>${type==1}</conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_initiatesProjects">
<bpmndi:BPMNPlane bpmnElement="initiatesProjects" id="BPMNPlane_initiatesProjects">
@ -58,6 +61,10 @@
<omgdi:waypoint x="-175.0" y="30.0"/>
<omgdi:waypoint x="-215.0" y="30.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="edge-cec25e1e-8431-49ec-8258-a372108a2d00" bpmnElement="sid-c904b667-431b-40b9-b798-a992786e8cbe">
<omgdi:waypoint x="75.0" y="15.0"/>
<omgdi:waypoint x="140.0" y="15.0"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>

54
jeecg-module-system/jeecg-system-start/src/main/resources/process/项目归档审批流程.bpmn20.xml

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
<process id="项目归档审批流程" name="项目归档审批流程" isExecutable="true">
<startEvent id="sid-443e9ab1-ec75-47fe-b981-22d5aadb9388"/>
<userTask id="sid-3bfddcf4-f10c-4a70-870f-dbda691a6f34" name="发起人" activiti:assignee="${start}"/>
<userTask id="sid-280392b1-3204-47ce-a399-fac405d907cd" name="归档人" activiti:candidateUsers="${users}">
<documentation/>
</userTask>
<endEvent id="sid-bc2f60e6-b03a-42ad-9ee0-325a736fa91d"/>
<sequenceFlow id="sid-e993d913-7d50-44d2-8d93-ff5ecd618f3e" sourceRef="sid-443e9ab1-ec75-47fe-b981-22d5aadb9388" targetRef="sid-3bfddcf4-f10c-4a70-870f-dbda691a6f34"/>
<sequenceFlow id="sid-8759faef-27a6-47ff-bf8b-e386584149a8" sourceRef="sid-3bfddcf4-f10c-4a70-870f-dbda691a6f34" targetRef="sid-280392b1-3204-47ce-a399-fac405d907cd"/>
<sequenceFlow id="sid-f47ffb94-0774-458f-89cd-00f90599669a" sourceRef="sid-280392b1-3204-47ce-a399-fac405d907cd" targetRef="sid-3bfddcf4-f10c-4a70-870f-dbda691a6f34">
<extensionElements>
<activiti:executionListener class="Class 1"/>
</extensionElements>
<conditionExpression>${type==0}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-893cd2bb-5200-472f-8baa-80d8b2081135" sourceRef="sid-280392b1-3204-47ce-a399-fac405d907cd" targetRef="sid-bc2f60e6-b03a-42ad-9ee0-325a736fa91d">
<conditionExpression>${type==1}</conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_项目归档审批流程">
<bpmndi:BPMNPlane bpmnElement="项目归档审批流程" id="BPMNPlane_项目归档审批流程">
<bpmndi:BPMNShape id="shape-9769317a-3016-4089-b61e-4fc3238509ac" bpmnElement="sid-443e9ab1-ec75-47fe-b981-22d5aadb9388">
<omgdc:Bounds x="45.0" y="-30.0" width="30.0" height="30.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="shape-577adbd6-fc6a-494c-93fe-a425019c7ae2" bpmnElement="sid-3bfddcf4-f10c-4a70-870f-dbda691a6f34">
<omgdc:Bounds x="105.0" y="-45.0" width="100.0" height="80.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="shape-bf9fa704-43ed-47b8-82f3-bc30ec5d95d3" bpmnElement="sid-280392b1-3204-47ce-a399-fac405d907cd">
<omgdc:Bounds x="235.0" y="-50.0" width="100.0" height="80.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="shape-29443b72-45de-4df4-a195-e4a604a2c893" bpmnElement="sid-bc2f60e6-b03a-42ad-9ee0-325a736fa91d">
<omgdc:Bounds x="370.0" y="-20.0" width="30.0" height="30.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="edge-e69d9cb4-c774-4b89-bfa4-0c4ae00720d7" bpmnElement="sid-e993d913-7d50-44d2-8d93-ff5ecd618f3e">
<omgdi:waypoint x="75.0" y="-22.5"/>
<omgdi:waypoint x="105.0" y="-25.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="edge-58617930-43ff-4cd7-a1aa-599fb9e86069" bpmnElement="sid-8759faef-27a6-47ff-bf8b-e386584149a8">
<omgdi:waypoint x="205.0" y="-5.0"/>
<omgdi:waypoint x="235.0" y="-10.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="edge-125b40a9-ded9-4136-ac78-82448b9522ee" bpmnElement="sid-f47ffb94-0774-458f-89cd-00f90599669a">
<omgdi:waypoint x="235.0" y="-30.0"/>
<omgdi:waypoint x="205.0" y="-25.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="edge-4df2918a-49a0-4dbf-b2b6-b45a5d7d1542" bpmnElement="sid-893cd2bb-5200-472f-8baa-80d8b2081135">
<omgdi:waypoint x="335.0" y="-10.0"/>
<omgdi:waypoint x="370.0" y="-12.5"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>

BIN
jeecg-module-system/jeecg-system-start/src/main/resources/process/项目归档审批流程.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

11
jeecg-module-system/jeecg-system-start/src/main/resources/process/项目资料审批流程.bpmn20.xml

@ -9,6 +9,10 @@
<sequenceFlow id="sid-73cb4983-d2c0-4552-a201-04c2225f4fe0" sourceRef="sid-bc5bb0f9-6c54-46ae-b14e-7e54058126b9" targetRef="sid-f7615632-11a4-42e3-95fc-90ec1ecaebf2">
<conditionExpression>${type==0}</conditionExpression>
</sequenceFlow>
<endEvent id="sid-4115a310-16bb-4e2d-8892-f8b61319123c"/>
<sequenceFlow id="sid-a4391369-b7af-4cff-805f-fd2222a82b8c" sourceRef="sid-bc5bb0f9-6c54-46ae-b14e-7e54058126b9" targetRef="sid-4115a310-16bb-4e2d-8892-f8b61319123c">
<conditionExpression>${type==1}</conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_项目资料审批流程">
<bpmndi:BPMNPlane bpmnElement="项目资料审批流程" id="BPMNPlane_项目资料审批流程">
@ -33,6 +37,13 @@
<omgdi:waypoint x="220.0" y="-15.0"/>
<omgdi:waypoint x="150.0" y="-15.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="shape-ef167274-32d0-4d78-8a91-af4919a7a51b" bpmnElement="sid-4115a310-16bb-4e2d-8892-f8b61319123c">
<omgdc:Bounds x="350.0" y="-10.0" width="30.0" height="30.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="edge-91d6e93e-dae2-4bde-be4d-621c0c2cdcb2" bpmnElement="sid-a4391369-b7af-4cff-805f-fd2222a82b8c">
<omgdi:waypoint x="320.0" y="5.0"/>
<omgdi:waypoint x="350.0" y="5.0"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>

BIN
jeecg-module-system/jeecg-system-start/src/main/resources/process/项目资料审批流程.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Loading…
Cancel
Save