@ -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 user Service ;
private IHuzhouProjectinfoHistoryService projectinfoHistoryService ;
/ * *
* 本地 : local minio : minio 阿里 : alioss
* /
@Value ( value = "${jeecg.uploadType}" )
private String uploadType ;
@PostMapping ( "/submitProject" )
@Transactional
public Result < String > 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 < String > 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 < String > 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 < HuzhouProjectinfo > huzhouProjectinfos = new ArrayList < > ( ) ;
int physicalNumberOfRows = sheet . getPhysicalNumberOfRows ( ) ;
HashMap < String , String > NameMap = new HashMap < String , String > ( ) ;
HashMap < String , String > chineseNameMap = new HashMap < String , String > ( ) ;
Row titlerow = sheet . getRow ( 0 ) ;
Row chineseTitlerow = sheet . getRow ( 1 ) ;
int cellNum = 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 < DictModel > 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 < DictModel > 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 < String > 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 < String , Object > 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 < HuzhouProjectinfo > 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<Map> projectArr = (List<Map>) 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 < HuzhouProjectinfo > projectArr = projectApproveOV . getProjectArr ( ) ;
// HuzhouProjectinfo projectinfo =null;
// if(projectInfo!=null){
// String jsonString = JSON.toJSONString(projectInfo);
// projectinfo = JSON.parseObject(jsonString, HuzhouProjectinfo.class);
// }
if ( "1" . equals ( isEdit ) & & "1" . equals ( flag ) & & "1" . equals ( stage ) ) {
if ( null ! = projectinfo ) {
//查询修改前信息进行保存
HuzhouProjectinfo projectinfoHistory = projectinfoService . getById ( projectid ) ;
projectinfoHistoryService . saveFromProject ( projectinfoHistory ) ;
projectinfoService . updateById ( projectinfo ) ;
//保存修改记录
//删除此项目原来的人员和项目对应信息
LambdaQueryWrapper < HuzhouUserproject > queryWrapper = new LambdaQueryWrapper < > ( ) ;
queryWrapper . eq ( HuzhouUserproject : : getProjectId , projectid ) ;
boolean remove = userprojectService . remove ( queryWrapper ) ;
userprojectService . removeByProjectId ( projectid ) ;
//保存新的人员和项目对应信息
List < String > 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 < HuzhouProjectinfo > updateWrapper = new LambdaUpdateWrapper < > ( ) ;
updateWrapper . set ( HuzhouProjectinfo : : getStatus , "2" ) ;
updateWrapper . eq ( HuzhouProjectinfo : : getId , projectid ) ;
projectinfoService . update ( updateWrapper ) ;
}
if ( "流程审批二" . equals ( userTaskName ) & & "1" . equals ( flag ) ) {
LambdaUpdateWrapper < HuzhouProjectinfo > updateWrapper = new LambdaUpdateWrapper < > ( ) ;
updateWrapper . set ( HuzhouProjectinfo : : getStatus , "4" ) ;
updateWrapper . eq ( HuzhouProjectinfo : : getId , projectid ) ;
projectinfoService . update ( updateWrapper ) ;
}
if ( "计划审批二" . equals ( userTaskName ) & & "1" . equals ( flag ) ) {
LambdaUpdateWrapper < HuzhouProjectinfo > 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 < HuzhouProjectinfo > updateWrapper = new LambdaUpdateWrapper < > ( ) ;
updateWrapper . set ( HuzhouProjectinfo : : getStatus , "2" ) ;
updateWrapper . eq ( HuzhouProjectinfo : : getId , projectid ) ;
projectinfoService . update ( updateWrapper ) ;
}
if ( "流程审批二" . equals ( userTaskName ) & & "1" . equals ( flag ) ) {
LambdaUpdateWrapper < HuzhouProjectinfo > 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 < HuzhouProjectinfo > 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 < IPage < HuzhouProjectinfo > > queryPageList ( @RequestParam Map < String , Object > params ,
public Result < IPage < HuzhouProjectinfo > > queryPageList ( HuzhouProjectinfo projectinfo ,
@RequestParam ( name = "pageNo" , defaultValue = "1" ) Integer pageNo ,
@RequestParam ( name = "pageSize" , defaultValue = "10" ) Integer pageSize ) {
IPage page = new Page ( pageNo , pageSize ) ;
LambdaQueryWrapper < HuzhouProjectinfo > 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 < HuzhouProjectinfo > pageList = projectinfoService . getProjectInfoPageList ( projectinfo , pageNo , pageSize ) ;
return Result . OK ( pageList ) ;
}
@GetMapping ( "/queryProjectInfoById" )
public Result < HuzhouProjectinfo > queryProjectInfoById ( String projectid ) {
//获取项目入库数据
HuzhouProjectinfo projectinfo = projectinfoService . getById ( projectid ) ;
// List<String> attributes = new ArrayList<>();
//
// List<String> 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<HuzhouProcessinfo> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid);
// HuzhouProcessinfo processinfo = processinfoService.getOne(queryWrapper);
//获取项目入库流程数据
return Result . OK ( projectinfo ) ;
}
@GetMapping ( "/queryprocessinfoById" )
public Result < HuzhouProcessinfo > queryprocessinfoById ( String projectid ) {
LambdaQueryWrapper < HuzhouProcessinfo > 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 < IPage < HuzhouProjectinfo > > queryProjectApprovedPage ( HuzhouProjectinfo projectinfo ,
@RequestParam ( name = "pageNo" , defaultValue = "1" ) Integer pageNo ,
@RequestParam ( name = "pageSize" , defaultValue = "10" ) Integer pageSize ) {
projectinfo . setStage ( "3" ) ;
IPage < HuzhouProjectinfo > 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 < String > arrayList = new ArrayList < > ( ) ;
//设置下一个节点处理人
//使用角色查询
arrayList . add ( "1752895307869614081" ) ;
arrayList . add ( "1752895591849160705" ) ;
WorkFlow workFlow = workflowService . createFlow ( "项目资料上传流程" , arrayList ) ;
String businessKey = workFlow . getBusinessKey ( ) ;
String processInstanceId = workFlow . getProcessInstanceId ( ) ;
//保存项目信息
LambdaUpdateWrapper < HuzhouProjectinfo > 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 < HuzhouProcessinfo > processinfoList = processinfoService . getListByInstid ( processInstanceId ) ;
if ( processinfoList . size ( ) > 1 ) {
return Result . OK ( true ) ;
}
return Result . OK ( false ) ;
}
@GetMapping ( "/queryResourceInfo" )
public Result < IPage < HuzhouUploadfileinfo > > queryResourceInfo ( @RequestParam Map < String , Object > 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 < HuzhouUploadfileinfo > huzhouUploadfileinfoIPage = new Page < > ( pageNo , pageSize ) ;
LambdaUpdateWrapper < HuzhouUploadfileinfo > huzhouUploadfileinfoLambdaUpdateWrapper = new LambdaUpdate Wrapper < > ( ) ;
huzhouUploadfileinfoLambdaUpdateWrapper . eq ( HuzhouUploadfileinfo : : getProjecti d, projectid ) ;
huzhouUploadfileinfoLambdaUpdateWrapper . eq ( HuzhouUploadfileinfo : : getStatus , status ) ;
I Page< HuzhouUploadfileinfo > uploadfileinfoIPage = uploadfile infoService . page ( huzhouUploadfileinfoIPage , huzhouUploadfileinfoLambdaUpdate Wrapper ) ;
return Result . OK ( uploadfileinfoI Page) ;
@GetMapping ( "/batchImportProjectPageListByInstid" )
public Result < ? > getBatchImportProjectsListByInstid ( String processInstanceId ,
@RequestParam ( name = "pageNo" , defaultValue = "1" ) Integer pageNo ,
@RequestParam ( name = "pageSize" , defaultValue = "10" ) Integer pageSize ) {
List < HuzhouProcessinfo > processinfoList = processinfoService . getListByInstid ( processInstanceId ) ;
List < String > projectidList = processinfoList . stream ( )
. map ( HuzhouProcessinfo : : getProjectid )
. collect ( Collectors . toList ( ) ) ;
LambdaQueryWrapper < HuzhouProjectinfo > projectinfoQueryWrapper = new LambdaQueryWrapper < > ( ) ;
projectinfoQueryWrapper . in ( HuzhouProjectinfo : : getId , projectidList ) ;
Page < HuzhouProjectinfo > huzhouProjectinfoPage = new Page < > ( pageNo , pageSize ) ;
Page < HuzhouProjectinfo > projectinfoPage = projectinfoService . page ( huzhouProjectinfoPage , projectinfoQueryWrapper ) ;
return Result . ok ( projectinfoPage ) ;
}
@GetMapping ( "/queryProjectApprovedPage" )
public Result < Page < HuzhouProjectinfo > > queryProjectApprovedPage ( HuzhouProjectinfo projectinfo ,
@RequestParam ( name = "pageNo" , defaultValue = "1" ) Integer pageNo ,
@RequestParam ( name = "pageSize" , defaultValue = "10" ) Integer pageSize ) {
Page < HuzhouProjectinfo > projectinfoPage = new Page < > ( pageNo , pageSize ) ;
LambdaQueryWrapper < HuzhouProjectinfo > 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 < HuzhouProjectinfo > page = projectinfoService . page ( projectinfoPage , queryWrapper ) ;
return Result . OK ( page ) ;
}
}