From c2e9f2e28309bd9e118a8f85a70b1e35342d8365 Mon Sep 17 00:00:00 2001 From: zhouhaibin Date: Fri, 1 Mar 2024 17:51:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=90=88=E5=90=8C=E5=92=8C?= =?UTF-8?q?=E5=91=A8=E6=8A=A5=E6=97=A5=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- huzhou/pom.xml | 6 + .../huzhou/common/TemplateExcelUtils.java | 77 ++++++++ .../HuzhouContractinfoController.java | 69 +++++++ .../controller/HuzhouPlanController.java | 166 ++++------------ .../HuzhouPlaninfofileController.java | 152 ++++++++++++++ .../controller/HuzhouProjectController.java | 185 +++++++++++++++--- .../HuzhouRegulationlabController.java | 57 ++++++ .../HuzhouUploadfileinfoController.java | 6 +- .../HuzhouWorkreportController.java | 52 +++++ .../huzhou/controller/WorkflowController.java | 58 +++--- .../huzhou/entity/HuzhouContractinfo.java | 89 +++++++++ .../huzhou/entity/HuzhouProjectinfo.java | 2 +- .../huzhou/entity/HuzhouRegulationlab.java | 53 +++++ .../huzhou/entity/HuzhouWorkreport.java | 70 +++++++ .../huzhou/entity/WorkflowBaseInfo.java | 22 +++ .../mapper/HuzhouContractinfoMapper.java | 12 ++ .../mapper/HuzhouRegulationlabMapper.java | 9 + .../huzhou/mapper/HuzhouWorkreportMapper.java | 14 ++ .../modules/huzhou/mapper/WorkflowMapper.java | 8 + .../mapper/xml/HuzhouContractinfoMapper.xml | 18 ++ .../xml/HuzhouProjectinfoHistoryMapper.xml | 2 +- .../mapper/xml/HuzhouWorkreportMapper.xml | 18 ++ .../huzhou/mapper/xml/WorkflowMapper.xml | 5 + .../service/IHuzhouContractinfoService.java | 24 +++ .../service/IHuzhouPlaninfoService.java | 13 +- .../service/IHuzhouPlaninfofileService.java | 3 + .../service/IHuzhouProjectinfoService.java | 7 + .../service/IHuzhouRegulationlabService.java | 22 +++ .../service/IHuzhouWorkreportService.java | 20 ++ .../huzhou/service/IWorkflowService.java | 3 + .../impl/HuzhouContractinfoServiceImpl.java | 111 +++++++++++ .../impl/HuzhouPlaninfoServiceImpl.java | 76 ++++++- .../impl/HuzhouPlaninfofileServiceImpl.java | 24 +++ .../impl/HuzhouProjectinfoServiceImpl.java | 30 +++ .../impl/HuzhouRegulationlabServiceImpl.java | 139 +++++++++++++ .../impl/HuzhouWorkreportServiceImpl.java | 96 +++++++++ .../service/impl/WorkflowServiceImpl.java | 62 +++++- .../huzhou/vo/HuzhouContractinfoOV.java | 13 ++ .../modules/huzhou/vo/HuzhouWorkreportOV.java | 9 + .../项目入库导出模板.xlsx | Bin 0 -> 11140 bytes .../项目入库模板.xlsx | Bin .../项目计划模板.xlsx | Bin .../src/main/resources/application-dev.yml | 1 + .../src/main/resources/application-prod.yml | 2 +- .../src/main/resources/application.yml | 2 +- .../process/initiatesProjects.bpmn20.xml | 7 + .../项目归档审批流程.bpmn20.xml | 54 +++++ .../process/项目归档审批流程.png | Bin 0 -> 12284 bytes .../项目资料审批流程.bpmn20.xml | 11 ++ .../process/项目资料审批流程.png | Bin 0 -> 7622 bytes 50 files changed, 1676 insertions(+), 203 deletions(-) create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/common/TemplateExcelUtils.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouContractinfoController.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouPlaninfofileController.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouRegulationlabController.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouWorkreportController.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouContractinfo.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouRegulationlab.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouWorkreport.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/entity/WorkflowBaseInfo.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouContractinfoMapper.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouRegulationlabMapper.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouWorkreportMapper.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouContractinfoMapper.xml create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouWorkreportMapper.xml create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouContractinfoService.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouRegulationlabService.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouWorkreportService.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouRegulationlabServiceImpl.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouWorkreportServiceImpl.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/vo/HuzhouContractinfoOV.java create mode 100644 huzhou/src/main/java/org/jeecg/modules/huzhou/vo/HuzhouWorkreportOV.java create mode 100644 huzhou/src/main/resources/excelTemplate/项目入库导出模板.xlsx rename huzhou/src/main/resources/{ => excelTemplate}/项目入库模板.xlsx (100%) rename huzhou/src/main/resources/{ => excelTemplate}/项目计划模板.xlsx (100%) create mode 100644 jeecg-module-system/jeecg-system-start/src/main/resources/process/项目归档审批流程.bpmn20.xml create mode 100644 jeecg-module-system/jeecg-system-start/src/main/resources/process/项目归档审批流程.png create mode 100644 jeecg-module-system/jeecg-system-start/src/main/resources/process/项目资料审批流程.png diff --git a/huzhou/pom.xml b/huzhou/pom.xml index 19970b6..bdf1a89 100644 --- a/huzhou/pom.xml +++ b/huzhou/pom.xml @@ -32,6 +32,12 @@ + + com.alibaba + easyexcel + 3.2.1 + + org.bouncycastle bcprov-jdk15on diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/common/TemplateExcelUtils.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/common/TemplateExcelUtils.java new file mode 100644 index 0000000..dd6a34d --- /dev/null +++ b/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); + } + } + +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouContractinfoController.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouContractinfoController.java new file mode 100644 index 0000000..0678d36 --- /dev/null +++ b/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 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 list = new ArrayList<>(); + list.add(byId); + return Result.ok(list); + } + @GetMapping("/isExistContractinfo") + public Result isExistContractinfo(String projectid){ + List 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("删除失败"); + } + +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouPlanController.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouPlanController.java index 7719bd5..b65181e 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouPlanController.java +++ b/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 huzhouPlaninfoArrayList = (ArrayList) hashMap.get("arr"); -// int physicalNumberOfRows = sheet.getPhysicalNumberOfRows(); -// HashMap NameMap = new HashMap(); -// HashMap chineseNameMap = new HashMap(); -// -// 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 arrayList = new ArrayList<>(); @@ -166,6 +91,10 @@ public class HuzhouPlanController { return Result.error((String)hashMap.get("msg")); } ArrayList huzhouPlaninfoArrayList = (ArrayList) 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 huzhouPlaninfoArrayList = (ArrayList) hashMap.get("arr"); - List 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 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 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 lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(HuzhouPlaninfofile::getPlaninfoid,planinfoid); - lambdaQueryWrapper.orderByDesc(BaseEntity::getCreatetime); - Page page = new Page<>(pageNo, pageSize); - Page planinfofilePage = planinfofileService.page(page, lambdaQueryWrapper); - return Result.ok(planinfofilePage); + @GetMapping("/qetplaninfoByid") + public Result getplaninfoByid(String planinfoid){ + HuzhouPlaninfo planinfo = planinfoService.getById(planinfoid); + ArrayList huzhouPlaninfos = new ArrayList<>(); + huzhouPlaninfos.add(planinfo); + return Result.OK(huzhouPlaninfos); } } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouPlaninfofileController.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouPlaninfofileController.java new file mode 100644 index 0000000..28868c8 --- /dev/null +++ b/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 childPlanList = planinfoService.queryChildPlan(planinfo.getProjectId(), planinfo.getTaskLevel(),"0,1"); + if(childPlanList.size()>0){ + return Result.error("存在未完成(审批中)的子项。当前阶段不允许提交文件"); + } + //获取当前时间 + planinfoService.saveOrModifyPlanUploadFile(files,planinfoid,"1"); + ArrayList 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 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 lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(HuzhouPlaninfofile::getPlaninfoid,planinfoid); + lambdaQueryWrapper.orderByDesc(BaseEntity::getCreatetime); + Page page = new Page<>(pageNo, pageSize); + Page 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 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 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 list = planinfoService.getUnFinishListByProjectId(projectId); + if(list.size()==0){ + projectinfoService.modifyStageById(projectId,"6"); + } + } + return Result.ok("审批成功"); + } +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouProjectController.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouProjectController.java index 95960cb..a3db3d3 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouProjectController.java +++ b/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 minio:minio 阿里:alioss */ @@ -72,6 +82,7 @@ public class HuzhouProjectController { public Result 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 projectArr = (List) 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 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 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> queryPageList(HuzhouProjectinfo projectinfo, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @@ -363,4 +404,104 @@ public class HuzhouProjectController { Page projectinfoPage = projectinfoService.page(huzhouProjectinfoPage, projectinfoQueryWrapper); return Result.ok(projectinfoPage); } + + @GetMapping("/projectArchivePageList") + public Result> projectArchivePageList(HuzhouProjectinfo projectinfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ + projectinfo.setStage("6"); + IPage infoPageList = projectinfoService.getProjectInfoPageList(projectinfo, pageNo, pageSize); + return Result.OK(infoPageList); + } + @PostMapping("/submitProjectArchive") + public Result submitProjectArchive(@RequestBody HashMap param){ + String projectid = param.get("projectid"); + ArrayList 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 projectInfoList = projectinfoService.getProjectInfoList(projectinfo); + try { + projectInfoList.forEach(item->{ + List reformTasks = sysDictService.getDictItems("reformTasks"); + String dictValue = null; + for (DictModel dict:reformTasks) { + if(dict.getValue().equals(item.getReformName())){ + dictValue=dict.getText(); + item.setReformName(dictValue); + } + } + List 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); + } + + } } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouRegulationlabController.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouRegulationlabController.java new file mode 100644 index 0000000..0b71a03 --- /dev/null +++ b/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 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); + } +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouUploadfileinfoController.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouUploadfileinfoController.java index 4489edb..9779681 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouUploadfileinfoController.java +++ b/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)){ diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouWorkreportController.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouWorkreportController.java new file mode 100644 index 0000000..a0d1ce9 --- /dev/null +++ b/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 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("删除失败"); + } +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/WorkflowController.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/WorkflowController.java index c17151f..f31b87f 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/WorkflowController.java +++ b/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 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 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>> getprocessInfo(String projectid,String stage, + public Result>> 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 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 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 list = historyService.createHistoricTaskInstanceQuery() - .processInstanceId(processinstanceid) + .processInstanceId(processInstanceId) .orderByTaskCreateTime().asc().listPage((pageNo-1)*pageSize,pageSize); List> 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> 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 outRes = new HashMap<>(); ArrayList 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 queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid); - queryWrapper.eq(HuzhouProcessinfo::getStage,stage);//属于第几部流程 - HuzhouProcessinfo processinfo = processinfoService.getOne(queryWrapper); - String processinstanceid = processinfo.getProcessinstanceid(); List 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 hashMap = new HashMap<>(); - hashMap.put("label","作废"); - hashMap.put("value","3"); +// HashMap hashMap = new HashMap<>(); +// hashMap.put("label","作废"); +// hashMap.put("value","3"); +// actionButtons.add(hashMap); outRes.put("IsEdit",true); - actionButtons.add(hashMap); }else { HashMap hashMap1 = new HashMap<>(); hashMap1.put("label","同意"); diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouContractinfo.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouContractinfo.java new file mode 100644 index 0000000..4e1da8b --- /dev/null +++ b/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; + + + +} + diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouProjectinfo.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouProjectinfo.java index 42c281c..8a1a140 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouProjectinfo.java +++ b/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; } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouRegulationlab.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouRegulationlab.java new file mode 100644 index 0000000..d0e126d --- /dev/null +++ b/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; + + + +} + diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouWorkreport.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouWorkreport.java new file mode 100644 index 0000000..7183cf1 --- /dev/null +++ b/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; + + + +} + diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/WorkflowBaseInfo.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/WorkflowBaseInfo.java new file mode 100644 index 0000000..0fafdb8 --- /dev/null +++ b/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; +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouContractinfoMapper.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouContractinfoMapper.java new file mode 100644 index 0000000..d15897e --- /dev/null +++ b/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 { + Page getContractinfoPageList(Page page, HuzhouContractinfoOV info); +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouRegulationlabMapper.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouRegulationlabMapper.java new file mode 100644 index 0000000..df3a1d9 --- /dev/null +++ b/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 { +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouWorkreportMapper.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouWorkreportMapper.java new file mode 100644 index 0000000..de197df --- /dev/null +++ b/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 { + Page getWorkreportPageList(Page page, HuzhouWorkreportOV info); + +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/WorkflowMapper.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/WorkflowMapper.java index 8966f42..deeaae6 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/WorkflowMapper.java +++ b/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 { Page> getCompleteTaskByAssignee(Page page, @Param("userid") String id); + + /** + * 获取与流程配对的信息 + * @param projectId + * @return + */ + WorkflowBaseInfo getProjectInfo(String projectId); } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouContractinfoMapper.xml b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouContractinfoMapper.xml new file mode 100644 index 0000000..fed3712 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouContractinfoMapper.xml @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouProjectinfoHistoryMapper.xml b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouProjectinfoHistoryMapper.xml index d9afa04..d30f7d9 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouProjectinfoHistoryMapper.xml +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouProjectinfoHistoryMapper.xml @@ -11,7 +11,7 @@ - and p.projectName like #{tempStr} + and p.project_name like #{tempStr} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouWorkreportMapper.xml b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouWorkreportMapper.xml new file mode 100644 index 0000000..69860ff --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouWorkreportMapper.xml @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/WorkflowMapper.xml b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/WorkflowMapper.xml index 88a25ab..d5ab663 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/WorkflowMapper.xml +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/WorkflowMapper.xml @@ -14,4 +14,9 @@ ORDER BY res.START_TIME_ DESC ) a + \ No newline at end of file diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouContractinfoService.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouContractinfoService.java new file mode 100644 index 0000000..d7c1699 --- /dev/null +++ b/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{ + Page 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 getContractinfoByprojectId(String projectid); + +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfoService.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfoService.java index 7014be2..ec5812b 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfoService.java +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfoService.java @@ -26,6 +26,17 @@ public interface IHuzhouPlaninfoService extends IService { void saveOrModifyPlanUploadFile(MultipartFile[] files,String planinfoid,String type) throws IOException; List getListByProjectId(String projectid); void removeByProjectId(String projectid); - List getFinishListByProjectId(String projectid); + List getFinishOrApprovalListByProjectId(String projectid); + List getUnFinishListByProjectId(String projectid); + /** + * 查询子计划, + * @param projectid 项目id + * @param superior 父类id + * @param status 状态,多状态用, 隔开 + * @return + */ + List queryChildPlan(String projectid,String superior,String status); + String IsAllowModifyPlaninfo(String projectid,List newPlaninfo); + HuzhouPlaninfo getNodePlan(String projectid,String level); } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfofileService.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfofileService.java index 744fd3e..8775403 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfofileService.java +++ b/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 { + Page getplanFilePageList(HuzhouPlaninfofile planinfofile, Integer pageNo, Integer pageSize); + void modifyStatusByPlaninfoid(String status,String planinfo); } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouProjectinfoService.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouProjectinfoService.java index 78f8275..75789d1 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouProjectinfoService.java +++ b/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{ // void submitProject(HuzhouProjectinfo info); void modifyStageById(String id,String stage); + void modifyismodifyById(String id,String ismodify); IPage getProjectInfoPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize); + List getProjectInfoList(HuzhouProjectinfo projectinfo); + Result batchImportProjects(MultipartFile multipartFile); } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouRegulationlabService.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouRegulationlabService.java new file mode 100644 index 0000000..b05363b --- /dev/null +++ b/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 { + Page 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); + } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouWorkreportService.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouWorkreportService.java new file mode 100644 index 0000000..8eca9a1 --- /dev/null +++ b/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 { + Page 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); + +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IWorkflowService.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IWorkflowService.java index feb1355..925ced3 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IWorkflowService.java +++ b/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 nextList); void callBack(String processId,String flag); WorkFlow approveProjectInfo(String taskId,String flag,String comment,String stage); + + WorkflowBaseInfo getProjectInfo(String projectId); } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java new file mode 100644 index 0000000..131fe0a --- /dev/null +++ b/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 implements IHuzhouContractinfoService { + @Value(value = "${jeecg.path.upload}") + private String uploadpath; + @Autowired + private HuzhouContractinfoMapper contractinfoMapper; + @Override + public Page getContractinfoPageList(HuzhouContractinfoOV contractinfo, Integer pageNo, Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); + Page 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 getContractinfoByprojectId(String projectid) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouContractinfo::getProjectid, projectid); + List 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"); + } + +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java index 79e4211..0694170 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java +++ b/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 getFinishListByProjectId(String projectid) { + public List getFinishOrApprovalListByProjectId(String projectid) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); + queryWrapper.in(HuzhouPlaninfo::getIsfinish, new String[]{"1", "2"}); + List huzhouPlaninfoList = this.list(queryWrapper); + return huzhouPlaninfoList; + } + @Override + public List getUnFinishListByProjectId(String projectid) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); - queryWrapper.eq(HuzhouPlaninfo::getIsfinish,"1"); + queryWrapper.in(HuzhouPlaninfo::getIsfinish, new String[]{"0", "1"}); List huzhouPlaninfoList = this.list(queryWrapper); return huzhouPlaninfoList; } + @Override + public List queryChildPlan(String projectid, String superior,String status) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); + queryWrapper.eq(HuzhouPlaninfo::getSuperior,superior); + String[] split = status.split(","); + queryWrapper.in(HuzhouPlaninfo::getIsfinish,split); + List list = this.list(queryWrapper); + return list; + } + + @Override + public String IsAllowModifyPlaninfo(String projectid,List newPlaninfo) { + List 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 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 mapArrayList = new ArrayList<>(); @@ -361,4 +416,5 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl implements IHuzhouPlaninfofileService { + + @Override + public Page getplanFilePageList(HuzhouPlaninfofile planinfofile,Integer pageNo, Integer pageSize) { + Page page = new Page<>(pageNo,pageSize); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouPlaninfofile::getPlaninfoid,planinfofile.getPlaninfoid()); + queryWrapper.orderByDesc(BaseEntity::getCreatetime); + Page planinfofilePage = this.page(page, queryWrapper); + return planinfofilePage; + } + + @Override + public void modifyStatusByPlaninfoid(String status, String planinfoid) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(HuzhouPlaninfofile::getPlaninfoid,planinfoid); + updateWrapper.set(HuzhouPlaninfofile::getStatus,status); + this.update(updateWrapper); + } } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java index 2303ddd..918b07f 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java +++ b/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 updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(HuzhouProjectinfo::getId,id); + updateWrapper.set(HuzhouProjectinfo::getIsmodify,ismodify); + this.update(updateWrapper); + } + @Override public IPage getProjectInfoPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) { IPage page = new Page(pageNo, pageSize); @@ -40,4 +52,22 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl getProjectInfoList(HuzhouProjectinfo projectinfo) { + LambdaQueryWrapper 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 projectinfoList = this.list(huzhouProjectinfoLambdaQueryWrapper); + return projectinfoList; + } + + @Override + public Result batchImportProjects(MultipartFile multipartFile) { + return null; + } } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouRegulationlabServiceImpl.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouRegulationlabServiceImpl.java new file mode 100644 index 0000000..6b5f323 --- /dev/null +++ b/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 implements IHuzhouRegulationlabService { + @Value(value = "${jeecg.path.upload}") + private String uploadpath; + @Override + public Page getRegulationlabPageList(HuzhouRegulationlab regulationlab, + Integer pageNo, + Integer pageSize) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + Page 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 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 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 list = this.list(queryWrapper); + List 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"); + } +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouWorkreportServiceImpl.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouWorkreportServiceImpl.java new file mode 100644 index 0000000..547bd47 --- /dev/null +++ b/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 implements IHuzhouWorkreportService { + @Autowired + private HuzhouWorkreportMapper workreportMapper; + @Value(value = "${jeecg.path.upload}") + private String uploadpath; + @Override + public Page getWorkreportPageList(HuzhouWorkreportOV workreport, Integer pageNo, Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); + Page 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"); + } +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/WorkflowServiceImpl.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/WorkflowServiceImpl.java index 953f87f..23d87e3 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/WorkflowServiceImpl.java +++ b/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 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 arrayList = new ArrayList<>(); //设置下一个节点处理人 //使用角色查询 arrayList.add("1752895307869614081"); arrayList.add("1752895591849160705"); hashMap.put("users",arrayList); - }else if("管理单位审批".equals(nextUserTaskName)){ + }else if("管理单位".equals(nextUserTaskName)){ ArrayList 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 outgoingFlows = userTask.getOutgoingFlows(); + //直接获得目标元素 + FlowElement targetFlowElement = outgoingFlows.get(0).getTargetFlowElement(); + //转换一下类型 + UserTask nextUserTask = (UserTask) targetFlowElement; + String nextUserTaskName = nextUserTask.getName(); + + if("管理人员".equals(nextUserTaskName)){ + ArrayList 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 outgoingFlows = userTask.getOutgoingFlows(); + //直接获得目标元素 + FlowElement targetFlowElement = outgoingFlows.get(0).getTargetFlowElement(); + //转换一下类型 + UserTask nextUserTask = (UserTask) targetFlowElement; + String nextUserTaskName = nextUserTask.getName(); + + if("归档人".equals(nextUserTaskName)){ + ArrayList 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(); diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/vo/HuzhouContractinfoOV.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/vo/HuzhouContractinfoOV.java new file mode 100644 index 0000000..650cc0f --- /dev/null +++ b/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; +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/vo/HuzhouWorkreportOV.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/vo/HuzhouWorkreportOV.java new file mode 100644 index 0000000..f5e5489 --- /dev/null +++ b/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; +} diff --git a/huzhou/src/main/resources/excelTemplate/项目入库导出模板.xlsx b/huzhou/src/main/resources/excelTemplate/项目入库导出模板.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..94f533a9593c0c0fb931d35c6554e9a577704d87 GIT binary patch literal 11140 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 ${type==0} + + ${type==1} + @@ -58,6 +61,10 @@ + + + + diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/process/项目归档审批流程.bpmn20.xml b/jeecg-module-system/jeecg-system-start/src/main/resources/process/项目归档审批流程.bpmn20.xml new file mode 100644 index 0000000..beed4db --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/process/项目归档审批流程.bpmn20.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + ${type==0} + + + ${type==1} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/process/项目归档审批流程.png b/jeecg-module-system/jeecg-system-start/src/main/resources/process/项目归档审批流程.png new file mode 100644 index 0000000000000000000000000000000000000000..9a9535dd823660815f18ee7cedc7af86ee19f78b GIT binary patch literal 12284 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 ${type==0} + + + ${type==1} + @@ -33,6 +37,13 @@ + + + + + + + diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/process/项目资料审批流程.png b/jeecg-module-system/jeecg-system-start/src/main/resources/process/项目资料审批流程.png new file mode 100644 index 0000000000000000000000000000000000000000..7307b8e22242ce6356c8b0e110931bcbc2d2e1b9 GIT binary patch literal 7622 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 literal 0 HcmV?d00001