场景:
一般在流程中审批,会根据业务线去找相应的字段是否能填写值,比如在审批阶段只有业务经理能够编辑技术投入成本,其他人不能编辑
代码:
@WithPlugin('com.hktx.gears.parallel-approval')
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import groovy.json.JsonBuilder
import groovy.transform.BaseScript
import javax.ws.rs.core.MultivaluedMap
import javax.ws.rs.core.Response
import com.atlassian.jira.component.ComponentAccessor
import com.fc.parallelapproval.service.ComponentLeadService
import com.fc.parallelapproval.beans.ComponentLeadBean
import com.atlassian.jira.security.roles.ProjectRoleManager
// Get the current user
def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
// 技术投入成本
def trcbField = getFieldByName("技术投入成本")
def issue
def status
def user1
def ywzx
if(underlyingIssue){ // If the issue key exists (NOT a CREATE screen)
// Get the issue key
issue = ComponentAccessor.issueManager.getIssueObject(underlyingIssue.id)
// Get the issue's status
status = issue.status.name
log.info("select:"+status);
// 业务主线获取业务线经理
def ywzxField = ComponentAccessor.customFieldManager.customFieldObjects.findByName("业务主线")
ywzx = issue.getCustomFieldValue(ywzxField);
log.info("select:"+ywzx);
def componentLeadService = ComponentAccessor.getOSGiComponentInstanceOfType(ComponentLeadService)
user1 = componentLeadService.queryProjectLeadByProjectName(String.valueOf(ywzx))
}
// Set the "技术投入成本" field read-only for ALL screens
trcbField.setReadOnly(true);
log.info("select:2"+currentUser);
if(status == "业务线经理审核"){ // AND the issue status is "业务线经理审核"
//当是业务经理时
if(currentUser ==user1){
trcbField.setReadOnly(false)
}
log.info("select3:"+user1);
}