Commit cfbc45c8 authored by 汪洋's avatar 汪洋

任务拆分第二阶段OK

parent 8809db87
......@@ -10,7 +10,7 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "AutoJira/Page.swift"
timestampString = "574068187.2949851"
timestampString = "574140957.231858"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "89"
......
......@@ -721,7 +721,7 @@
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
<size key="minSize" width="677" height="135"/>
<size key="maxSize" width="677" height="10000000"/>
<size key="maxSize" width="692" height="10000000"/>
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
</textView>
</subviews>
......@@ -844,6 +844,7 @@
</view>
<connections>
<outlet property="logTextView" destination="oWH-27-6AA" id="HNL-mY-PU6"/>
<outlet property="segment" destination="Odk-md-Lt7" id="rC3-jS-ysv"/>
<outlet property="urlTextField" destination="pLx-ea-hpy" id="5IN-61-bR6"/>
<outlet property="versionPopup" destination="Ajo-Dg-gTt" id="Nus-dW-6QJ"/>
</connections>
......
......@@ -10,10 +10,8 @@ import Foundation
import Kanna
import ReactiveCocoa
struct RepeatedWork {
static var sprint: Sprint?
static var jira: JIRA?
// url是“开发与测试资源安排”中的迭代文件
static func fuckit(on sprintUrl: String) {
......@@ -56,7 +54,7 @@ struct RepeatedWork {
continue
}
if let story = Story.createStory(with: page.title) {
if let story = Story.createStory(with: page.title, jiraProjectId: RepeatedWork.jira!.jiraProjectId) {
page.story = story
} else {
Log.append("\(node.toHTML!) story创建出错")
......
......@@ -28,13 +28,14 @@ class Story: NSObject {
///
/// - Parameter page: Page实例
/// - Returns: storyKey
static func createStory(with title: String) -> Story? {
static func createStory(with title: String, jiraProjectId: String) -> Story? {
Log.append("创建story")
let url = URL(string: "http://wiki.wanmeizhensuo.com/rest/jira-integration/1.0/issues?applicationId=54ed5447-b029-3ef0-b638-681b4647313b")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let jsonDic = ["issues": [["fields":["project":["id":"10108"],"issuetype":["id":"10001"],"summary": title]]]]
let jsonDic = ["issues": [["fields":["project":["id":RepeatedWork.jira!.jiraProjectId],"issuetype":["id":"10001"],"summary": title]]]]
request.httpBody = try? JSONSerialization.data(withJSONObject: jsonDic, options: [])
var story: Story?
request.sync { (data, response, error) in
......@@ -43,7 +44,7 @@ class Story: NSObject {
return
}
if let json = (try? JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments)) as? [String: Any],
let issues = json["issues"] as? [Any],
let issues = json["issues"] as? [Any], issues.count > 0,
let issueInfo = issues[0] as? [String: Any],
let issue = issueInfo["issue"] as? [String: Any],
let key = issue["key"] as? String,
......@@ -141,7 +142,7 @@ class Story: NSObject {
return nil
}
let formData = "id=\(storyId)&atl_token=\(atl_token)&formToken=\(formToken)&assignee=\(assignee)&customfield_10005=\(RepeatedWork.sprint!.id)&isCreateIssue=false&isEditIssue=true&summary=\(summary)&issuetype=10001&reporter=wangyang&description=开始时间%2B开发人员%2B任务名称%2B预计开发时间"
let formData = "id=\(storyId)&atl_token=\(atl_token)&formToken=\(formToken)&assignee=\(assignee)&customfield_10005=\(RepeatedWork.jira!.currentSprint!.id)&isCreateIssue=false&isEditIssue=true&summary=\(summary)&issuetype=10001&reporter=wangyang&description=开始时间%2B开发人员%2B任务名称%2B预计开发时间"
return formData
}
......
......@@ -19,6 +19,7 @@ struct Sprint {
let name: String
let id: Int
let stateKey: SprintState
init(dic: [String: Any]) {
if let name = dic["name"] as? String,
let id = dic["id"] as? Int,
......@@ -35,47 +36,39 @@ struct Sprint {
}
}
class JIRA: NSObject {
var jiraProjectId: String = ""
var sprints: [Sprint] = []
var currentSprint: Sprint?
convenience init(jiraProjectId: String, sprints: [Sprint]) {
self.init()
self.jiraProjectId = jiraProjectId
self.sprints = sprints
}
}
class ViewController: NSViewController {
@IBOutlet var logTextView: NSTextView!
@IBOutlet weak var urlTextField: NSTextField!
@IBOutlet weak var versionPopup: NSPopUpButton!
var gengmeiSprints: [Sprint] = []
var likeSprints: [Sprint] = []
var allSprints: [Sprint] = []
@IBOutlet weak var segment: NSSegmentedControl!
var jiraProjects: [Int: JIRA] = [:]
override func viewDidLoad() {
super.viewDidLoad()
Login.loginWiki()
Login.loginJira()
fetchSprintList()
for sprint in allSprints {
versionPopup.addItem(withTitle: sprint.name)
print("\(sprint.name) \(sprint.id)")
}
}
@IBAction func OKAction(_ sender: Any) {
if RepeatedWork.sprint == nil {
Log.append("先选择版本号")
return
}
if urlTextField.stringValue.count == 0 ||
urlTextField.stringValue.count == 0 {
Log.append("需求列表地址没有填写")
return
}
RepeatedWork.fuckit(on: urlTextField.stringValue)
}
@IBAction func versionSelectionAction(_ sender: NSPopUpButton) {
if sender.indexOfSelectedItem > 0 {
RepeatedWork.sprint = allSprints[sender.indexOfSelectedItem - 1]
} else {
RepeatedWork.sprint = nil
}
fetchJiraProjects()
segment.selectedSegment = 0
switchProject(segment)
}
// 参考"获取迭代列表.md"
func fetchSprintList() {
func fetchJiraProjects() {
var gengmeiSprints: [Sprint] = []
var likeSprints: [Sprint] = []
let url = URL(string: "http://jira.wanmeizhensuo.com/rest/greenhopper/1.0/sprint/picker?query=&_=1552128647090")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
......@@ -97,9 +90,11 @@ class ViewController: NSViewController {
for sprintDic in sprints {
if let boardName = sprintDic["boardName"] as? String {
if boardName == "Alpha" {
self?.allSprints.append(Sprint(dic: sprintDic))
let sprint = Sprint(dic: sprintDic)
likeSprints.append(sprint)
} else if boardName == "USER board" {
self?.allSprints.append(Sprint(dic: sprintDic))
let sprint = Sprint(dic: sprintDic)
gengmeiSprints.append(sprint)
}
}
}
......@@ -107,13 +102,41 @@ class ViewController: NSViewController {
Log.append("获取迭代列表失败:\n\(response.debugDescription)")
}
}
// project AL: 10500
// project USER: 10108
jiraProjects = [0: JIRA(jiraProjectId: "10108", sprints: gengmeiSprints),
1: JIRA(jiraProjectId: "10500", sprints: likeSprints)]
}
@IBAction func switchProject(_ sender: NSSegmentedControl) {
versionPopup.removeAllItems()
versionPopup.addItem(withTitle: "未选择版本号")
RepeatedWork.jira = jiraProjects[sender.indexOfSelectedItem]!
versionPopup.addItems(withTitles: RepeatedWork.jira!.sprints.map { return $0.name })
}
@IBAction func versionSelectionAction(_ sender: NSPopUpButton) {
if sender.indexOfSelectedItem > 0 {
RepeatedWork.jira?.currentSprint = RepeatedWork.jira!.sprints[sender.indexOfSelectedItem - 1]
} else {
RepeatedWork.jira = nil
}
}
}
@IBAction func OKAction(_ sender: Any) {
if RepeatedWork.jira == nil {
Log.append("先选择版本号")
return
}
if urlTextField.stringValue.count == 0 ||
urlTextField.stringValue.count == 0 {
Log.append("需求列表地址没有填写")
return
}
RepeatedWork.fuckit(on: urlTextField.stringValue)
}
}
class Log: NSObject {
static func append(_ logText: String) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment