You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
5.7 KiB
Go

package model
import (
"cu-helper/cus-eng-con-sys/config"
"cu-helper/cus-eng-con-sys/cryptokit"
"cu-helper/cus-eng-con-sys/util"
"reflect"
)
/*
/zjgd/frm/acceptanceController/pushProcess.action
*/
/*
用途
验收申请流程推送
*/
//tip 工建能写出这么多form参数的的程序员,也是个人才,不能用json吗?我真服了你!
type AccApplyPushProcess struct {
AccId string `map:"accId"`
Token string `map:"token"`
RemandId string `map:"remandId"`
IsSplitedRemand string `map:"isSplitedRemand"`
AccRecordId string `map:"accRecordId"`
BuildModel string `map:"buildModel"`
DisType string `map:"disType"`
SpecC string `map:"specC"`
IsBd string `map:"isBd"`
IsGKOrder string `map:"isGKOrder"`
RemandName string `map:"remandName"`
ProjectName string `map:"projectName"`
ProjectCode string `map:"projectCode"`
RemandCreateName string `map:"remandCreateName"`
RemandTouzi string `map:"remandTouzi"`
ProjectManagerName string `map:"projectManagerName"`
RemandCreatedDate string `map:"remandCreatedDate"`
PdmCreatedName string `map:"pdmCreatedName"`
PdmCreatedDate string `map:"pdmCreatedDate"`
ReplyDate string `map:"replyDate"`
ReplyInvestment string `map:"replyInvestment"`
ActStartDate string `map:"actStartDate"`
ActOrgName string `map:"actOrgName"`
ActFinishDate string `map:"actFinishDate"`
AccApplyDesc string `map:"accApplyDesc"`
TaskDefinitionKey string `map:"taskDefinitionKey"`
BusinessKey string `map:"businessKey"`
Comment string `map:"comment"`
Assignee string `map:"assignee"`
ProcessInstanceId string `map:"processInstanceId"`
TaskId string `map:"taskId"`
HandleType string `map:"handleType"`
Withdraw string `map:"withdraw"`
Back string `map:"back"`
Ranstr string `map:"ranstr"`
Timestamp string `map:"timestamp"`
}
// NewAccApplyPushProcess remandId=businessKey
func NewAccApplyPushProcess(token, remandId, processInstanceId, taskId, html1, html2, assignee, processDefinitionKey string) *AccApplyPushProcess {
accApplyPushProcess := new(AccApplyPushProcess)
accApplyPushProcess.AccId = util.RegexpFindFirst(html1, `"accId":"([^"]+)"`)
accApplyPushProcess.Token = token
accApplyPushProcess.RemandId = remandId
accApplyPushProcess.IsSplitedRemand = util.RegexpFindFirst(html1, `"isSplitedRemand":"([^"]+)"`)
accApplyPushProcess.AccRecordId = util.HTMLContentFindFirst(html1, "accRecordId")
accApplyPushProcess.BuildModel = util.RegexpFindFirst(html1, `"buildModel":"([^"]+)"`)
accApplyPushProcess.DisType = util.RegexpFindFirst(html1, `"disType":"([^"]+)"`)
accApplyPushProcess.SpecC = util.HTMLContentFindFirst(html1, "specC")
accApplyPushProcess.IsBd = util.HTMLContentFindFirst(html1, "isBd")
switch processDefinitionKey {
case config.ProcessHouse:
accApplyPushProcess.IsGKOrder = util.HTMLContentFindFirst(html1, "isGKOrder")
case config.ProcessLX:
//零星没有这个参数
}
accApplyPushProcess.RemandName = util.RegexpFindFirst(html1, `"remandName":"([^"]+)"`)
accApplyPushProcess.ProjectName = util.HTMLContentFindFirst(html2, "projectName")
accApplyPushProcess.ProjectCode = util.HTMLContentFindFirst(html2, "projectCode")
accApplyPushProcess.RemandCreateName = util.HTMLContentFindFirst(html2, "remandCreateName")
accApplyPushProcess.RemandTouzi = util.HTMLContentFindFirst(html2, "remandTouzi")
accApplyPushProcess.ProjectManagerName = util.HTMLContentFindFirst(html2, "projectManagerName")
accApplyPushProcess.RemandCreatedDate = util.HTMLContentFindFirst(html2, "remandCreatedDate")
accApplyPushProcess.PdmCreatedName = util.HTMLContentFindFirst(html2, "pdmCreatedName")
accApplyPushProcess.PdmCreatedDate = util.HTMLContentFindFirst(html2, "pdmCreatedDate")
accApplyPushProcess.ReplyDate = util.HTMLContentFindFirst(html2, "replyDate")
accApplyPushProcess.ReplyInvestment = util.HTMLContentFindFirst(html2, "replyInvestment")
accApplyPushProcess.ActStartDate = util.HTMLContentFindFirst(html2, "actStartDate")
accApplyPushProcess.ActOrgName = util.HTMLContentFindFirst(html2, "actOrgName")
accApplyPushProcess.ActFinishDate = util.HTMLContentFindFirst(html2, "actFinishDate")
accApplyPushProcess.AccApplyDesc = util.HTMLContentFindFirst(html1, "accApplyDesc")
accApplyPushProcess.TaskDefinitionKey = "YSQR"
accApplyPushProcess.BusinessKey = accApplyPushProcess.AccId
accApplyPushProcess.Comment = "请确认"
accApplyPushProcess.Assignee = assignee
accApplyPushProcess.ProcessInstanceId = processInstanceId
accApplyPushProcess.TaskId = taskId
accApplyPushProcess.HandleType = "1"
accApplyPushProcess.Withdraw = "1"
accApplyPushProcess.Back = "0"
accApplyPushProcess.Ranstr = cryptokit.RandomStr(true, 10, 32)
accApplyPushProcess.Timestamp = cryptokit.GetTimeStamp()
return accApplyPushProcess
}
// GenReqParam 返回加密后的请求参数
func (th *AccApplyPushProcess) GenReqParam() map[string]string {
th.encrypt()
return th.structToMap()
}
func (th *AccApplyPushProcess) structToMap() map[string]string {
result := make(map[string]string)
t := reflect.TypeOf(*th)
v := reflect.ValueOf(*th)
for i := 0; i < t.NumField(); i++ {
field := t.Field(i)
value := v.Field(i)
// Use the tag value as the key in the map, if it exists; otherwise, use the field name.
tag := field.Tag.Get("map")
if tag == "" {
tag = field.Name
}
result[tag] = value.String()
}
return result
}
func (th *AccApplyPushProcess) encrypt() {
v := reflect.ValueOf(th).Elem()
for i := 0; i < v.NumField(); i++ {
field := v.Field(i)
if field.CanSet() {
field.SetString(cryptokit.Encrypt(field.String()))
}
}
}