@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl ;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl ;
import com.easy.admin.auth.model.SysRole ;
import com.easy.admin.auth.model.SysRole ;
import com.easy.admin.auth.model.SysUser ;
import com.easy.admin.auth.model.SysUser ;
import com.easy.admin.auth.service.SysUserService ;
import com.easy.admin.common.core.exception.EasyException ;
import com.easy.admin.common.util.CommonUtils ;
import com.easy.admin.modules.huzhou.common.HuzhouCommonUtils ;
import com.easy.admin.modules.huzhou.common.HuzhouCommonUtils ;
import com.easy.admin.modules.huzhou.dao.* ;
import com.easy.admin.modules.huzhou.dao.* ;
import com.easy.admin.modules.huzhou.entity.* ;
import com.easy.admin.modules.huzhou.entity.* ;
@ -12,9 +15,14 @@ import com.easy.admin.modules.huzhou.service.IHuzhouFieldchangehistoryService;
import com.easy.admin.modules.huzhou.service.IHuzhouProcessinfoService ;
import com.easy.admin.modules.huzhou.service.IHuzhouProcessinfoService ;
import com.easy.admin.modules.huzhou.service.IHuzhouUploadfileinfoService ;
import com.easy.admin.modules.huzhou.service.IHuzhouUploadfileinfoService ;
import com.easy.admin.modules.huzhou.service.IWorkflowService ;
import com.easy.admin.modules.huzhou.service.IWorkflowService ;
import com.easy.admin.sys.model.SysDict ;
import com.easy.admin.sys.service.SysDictService ;
import com.easy.admin.util.ShiroUtil ;
import com.easy.admin.util.ShiroUtil ;
import org.activiti.engine.RuntimeService ;
import org.activiti.engine.RuntimeService ;
import org.activiti.engine.TaskService ;
import org.activiti.engine.runtime.ProcessInstance ;
import org.activiti.engine.runtime.ProcessInstance ;
import org.activiti.engine.task.Task ;
import org.codehaus.groovy.tools.shell.commands.LoadCommand ;
import org.springframework.beans.BeanUtils ;
import org.springframework.beans.BeanUtils ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.stereotype.Service ;
import org.springframework.stereotype.Service ;
@ -23,8 +31,10 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException ;
import java.io.IOException ;
import java.util.* ;
import java.util.* ;
import java.util.stream.Collectors ;
@Service
@Service
@Transactional
public class HuzhouFieldchangehistoryServiceImpl extends ServiceImpl < HuzhouFieldchangehistoryMapper , HuzhouFieldchangehistory > implements IHuzhouFieldchangehistoryService {
public class HuzhouFieldchangehistoryServiceImpl extends ServiceImpl < HuzhouFieldchangehistoryMapper , HuzhouFieldchangehistory > implements IHuzhouFieldchangehistoryService {
@Autowired
@Autowired
private IHuzhouUploadfileinfoService uploadfileinfoService ;
private IHuzhouUploadfileinfoService uploadfileinfoService ;
@ -44,66 +54,188 @@ public class HuzhouFieldchangehistoryServiceImpl extends ServiceImpl<HuzhouField
private IHuzhouProcessinfoService processinfoService ;
private IHuzhouProcessinfoService processinfoService ;
@Autowired
@Autowired
private RuntimeService runtimeService ;
private RuntimeService runtimeService ;
@Autowired
private SysUserService userService ;
@Autowired
private SysDictService sysDictService ;
@Autowired
private TaskService taskService ;
@Override
@Override
@Transactional
public void submitChangeFieldManage ( MultipartFile [ ] multipartFiles , String projectid , String fieldValue , HuzhouProjectinfo newProjectinfo ) throws Exception {
public void submitChangeFieldManage ( MultipartFile [ ] multipartFiles , String projectid , String fieldValue , String newValue ) throws IOException {
String id = UUID . randomUUID ( ) . toString ( ) . replace ( "-" , "" ) ;
String id = UUID . randomUUID ( ) . toString ( ) . replace ( "-" , "" ) ;
String groupid = UUID . randomUUID ( ) . toString ( ) . replace ( "-" , "" ) ;
String newValue = "" ;
//查询当前字段是否在流程中
LambdaQueryWrapper < HuzhouFieldchangehistory > queryWrapper = new LambdaQueryWrapper < > ( ) ;
queryWrapper . eq ( HuzhouFieldchangehistory : : getFieldValue , fieldValue ) ;
queryWrapper . eq ( HuzhouFieldchangehistory : : getStatus , "1" ) ;
List < HuzhouFieldchangehistory > fieldchangehistoryList = fieldchangehistoryMapper . selectList ( queryWrapper ) ;
if ( fieldchangehistoryList ! = null & & fieldchangehistoryList . size ( ) > 0 ) {
throw new EasyException ( "当前字段在流程中无法修改" ) ;
}
if ( multipartFiles ! = null ) {
if ( multipartFiles ! = null ) {
uploadfileinfoService . saveFileAndFileInfo ( multipartFiles , id , "3" ) ;
uploadfileinfoService . saveFileAndFileInfo ( multipartFiles , group id, "3" ) ;
}
}
//获取旧值
//获取旧值
LambdaQueryWrapper < HuzhouFieldchangehistory > queryWrapper = new LambdaQueryWrapper < > ( ) ;
queryWrapper . eq ( HuzhouFieldchangehistory : : getFieldValue , fieldValue ) ;
queryWrapper . eq ( HuzhouFieldchangehistory : : getProjectid , projectid ) ;
queryWrapper . orderByAsc ( BaseEntity : : getCreateDate ) ;
List < HuzhouFieldchangehistory > list = list ( queryWrapper ) ;
String oldvalue = "" ;
String oldvalue = "" ;
if ( list . size ( ) > 0 ) {
oldvalue = list . get ( 0 ) . getNewvalue ( ) ;
} else {
HuzhouProjectinfo huzhouProjectinfo = new HuzhouProjectinfo ( ) ;
HuzhouProjectinfo huzhouProjectinfo = new HuzhouProjectinfo ( ) ;
HuzhouProjectinfo projectinfo = projectinfoMapper . selectById ( projectid ) ;
HuzhouProjectinfo projectinfo = projectinfoMapper . selectById ( projectid ) ;
//projectinfo是null说明是子项目
if ( projectinfo = = null ) {
if ( projectinfo = = null ) {
HuzhouSubProjectinfo huzhouSubProjectinfo = subProjectinfoMapper . selectById ( projectid ) ;
HuzhouSubProjectinfo huzhouSubProjectinfo = subProjectinfoMapper . selectById ( projectid ) ;
BeanUtils . copyProperties ( huzhouSubProjectinfo , huzhouProjectinfo ) ;
BeanUtils . copyProperties ( huzhouSubProjectinfo , huzhouProjectinfo ) ;
projectinfo = huzhouProjectinfo ;
projectinfo = huzhouProjectinfo ;
}
}
List < String > strings = HuzhouCommonUtils . extractObjectAttributes ( projectinfo ) ;
//如果是修改金额
for ( String s : strings ) {
if ( "Money" . equals ( fieldValue ) ) {
//获取字段配置信息
ArrayList < HuzhouFieldchangehistory > arrayList = new ArrayList < > ( ) ;
LambdaQueryWrapper < HuzhouChangefieldmanage > queryWrapper1 = new LambdaQueryWrapper < > ( ) ;
queryWrapper1 . eq ( HuzhouChangefieldmanage : : getFieldValue , fieldValue ) ;
HuzhouChangefieldmanage huzhouChangefieldmanage = changefieldmanageMapper . selectOne ( queryWrapper1 ) ;
String isapproval = huzhouChangefieldmanage . getIsapproval ( ) ; //是否审批标志
List < String > oldstrings = HuzhouCommonUtils . extractObjectAttributes ( projectinfo ) ;
for ( String s : oldstrings ) {
if ( s . contains ( fieldValue ) ) {
//获取旧值
oldvalue = s . split ( "=" ) [ 1 ] ;
String valueName = s . split ( "=" ) [ 0 ] ;
List < String > newstrings = HuzhouCommonUtils . extractObjectAttributes ( newProjectinfo ) ;
for ( String s1 : newstrings ) {
if ( s1 . contains ( valueName ) ) {
//在获取新值
newValue = s1 . split ( "=" ) [ 1 ] ;
Double aDouble = Double . valueOf ( oldvalue ) ;
Double aDouble1 = Double . valueOf ( newValue ) ;
// //如果两个金额一样不做记录
// if(aDouble1.compareTo(aDouble)==0){
// break;
// }
//保存修改记录
HuzhouFieldchangehistory huzhouFieldchangehistory = new HuzhouFieldchangehistory ( ) ;
huzhouFieldchangehistory . setId ( null ) ; //系统自动生成
huzhouFieldchangehistory . setNewvalue ( newValue ) ;
huzhouFieldchangehistory . setOldvalue ( oldvalue ) ;
valueName = valueName . substring ( 0 , 1 ) . toLowerCase ( ) + valueName . substring ( 1 ) ;
huzhouFieldchangehistory . setFieldValue ( valueName ) ;
huzhouFieldchangehistory . setProjectid ( projectid ) ;
huzhouFieldchangehistory . setGroupId ( groupid ) ;
if ( "1" . equals ( isapproval ) ) {
huzhouFieldchangehistory . setStatus ( "1" ) ;
} else {
huzhouFieldchangehistory . setStatus ( "2" ) ;
}
arrayList . add ( huzhouFieldchangehistory ) ;
}
}
}
}
//是审批就发起审批流程
if ( "1" . equals ( isapproval ) ) {
saveBatch ( arrayList ) ;
String superLeader = projectinfo . getSuperLeader ( ) ;
WorkFlow workFlow = workflowService . createFlow ( "fieldChange" , groupid ) ;
Task task = workFlow . getTask ( ) ;
String taskId = task . getId ( ) ;
String processInstanceId = workFlow . getProcessInstanceId ( ) ;
//获取上级指导室中文名称
SysDict dict = sysDictService . getDictByCode ( "superLeader" , superLeader ) ;
String dictName = dict . getName ( ) ;
//上级指导室中文名称查询角色有哪些人
List < HashMap < String , String > > userDictByRoles = userService . getUserDictByRoles ( dictName ) ;
ArrayList < String > strings = 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" ) ;
strings . add ( userid ) ;
}
Map < String , Object > variables = new HashMap < > ( ) ;
variables . put ( "taskLeadingDepartment" , strings ) ;
runtimeService . setVariable ( processInstanceId , "taskLeadingDepartment" , strings ) ; //设置第三个人变量信息
taskService . complete ( taskId , variables ) ;
} else {
saveBatch ( arrayList ) ;
projectinfoMapper . updateById ( newProjectinfo ) ;
}
} else {
List < String > oldstrings = HuzhouCommonUtils . extractObjectAttributes ( projectinfo ) ;
for ( String s : oldstrings ) {
if ( s . contains ( fieldValue . substring ( 0 , 1 ) . toUpperCase ( ) + fieldValue . substring ( 1 ) ) ) {
if ( s . contains ( fieldValue . substring ( 0 , 1 ) . toUpperCase ( ) + fieldValue . substring ( 1 ) ) ) {
oldvalue = s . split ( "=" ) [ 1 ] ;
oldvalue = s . split ( "=" ) [ 1 ] ;
}
}
}
}
List < String > newstrings = HuzhouCommonUtils . extractObjectAttributes ( newProjectinfo ) ;
for ( String s : newstrings ) {
if ( s . contains ( fieldValue . substring ( 0 , 1 ) . toUpperCase ( ) + fieldValue . substring ( 1 ) ) ) {
newValue = s . split ( "=" ) [ 1 ] ;
}
}
}
//保存修改记录
HuzhouFieldchangehistory huzhouFieldchangehistory = new HuzhouFieldchangehistory ( ) ;
HuzhouFieldchangehistory huzhouFieldchangehistory = new HuzhouFieldchangehistory ( ) ;
huzhouFieldchangehistory . setId ( id ) ;
huzhouFieldchangehistory . setId ( id ) ;
huzhouFieldchangehistory . setNewvalue ( newValue ) ;
huzhouFieldchangehistory . setNewvalue ( newValue ) ;
huzhouFieldchangehistory . setOldvalue ( oldvalue ) ;
huzhouFieldchangehistory . setOldvalue ( oldvalue ) ;
huzhouFieldchangehistory . setFieldValue ( fieldValue ) ;
huzhouFieldchangehistory . setFieldValue ( fieldValue ) ;
huzhouFieldchangehistory . setProjectid ( projectid ) ;
huzhouFieldchangehistory . setProjectid ( projectid ) ;
//流程
huzhouFieldchangehistory . setGroupId ( groupid ) ;
//查询是否发起流程
//获取字段配置信息
LambdaQueryWrapper < HuzhouChangefieldmanage > queryWrapper1 = new LambdaQueryWrapper < > ( ) ;
LambdaQueryWrapper < HuzhouChangefieldmanage > queryWrapper1 = new LambdaQueryWrapper < > ( ) ;
queryWrapper1 . eq ( HuzhouChangefieldmanage : : getFieldValue , fieldValue ) ;
queryWrapper1 . eq ( HuzhouChangefieldmanage : : getFieldValue , fieldValue ) ;
HuzhouChangefieldmanage huzhouChangefieldmanage = changefieldmanageMapper . selectOne ( queryWrapper1 ) ;
HuzhouChangefieldmanage huzhouChangefieldmanage = changefieldmanageMapper . selectOne ( queryWrapper1 ) ;
String isapproval = huzhouChangefieldmanage . getIsapproval ( ) ;
String isapproval = huzhouChangefieldmanage . getIsapproval ( ) ;
//是审批就发起审批流程
if ( "1" . equals ( isapproval ) ) {
if ( "1" . equals ( isapproval ) ) {
huzhouFieldchangehistory . setStatus ( "1" ) ;
huzhouFieldchangehistory . setStatus ( "1" ) ;
save ( huzhouFieldchangehistory ) ;
save ( huzhouFieldchangehistory ) ;
WorkFlow workFlow = workflowService . createFlow ( "fieldChange" , huzhouFieldchangehistory . getId ( ) ) ;
String superLeader = projectinfo . getSuperLeader ( ) ;
WorkFlow workFlow = workflowService . createFlow ( "fieldChange" , groupid ) ;
Task task = workFlow . getTask ( ) ;
String taskId = task . getId ( ) ;
String processInstanceId = workFlow . getProcessInstanceId ( ) ;
//获取上级指导室中文名称
SysDict dict = sysDictService . getDictByCode ( "superLeader" , superLeader ) ;
String dictName = dict . getName ( ) ;
//上级指导室中文名称查询角色有哪些人
List < HashMap < String , String > > userDictByRoles = userService . getUserDictByRoles ( dictName ) ;
ArrayList < String > strings = 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" ) ;
strings . add ( userid ) ;
}
Map < String , Object > variables = new HashMap < > ( ) ;
variables . put ( "taskLeadingDepartment" , strings ) ;
runtimeService . setVariable ( processInstanceId , "taskLeadingDepartment" , strings ) ; //设置第三个人变量信息
taskService . complete ( taskId , variables ) ;
} else {
} else {
huzhouFieldchangehistory . setStatus ( "2" ) ;
huzhouFieldchangehistory . setStatus ( "2" ) ;
save ( huzhouFieldchangehistory ) ;
save ( huzhouFieldchangehistory ) ;
//修改项目信息变成新值
if ( "projectContacts" . equals ( fieldValue ) ) {
//newValue 是sysUser的id
SysUser sysUserByUserName = userService . getById ( newValue ) ;
newProjectinfo . setPhone ( sysUserByUserName . getPhoneNumber ( ) ) ;
}
projectinfoMapper . updateById ( newProjectinfo ) ;
}
}
}
}
}
@Override
@Override
public List < HuzhouUploadfileinfo > getFieldchangeFileinfoList ( String fieldChangeid ) {
public List < HuzhouUploadfileinfo > getFieldchangeFileinfoList ( String fieldChangeGroup id ) {
LambdaQueryWrapper < HuzhouUploadfileinfo > queryWrapper = new LambdaQueryWrapper < > ( ) ;
LambdaQueryWrapper < HuzhouUploadfileinfo > queryWrapper = new LambdaQueryWrapper < > ( ) ;
queryWrapper . eq ( HuzhouUploadfileinfo : : getProjectid , fieldChangeid ) ;
queryWrapper . eq ( HuzhouUploadfileinfo : : getProjectid , fieldChangeGroup id ) ;
List < HuzhouUploadfileinfo > batchIds = uploadfileinfoMapper . selectList ( queryWrapper ) ;
List < HuzhouUploadfileinfo > batchIds = uploadfileinfoMapper . selectList ( queryWrapper ) ;
if ( batchIds . size ( ) > 0 ) {
if ( batchIds . size ( ) > 0 ) {
return batchIds ;
return batchIds ;
@ -112,21 +244,43 @@ public class HuzhouFieldchangehistoryServiceImpl extends ServiceImpl<HuzhouField
}
}
@Override
@Override
public void approvalFieldchange ( MultipartFile [ ] file , String taskId , String flag , String fieldChangeid , String comment , String isEdit , String newvalue ) throws IO Exception {
public void approvalFieldchange ( MultipartFile [ ] file , String taskId , String flag , String fieldChangeGroup id , String comment , String isEdit , HuzhouProjectinfo newProjectinfo ) throws Exception {
WorkFlow workFlow = workflowService . approveProjectInfo ( taskId , flag , comment ) ;
WorkFlow workFlow = workflowService . approveProjectInfo ( taskId , flag , comment ) ;
HuzhouFieldchangehistory byId = getByI d( fieldChangeid ) ;
List < HuzhouFieldchangehistory > list = getFieldchangeByGroupi d( fieldChangeGroup id ) ;
if ( "1" . equals ( isEdit ) & & "1" . equals ( flag ) ) {
if ( "1" . equals ( isEdit ) & & "1" . equals ( flag ) ) {
if ( file ! = null & & "1" . equals ( flag ) ) {
if ( file ! = null & & "1" . equals ( flag ) ) {
uploadfileinfoService . modifyUploadFile ( file , fieldChangeid , "3" ) ;
uploadfileinfoService . modifyUploadFile ( file , fieldChangeGroupid , "3" ) ;
}
for ( HuzhouFieldchangehistory oldchange : list
) {
String fieldValue = oldchange . getFieldValue ( ) ;
List < String > strings = HuzhouCommonUtils . extractObjectAttributes ( newProjectinfo ) ;
for ( String s : strings ) {
if ( s . contains ( fieldValue . substring ( 0 , 1 ) . toUpperCase ( ) + fieldValue . substring ( 1 ) ) ) {
String newValue = s . split ( "=" ) [ 1 ] ;
oldchange . setNewvalue ( newValue ) ;
updateById ( oldchange ) ;
}
}
}
}
byId . setNewvalue ( newvalue ) ;
updateById ( byId ) ;
}
}
ProcessInstance processInstance = runtimeService . createProcessInstanceQuery ( ) . processInstanceId ( workFlow . getProcessInstanceId ( ) ) . singleResult ( ) ;
ProcessInstance processInstance = runtimeService . createProcessInstanceQuery ( ) . processInstanceId ( workFlow . getProcessInstanceId ( ) ) . singleResult ( ) ;
if ( processInstance = = null & & "1" . equals ( flag ) ) {
if ( processInstance = = null & & "1" . equals ( flag ) ) {
processinfoService . modifyStatusByProjectId ( fieldChangeid , "2" , "supervisionFile" ) ;
processinfoService . modifyStatusByProjectId ( fieldChangeGroupid , "2" , "fieldChange" ) ;
byId . setStatus ( "2" ) ;
for ( HuzhouFieldchangehistory change : list
updateById ( byId ) ;
) {
change . setStatus ( "2" ) ;
updateById ( change ) ;
String fieldValue = change . getFieldValue ( ) ;
String projectid = change . getProjectid ( ) ;
if ( "projectContacts" . equals ( fieldValue ) ) {
SysUser sysUserByUserName = userService . getSysUserByUserName ( fieldValue ) ;
newProjectinfo . setPhone ( sysUserByUserName . getPhoneNumber ( ) ) ;
}
newProjectinfo . setId ( projectid ) ;
projectinfoMapper . updateById ( newProjectinfo ) ;
}
}
}
}
}
@ -137,8 +291,13 @@ public class HuzhouFieldchangehistoryServiceImpl extends ServiceImpl<HuzhouField
queryWrapper . eq ( HuzhouFieldchangehistory : : getStatus , "2" ) ;
queryWrapper . eq ( HuzhouFieldchangehistory : : getStatus , "2" ) ;
queryWrapper . orderByDesc ( BaseEntity : : getCreateDate ) ;
queryWrapper . orderByDesc ( BaseEntity : : getCreateDate ) ;
List < HuzhouFieldchangehistory > list = list ( queryWrapper ) ;
List < HuzhouFieldchangehistory > list = list ( queryWrapper ) ;
// 去除 GroupId 字段相同的对象
return list ;
List < HuzhouFieldchangehistory > collect = list . stream ( )
. collect ( Collectors . toMap ( HuzhouFieldchangehistory : : getGroupId , p - > p , ( p1 , p2 ) - > p1 ) )
. values ( )
. stream ( )
. collect ( Collectors . toList ( ) ) ;
return collect ;
}
}
@Override
@Override
@ -153,6 +312,15 @@ public class HuzhouFieldchangehistoryServiceImpl extends ServiceImpl<HuzhouField
return fieldchangehistoryDetailPageList ;
return fieldchangehistoryDetailPageList ;
}
}
@Override
public List < HuzhouFieldchangehistory > getFieldchangeByGroupid ( String fieldChangeGroupid ) {
LambdaQueryWrapper < HuzhouFieldchangehistory > queryWrapper = new LambdaQueryWrapper < > ( ) ;
queryWrapper . eq ( HuzhouFieldchangehistory : : getGroupId , fieldChangeGroupid ) ;
queryWrapper . orderByDesc ( BaseEntity : : getCreateDate ) ;
List < HuzhouFieldchangehistory > list = list ( queryWrapper ) ;
return list ;
}
@Override
@Override
public Page < Map > getFieldchangehistoryPageList ( Page page , HuzhouProjectinfo projectinfo ) {
public Page < Map > getFieldchangehistoryPageList ( Page page , HuzhouProjectinfo projectinfo ) {
SysUser currentUser = ShiroUtil . getCurrentUser ( ) ;
SysUser currentUser = ShiroUtil . getCurrentUser ( ) ;