@ -4,29 +4,28 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper ;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page ;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl ;
import com.easy.admin.auth.model.SysRol e ;
import com.easy.admin.auth.model.SysUser ;
import com.easy.admin.auth.service.SysUserServic e ;
import com.easy.admin.common.core.exception.EasyException ;
import com.easy.admin.common.util.CommonUtils ;
import com.easy.admin.modules.huzhou.dao.HuzhouContractinfoHistoryMapper ;
import com.easy.admin.modules.huzhou.dao.HuzhouContractinfoMapper ;
import com.easy.admin.modules.huzhou.dao.HuzhouSubProjectinfoMapper ;
import com.easy.admin.modules.huzhou.entity.HuzhouContractinfo ;
import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo ;
import com.easy.admin.modules.huzhou.entity.HuzhouSubProjectinfo ;
import com.easy.admin.modules.huzhou.service.IHuzhouContractinfoService ;
import com.easy.admin.modules.huzhou.service.IHuzhouUploadfileinfoService ;
import com.easy.admin.modules.huzhou.vo.HuzhouContractinfoOV ;
import com.easy.admin.modules.huzhou.entity.* ;
import com.easy.admin.modules.huzhou.service.* ;
import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV ;
import com.easy.admin.util.ShiroUtil ;
import com.easy.admin.sys.model.SysDict ;
import com.easy.admin.sys.service.SysDictService ;
import org.activiti.engine.RuntimeService ;
import org.activiti.engine.TaskService ;
import org.activiti.engine.runtime.ProcessInstance ;
import org.activiti.engine.task.Task ;
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 java.io.File ;
import java.io.IOException ;
import java.text.SimpleDateFormat ;
import java.util.* ;
import java.util.stream.Collectors ;
@ -41,7 +40,22 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
private HuzhouSubProjectinfoMapper subProjectinfoMapper ;
@Autowired
private IHuzhouUploadfileinfoService uploadfileinfoService ;
@Autowired
private IWorkflowService workflowService ;
@Autowired
private IHuzhouSubProjectinfoService subProjectinfoService ;
@Autowired
private SysUserService userService ;
@Autowired
private SysDictService sysDictService ;
@Autowired
private TaskService taskService ;
@Autowired
private IHuzhouProjectinfoService projectinfoService ;
@Autowired
private HuzhouContractinfoHistoryMapper contractinfoHistoryMapper ;
@Autowired
private RuntimeService runtimeService ;
@Override
public Page < HuzhouProjectinfoOV > getContractProjectPageList ( HuzhouProjectinfo projectinfo , Integer pageNo , Integer pageSize ) {
Page page = new Page ( pageNo , pageSize ) ;
@ -76,8 +90,47 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
public void addContractinfo ( MultipartFile [ ] file , List < HuzhouContractinfo > contractinfoList ) throws IOException {
String projectid = contractinfoList . get ( 0 ) . getProjectId ( ) ;
uploadfileinfoService . saveFileAndFileInfo ( file , projectid , "4" ) ;
saveBatch ( contractinfoList ) ;
WorkFlow workFlow = workflowService . createFlow ( "createContract" , projectid ) ;
String projectId = contractinfoList . get ( 0 ) . getProjectId ( ) ;
HuzhouProjectinfo huzhouProjectinfo = projectinfoService . getById ( projectId ) ;
String superLeader = "" ;
//如果项目信息为空说明是子项目
if ( huzhouProjectinfo = = null ) {
HuzhouSubProjectinfo byId = subProjectinfoService . getById ( projectId ) ;
superLeader = byId . getSuperLeader ( ) ;
} else {
superLeader = huzhouProjectinfo . getSuperLeader ( ) ;
}
//获取上级指导室中文名称
SysDict dict = sysDictService . getDictByCode ( "superLeader" , superLeader ) ;
String dictName = dict . getName ( ) ;
//上级指导室中文名称查询角色有哪些人
List < HashMap < String , String > > userDictByRoles = userService . getUserDictByRoles ( dictName ) ;
ArrayList < String > userIdlist = new ArrayList < > ( ) ;
if ( userDictByRoles = = null | | userDictByRoles . size ( ) = = 0 ) {
String error = "任务牵头处室" + dictName + "负责人未找到" ;
throw new EasyException ( error ) ;
}
for ( HashMap < String , String > map : userDictByRoles
) {
String userid = map . get ( "value" ) ;
userIdlist . add ( userid ) ;
}
Task task = workFlow . getTask ( ) ;
String taskId = task . getId ( ) ;
String processInstanceId = workFlow . getProcessInstanceId ( ) ;
Map < String , Object > variables = new HashMap < > ( ) ;
variables . put ( "taskLeadingDepartment" , userIdlist ) ;
taskService . setVariableLocal ( taskId , "approvalStatue" , "1" ) ; //添加审批状态 通过
String comment = "同意" ;
taskService . addComment ( taskId , processInstanceId , comment ) ; //添加审批意见
taskService . complete ( taskId , variables ) ;
List < HuzhouContractinfo > collect = contractinfoList . stream ( ) . map ( contract - > {
contract . setStatus ( "1" ) ;
return contract ;
} ) . collect ( Collectors . toList ( ) ) ;
saveBatch ( collect ) ;
}
@ -88,11 +141,60 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
if ( file ! = null ) {
uploadfileinfoService . modifyUploadFile ( file , projectid , "4" ) ;
}
LambdaUpdateWrapper < HuzhouContractinfo > updateWrapper = new LambdaUpdateWrapper < > ( ) ;
updateWrapper . set ( HuzhouContractinfo : : getStatus , "0" ) ;
updateWrapper . eq ( HuzhouContractinfo : : getProjectId , projectid ) ;
update ( null , updateWrapper ) ;
saveBatch ( contractinfoList ) ;
//查询旧的合同保存
LambdaQueryWrapper < HuzhouContractinfo > queryWrapper = new LambdaQueryWrapper < > ( ) ;
queryWrapper . eq ( HuzhouContractinfo : : getProjectId , projectid ) ;
List < HuzhouContractinfo > oldList = list ( queryWrapper ) ;
oldList . forEach ( item - > {
HuzhouContractinfoHistory huzhouContractinfoHistory = new HuzhouContractinfoHistory ( ) ;
BeanUtils . copyProperties ( item , huzhouContractinfoHistory ) ;
contractinfoHistoryMapper . insert ( huzhouContractinfoHistory ) ;
} ) ;
//删除合同表数据
remove ( queryWrapper ) ;
List < HuzhouContractinfo > collect = contractinfoList . stream ( ) . map ( contract - > {
contract . setStatus ( "1" ) ;
return contract ;
} ) . collect ( Collectors . toList ( ) ) ;
saveBatch ( collect ) ;
WorkFlow workFlow = workflowService . createFlow ( "createContract" , projectid ) ;
String projectId = contractinfoList . get ( 0 ) . getProjectId ( ) ;
HuzhouProjectinfo huzhouProjectinfo = projectinfoService . getById ( projectId ) ;
String superLeader = "" ;
//如果项目信息为空说明是子项目
if ( huzhouProjectinfo = = null ) {
HuzhouSubProjectinfo byId = subProjectinfoService . getById ( projectId ) ;
superLeader = byId . getSuperLeader ( ) ;
} else {
superLeader = huzhouProjectinfo . getSuperLeader ( ) ;
}
//获取上级指导室中文名称
SysDict dict = sysDictService . getDictByCode ( "superLeader" , superLeader ) ;
String dictName = dict . getName ( ) ;
//上级指导室中文名称查询角色有哪些人
List < HashMap < String , String > > userDictByRoles = userService . getUserDictByRoles ( dictName ) ;
ArrayList < String > userIdlist = new ArrayList < > ( ) ;
if ( userDictByRoles = = null | | userDictByRoles . size ( ) = = 0 ) {
String error = "任务牵头处室" + dictName + "负责人未找到" ;
throw new EasyException ( error ) ;
}
for ( HashMap < String , String > map : userDictByRoles
) {
String userid = map . get ( "value" ) ;
userIdlist . add ( userid ) ;
}
Task task = workFlow . getTask ( ) ;
String taskId = task . getId ( ) ;
String processInstanceId = workFlow . getProcessInstanceId ( ) ;
Map < String , Object > variables = new HashMap < > ( ) ;
variables . put ( "taskLeadingDepartment" , userIdlist ) ;
taskService . setVariableLocal ( taskId , "approvalStatue" , "1" ) ; //添加审批状态 通过
String comment = "同意" ;
taskService . addComment ( taskId , processInstanceId , comment ) ; //添加审批意见
taskService . complete ( taskId , variables ) ;
return true ;
}
@ -109,10 +211,43 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
public List < HuzhouContractinfo > getContractinfoByprojectId ( String projectid ) {
LambdaQueryWrapper < HuzhouContractinfo > queryWrapper = new LambdaQueryWrapper < > ( ) ;
queryWrapper . eq ( HuzhouContractinfo : : getProjectId , projectid ) ;
queryWrapper . eq ( HuzhouContractinfo : : getStatus , "1" ) ;
List < HuzhouContractinfo > list = list ( queryWrapper ) ;
return list ;
}
@Override
public void approvalContractinfo ( MultipartFile [ ] file , List < HuzhouContractinfo > contractList , String taskId , String flag , String projectId , String comment , boolean isEdit ) throws IOException {
if ( isEdit & & "1" . equals ( flag ) ) {
if ( file ! = null ) {
uploadfileinfoService . modifyUploadFile ( file , projectId , "4" ) ;
}
//查询旧的合同保存
LambdaQueryWrapper < HuzhouContractinfo > queryWrapper = new LambdaQueryWrapper < > ( ) ;
queryWrapper . eq ( HuzhouContractinfo : : getProjectId , projectId ) ;
List < HuzhouContractinfo > oldList = list ( queryWrapper ) ;
oldList . forEach ( item - > {
HuzhouContractinfoHistory huzhouContractinfoHistory = new HuzhouContractinfoHistory ( ) ;
BeanUtils . copyProperties ( item , huzhouContractinfoHistory ) ;
contractinfoHistoryMapper . insert ( huzhouContractinfoHistory ) ;
} ) ;
//删除合同表数据
remove ( queryWrapper ) ;
List < HuzhouContractinfo > collect = contractList . stream ( ) . map ( contract - > {
contract . setStatus ( "1" ) ;
return contract ;
} ) . collect ( Collectors . toList ( ) ) ;
saveBatch ( collect ) ;
}
WorkFlow workFlow = workflowService . approveProjectInfo ( taskId , flag , comment ) ;
ProcessInstance processInstance = runtimeService . createProcessInstanceQuery ( ) . processInstanceId ( workFlow . getProcessInstanceId ( ) ) . singleResult ( ) ;
//审批通过修改项目要状态
if ( processInstance = = null & & "1" . equals ( flag ) ) {
LambdaUpdateWrapper < HuzhouContractinfo > updateWrapper = new LambdaUpdateWrapper < > ( ) ;
updateWrapper . set ( HuzhouContractinfo : : getStatus , "2" ) ;
updateWrapper . eq ( HuzhouContractinfo : : getProjectId , projectId ) ;
update ( updateWrapper ) ;
}
}
}