diff --git a/Resources/项目入库模板.xlsx b/Resources/项目入库模板.xlsx new file mode 100644 index 0000000..eddf676 Binary files /dev/null and b/Resources/项目入库模板.xlsx differ diff --git a/huzhou/pom.xml b/huzhou/pom.xml index c3c8cd5..19970b6 100644 --- a/huzhou/pom.xml +++ b/huzhou/pom.xml @@ -32,6 +32,12 @@ + + org.bouncycastle + bcprov-jdk15on + 1.68 + compile + diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/common/HuzhouCommonUtils.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/common/HuzhouCommonUtils.java index 3ab14a3..b2a7a67 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/common/HuzhouCommonUtils.java +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/common/HuzhouCommonUtils.java @@ -1,20 +1,30 @@ package org.jeecg.modules.huzhou.common; +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; public class HuzhouCommonUtils { - public static List extractObjectAttributes(Object user) { + /** + * 获取实体类的值 + * @param object + * @return + */ + public static List extractObjectAttributes(Object object) { List attributes = new ArrayList<>(); - Class clazz = user.getClass(); + Class clazz = object.getClass(); Method[] methods = clazz.getDeclaredMethods(); for (Method method : methods) { try { String name = method.getName(); if (name.startsWith("get")) { // 假设所有的getter方法都不带参数,并且返回一个基本数据类型或其包装类 - Object value = method.invoke(user); + Object value = method.invoke(object); if (value != null) { // 过滤掉null值 attributes.add(name.substring(3) + "=" + value); // 去掉"get"并添加等号和值 } @@ -25,4 +35,26 @@ public class HuzhouCommonUtils { } return attributes; } + public static void setObjectAttributes(Object object,String fieldname,Object value) throws Exception { + Class clazz = object.getClass(); + Field field = clazz.getDeclaredField(fieldname); + field.setAccessible(true); + Class typeClass = field.getType(); + Constructor con = typeClass.getConstructor(value.getClass());//获取有参构造函数 + Object obj = con.newInstance(value);//构造函数做初始化 + field.set(object,obj); + //Field[] declaredFields = clazz.getDeclaredFields(); + //Method[] methods = clazz.getDeclaredMethods(); + +// for (Method method : methods) { +// try { +// String name = method.getName(); +// if (name.contains(StringUtils.capitalize(methodname))&&name.startsWith("set")) { // 假设所有的getter方法都不带参数,并且返回一个基本数据类型或其包装类 +// method.invoke(object,value); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } + } } 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 3b32ac2..7719bd5 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,19 +1,44 @@ 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.util.ArrayList; -import java.util.Arrays; -import java.util.List; +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 @RequestMapping("/huzhouPlan") @@ -21,128 +46,211 @@ public class HuzhouPlanController { @Autowired private IHuzhouPlaninfoService planinfoService; @Autowired - private IHuzhouPlanmoduleService planmoduleService; - @Autowired - private IHuzhouPlanmoduledetailService planmoduledetailService; - @Autowired private IWorkflowService workflowService; @Autowired private IHuzhouProcessinfoService processinfoService; @Autowired + private IHuzhouPlaninfofileService planinfofileService; + @Autowired private IHuzhouProjectinfoService projectinfoService; - @GetMapping("/queryPlanModulePage") - public Result> queryPlanModulePage(HuzhouPlanmodule planmodule,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - String moduleName = planmodule.getModuleName(); - String projectType = planmodule.getProjectType(); - queryWrapper.eq(StringUtils.isNotBlank(moduleName), HuzhouPlanmodule::getModuleName,moduleName) - .eq(StringUtils.isNotBlank(projectType),HuzhouPlanmodule::getProjectType,projectType); - Page planmodulePage = new Page<>(pageNo,pageSize); - - Page page = planmoduleService.page(planmodulePage, queryWrapper); - return Result.OK(page); - } + @Autowired + private IHuzhouPlaninfoHistoryService planinfoHistoryService; + @Value(value = "${jeecg.path.upload}") + private String uploadpath; - @GetMapping("/queryPlanModuleone") - public Result queryPlanModuleByid(HuzhouPlanmodule planmodule){ - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - int planmoduleId = planmodule.getId(); - String projectType = planmodule.getProjectType(); - queryWrapper.eq(planmoduleId!=0,HuzhouPlanmodule::getId,planmoduleId) - .eq(StringUtils.isNotBlank(projectType),HuzhouPlanmodule::getProjectType,projectType); - HuzhouPlanmodule one = planmoduleService.getOne(queryWrapper); - return Result.OK(one); - } - @PostMapping("/savePlanModule") - public Result savePlanModule(@RequestBody HuzhouPlanmodule planmodule){ - String projectType = planmodule.getProjectType(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(HuzhouPlanmodule::getProjectType,projectType); - int size = planmoduleService.list(queryWrapper).size(); - if(size>0){ - return Result.error("此项目类型已存在模板,无法新增"); - } - planmoduleService.save(planmodule); - return Result.ok("新增项目模板成功"); - } - @PostMapping("/modifyPlanModule") - public Result modifyPlanModule(@RequestBody HuzhouPlanmodule planmodule){ - String projectType = planmodule.getProjectType(); - int planmoduleId = planmodule.getId(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(HuzhouPlanmodule::getProjectType,projectType); - queryWrapper.ne(HuzhouPlanmodule::getId,planmoduleId); - int size = planmoduleService.list(queryWrapper).size(); - if(size>0){ - return Result.error("此项目类型已存在模板"); - } - planmoduleService.updateById(planmodule); - return Result.ok("修改项目模板成功"); - } - @DeleteMapping("/deletePlanModule") - public Result deletePlanModule(@RequestParam("id") Integer id){ - planmoduleService.removeById(id); - return Result.ok("删除项目模板成功"); - } - @GetMapping("/queryPlanModuleDetailPage") - public Result> queryPlanModuleDetailPage(HuzhouPlanmoduledetail planmoduledetail){ - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - String moduleId = planmoduledetail.getModuleId(); - queryWrapper.eq(StringUtils.isNotBlank(moduleId), HuzhouPlanmoduledetail::getModuleId,moduleId); - List list = planmoduledetailService.list(queryWrapper); - return Result.OK(list); - } - @PostMapping("/savePlanModuleDatail") - public Result savePlanModuleDatail(@RequestBody() List planmoduledetails){ - //先删除后增加 - String moduleId = planmoduledetails.get(0).getModuleId(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(HuzhouPlanmoduledetail::getModuleId,moduleId); - boolean remove = planmoduledetailService.remove(queryWrapper); - for (HuzhouPlanmoduledetail p:planmoduledetails - ) { - planmoduledetailService.save(p); - } - return Result.ok("新增项目模板成功"); - } - @PostMapping("/saveProjectPlan") - public Result saveProjectPlan(@RequestBody List planinfos){ - if(planinfos.size()==0){ - return Result.error("数量为0"); + /** + * 上传计划信息 + * @param multipartFile + * @param projectid + * @return + * @throws Exception + */ + @PostMapping("/submitplaninfoUploadFile") + public Result submitPlaninfoUploadFile(@RequestParam(value = "file",required = false) MultipartFile multipartFile, + @RequestParam String projectid) throws Exception { + HashMap hashMap = planinfoService.getPlanInfoListFromFile(multipartFile, projectid); + boolean res = (boolean) hashMap.get("res"); + if(!res){ + 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<>(); //设置下一个节点处理人 //使用角色查询 arrayList.add("1752895307869614081"); arrayList.add("1752895591849160705"); WorkFlow workFlow = workflowService.createFlow("项目计划审批流程", arrayList); - String processInstanceId = workFlow.getProcessInstanceId(); String businessKey = workFlow.getBusinessKey(); - planinfos.forEach(item->{ - planinfoService.save(item); - }); - String projectId = planinfos.get(0).getProjectId(); - //保存项目信息 - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(HuzhouProjectinfo::getStatus,"5");//3表示项目资料流程审批阶段 - updateWrapper.eq(HuzhouProjectinfo::getId,projectId); - projectinfoService.update(null,updateWrapper); + String processInstanceId = workFlow.getProcessInstanceId(); HuzhouProcessinfo huzhouProcessinfo = new HuzhouProcessinfo(); huzhouProcessinfo.setBusinesskey(businessKey); - huzhouProcessinfo.setStatus("3");//该项目的第一个流程 + huzhouProcessinfo.setStage("3");//项目计划 + huzhouProcessinfo.setProcessstatus("1"); huzhouProcessinfo.setProcessinstanceid(processInstanceId); - huzhouProcessinfo.setProjectid(projectId); + huzhouProcessinfo.setProjectid(projectid); processinfoService.save(huzhouProcessinfo); - return Result.OK("保存成功"); + projectinfoService.modifyStageById(projectid,"4"); + return Result.ok("成功"); } - @GetMapping("/queryProjectPlan") - public Result< List> queryProjectPlan(HuzhouPlaninfo planinfo){ - String projectId = planinfo.getProjectId(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StringUtils.isNotBlank(projectId),HuzhouPlaninfo::getProjectId,projectId); - queryWrapper.orderByAsc(HuzhouPlaninfo::getOrderNumber); - List list = planinfoService.list(queryWrapper); - return Result.OK(list); + @PostMapping("/approvePlaninfo") + public Result approvePlaninfo(@RequestParam(value = "file",required = false) MultipartFile file, + @RequestParam String taskId, + @RequestParam String flag, + @RequestParam String projectid, + @RequestParam String comment, + @RequestParam String stage) throws Exception { + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = currentUser.getId(); + if(file!=null&&"1".equals(flag)){ + + //发生了修改 + HashMap hashMap = planinfoService.getPlanInfoListFromFile(file, projectid); + boolean res = (boolean) hashMap.get("res"); + if(!res){ + return Result.error((String)hashMap.get("msg")); + } + ArrayList huzhouPlaninfoArrayList = (ArrayList) hashMap.get("arr"); + //保存历史记录 + planinfoHistoryService.savePlanInfoToHistory(projectid); + //删除原纪录 + planinfoService.removeByProjectId(projectid); + planinfoService.saveBatch(huzhouPlaninfoArrayList); + } + WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment, stage); + String userTaskName = workFlow.getUserTask(); + if("3".equals(flag)){ + projectinfoService.modifyStageById(projectid,"0"); + processinfoService.modifyStatusByProjectId(projectid,"0","3"); + return Result.ok("作废成功!"); + } + if("计划审批二".equals(userTaskName)&&"1".equals(flag)){ + projectinfoService.modifyStageById(projectid,"5"); + processinfoService.modifyStatusByProjectId(projectid,"2","3"); + } + return Result.ok("审批成功"); } + @PostMapping("/modifyPlaninfo") + public Result modifyPlaninfo(@RequestParam(value = "file",required = false) MultipartFile multipartFile, + @RequestParam String projectid) throws Exception { + HashMap hashMap = planinfoService.getPlanInfoListFromFile(multipartFile, projectid); + boolean res = (boolean) hashMap.get("res"); + if(!res){ + 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 queryPlanInfoMainTimeline(String projectid){ + 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); + } + } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouPlaninfoHistoryController.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouPlaninfoHistoryController.java new file mode 100644 index 0000000..5d37eb5 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouPlaninfoHistoryController.java @@ -0,0 +1,48 @@ +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.HuzhouPlaninfo; +import org.jeecg.modules.huzhou.entity.HuzhouPlaninfoHistory; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfoHistory; +import org.jeecg.modules.huzhou.service.IHuzhouPlaninfoHistoryService; +import org.jeecg.modules.huzhou.service.IHuzhouPlaninfoService; +import org.jeecg.modules.huzhou.vo.HuzhouPlaninfoOV; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; + +@RestController +@RequestMapping("/huzhouPlaninfoHistory") +public class HuzhouPlaninfoHistoryController { + @Autowired + private IHuzhouPlaninfoService planinfoService; + @Autowired + private IHuzhouPlaninfoHistoryService planinfoHistoryService; + @GetMapping("/planInfoHistoryPageList") + public Result planInfoHistoryPageList(HuzhouProjectinfo projectinfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ + Page historyPageList = planinfoHistoryService.getPlanInfoHistoryPageList(projectinfo, pageNo, pageSize); + return Result.ok(historyPageList); + } + @GetMapping("/singlePlanInfoHistoryPageList") + public Result singlePlanInfoHistoryPageList(String projectId, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ + Page historyPageList = planinfoHistoryService.getSinglePlanInfoHistoryPageList(projectId, pageNo, pageSize); + return Result.OK(historyPageList); + } + @GetMapping("/queryPlanInfoHistoryGroupList") + public Result queryPlanInfoHistoryGroupList(HuzhouPlaninfoHistory planinfoHistory){ + //获取项目入库数据 + ArrayList huzhouPlaninfoOVS = planinfoHistoryService.queryPlanInfoHistoryGroupList(planinfoHistory); + return Result.OK(huzhouPlaninfoOVS); + + } +} 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 518cf0e..95960cb 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 @@ -5,33 +5,30 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.activiti.bpmn.model.BpmnModel; -import org.activiti.bpmn.model.FlowElement; -import org.activiti.bpmn.model.SequenceFlow; -import org.activiti.bpmn.model.UserTask; -import org.activiti.engine.*; -import org.activiti.engine.impl.identity.Authentication; +import org.activiti.engine.*; -import org.activiti.engine.runtime.ProcessInstance; -import org.activiti.engine.task.Task; -import org.apache.commons.beanutils.BeanMap; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.*; +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.DictModel; 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.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; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.security.core.parameters.P; +import org.springframework.core.io.ClassPathResource; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.*; @@ -39,25 +36,19 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.lang.reflect.Method; +import java.io.*; +import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.Period; import java.util.*; +import java.util.stream.Collectors; @RestController @RequestMapping("/huzhouProject") public class HuzhouProjectController { @Autowired private RuntimeService runtimeService; - @Autowired - private TaskService taskService; - @Autowired - private RepositoryService repositoryService; - @Autowired - private HistoryService historyService; @Autowired private IWorkflowService workflowService; @@ -68,18 +59,34 @@ public class HuzhouProjectController { @Autowired private IHuzhouUserprojectService userprojectService; @Autowired - private IHuzhouUploadfileinfoService uploadfileinfoService; - @Value(value = "${jeecg.path.upload}") - private String uploadpath; + private ISysDictService sysDictService; @Autowired - private ISysUserService userService; + private IHuzhouProjectinfoHistoryService projectinfoHistoryService; /** * 本地:local minio:minio 阿里:alioss */ @Value(value="${jeecg.uploadType}") private String uploadType; @PostMapping("/submitProject") + @Transactional public Result submitProject(@RequestBody HuzhouProjectinfo info){ + //保存项目信息 + info.setStage("1");//最开始的状态 + int constructionPeriod = Integer.parseInt(info.getConstructionPeriod()); + LocalDate now = LocalDate.now(); + LocalDate localDate = LocalDate.of(2025, 6, 30); + Period period = Period.between(now, localDate); + int month = period.getYears()*12+period.getMonths(); + + if(constructionPeriod>month){ + return Result.error("无法在2025年年中验收的项目不允许入库"); + } + projectinfoService.save(info); + //保存项目流程相关的信息 + //设置businessKey + //设置项目状态 + //新增项目人员关系表 + userprojectService.saveFromProject(info); ArrayList arrayList = new ArrayList<>(); //设置下一个节点处理人 //使用角色查询 @@ -88,309 +95,272 @@ public class HuzhouProjectController { WorkFlow workFlow = workflowService.createFlow("initiatesProjects", arrayList); String processInstanceId = workFlow.getProcessInstanceId(); String businessKey = workFlow.getBusinessKey(); - //保存项目信息 - info.setStatus("1");//最开始的状态 - projectinfoService.save(info); - //保存项目流程相关的信息 - //设置businessKey - //设置项目状态 - //新增项目人员关系表 - List extractObjectAttributes = HuzhouCommonUtils.extractObjectAttributes(info); - for (String s:extractObjectAttributes) { - if(s.contains("Contactor")){ - String s1 = s.split("=")[1]; - HuzhouUserproject huzhouUserproject = new HuzhouUserproject(); - huzhouUserproject.setProjectId(info.getId()); - huzhouUserproject.setUserId(s1); - userprojectService.save(huzhouUserproject); - } - } HuzhouProcessinfo huzhouProcessinfo = new HuzhouProcessinfo(); huzhouProcessinfo.setBusinesskey(businessKey); - huzhouProcessinfo.setStatus("1");//该项目的第一个流程 + huzhouProcessinfo.setStage("1");//该项目的第一个流程 huzhouProcessinfo.setProcessinstanceid(processInstanceId); huzhouProcessinfo.setProjectid(info.getId()); + huzhouProcessinfo.setProcessstatus("1"); processinfoService.save(huzhouProcessinfo); return Result.ok("项目入库申请已发起成功"); } + @PostMapping("/batchImportProjects") + public Result batchImportProjects(@RequestParam(value = "file",required = false) MultipartFile multipartFile) throws Exception { + if (multipartFile == null && multipartFile.getSize() == 0) { + return Result.error("文件上传错误,重新上传"); + } + //获取文件名称 判断文件是否为 Execl + String filename = multipartFile.getOriginalFilename(); + if (!(filename.endsWith(".xls") || filename.endsWith(".xlsx"))) { + return Result.error("文件上传格式有误,请重新上传"); + } + InputStream inputStream = multipartFile.getInputStream(); + Workbook workbook = null; + if (filename.endsWith(".xlsx")) { + workbook = new XSSFWorkbook(inputStream); + } else { + workbook = new HSSFWorkbook(inputStream); + } + Sheet sheet = workbook.getSheetAt(0); + ArrayList huzhouProjectinfos = new ArrayList<>(); + int physicalNumberOfRows = sheet.getPhysicalNumberOfRows(); + HashMap NameMap = new HashMap(); + HashMap chineseNameMap = new HashMap(); + + Row titlerow = sheet.getRow(0); + Row chineseTitlerow = sheet.getRow(1); + int cellNum = 32; + //获取字段名称 + 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); + HuzhouProjectinfo huzhouProjectinfo = new HuzhouProjectinfo(); + for (int j = 1; j < cellNum; j++) { + String value = ""; + if(row.getCell(j)!=null){ + row.getCell(j).setCellType(CellType.STRING); + value = row.getCell(j).getStringCellValue(); + } + if(j<=21&&(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)); + //所属任务 + if("reformName".equals(name)){ + List reformTasks = sysDictService.getDictItems("reformTasks"); + String dictValue = null; + for (DictModel dict:reformTasks) { + if(dict.getText().equals(value)){ + dictValue=dict.getValue(); + } + } + if(dictValue==null){ + String s = chineseNameMap.get(String.valueOf(j)); + return Result.error("第"+(i+1)+"行,"+s+",不在字典中,请联系管理员"); + } + value= dictValue; + } + if("superLeader".equals(name)){ + List reformTasks = sysDictService.getDictItems("room"); + String dictValue = null; + for (DictModel dict:reformTasks) { + if(dict.getText().equals(value)){ + dictValue=dict.getValue(); + } + } + if(dictValue==null){ + String s = chineseNameMap.get(String.valueOf(j)); + return Result.error("第"+(i+1)+"行,"+s+",不在字典中,请联系管理员"); + } + value= dictValue; + } + if("constructionPeriod".equals(name)){ + int constructionPeriod = Integer.parseInt(value); + LocalDate now = LocalDate.now(); + LocalDate localDate = LocalDate.of(2025, 6, 31); + Period period = Period.between(now, localDate); + int month = period.getYears()*12+period.getMonths(); + if(constructionPeriod>month){ + return Result.error("无法在2025年年中验收的项目不允许入库"); + } + } + if(name.contains("Money")){ + try { + BigDecimal bigDecimal = new BigDecimal(value); + }catch (Exception e){ + String s = chineseNameMap.get(String.valueOf(j)); + return Result.error("第"+(i+1)+"行,"+s+",金额格式错误"); + } + + } + HuzhouCommonUtils.setObjectAttributes(huzhouProjectinfo,name,value); + } + huzhouProjectinfo.setStage("1"); + huzhouProjectinfos.add(huzhouProjectinfo); + + } + projectinfoService.saveBatch(huzhouProjectinfos); + ArrayList arrayList = new ArrayList<>(); + //设置下一个节点处理人 + //使用角色查询 + arrayList.add("1752895307869614081"); + arrayList.add("1752895591849160705"); + WorkFlow workFlow = workflowService.createFlow("initiatesProjects", arrayList); + String processInstanceId = workFlow.getProcessInstanceId(); + String businessKey = workFlow.getBusinessKey(); + for (HuzhouProjectinfo p :huzhouProjectinfos) { + HuzhouProcessinfo huzhouProcessinfo = new HuzhouProcessinfo(); + huzhouProcessinfo.setBusinesskey(businessKey); + huzhouProcessinfo.setStage("1");//该项目的第一个流程 + huzhouProcessinfo.setProcessinstanceid(processInstanceId); + huzhouProcessinfo.setProjectid(p.getId()); + huzhouProcessinfo.setProcessstatus("1"); + processinfoService.save(huzhouProcessinfo); + } + //创建流程 + return Result.OK("批量导入成功"); + } @PostMapping("/approveProjectInfo") - public Result approveProjectInfo(@RequestBody HashMap param){ + 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 status = (String) param.get("status"); - String isEdit = (String) param.get("isEdit"); - Map projectInfoMap = (Map) param.get("projectInfo"); - String jsonString = JSON.toJSONString(projectInfoMap); - HuzhouProjectinfo projectinfo = JSON.parseObject(jsonString, HuzhouProjectinfo.class); - if("3".equals(flag)){ - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(HuzhouProjectinfo::getStatus,"0");//表示作废 - updateWrapper.eq(HuzhouProjectinfo::getId,projectid); - projectinfoService.update(updateWrapper); - return Result.OK("流程作废成功"); - } - if("1".equals(isEdit)&&"1".equals(flag)&&"1".equals(status)){ +// 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(); + String projectid = projectApproveOV.getProjectid(); + String flag = projectApproveOV.getFlag(); + 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){ + //查询修改前信息进行保存 + HuzhouProjectinfo projectinfoHistory= projectinfoService.getById(projectid); + projectinfoHistoryService.saveFromProject(projectinfoHistory); projectinfoService.updateById(projectinfo); + //保存修改记录 //删除此项目原来的人员和项目对应信息 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(HuzhouUserproject::getProjectId,projectid); - boolean remove = userprojectService.remove(queryWrapper); + userprojectService.removeByProjectId(projectid); //保存新的人员和项目对应信息 - List extractObjectAttributes = HuzhouCommonUtils.extractObjectAttributes(projectinfo); - for (String s:extractObjectAttributes) { - if(s.contains("Contactor")){ - String s1 = s.split("=")[1]; - HuzhouUserproject huzhouUserproject = new HuzhouUserproject(); - huzhouUserproject.setProjectId(projectinfo.getId()); - huzhouUserproject.setUserId(s1); - userprojectService.save(huzhouUserproject); - } - } + userprojectService.saveFromProject(projectinfo); } } - WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment, status); + WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment, stage); String userTaskName = workFlow.getUserTask(); + if("3".equals(flag)){ + if(projectArr!=null){ + for (HuzhouProjectinfo item:projectArr) { + projectinfoService.modifyStageById(item.getId(),"0"); + processinfoService.modifyStatusByProjectId(item.getId(),"0","1"); + } + }else{ + projectinfoService.modifyStageById(projectid,"0"); + processinfoService.modifyStatusByProjectId(projectid,"0","1"); + } + return Result.ok("作废成功!"); - //管理单位审批通过,最后一个节点流程通过 - if("管理单位审批".equals(userTaskName)&&"1".equals(flag)){ - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(HuzhouProjectinfo::getStatus,"2"); - updateWrapper.eq(HuzhouProjectinfo::getId,projectid); - projectinfoService.update(updateWrapper); } - if("流程审批二".equals(userTaskName)&&"1".equals(flag)){ - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(HuzhouProjectinfo::getStatus,"4"); - updateWrapper.eq(HuzhouProjectinfo::getId,projectid); - projectinfoService.update(updateWrapper); - } - if("计划审批二".equals(userTaskName)&&"1".equals(flag)){ - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(HuzhouProjectinfo::getStatus,"6"); - updateWrapper.eq(HuzhouProjectinfo::getId,projectid); - projectinfoService.update(updateWrapper); - } - return Result.ok("审批成功"); - } - @PostMapping("/approveUploadFile") - public Result approveUploadFile(@RequestParam(value = "file",required = false) MultipartFile[] file, - @RequestParam String taskId, - @RequestParam String flag, - @RequestParam String projectid, - @RequestParam String comment, - @RequestParam String status) throws IOException { - LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - String userId = currentUser.getId(); - + if(projectArr!=null){ + if("管理单位审批".equals(userTaskName)&&"1".equals(flag)){ + for (HuzhouProjectinfo item:projectArr) { + String id = item.getId(); + projectinfoService.modifyStageById(id,"2"); + processinfoService.modifyStatusByProjectId(id,"2","1"); + } + } - WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment, status); - String userTaskName = workFlow.getUserTask(); - if("发起人".equals(workFlow.getUserTask())&&null != file){ - uploadfileinfoService.modifyUploadFile(file,projectid,status); - } - //管理单位审批通过,最后一个节点流程通过 - if("管理单位审批".equals(userTaskName)&&"1".equals(flag)){ - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(HuzhouProjectinfo::getStatus,"2"); - updateWrapper.eq(HuzhouProjectinfo::getId,projectid); - projectinfoService.update(updateWrapper); - } - if("流程审批二".equals(userTaskName)&&"1".equals(flag)){ - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(HuzhouProjectinfo::getStatus,"4"); - updateWrapper.eq(HuzhouProjectinfo::getId,projectid); - projectinfoService.update(updateWrapper); + }else{ + //管理单位审批通过,最后一个节点流程通过 + if("管理单位审批".equals(userTaskName)&&"1".equals(flag)){ + projectinfoService.modifyStageById(projectid,"2"); + processinfoService.modifyStatusByProjectId(projectid,"2","1"); + } } if("计划审批二".equals(userTaskName)&&"1".equals(flag)){ - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(HuzhouProjectinfo::getStatus,"6"); - updateWrapper.eq(HuzhouProjectinfo::getId,projectid); - projectinfoService.update(updateWrapper); + projectinfoService.modifyStageById(projectid,"5"); + processinfoService.modifyStatusByProjectId(projectid,"2","3"); } return Result.ok("审批成功"); } + @PostMapping("/deleteProcesss") public Result deleteProcesss(String processInstanceId){ runtimeService.deleteProcessInstance(processInstanceId,"发起人删除"); return Result.OK("流程删除成功"); } + @PostMapping("/modifyProjectInfo") + public Result modifyProjectInfo(@RequestBody HuzhouProjectinfo huzhouProjectinfo){ + HuzhouProjectinfo projectinfoHistory= projectinfoService.getById(huzhouProjectinfo.getId()); + projectinfoService.updateById(huzhouProjectinfo); + projectinfoHistoryService.saveFromProject(projectinfoHistory); + userprojectService.removeByProjectId(huzhouProjectinfo.getId()); + userprojectService.saveFromProject(huzhouProjectinfo); + return Result.ok("修改成功"); + } @GetMapping("/projectInfoPageList") - public Result> queryPageList(@RequestParam Map params, + public Result> queryPageList(HuzhouProjectinfo projectinfo, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ - IPage page = new Page(pageNo, pageSize); - LambdaQueryWrapper huzhouProjectinfoLambdaQueryWrapper = new LambdaQueryWrapper<>(); - String projectName = (String) params.get("projectName"); - String projectId = (String) params.get("projectId"); - huzhouProjectinfoLambdaQueryWrapper.like(StringUtils.isNotBlank(projectName),HuzhouProjectinfo::getProjectName,projectName); - huzhouProjectinfoLambdaQueryWrapper.like(StringUtils.isNotBlank(projectId),HuzhouProjectinfo::getId,projectId); - IPage pageList = projectinfoService.page(page, huzhouProjectinfoLambdaQueryWrapper); + projectinfo.setStage(null); + IPage pageList = projectinfoService.getProjectInfoPageList(projectinfo, pageNo, pageSize); return Result.OK(pageList); - } @GetMapping("/queryProjectInfoById") public Result queryProjectInfoById(String projectid){ //获取项目入库数据 HuzhouProjectinfo projectinfo = projectinfoService.getById(projectid); -// List attributes = new ArrayList<>(); -// -// List extractObjectAttributes = HuzhouCommonUtils.extractObjectAttributes(projectinfo); -// for (String s:extractObjectAttributes) { -// if(s.contains("Contactor")){ -// String s1 = s.split("=")[1]; -// SysUser user = userService.getById(s1); -// String realname = user.getRealname(); -// Class clazz = projectinfo.getClass(); -// Method[] methods = clazz.getDeclaredMethods(); -// -// for (Method method : methods) { -// try { -// String name = method.getName(); -// if (name.contains(s.split("=")[0])) { // 假设所有的getter方法都不带参数,并且返回一个基本数据类型或其包装类 -// method.invoke(projectinfo,realname); -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } -// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); -// queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid); -// HuzhouProcessinfo processinfo = processinfoService.getOne(queryWrapper); - //获取项目入库流程数据 - return Result.OK(projectinfo); } - @GetMapping("/queryprocessinfoById") - public Result queryprocessinfoById(String projectid){ - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid); - queryWrapper.orderByDesc(HuzhouProcessinfo::getStatus); - HuzhouProcessinfo processinfo = processinfoService.list(queryWrapper).get(0); - return Result.OK(processinfo); + @GetMapping("/projectApprovedPageList") + public Result> queryProjectApprovedPage(HuzhouProjectinfo projectinfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ + projectinfo.setStage("3"); + IPage infoPageList = projectinfoService.getProjectInfoPageList(projectinfo, pageNo, pageSize); + return Result.OK(infoPageList); } - @PostMapping("/uploadFile") - @Transactional() - public Result uploadFile(@RequestParam(value = "file") - MultipartFile[] files,@RequestParam(value = "projectid") String projectid, - @RequestParam(value = "status") String status) throws IOException { - //获取当前时间 - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); - String currentDay = dateFormat.format(new Date()); - File filePath = new File(uploadpath + File.separator + currentDay + File.separator); - //文件夹不存在则创建 - if (!filePath.exists()) { - // 创建文件根目录 - filePath.mkdirs(); - }else { -// return modifyUploadFile(files,projectid,status); - } - for (MultipartFile item:files) { - String fileName =null; - String originalFilename = item.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(item.getBytes(), savefile);//保存文件 - HuzhouUploadfileinfo huzhouUploadfileinfo = new HuzhouUploadfileinfo(); - huzhouUploadfileinfo.setDocumentName(originalFilename);//未加工过的文件名称 - huzhouUploadfileinfo.setDocumentType(item.getContentType()); - huzhouUploadfileinfo.setDocumentPath(savePath); - huzhouUploadfileinfo.setStatus(status); - huzhouUploadfileinfo.setSize(item.getSize()); - huzhouUploadfileinfo.setProjectid(projectid); - boolean save = uploadfileinfoService.save(huzhouUploadfileinfo); - } - ArrayList arrayList = new ArrayList<>(); - //设置下一个节点处理人 - //使用角色查询 - arrayList.add("1752895307869614081"); - arrayList.add("1752895591849160705"); - WorkFlow workFlow = workflowService.createFlow("项目资料上传流程", arrayList); - String businessKey = workFlow.getBusinessKey(); - String processInstanceId = workFlow.getProcessInstanceId(); - //保存项目信息 - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(HuzhouProjectinfo::getStatus,"3");//3表示项目资料流程审批阶段 - updateWrapper.eq(HuzhouProjectinfo::getId,projectid); - projectinfoService.update(null,updateWrapper); - - //保存项目流程相关的信息 - //设置businessKey - //设置项目状态 - HuzhouProcessinfo huzhouProcessinfo = new HuzhouProcessinfo(); - huzhouProcessinfo.setBusinesskey(businessKey); - huzhouProcessinfo.setStatus("2");//该项目的第一个流程 - huzhouProcessinfo.setProcessinstanceid(processInstanceId); - huzhouProcessinfo.setProjectid(projectid); - processinfoService.save(huzhouProcessinfo); - return Result.OK("上传成功!!"); - } - @GetMapping("/downloadfile") - public void downloadfile(HttpServletResponse response,String path,String fileName) throws IOException { - FileInputStream fileInputStream = new FileInputStream(path); - response.setContentType("application/octet-stream"); -// response.setHeader("Content-disposition", "attachment;filename=" + fileName); - BufferedInputStream inputStream =null; - try { - ServletOutputStream outputStream = response.getOutputStream(); - inputStream = new BufferedInputStream(fileInputStream); - byte[] bytes = new byte[1024]; - int len =inputStream.read(bytes); - while (len!=-1){ - outputStream.write(bytes,0,bytes.length); - outputStream.flush(); - len=inputStream.read(bytes); - } - }finally { - if(inputStream!=null){ - inputStream.close(); - } + @GetMapping("/getIsbatchImportProjects") + public Result getIsbatchImportProjects(String processInstanceId){ + List processinfoList = processinfoService.getListByInstid(processInstanceId); + if(processinfoList.size()>1){ + return Result.OK(true); } + return Result.OK(false); } - - @GetMapping("/queryResourceInfo") - public Result> queryResourceInfo(@RequestParam Map params, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ - String projectid = (String) params.get("projectid"); - String status = (String) params.get("status"); - IPage huzhouUploadfileinfoIPage = new Page<>(pageNo,pageSize); - LambdaUpdateWrapper huzhouUploadfileinfoLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); - huzhouUploadfileinfoLambdaUpdateWrapper.eq(HuzhouUploadfileinfo::getProjectid,projectid); - huzhouUploadfileinfoLambdaUpdateWrapper.eq(HuzhouUploadfileinfo::getStatus,status); - IPage uploadfileinfoIPage = uploadfileinfoService.page(huzhouUploadfileinfoIPage, huzhouUploadfileinfoLambdaUpdateWrapper); - return Result.OK(uploadfileinfoIPage); + @GetMapping("/batchImportProjectPageListByInstid") + public Result getBatchImportProjectsListByInstid(String processInstanceId, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ + List processinfoList = processinfoService.getListByInstid(processInstanceId); + List projectidList = processinfoList.stream() + .map(HuzhouProcessinfo::getProjectid) + .collect(Collectors.toList()); + LambdaQueryWrapper projectinfoQueryWrapper = new LambdaQueryWrapper<>(); + projectinfoQueryWrapper.in(HuzhouProjectinfo::getId,projectidList); + Page huzhouProjectinfoPage = new Page<>(pageNo,pageSize); + Page projectinfoPage = projectinfoService.page(huzhouProjectinfoPage, projectinfoQueryWrapper); + return Result.ok(projectinfoPage); } - - @GetMapping("/queryProjectApprovedPage") - public Result> queryProjectApprovedPage(HuzhouProjectinfo projectinfo, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ - Page projectinfoPage = new Page<>(pageNo, pageSize); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - String projectName = projectinfo.getProjectName(); - String projectinfoId = projectinfo.getId(); - queryWrapper.like(StringUtils.isNotBlank(projectName),HuzhouProjectinfo::getProjectName,projectName); - queryWrapper.like(StringUtils.isNotBlank(projectinfoId),HuzhouProjectinfo::getId,projectinfoId); - queryWrapper.ge(HuzhouProjectinfo::getStatus,"4"); - Page page = projectinfoService.page(projectinfoPage, queryWrapper); - return Result.OK(page); - } - - } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouProjectinfoHistoryController.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouProjectinfoHistoryController.java new file mode 100644 index 0000000..2804d50 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouProjectinfoHistoryController.java @@ -0,0 +1,47 @@ +package org.jeecg.modules.huzhou.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfoHistory; +import org.jeecg.modules.huzhou.mapper.HuzhouProjectinfoHistoryMapper; +import org.jeecg.modules.huzhou.service.IHuzhouProjectinfoHistoryService; +import org.jeecg.modules.huzhou.service.IHuzhouProjectinfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + + +@RestController +@RequestMapping("/huzhouProjectinfoHistory") +public class HuzhouProjectinfoHistoryController { + @Autowired + private IHuzhouProjectinfoHistoryService projectinfoHistoryService; + + + @GetMapping("/projectInfoHistoryPageList") + public Result projectInfoHistoryPageList(HuzhouProjectinfo projectinfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ + Page historyPageList = projectinfoHistoryService.getProjectInfoHistoryPageList(projectinfo, pageNo, pageSize); + return Result.ok(historyPageList); + } + @GetMapping("/singleProjectInfoHistoryPageList") + public Result singleProjectInfoHistoryPageList(HuzhouProjectinfoHistory projectinfoHistory, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ + Page historyPageList = projectinfoHistoryService.getSingleProjectInfoHistoryPageList(projectinfoHistory, pageNo, pageSize); + return Result.OK(historyPageList); + } + @GetMapping("/queryProjectInfoHistoryById") + public Result queryProjectInfoHistoryById(String id){ + //获取项目入库数据 + HuzhouProjectinfoHistory projectinfo = projectinfoHistoryService.getById(id); + return Result.OK(projectinfo); + + } +} 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 new file mode 100644 index 0000000..4489edb --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/controller/HuzhouUploadfileinfoController.java @@ -0,0 +1,142 @@ +package org.jeecg.modules.huzhou.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.commons.io.FileUtils; +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.HuzhouProcessinfo; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo; +import org.jeecg.modules.huzhou.entity.HuzhouUploadfileinfo; +import org.jeecg.modules.huzhou.entity.WorkFlow; +import org.jeecg.modules.huzhou.service.IHuzhouProcessinfoService; +import org.jeecg.modules.huzhou.service.IHuzhouProjectinfoService; +import org.jeecg.modules.huzhou.service.IHuzhouUploadfileinfoService; +import org.jeecg.modules.huzhou.service.IWorkflowService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.ArrayList; + +@RestController +@RequestMapping("/huzhouUploadfileinfo") +public class HuzhouUploadfileinfoController { + @Autowired + private IHuzhouUploadfileinfoService uploadfileinfoService; + @Autowired + private IWorkflowService workflowService; + @Autowired + private IHuzhouProcessinfoService processinfoService; + @Autowired + private IHuzhouProjectinfoService projectinfoService; + @GetMapping("/downloadfile") + public void downloadfile(HttpServletResponse response, String path, String fileName) throws IOException { + InputStream fileInputStream =null; + File file = null; + if(path.startsWith("Resources")){ + path = path.substring(path.indexOf("/")+1); + ClassPathResource classPathResource = new ClassPathResource(path); + fileInputStream =classPathResource.getInputStream(); + }else{ + fileInputStream = new FileInputStream(path); + file = new File(path); + } + response.setContentType("application/octet-stream"); + if(file!=null){ + response.addHeader("Content-Length", "" + file.length()); + }else{ + response.addHeader("Content-Length", "" + fileInputStream.available()); + } +// response.setContentType("multipart/form-data"); + BufferedInputStream inputStream =null; + try { + ServletOutputStream outputStream = response.getOutputStream(); + inputStream = new BufferedInputStream(fileInputStream); + byte[] bytes = new byte[1024]; + int len =inputStream.read(bytes); + while (len!=-1){ + outputStream.write(bytes,0,bytes.length); + outputStream.flush(); + len=inputStream.read(bytes); + } + }finally { + if(inputStream!=null){ + inputStream.close(); + } + } + } + + @GetMapping("/uploacFilePageList") + public Result> queryResourceInfo(HuzhouUploadfileinfo uploadfileinfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ + IPage huzhouUploadfileinfoIPage = uploadfileinfoService.getuploacFilePageList(uploadfileinfo, pageNo, pageSize); + return Result.OK(huzhouUploadfileinfoIPage); + } + @PostMapping("/submitUploadFile") + @Transactional() + public Result submitUploadFile(@RequestParam(value = "file") + MultipartFile[] files,@RequestParam(value = "projectid") String projectid) throws IOException { + uploadfileinfoService.saveFileAndFileInfo(files, projectid); + ArrayList arrayList = new ArrayList<>(); + //设置下一个节点处理人 + //使用角色查询 + arrayList.add("1752895307869614081"); + arrayList.add("1752895591849160705"); + WorkFlow workFlow = workflowService.createFlow("项目资料上传流程", arrayList); + String businessKey = workFlow.getBusinessKey(); + String processInstanceId = workFlow.getProcessInstanceId(); + //保存项目信息 + projectinfoService.modifyStageById(projectid,"3"); + + //保存项目流程相关的信息 + //设置businessKey + //设置项目状态 + HuzhouProcessinfo huzhouProcessinfo = new HuzhouProcessinfo(); + huzhouProcessinfo.setBusinesskey(businessKey); + huzhouProcessinfo.setStage("2");// + huzhouProcessinfo.setProcessinstanceid(processInstanceId); + huzhouProcessinfo.setProjectid(projectid); + processinfoService.save(huzhouProcessinfo); + return Result.OK("上传成功!!"); + } + + @PostMapping("/approveUploadFile") + public Result approveUploadFile(@RequestParam(value = "file",required = false) MultipartFile[] file, + @RequestParam String taskId, + @RequestParam String flag, + @RequestParam String projectid, + @RequestParam String comment, + @RequestParam String stage, + @RequestParam(value = "adviceFile",required = false) MultipartFile[] adviceFile) throws IOException { + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = currentUser.getId(); + + WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment, stage); + String userTaskName = workFlow.getUserTask(); + if("发起人".equals(workFlow.getUserTask())&&null != file){ + uploadfileinfoService.modifyUploadFile(file,projectid,"1"); + } + //意见文件 + if(adviceFile!=null&&"0".equals(flag)){ + uploadfileinfoService.modifyUploadFile(adviceFile,projectid,"2"); + } + if("3".equals(flag)){ + processinfoService.modifyStatusByProjectId(projectid,"0","2"); + return Result.ok("作废成功!"); + + } + //管理单位审批通过,最后一个节点流程通过 + if("流程审批二".equals(userTaskName)&&"1".equals(flag)){ + processinfoService.modifyStatusByProjectId(projectid,"2","2"); + } + + return Result.ok("审批成功"); + } +} 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 eb5310a..c17151f 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 @@ -3,7 +3,6 @@ package org.jeecg.modules.huzhou.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.fasterxml.jackson.module.kotlin.ReflectionCache; import org.activiti.bpmn.model.*; import org.activiti.engine.HistoryService; import org.activiti.engine.RepositoryService; @@ -84,7 +83,16 @@ public class WorkflowController { //获取项目id LambdaQueryWrapper processQueryWrapper = new LambdaQueryWrapper<>(); processQueryWrapper.eq(HuzhouProcessinfo::getProcessinstanceid,processInstanceId); - HuzhouProcessinfo processinfo = processinfoService.getOne(processQueryWrapper); + List huzhouProcessinfoList = processinfoService.list(processQueryWrapper); + HuzhouProcessinfo processinfo = null; + + if(huzhouProcessinfoList.size()>=1){ + processinfo = huzhouProcessinfoList.get(0); + String projectid = processinfo.getProjectid(); + stringObjectHashMap.put("projectid",projectid); + }else { + + } if(processinfo!=null){ String projectid = processinfo.getProjectid(); stringObjectHashMap.put("projectid",projectid); @@ -94,7 +102,7 @@ public class WorkflowController { HuzhouProjectinfo projectInfo = projectinfoService.getOne(projetcQueryWrapper); stringObjectHashMap.put("projectName",projectInfo.getProjectName()); stringObjectHashMap.put("createTime",projectInfo.getCreatetime()); - stringObjectHashMap.put("status",processinfo.getStatus()); + stringObjectHashMap.put("stage",processinfo.getStage()); } @@ -165,10 +173,18 @@ public class WorkflowController { //获取项目id LambdaQueryWrapper processQueryWrapper = new LambdaQueryWrapper<>(); processQueryWrapper.eq(HuzhouProcessinfo::getProcessinstanceid,processInstanceId); - HuzhouProcessinfo processinfo = processinfoService.getOne(processQueryWrapper); - if(processinfo!=null){ + List huzhouProcessinfoList = processinfoService.list(processQueryWrapper); + HuzhouProcessinfo processinfo = null; + + if(huzhouProcessinfoList.size()>=1){ + processinfo = huzhouProcessinfoList.get(0); String projectid = processinfo.getProjectid(); reshashMap.put("projectid",projectid); + }else { + + } + if(processinfo!=null){ + String projectid = processinfo.getProjectid(); //获取项目名称 LambdaQueryWrapper projetcQueryWrapper = new LambdaQueryWrapper<>(); projetcQueryWrapper.eq(HuzhouProjectinfo::getId,projectid); @@ -177,7 +193,7 @@ public class WorkflowController { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String createtime = dateFormat.format(projectInfo.getCreatetime()); reshashMap.put("createTime",createtime); - reshashMap.put("status",processinfo.getStatus()); + reshashMap.put("stage",processinfo.getStage()); } resList.add(reshashMap); HistoricProcessInstance historicProcessInstance =historyService.createHistoricProcessInstanceQuery() @@ -219,14 +235,14 @@ public class WorkflowController { return Result.ok(taskPage); } @GetMapping("/getprocessInfo") - public Result>> getprocessInfo(String projectid,String status, + public Result>> getprocessInfo(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::getStatus,status);//属于第几部流程 + queryWrapper.eq(HuzhouProcessinfo::getStage,stage);//属于第几部流程 HuzhouProcessinfo processinfo = processinfoService.getOne(queryWrapper); String processinstanceid = processinfo.getProcessinstanceid(); List list = historyService.createHistoricTaskInstanceQuery() @@ -275,7 +291,7 @@ public class WorkflowController { @GetMapping("/getActionParam") - public Result getActionParam(String projectid,String status,String taskId,String procesType){ + public Result getActionParam(String projectid,String stage,String taskId,String procesType){ HashMap outRes = new HashMap<>(); ArrayList actionButtons = new ArrayList<>(); //如果是已办 @@ -287,19 +303,19 @@ public class WorkflowController { HuzhouProjectinfo projectinfo = projectinfoService.getById(projectid); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid); - queryWrapper.eq(HuzhouProcessinfo::getStatus,status);//属于第几部流程 + queryWrapper.eq(HuzhouProcessinfo::getStage,stage);//属于第几部流程 HuzhouProcessinfo processinfo = processinfoService.getOne(queryWrapper); String processinstanceid = processinfo.getProcessinstanceid(); List list = historyService .createHistoricTaskInstanceQuery() .processInstanceId(processinstanceid) - .orderByHistoricTaskInstanceEndTime() + .orderByTaskCreateTime() .desc() .list(); HistoricTaskInstance taskInstance = null; if (!list.isEmpty()) { - if (list.get(0).getEndTime() != null) { - taskInstance = list.get(0); + if (list.get(1).getEndTime() != null) { + taskInstance = list.get(1); String userid = taskInstance.getAssignee(); //上一个节点是你处理的(已办可以撤回) Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/BaseEntity.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/BaseEntity.java index 6ebc0e5..1a8c027 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/BaseEntity.java +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/BaseEntity.java @@ -1,5 +1,6 @@ package org.jeecg.modules.huzhou.entity; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; @@ -14,11 +15,15 @@ public class BaseEntity { * 创建时间 */ @TableField(fill = FieldFill.INSERT) + @JSONField(format="yyyy-MM-dd") + private Date createtime; /** * 最后更新时间 */ @TableField(fill = FieldFill.INSERT_UPDATE) + @JSONField(format="yyyy-MM-dd") + private Date updatetime; /** diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouPlaninfo.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouPlaninfo.java index 127f621..f6c1e68 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouPlaninfo.java +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouPlaninfo.java @@ -1,5 +1,6 @@ package org.jeecg.modules.huzhou.entity; +import com.alibaba.fastjson.annotation.JSONField; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; @@ -35,22 +36,33 @@ public class HuzhouPlaninfo extends BaseEntity implements Serializable { * 计划开始时间 */ @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd") + @JSONField(format="yyyy-MM-dd") private Date scheduledStartTime; /** * 计划结束时间 */ @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd") - + @JSONField(format="yyyy-MM-dd") private Date scheduledEndTime; /** * 实际开始时间 */ + @JSONField(format="yyyy-MM-dd") + @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd") + private Date actualStartTime; /** * 实际结束时间 */ - private Date actualEndTime; + @JSONField(format="yyyy-MM-dd") + @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd") + private Date actualEndTime; + private String taskLevel; + private String taskFile; + private String superior; + private String isfinish; + private String groupId; } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouPlaninfoHistory.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouPlaninfoHistory.java new file mode 100644 index 0000000..b573854 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouPlaninfoHistory.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.huzhou.entity; + +import java.util.Date; +import java.io.Serializable; + +/** + * (HuzhouPlaninfoHistory)实体类 + * + * @author makejava + * @since 2024-02-21 14:04:41 + */ +public class HuzhouPlaninfoHistory extends HuzhouPlaninfo implements Serializable { + private static final long serialVersionUID = 174139688711733935L; + + +} + diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouPlaninfofile.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouPlaninfofile.java new file mode 100644 index 0000000..c55e2c5 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouPlaninfofile.java @@ -0,0 +1,49 @@ +package org.jeecg.modules.huzhou.entity; + +import lombok.Data; + +import java.util.Date; +import java.io.Serializable; + +/** + * (HuzhouPlaninfofile)实体类 + * + * @author makejava + * @since 2024-02-18 17:06:46 + */ +@Data +public class HuzhouPlaninfofile extends BaseEntity implements Serializable { + private static final long serialVersionUID = -59331814014234677L; + /** + * 文档编号 + */ + private Integer id; + /** + * 任务id + */ + private String planinfoid; + /** + * 文档名称 + */ + private String documentName; + /** + * 文档类型 + */ + private String documentType; + /** + * 文档位置 + */ + private String documentPath; + /** + * 文档属于项目的哪个阶段 + */ + private String stage; + /** + * 文件大小 + */ + private Long size; + private String status; + + +} + diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouProcessinfo.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouProcessinfo.java index a28d970..a603c01 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouProcessinfo.java +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouProcessinfo.java @@ -13,6 +13,7 @@ import java.io.Serializable; @Data public class HuzhouProcessinfo extends BaseEntity implements Serializable { private static final long serialVersionUID = 641518690443763605L; + private String id; /** * 流程实例id */ @@ -28,7 +29,8 @@ public class HuzhouProcessinfo extends BaseEntity implements Serializable { /** * 当前流程属于项目的哪个阶段 */ - private String status; + private String stage; + private String processstatus; } 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 43f3fd0..42c281c 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 @@ -125,23 +125,7 @@ public class HuzhouProjectinfo extends BaseEntity implements Serializable{ /** * 项目状态 */ - private String status; - /** - * 创建时间 - */ - private Date createtime; - /** - * 创建人 - */ - private String creator; - /** - * 修改时间 - */ - private Date updatetime; - /** - * 修改人 - */ - private String updater; + private String stage; /** * 单位属性 */ @@ -149,23 +133,23 @@ public class HuzhouProjectinfo extends BaseEntity implements Serializable{ /** * 总投资 */ - private String totalInvestment; + private String totalMoney; /** * 自筹资金 */ - private String selfFunding; + private String selfMoney; /** * 2023年支付 */ - private Double payamount2023; + private Double payamount2023Money; /** * 2024年支付 */ - private Double payamount2024; + private Double payamount2024Money; /** * 2025年支付 */ - private Double payamount2025; + private Double payamount2025Money; diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouProjectinfoHistory.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouProjectinfoHistory.java new file mode 100644 index 0000000..2ee5259 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouProjectinfoHistory.java @@ -0,0 +1,25 @@ +package org.jeecg.modules.huzhou.entity; + +import lombok.Data; + +import java.util.Date; +import java.io.Serializable; + +/** + * (HuzhouProjectinfoHistory)实体类 + * + * @author makejava + * @since 2024-02-20 11:27:03 + */ +@Data +public class HuzhouProjectinfoHistory extends HuzhouProjectinfo implements Serializable { + private static final long serialVersionUID = 376671943052847409L; + + private String projectId; + + + + +} + + diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouUploadfileinfo.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouUploadfileinfo.java index 5bfb95b..ba0c6bd 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouUploadfileinfo.java +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/entity/HuzhouUploadfileinfo.java @@ -41,5 +41,6 @@ public class HuzhouUploadfileinfo extends BaseEntity implements Serializable { * 文件大小 */ private long size; + private String stage; } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouPlaninfoHistoryMapper.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouPlaninfoHistoryMapper.java new file mode 100644 index 0000000..0d0f5ea --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouPlaninfoHistoryMapper.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.HuzhouPlaninfoHistory; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfoHistory; + +@Mapper +public interface HuzhouPlaninfoHistoryMapper extends BaseMapper { + Page getPlanInfoHistoryPageList(Page page,HuzhouProjectinfo projectinfo); + Page getSinglePlanInfoHistoryPageList(Page page,String projectid); +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouPlaninfofileMapper.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouPlaninfofileMapper.java new file mode 100644 index 0000000..a70f9e7 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouPlaninfofileMapper.java @@ -0,0 +1,8 @@ +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.HuzhouPlaninfofile; +@Mapper +public interface HuzhouPlaninfofileMapper extends BaseMapper { +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouProjectinfoHistoryMapper.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouProjectinfoHistoryMapper.java new file mode 100644 index 0000000..077eb9c --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/HuzhouProjectinfoHistoryMapper.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.HuzhouProjectinfo; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfoHistory; + +@Mapper +public interface HuzhouProjectinfoHistoryMapper extends BaseMapper { + Page getProjectInfoHistoryPageList(Page page,HuzhouProjectinfo projectinfo); +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouPlaninfoHistoryMapper.xml b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouPlaninfoHistoryMapper.xml new file mode 100644 index 0000000..83a0ac5 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouPlaninfoHistoryMapper.xml @@ -0,0 +1,22 @@ + + + + + + \ 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 new file mode 100644 index 0000000..d9afa04 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/mapper/xml/HuzhouProjectinfoHistoryMapper.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 e3ce965..88a25ab 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 @@ -2,13 +2,16 @@ \ No newline at end of file diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfoHistoryService.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfoHistoryService.java new file mode 100644 index 0000000..4794e91 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfoHistoryService.java @@ -0,0 +1,19 @@ +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.HuzhouPlaninfo; +import org.jeecg.modules.huzhou.entity.HuzhouPlaninfoHistory; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfoHistory; +import org.jeecg.modules.huzhou.vo.HuzhouPlaninfoOV; + +import java.util.ArrayList; + +public interface IHuzhouPlaninfoHistoryService extends IService { + + void savePlanInfoToHistory(String projectid); + Page getPlanInfoHistoryPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize); + Page getSinglePlanInfoHistoryPageList(String projectid, Integer pageNo, Integer pageSize); + ArrayList queryPlanInfoHistoryGroupList(HuzhouPlaninfoHistory planinfoHistory); +} 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 32a98df..7014be2 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 @@ -1,9 +1,18 @@ package org.jeecg.modules.huzhou.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.poi.ss.usermodel.Sheet; import org.jeecg.modules.huzhou.entity.HuzhouPlaninfo; +import org.jeecg.modules.huzhou.vo.HuzhouPlaninfoOV; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; /** * (HuzhouPlaninfo)表服务接口 @@ -12,5 +21,11 @@ import org.springframework.data.domain.PageRequest; * @since 2024-01-30 16:01:09 */ public interface IHuzhouPlaninfoService extends IService { + HashMap getPlanInfoListFromFile(MultipartFile multipartFile,String projectid) throws Exception; + ArrayList getPlanInfoMainTimelineList(String projectid); + void saveOrModifyPlanUploadFile(MultipartFile[] files,String planinfoid,String type) throws IOException; + List getListByProjectId(String projectid); + void removeByProjectId(String projectid); + List getFinishListByProjectId(String projectid); } 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 new file mode 100644 index 0000000..744fd3e --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouPlaninfofileService.java @@ -0,0 +1,7 @@ +package org.jeecg.modules.huzhou.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.huzhou.entity.HuzhouPlaninfofile; + +public interface IHuzhouPlaninfofileService extends IService { +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouProcessinfoService.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouProcessinfoService.java index 1b25366..8515faa 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouProcessinfoService.java +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouProcessinfoService.java @@ -4,6 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.huzhou.entity.HuzhouProcessinfo; import org.springframework.stereotype.Service; +import java.util.List; + public interface IHuzhouProcessinfoService extends IService { void callBack(String processId,String flag); + void modifyStatusByProjectId(String projectid,String status,String stage); + List getListByInstid(String processInstanceId); } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouProjectinfoHistoryService.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouProjectinfoHistoryService.java new file mode 100644 index 0000000..d96088c --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouProjectinfoHistoryService.java @@ -0,0 +1,14 @@ +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.HuzhouProjectinfo; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfoHistory; +import org.springframework.web.bind.annotation.RequestParam; + +public interface IHuzhouProjectinfoHistoryService extends IService { + + void saveFromProject(HuzhouProjectinfo projectinfo); + Page getProjectInfoHistoryPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize); + Page getSingleProjectInfoHistoryPageList(HuzhouProjectinfoHistory history, Integer pageNo, Integer pageSize); +} 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 4a74d29..78f8275 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,8 +1,10 @@ package org.jeecg.modules.huzhou.service; +import com.baomidou.mybatisplus.core.metadata.IPage; 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; /** @@ -13,4 +15,7 @@ import org.springframework.stereotype.Service; */ public interface IHuzhouProjectinfoService extends IService{ +// void submitProject(HuzhouProjectinfo info); + void modifyStageById(String id,String stage); + IPage getProjectInfoPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize); } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouUploadfileinfoService.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouUploadfileinfoService.java index 0760ef9..a544375 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouUploadfileinfoService.java +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouUploadfileinfoService.java @@ -1,10 +1,13 @@ package org.jeecg.modules.huzhou.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.huzhou.entity.HuzhouUploadfileinfo; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.util.List; /** * (HuzhouUploadfileinfo)表服务接口 @@ -13,5 +16,7 @@ import java.io.IOException; * @since 2024-01-29 14:21:06 */ public interface IHuzhouUploadfileinfoService extends IService { - void modifyUploadFile(MultipartFile[] files, String projectid, String status) throws IOException; + void modifyUploadFile(MultipartFile[] files, String projectid, String stage) throws IOException; + void saveFileAndFileInfo(MultipartFile[] files,String projectid) throws IOException; + IPage getuploacFilePageList(HuzhouUploadfileinfo uploadfileinfo, Integer pageNo, Integer pageSize); } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouUserprojectService.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouUserprojectService.java index 3f8f69d..7ccb68c 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouUserprojectService.java +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/IHuzhouUserprojectService.java @@ -1,6 +1,7 @@ package org.jeecg.modules.huzhou.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo; import org.jeecg.modules.huzhou.entity.HuzhouUserproject; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -13,5 +14,6 @@ import org.springframework.data.domain.PageRequest; */ public interface IHuzhouUserprojectService extends IService { - + void saveFromProject(HuzhouProjectinfo projectinfo); + void removeByProjectId(String projectId); } 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 7e67239..feb1355 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 @@ -7,5 +7,5 @@ import java.util.ArrayList; public interface IWorkflowService { WorkFlow createFlow(String processDefinitionKey, ArrayList nextList); void callBack(String processId,String flag); - WorkFlow approveProjectInfo(String taskId,String flag,String comment,String status); + WorkFlow approveProjectInfo(String taskId,String flag,String comment,String stage); } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouPlaninfoHistoryServiceImpl.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouPlaninfoHistoryServiceImpl.java new file mode 100644 index 0000000..61cf621 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouPlaninfoHistoryServiceImpl.java @@ -0,0 +1,94 @@ +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 com.google.common.collect.Lists; +import org.jeecg.modules.huzhou.entity.HuzhouPlaninfo; +import org.jeecg.modules.huzhou.entity.HuzhouPlaninfoHistory; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfoHistory; +import org.jeecg.modules.huzhou.mapper.HuzhouPlaninfoHistoryMapper; +import org.jeecg.modules.huzhou.service.IHuzhouPlaninfoHistoryService; +import org.jeecg.modules.huzhou.service.IHuzhouPlaninfoService; +import org.jeecg.modules.huzhou.vo.HuzhouPlaninfoOV; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class HuzhouPlaninfoHistoryServiceImpl extends ServiceImpl implements IHuzhouPlaninfoHistoryService { + @Autowired + private IHuzhouPlaninfoService planinfoService; + @Autowired + private HuzhouPlaninfoHistoryMapper planinfoHistoryMapper; + @Override + public void savePlanInfoToHistory(String projectid) { + List planinfoHistory = planinfoService.getListByProjectId(projectid); + List planinfoHistorylist = Lists.transform(planinfoHistory, entity->{ + HuzhouPlaninfoHistory huzhouPlaninfoHistory = new HuzhouPlaninfoHistory(); + BeanUtils.copyProperties(entity,huzhouPlaninfoHistory); + huzhouPlaninfoHistory.setId(null); + huzhouPlaninfoHistory.setCreatetime(null); + return huzhouPlaninfoHistory; + }); + this.saveBatch(planinfoHistorylist); + } + + @Override + public Page getPlanInfoHistoryPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) { + Page projectinfoPage = new Page<>(pageNo, pageSize); + Page pageList = planinfoHistoryMapper.getPlanInfoHistoryPageList(projectinfoPage, projectinfo); + return pageList; + } + + @Override + public Page getSinglePlanInfoHistoryPageList(String projectid, Integer pageNo, Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); + Page pageList = planinfoHistoryMapper.getSinglePlanInfoHistoryPageList(page, projectid); + return pageList; + } + + @Override + public ArrayList queryPlanInfoHistoryGroupList(HuzhouPlaninfoHistory planinfoHistory) { + String projectId = planinfoHistory.getProjectId(); + String groupId = planinfoHistory.getGroupId(); + LambdaQueryWrapper planinfoLambdaQueryWrapper = new LambdaQueryWrapper<>(); + planinfoLambdaQueryWrapper.eq(HuzhouPlaninfoHistory::getProjectId,projectId); + planinfoLambdaQueryWrapper.eq(HuzhouPlaninfoHistory::getSuperior,"0"); + planinfoLambdaQueryWrapper.eq(HuzhouPlaninfoHistory::getGroupId,groupId); + List historyList = this.list(planinfoLambdaQueryWrapper); + ArrayList mapArrayList = new ArrayList<>(); + for (HuzhouPlaninfo info:historyList) { +// String json = JSON.toJSONString(info); +// HashMap map = JSON.parseObject(json, HashMap.class); + HuzhouPlaninfoOV huzhouPlaninfoOV = new HuzhouPlaninfoOV(); + BeanUtils.copyProperties(info,huzhouPlaninfoOV); + HuzhouPlaninfoOV setchilddata = setchild(huzhouPlaninfoOV); + mapArrayList.add(setchilddata); + } + return mapArrayList; + } + private HuzhouPlaninfoOV setchild(HuzhouPlaninfoOV planinfoOV){ + ArrayList mapArrayList = new ArrayList<>(); + String taskLevel = planinfoOV.getTaskLevel(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouPlaninfoHistory::getSuperior,taskLevel); + queryWrapper.eq(HuzhouPlaninfoHistory::getProjectId,planinfoOV.getProjectId()); + queryWrapper.eq(HuzhouPlaninfoHistory::getGroupId,planinfoOV.getGroupId()); + List historyList = this.list(queryWrapper); + if(historyList.size()!=0){ + for(HuzhouPlaninfo childInfo:historyList){ + HuzhouPlaninfoOV huzhouPlaninfoOV = new HuzhouPlaninfoOV(); + BeanUtils.copyProperties(childInfo,huzhouPlaninfoOV); + HuzhouPlaninfoOV setchildmap = setchild(huzhouPlaninfoOV); + mapArrayList.add(setchildmap); + } + planinfoOV.setChildren(mapArrayList); + } + return planinfoOV; + } +} 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 587b764..79e4211 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 @@ -1,13 +1,39 @@ 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 org.apache.poi.hssf.usermodel.HSSFDateUtil; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.constant.SymbolConstant; +import org.jeecg.common.util.CommonUtils; +import org.jeecg.modules.huzhou.common.HuzhouCommonUtils; import org.jeecg.modules.huzhou.entity.HuzhouPlaninfo; +import org.jeecg.modules.huzhou.entity.HuzhouPlaninfofile; import org.jeecg.modules.huzhou.mapper.HuzhouPlaninfoMapper; +import org.jeecg.modules.huzhou.mapper.HuzhouPlaninfofileMapper; import org.jeecg.modules.huzhou.service.IHuzhouPlaninfoService; +import org.jeecg.modules.huzhou.vo.HuzhouPlaninfoOV; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.regex.Pattern; /** * (HuzhouPlaninfo)表服务实现类 @@ -17,4 +43,322 @@ import javax.annotation.Resource; */ @Service public class HuzhouPlaninfoServiceImpl extends ServiceImpl implements IHuzhouPlaninfoService { + @Value(value = "${jeecg.path.upload}") + private String uploadpath; + @Autowired + private HuzhouPlaninfofileMapper planinfofileMapper; + @Override + public HashMap getPlanInfoListFromFile(MultipartFile multipartFile,String projectid) throws Exception { + HashMap resHashMap = new HashMap<>(); + if (multipartFile == null && multipartFile.getSize() == 0) { + resHashMap.put("res",false); + resHashMap.put("msg","文件上传错误,重新上传"); + return resHashMap; + } + //获取文件名称 判断文件是否为 Execl + String filename = multipartFile.getOriginalFilename(); + if (!(filename.endsWith(".xls") || filename.endsWith(".xlsx"))) { + resHashMap.put("res",false); + resHashMap.put("msg","文件上传格式有误,请重新上传"); + return resHashMap; + } + InputStream inputStream = multipartFile.getInputStream(); + Workbook workbook = null; + if (filename.endsWith(".xlsx")) { + workbook = new XSSFWorkbook(inputStream); + } else { + workbook = new HSSFWorkbook(inputStream); + } + Sheet sheet = workbook.getSheetAt(0); + ArrayList huzhouPlaninfoArrayList = new ArrayList<>(); + String uuid = UUID.randomUUID().toString(); + 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){ + int code = row.getCell(j).getCellType().getCode(); + Cell cell = row.getCell(j); + if(CellType.NUMERIC.getCode() == code){ + double cellValue = row.getCell(j).getNumericCellValue(); + value=realStringValueOfDouble(cellValue); + }else + { + row.getCell(j).setCellType(CellType.STRING); + value = row.getCell(j).getStringCellValue(); + } + + } + if(value==null||value.length()==0){ + String s = chineseNameMap.get(String.valueOf(j)); + resHashMap.put("res",false); + resHashMap.put("msg","第"+(i+1)+"行,"+s+",不能为空"); + return resHashMap; + } + String name = NameMap.get(String.valueOf(j)); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + if("scheduledEndTime".equals(name)){ + try { + Date date = null; + if(value==null){ + continue; + } + Cell cell = row.getCell(j); + if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式 + SimpleDateFormat sdf = null; + // 验证short值 + if (cell.getCellStyle().getDataFormat() == 14) { + sdf = new SimpleDateFormat("yyyy/MM/dd"); + } else if (cell.getCellStyle().getDataFormat() == 21) { + sdf = new SimpleDateFormat("HH:mm:ss"); + } else if (cell.getCellStyle().getDataFormat() == 22) { + sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + } else { + String s = chineseNameMap.get(String.valueOf(j)); + resHashMap.put("res",false); + resHashMap.put("msg","第"+(i+1)+"行,"+s+",日期格错误【yyyy-MM-dd】"); + return resHashMap; + } + date = cell.getDateCellValue(); + }else{ + date = dateFormat.parse(value); + } + huzhouPlaninfo.setScheduledEndTime(date); + }catch (Exception e){ + String s = chineseNameMap.get(String.valueOf(j)); + resHashMap.put("res",false); + resHashMap.put("msg","第"+(i+1)+"行,"+s+",日期格错误【yyyy-MM-dd】"); + return resHashMap; + } + + }else if("scheduledStartTime".equals(name)){ + try{ + Date date = null; + if(value==null){ + continue; + } + Cell cell = row.getCell(j); + if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式 + SimpleDateFormat sdf = null; + // 验证short值 + if (cell.getCellStyle().getDataFormat() == 14) { + sdf = new SimpleDateFormat("yyyy/MM/dd"); + } else if (cell.getCellStyle().getDataFormat() == 21) { + sdf = new SimpleDateFormat("HH:mm:ss"); + } else if (cell.getCellStyle().getDataFormat() == 22) { + sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + } else { + String s = chineseNameMap.get(String.valueOf(j)); + resHashMap.put("res",false); + resHashMap.put("msg","第"+(i+1)+"行,"+s+",日期格错误【yyyy-MM-dd】"); + return resHashMap; + } + date = cell.getDateCellValue(); + }else{ + date = dateFormat.parse(value); + } + huzhouPlaninfo.setScheduledStartTime(date); + }catch (Exception e){ + String s = chineseNameMap.get(String.valueOf(j)); + resHashMap.put("res",false); + resHashMap.put("msg","第"+(i+1)+"行,"+s+",日期格错误【yyyy-MM-dd】"); + return resHashMap; + } + + }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 { + HuzhouCommonUtils.setObjectAttributes(huzhouPlaninfo,"superior","0"); + } + } + } + huzhouPlaninfo.setProjectId(projectid); + huzhouPlaninfo.setGroupId(uuid); + huzhouPlaninfo.setIsfinish("0"); + huzhouPlaninfoArrayList.add(huzhouPlaninfo); + } + resHashMap.put("res",true); + resHashMap.put("arr",huzhouPlaninfoArrayList); + return resHashMap; + } + + @Override + public ArrayList getPlanInfoMainTimelineList(String projectid) { + LambdaQueryWrapper planinfoLambdaQueryWrapper = new LambdaQueryWrapper<>(); + planinfoLambdaQueryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); + planinfoLambdaQueryWrapper.eq(HuzhouPlaninfo::getSuperior,"0"); + List huzhouPlaninfoList = this.list(planinfoLambdaQueryWrapper); + ArrayList mapArrayList = new ArrayList<>(); + for (HuzhouPlaninfo info:huzhouPlaninfoList) { +// String json = JSON.toJSONString(info); +// HashMap map = JSON.parseObject(json, HashMap.class); + HuzhouPlaninfoOV huzhouPlaninfoOV = new HuzhouPlaninfoOV(); + BeanUtils.copyProperties(info,huzhouPlaninfoOV); + HuzhouPlaninfoOV setchilddata = setchild(huzhouPlaninfoOV); + String taskLevel = info.getTaskLevel(); + //查询任务整体进度情况 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.likeRight(HuzhouPlaninfo::getTaskLevel,taskLevel); + queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); + //所有:所有下级还要加他自己 + long count = this.count(queryWrapper); + //查询完成的数量 + queryWrapper.eq(HuzhouPlaninfo::getIsfinish,"1"); + long finishCount = this.count(queryWrapper); + BigDecimal a = new BigDecimal(count); + BigDecimal b = new BigDecimal(finishCount); + String percent = b.divide(a, 2, BigDecimal.ROUND_HALF_UP).toString(); + if("0.00".equals(percent)){ + percent="0"; + }else if("1.00".equals(percent)){ + percent="1"; + } + percent = percent.substring(percent.indexOf(".")+1); + setchilddata.setPercent(percent); + if(setchilddata.getScheduledEndTime().getTime() updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(HuzhouPlaninfofile::getPlaninfoid,planinfoid); + updateWrapper.eq(HuzhouPlaninfofile::getDocumentName,originalFilename); + updateWrapper.set(HuzhouPlaninfofile::getStatus,"0"); + planinfofileMapper.update(null,updateWrapper); + } + HuzhouPlaninfofile huzhouUploadfileinfo = new HuzhouPlaninfofile(); + huzhouUploadfileinfo.setDocumentName(originalFilename);//未加工过的文件名称 + huzhouUploadfileinfo.setDocumentType(item.getContentType()); + huzhouUploadfileinfo.setDocumentPath(savePath); + huzhouUploadfileinfo.setSize(item.getSize()); + huzhouUploadfileinfo.setPlaninfoid(planinfoid); + huzhouUploadfileinfo.setStatus("1"); + planinfofileMapper.insert(huzhouUploadfileinfo); + } + HuzhouPlaninfo huzhouPlaninfo = new HuzhouPlaninfo(); + huzhouPlaninfo.setId(planinfoid); + huzhouPlaninfo.setIsfinish("1"); + huzhouPlaninfo.setActualEndTime(new Date()); + this.updateById(huzhouPlaninfo); + } + + @Override + public List getListByProjectId(String projectid) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); + List huzhouPlaninfoList = this.list(queryWrapper); + return huzhouPlaninfoList; + } + + @Override + public void removeByProjectId(String projectid) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); + queryWrapper.eq(HuzhouPlaninfo::getIsfinish,"0"); + this.remove(queryWrapper); + } + + @Override + public List getFinishListByProjectId(String projectid) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); + queryWrapper.eq(HuzhouPlaninfo::getIsfinish,"1"); + List huzhouPlaninfoList = this.list(queryWrapper); + return huzhouPlaninfoList; + } + + private HuzhouPlaninfoOV setchild(HuzhouPlaninfoOV planinfoOV){ + ArrayList mapArrayList = new ArrayList<>(); + String taskLevel = planinfoOV.getTaskLevel(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouPlaninfo::getSuperior,taskLevel.toString()); + queryWrapper.eq(HuzhouPlaninfo::getProjectId,planinfoOV.getProjectId()); + List huzhouPlaninfoList = this.list(queryWrapper); + if(huzhouPlaninfoList.size()!=0){ + for(HuzhouPlaninfo childInfo:huzhouPlaninfoList){ + HuzhouPlaninfoOV huzhouPlaninfoOV = new HuzhouPlaninfoOV(); + BeanUtils.copyProperties(childInfo,huzhouPlaninfoOV); + HuzhouPlaninfoOV setchildmap = setchild(huzhouPlaninfoOV); + mapArrayList.add(setchildmap); + } + planinfoOV.setChildren(mapArrayList); + } + return planinfoOV; + } + public static String realStringValueOfDouble(Double d) { + String doubleStr = d.toString(); + boolean b = doubleStr.contains("E"); + int indexOfPoint = doubleStr.indexOf('.'); + if (b) { + int indexOfE = doubleStr.indexOf('E'); + BigInteger xs = new BigInteger(doubleStr.substring(indexOfPoint + BigInteger.ONE.intValue(), indexOfE)); + int pow = Integer.parseInt(doubleStr.substring(indexOfE + BigInteger.ONE.intValue())); + int xsLen = xs.toByteArray().length; + int scale = xsLen - pow > 0 ? xsLen - pow : 0; + final String format = "%." + scale + "f"; + doubleStr = String.format(format, d); + } else { + java.util.regex.Pattern p = Pattern.compile(".0$"); + java.util.regex.Matcher m = p.matcher(doubleStr); + if (m.find()) { + doubleStr = doubleStr.replace(".0", ""); + } + } + return doubleStr; + } } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java new file mode 100644 index 0000000..9770ef6 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java @@ -0,0 +1,11 @@ +package org.jeecg.modules.huzhou.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.modules.huzhou.entity.HuzhouPlaninfofile; +import org.jeecg.modules.huzhou.mapper.HuzhouPlaninfofileMapper; +import org.jeecg.modules.huzhou.service.IHuzhouPlaninfofileService; +import org.springframework.stereotype.Service; + +@Service +public class HuzhouPlaninfofileServiceImpl extends ServiceImpl implements IHuzhouPlaninfofileService { +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouProcessinfoServiceImpl.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouProcessinfoServiceImpl.java index ff5377d..f10a298 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouProcessinfoServiceImpl.java +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouProcessinfoServiceImpl.java @@ -1,5 +1,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 org.activiti.bpmn.model.BpmnModel; import org.activiti.bpmn.model.FlowNode; @@ -162,4 +164,27 @@ public class HuzhouProcessinfoServiceImpl extends ServiceImpl processinfoWrapper = new LambdaUpdateWrapper<>(); + processinfoWrapper.eq(HuzhouProcessinfo::getProjectid,projectid); + processinfoWrapper.eq(HuzhouProcessinfo::getStage,stage); + processinfoWrapper.set(HuzhouProcessinfo::getProcessstatus,status); + this.update(processinfoWrapper); + } + + @Override + public List getListByInstid(String processInstanceId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouProcessinfo::getProcessinstanceid,processInstanceId); + List processinfoList = this.list(queryWrapper); + return processinfoList; + } } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouProjectinfoHistoryServiceImpl.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouProjectinfoHistoryServiceImpl.java new file mode 100644 index 0000000..0ca5f75 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouProjectinfoHistoryServiceImpl.java @@ -0,0 +1,58 @@ +package org.jeecg.modules.huzhou.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfoHistory; +import org.jeecg.modules.huzhou.mapper.HuzhouProjectinfoHistoryMapper; +import org.jeecg.modules.huzhou.service.IHuzhouProjectinfoHistoryService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class HuzhouProjectinfoHistoryServiceImpl extends ServiceImpl implements IHuzhouProjectinfoHistoryService { + @Autowired + private HuzhouProjectinfoHistoryMapper historyMapper; + @Override + public void saveFromProject(HuzhouProjectinfo projectinfo) { + HuzhouProjectinfoHistory history = new HuzhouProjectinfoHistory(); + BeanUtils.copyProperties(projectinfo,history); + history.setProjectId(projectinfo.getId()); + history.setId(null); + history.setCreatetime(null); + this.save(history); + } + + /** + * 获取有历史记录的项目的分页信息 + * @param projectinfo 项目信息 + * @param pageNo 起始页 + * @param pageSize 每页数 + * @return + */ + @Override + public Page getProjectInfoHistoryPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) { + Page projectinfoPage = new Page<>(pageNo,pageSize); + Page historyPageList = historyMapper.getProjectInfoHistoryPageList(projectinfoPage,projectinfo); + return historyPageList; + } + + /** + * 根据当前项目id,获取当前项目的历史记录分页信息 + * @param history 项目信息 + * @param pageNo + * @param pageSize + * @return + */ + @Override + public Page getSingleProjectInfoHistoryPageList(HuzhouProjectinfoHistory history, Integer pageNo, Integer pageSize) { + Page projectinfoPage = new Page<>(pageNo,pageSize); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouProjectinfoHistory::getProjectId,history.getProjectId()); + Page historyPage = this.page(projectinfoPage, queryWrapper); + return historyPage; + } +} 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 489f5d6..2303ddd 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 @@ -1,6 +1,13 @@ 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.core.metadata.IPage; +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.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; @@ -11,4 +18,26 @@ import org.springframework.stereotype.Service; public class HuzhouProjectinfoServiceImpl extends ServiceImpl implements IHuzhouProjectinfoService { + @Override + public void modifyStageById(String id, String stage) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(HuzhouProjectinfo::getId,id); + updateWrapper.set(HuzhouProjectinfo::getStage,stage); + this.update(updateWrapper); + } + + @Override + public IPage getProjectInfoPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) { + IPage page = new Page(pageNo, pageSize); + 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); + huzhouProjectinfoLambdaQueryWrapper.orderByDesc(BaseEntity::getCreatetime); + IPage pageList = this.page(page, huzhouProjectinfoLambdaQueryWrapper); + return pageList; + } } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouUploadfileinfoServiceImpl.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouUploadfileinfoServiceImpl.java index b61a639..88b2ca4 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouUploadfileinfoServiceImpl.java +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouUploadfileinfoServiceImpl.java @@ -2,6 +2,9 @@ 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.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.SymbolConstant; @@ -30,17 +33,12 @@ import java.util.List; public class HuzhouUploadfileinfoServiceImpl extends ServiceImpl implements IHuzhouUploadfileinfoService { @Value(value = "${jeecg.path.upload}") private String uploadpath; - public void modifyUploadFile(MultipartFile[] files, String projectid, String status) throws IOException { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + public void modifyUploadFile(MultipartFile[] files, String projectid, String stage) throws IOException { + LambdaUpdateWrapper queryWrapper = new LambdaUpdateWrapper<>(); queryWrapper.eq(HuzhouUploadfileinfo::getProjectid,projectid); - queryWrapper.eq(HuzhouUploadfileinfo::getStatus,status); - List list = this.list(queryWrapper); - list.forEach(item->{ - File file = new File(item.getDocumentPath()); - file.delete(); - }); - this.remove(queryWrapper); - + queryWrapper.eq(HuzhouUploadfileinfo::getStage,stage); + queryWrapper.set(HuzhouUploadfileinfo::getStatus,"0"); + this.update(queryWrapper); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); String currentDay = dateFormat.format(new Date()); File filePath = new File(uploadpath + File.separator + currentDay + File.separator); @@ -65,11 +63,59 @@ public class HuzhouUploadfileinfoServiceImpl extends ServiceImpl getuploacFilePageList(HuzhouUploadfileinfo uploadfileinfo, Integer pageNo, Integer pageSize) { + String projectid = uploadfileinfo.getProjectid(); + String stage = uploadfileinfo.getStage(); + IPage huzhouUploadfileinfoIPage = new Page<>(pageNo,pageSize); + LambdaUpdateWrapper huzhouUploadfileinfoLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + huzhouUploadfileinfoLambdaUpdateWrapper.eq(HuzhouUploadfileinfo::getProjectid,projectid); + huzhouUploadfileinfoLambdaUpdateWrapper.eq(HuzhouUploadfileinfo::getStage,stage); + IPage uploadfileinfoIPage = this.page(huzhouUploadfileinfoIPage, huzhouUploadfileinfoLambdaUpdateWrapper); + return uploadfileinfoIPage; + } + } diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouUserprojectServiceImpl.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouUserprojectServiceImpl.java index b566c1c..e5c9dfa 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouUserprojectServiceImpl.java +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/service/impl/HuzhouUserprojectServiceImpl.java @@ -1,6 +1,9 @@ package org.jeecg.modules.huzhou.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.modules.huzhou.common.HuzhouCommonUtils; +import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo; import org.jeecg.modules.huzhou.entity.HuzhouUserproject; import org.jeecg.modules.huzhou.mapper.HuzhouUserprojectMapper; import org.jeecg.modules.huzhou.service.IHuzhouUserprojectService; @@ -10,6 +13,7 @@ import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import javax.annotation.Resource; +import java.util.List; /** * (HuzhouUserproject)表服务实现类 @@ -19,5 +23,28 @@ import javax.annotation.Resource; */ @Service("huzhouUserprojectService") public class HuzhouUserprojectServiceImpl extends ServiceImpl implements IHuzhouUserprojectService { + /** + * 从project把人员信息提取并保存 + * @param projectinfo 项目信息 + */ + @Override + public void saveFromProject(HuzhouProjectinfo projectinfo) { + List extractObjectAttributes = HuzhouCommonUtils.extractObjectAttributes(projectinfo); + for (String s:extractObjectAttributes) { + if(s.contains("Contactor")){ + String userId = s.split("=")[1]; + HuzhouUserproject huzhouUserproject = new HuzhouUserproject(); + huzhouUserproject.setProjectId(projectinfo.getId()); + huzhouUserproject.setUserId(userId); + this.save(huzhouUserproject); + } + } + } + @Override + public void removeByProjectId(String projectId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouUserproject::getProjectId,projectId); + boolean remove = this.remove(queryWrapper); + } } 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 9b3a5dd..953f87f 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 @@ -76,7 +76,7 @@ public class WorkflowServiceImpl implements IWorkflowService { workFlow.setProcessInstanceId(processInstanceId); return workFlow; } - public WorkFlow approveProjectInfo(String taskId,String flag,String comment,String status){ + public WorkFlow approveProjectInfo(String taskId,String flag,String comment,String stage){ LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = currentUser.getId(); // 获取当前任务 @@ -101,7 +101,7 @@ public class WorkflowServiceImpl implements IWorkflowService { return workFlow; } - if("1".equals(status)){ + if("1".equals(stage)){ if(!"管理单位审批".equals(userTask.getName())){ //搞到当前userTask的出处 List outgoingFlows = userTask.getOutgoingFlows(); @@ -131,7 +131,7 @@ public class WorkflowServiceImpl implements IWorkflowService { } } } - }else if("2".equals(status)){ + }else if("2".equals(stage)){ if(!"流程审批二".equals(userTask.getName())){ //搞到当前userTask的出处 List outgoingFlows = userTask.getOutgoingFlows(); @@ -161,7 +161,7 @@ public class WorkflowServiceImpl implements IWorkflowService { } } } - }else if("3".equals(status)){ + }else if("3".equals(stage)){ if(!"计划审批二".equals(userTask.getName())){ //搞到当前userTask的出处 List outgoingFlows = userTask.getOutgoingFlows(); diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/vo/HuzhouPlaninfoOV.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/vo/HuzhouPlaninfoOV.java new file mode 100644 index 0000000..3274728 --- /dev/null +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/vo/HuzhouPlaninfoOV.java @@ -0,0 +1,22 @@ +package org.jeecg.modules.huzhou.vo; + +import lombok.Data; +import org.jeecg.modules.huzhou.entity.HuzhouPlaninfo; + +import java.util.List; +@Data +public class HuzhouPlaninfoOV extends HuzhouPlaninfo { + private List children; + /** + * 项目进度 + */ + private String percent; + /** + * 图标状态 + */ + private String progressStatus; + /** + * 任务完成节点 + */ + private String status; +} diff --git a/huzhou/src/main/java/org/jeecg/modules/huzhou/vo/ProjectApproveOV.java b/huzhou/src/main/java/org/jeecg/modules/huzhou/vo/ProjectApproveOV.java index 61d0d7d..ff9f44e 100644 --- a/huzhou/src/main/java/org/jeecg/modules/huzhou/vo/ProjectApproveOV.java +++ b/huzhou/src/main/java/org/jeecg/modules/huzhou/vo/ProjectApproveOV.java @@ -3,15 +3,18 @@ package org.jeecg.modules.huzhou.vo; import lombok.Data; import org.jeecg.modules.huzhou.entity.HuzhouProjectinfo; import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + @Data public class ProjectApproveOV { private String taskId; private String flag; private String comment; private String projectid; - private String status; + private String stage; private String isEdit; private HuzhouProjectinfo projectInfo; - private MultipartFile[] file; + private List projectArr; } diff --git a/huzhou/src/main/resources/项目入库模板.xlsx b/huzhou/src/main/resources/项目入库模板.xlsx new file mode 100644 index 0000000..eddf676 Binary files /dev/null and b/huzhou/src/main/resources/项目入库模板.xlsx differ diff --git a/huzhou/src/main/resources/项目计划模板.xlsx b/huzhou/src/main/resources/项目计划模板.xlsx new file mode 100644 index 0000000..04c04cb Binary files /dev/null and b/huzhou/src/main/resources/项目计划模板.xlsx differ 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 e51c6c5..0bec97a 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: '@profile.name@' \ No newline at end of file + active: dev \ No newline at end of file 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..381a6c6 --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/process/项目资料审批流程.bpmn20.xml @@ -0,0 +1,38 @@ + + + + + + + + + + ${type==0} + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jeecg-module-system/jeecg-system-start/src/test/java/org/jeecg/modules/message/test/SendMessageTest.java b/jeecg-module-system/jeecg-system-start/src/test/java/org/jeecg/modules/message/test/SendMessageTest.java index 6ac2dd6..8482419 100644 --- a/jeecg-module-system/jeecg-system-start/src/test/java/org/jeecg/modules/message/test/SendMessageTest.java +++ b/jeecg-module-system/jeecg-system-start/src/test/java/org/jeecg/modules/message/test/SendMessageTest.java @@ -64,9 +64,9 @@ public class SendMessageTest { public void createproess(){ Deployment deployment = repositoryService .createDeployment() - .addClasspathResource("process/项目计划审批流程.bpmn20.xml") - .addClasspathResource("process/项目计划审批流程.png") - .name("项目资料上传流程") + .addClasspathResource("process/项目资料审批流程.bpmn20.xml") + .addClasspathResource("process/项目资料审批流程.png") + .name("项目资料审批流程") .deploy(); System.out.println("deployment.getId() = " + deployment.getId()); System.out.println("deployment.getName() = " + deployment.getName()); diff --git a/pom.xml b/pom.xml index 9481703..6c95290 100644 --- a/pom.xml +++ b/pom.xml @@ -417,6 +417,7 @@ true + @@ -430,7 +431,10 @@ eot ttf svg - + xlsx + pdf + docx + @@ -445,6 +449,7 @@ **/*.xml **/*.json **/*.ftl + *.xlsx