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 0000000..94f533a Binary files /dev/null and b/huzhou/src/main/resources/excelTemplate/项目入库导出模板.xlsx differ diff --git a/huzhou/src/main/resources/项目入库模板.xlsx b/huzhou/src/main/resources/excelTemplate/项目入库模板.xlsx similarity index 100% rename from huzhou/src/main/resources/项目入库模板.xlsx rename to huzhou/src/main/resources/excelTemplate/项目入库模板.xlsx diff --git a/huzhou/src/main/resources/项目计划模板.xlsx b/huzhou/src/main/resources/excelTemplate/项目计划模板.xlsx similarity index 100% rename from huzhou/src/main/resources/项目计划模板.xlsx rename to huzhou/src/main/resources/excelTemplate/项目计划模板.xlsx diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml index 2649774..efe257f 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml @@ -35,6 +35,7 @@ spring: # 历史记录存储等级 history-level: full check-process-definitions: true + process-definition-location-prefix: classpath:/process/ # 通过配置邮件服务器的相关信息,你可以在应用程序中发送邮件,例如发送验证码、通知等。 # mail: # host: smtp.163.com diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml index caa4dd5..76787ad 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml @@ -35,7 +35,7 @@ spring: # 历史记录存储等级 history-level: full check-process-definitions: true - process-definition-location-prefix: classpath:/processes/ + process-definition-location-prefix: classpath:/process/ # mail: # host: smtp.163.com # username: ?? diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application.yml index 0bec97a..eba5a59 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/application.yml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application.yml @@ -2,4 +2,4 @@ spring: application: name: 湖州市公立医院改革与高质量发展项目管理平台 profiles: - active: dev \ No newline at end of file + active: prod \ No newline at end of file diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/process/initiatesProjects.bpmn20.xml b/jeecg-module-system/jeecg-system-start/src/main/resources/process/initiatesProjects.bpmn20.xml index cb85e58..1fb03e8 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/process/initiatesProjects.bpmn20.xml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/process/initiatesProjects.bpmn20.xml @@ -19,6 +19,9 @@ ${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 0000000..9a9535d Binary files /dev/null and b/jeecg-module-system/jeecg-system-start/src/main/resources/process/项目归档审批流程.png differ 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 index 381a6c6..bafa756 100644 --- 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 @@ -9,6 +9,10 @@ ${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 0000000..7307b8e Binary files /dev/null and b/jeecg-module-system/jeecg-system-start/src/main/resources/process/项目资料审批流程.png differ