作者 yangfu

自查内容

@@ -286,11 +286,12 @@ func (this *ChanceController) ChanceSubmit() { @@ -286,11 +286,12 @@ func (this *ChanceController) ChanceSubmit() {
286 msg = m 286 msg = m
287 return 287 return
288 } 288 }
  289 + if e := request.SelfChecks.Valid(); e != nil {
  290 + log.Error(e)
  291 + msg = protocol.NewReturnResponse(nil, e)
  292 + return
  293 + }
289 header := controllers.GetRequestHeader(this.Ctx) 294 header := controllers.GetRequestHeader(this.Ctx)
290 - //if request.Id > 0 {  
291 - // msg = protocol.NewReturnResponse(chance.ChanceUpdate(header, request))  
292 - // return  
293 - //}  
294 msg = protocol.NewReturnResponse(chance.ChanceSubmit(header, request)) 295 msg = protocol.NewReturnResponse(chance.ChanceSubmit(header, request))
295 } 296 }
296 297
@@ -311,6 +312,11 @@ func (this *ChanceController) ChanceUpdate() { @@ -311,6 +312,11 @@ func (this *ChanceController) ChanceUpdate() {
311 msg = m 312 msg = m
312 return 313 return
313 } 314 }
  315 + if e := request.SelfChecks.Valid(); e != nil {
  316 + log.Error(e)
  317 + msg = protocol.NewReturnResponse(nil, e)
  318 + return
  319 + }
314 header := controllers.GetRequestHeader(this.Ctx) 320 header := controllers.GetRequestHeader(this.Ctx)
315 msg = protocol.NewReturnResponse(chance.ChanceUpdate(header, request)) 321 msg = protocol.NewReturnResponse(chance.ChanceUpdate(header, request))
316 } 322 }
@@ -443,6 +449,11 @@ func (this *ChanceController) ChanceApprove() { @@ -443,6 +449,11 @@ func (this *ChanceController) ChanceApprove() {
443 return 449 return
444 } 450 }
445 } 451 }
  452 + if e := request.SelfChecks.Valid(); e != nil {
  453 + log.Error(e)
  454 + msg = protocol.NewReturnResponse(nil, e)
  455 + return
  456 + }
446 header := controllers.GetRequestHeader(this.Ctx) 457 header := controllers.GetRequestHeader(this.Ctx)
447 msg = protocol.NewReturnResponse(chance.ChanceApprove(header, request)) 458 msg = protocol.NewReturnResponse(chance.ChanceApprove(header, request))
448 } 459 }
@@ -636,3 +647,24 @@ func (this *ChanceController) ChanceReviseDetail() { @@ -636,3 +647,24 @@ func (this *ChanceController) ChanceReviseDetail() {
636 header := controllers.GetRequestHeader(this.Ctx) 647 header := controllers.GetRequestHeader(this.Ctx)
637 msg = protocol.NewReturnResponse(chance.ChanceReviseDetail(header, request)) 648 msg = protocol.NewReturnResponse(chance.ChanceReviseDetail(header, request))
638 } 649 }
  650 +
  651 +//CheckQuestions 自查问题列表
  652 +//@router /checkQuestions [post]
  653 +func (this *ChanceController) CheckQuestions() {
  654 + var msg *protocol.ResponseMessage
  655 + defer func() {
  656 + this.Resp(msg)
  657 + }()
  658 + var request *protocol.CheckQuestionsRequest
  659 + if err := json.Unmarshal(this.ByteBody, &request); err != nil {
  660 + log.Error(err)
  661 + msg = protocol.BadRequestParam(1)
  662 + return
  663 + }
  664 + if b, m := this.Valid(request); !b {
  665 + msg = m
  666 + return
  667 + }
  668 + header := controllers.GetRequestHeader(this.Ctx)
  669 + msg = protocol.NewReturnResponse(chance.CheckQuestions(header, request))
  670 +}
  1 +package models
  2 +
  3 +import (
  4 + "time"
  5 +
  6 + "github.com/astaxie/beego/orm"
  7 +)
  8 +
  9 +type AuditCheck struct {
  10 + Id int `orm:"column(id);pk"`
  11 + Pid int64 `orm:"column(pid)"`
  12 + TemplateId int64 `orm:"column(template_id)" description:"模板id"`
  13 + Title string `orm:"column(title);size(100)" description:"标题"`
  14 + Items string `orm:"column(items)" description:"选项数据json格式"`
  15 + Enable int8 `orm:"column(enable)" description:"是否有效【0:无效】【1:有效】"`
  16 + CreateTime time.Time `orm:"column(create_time);type(timestamp)"`
  17 +}
  18 +
  19 +func (t *AuditCheck) TableName() string {
  20 + return "audit_check"
  21 +}
  22 +
  23 +func init() {
  24 + orm.RegisterModel(new(AuditCheck))
  25 +}
  26 +
  27 +// GetAuditCheckById retrieves AuditCheck by Id. Returns error if
  28 +// Id doesn't exist
  29 +func GetAuditCheckById(id int) (v *AuditCheck, err error) {
  30 + o := orm.NewOrm()
  31 + v = &AuditCheck{Id: id}
  32 + if err = o.Read(v); err == nil {
  33 + return v, nil
  34 + }
  35 + return nil, err
  36 +}
  37 +
  38 +func GetAuditCheckBy(tpId int64) (v []*AuditCheck, err error) {
  39 + sql := `select * from(
  40 +select id,(case when pid=0 then id else id end) pid,title,items from audit_check where template_id=? and enable=1
  41 +)a
  42 +order by a.pid`
  43 + o := orm.NewOrm()
  44 + if _, err = o.Raw(sql, tpId).QueryRows(&v); err != nil {
  45 + if err == orm.ErrNoRows {
  46 + err = nil
  47 + }
  48 + return
  49 + }
  50 + return
  51 +}
@@ -32,6 +32,7 @@ type AuditFlowProcess struct { @@ -32,6 +32,7 @@ type AuditFlowProcess struct {
32 RoleId int `orm:"column(role_id);size(50)" description:"角色id-冗余"` 32 RoleId int `orm:"column(role_id);size(50)" description:"角色id-冗余"`
33 ApproveMessage string `orm:"column(approve_message);size(50)" description:"审核消息-冗余"` 33 ApproveMessage string `orm:"column(approve_message);size(50)" description:"审核消息-冗余"`
34 TemplateId int `orm:"column(template_id);size(50)" description:"模板编号-冗余"` 34 TemplateId int `orm:"column(template_id);size(50)" description:"模板编号-冗余"`
  35 + SelfChecks string `orm:"column(self_checks);null" description:"自查内容"`
35 } 36 }
36 37
37 func (t *AuditFlowProcess) TableName() string { 38 func (t *AuditFlowProcess) TableName() string {
@@ -125,7 +126,7 @@ func GetAuditFlowProcessList(chanceId int64) (v []*AuditFlowProcess, err error) @@ -125,7 +126,7 @@ func GetAuditFlowProcessList(chanceId int64) (v []*AuditFlowProcess, err error)
125 o := orm.NewOrm() 126 o := orm.NewOrm()
126 sql := `select id ,chance_id,uid,level,is_active,IFNULL(approve_time,NOW()) approve_time,basic_score,extra_score,value_score,discovery_score, 127 sql := `select id ,chance_id,uid,level,is_active,IFNULL(approve_time,NOW()) approve_time,basic_score,extra_score,value_score,discovery_score,
127 review_status,audit_flow_type,flow_type,action_type,update_at,create_at,enable_status,approve_data,user_name,role_name,role_id,approve_message, 128 review_status,audit_flow_type,flow_type,action_type,update_at,create_at,enable_status,approve_data,user_name,role_name,role_id,approve_message,
128 -template_id from audit_flow_process 129 +template_id,self_checks from audit_flow_process
129 where chance_id =? and enable_status=1 order by approve_time,level desc` 130 where chance_id =? and enable_status=1 order by approve_time,level desc`
130 if _, err = o.Raw(sql, chanceId).QueryRows(&v); err == nil { 131 if _, err = o.Raw(sql, chanceId).QueryRows(&v); err == nil {
131 return v, nil 132 return v, nil
@@ -35,6 +35,7 @@ type Chance struct { @@ -35,6 +35,7 @@ type Chance struct {
35 ApproveTime time.Time `orm:"column(approve_time);type(timestamp)" description:"审批时间"` 35 ApproveTime time.Time `orm:"column(approve_time);type(timestamp)" description:"审批时间"`
36 Code string `orm:"column(code)" description:"机会编码 一级编码+二级编码"` 36 Code string `orm:"column(code)" description:"机会编码 一级编码+二级编码"`
37 Status int8 `orm:"column(status)" description:"状态 1:开启 2:关闭 "` 37 Status int8 `orm:"column(status)" description:"状态 1:开启 2:关闭 "`
  38 + SelfChecks string `orm:"column(self_checks);size(1000);null" description:"自查内容"`
38 } 39 }
39 40
40 const ( 41 const (
@@ -42,6 +43,10 @@ const ( @@ -42,6 +43,10 @@ const (
42 ChanceStatusClose = 2 //关闭 43 ChanceStatusClose = 2 //关闭
43 ) 44 )
44 45
  46 +var (
  47 + SqlGetChanceSelfChecks = `select self_checks from chance where id =?` //机会自查数据
  48 +)
  49 +
45 func (t *Chance) TableName() string { 50 func (t *Chance) TableName() string {
46 return "chance" 51 return "chance"
47 } 52 }
@@ -159,7 +164,7 @@ from audit_flow_process where uid=? and review_status in (%v) `, utils.JoinInt8 @@ -159,7 +164,7 @@ from audit_flow_process where uid=? and review_status in (%v) `, utils.JoinInt8
159 164
160 func GetChanceMyApproveChanceEnable(uid, cid int64, reviewStatus []int8, lastId int64, pageSize int, v interface{}) (total int, err error) { 165 func GetChanceMyApproveChanceEnable(uid, cid int64, reviewStatus []int8, lastId int64, pageSize int, v interface{}) (total int, err error) {
161 sql := fmt.Sprintf(`select a.*,b.images,b.speechs,b.videos from ( 166 sql := fmt.Sprintf(`select a.*,b.images,b.speechs,b.videos from (
162 -select a.*,b.user_id,b.source_content,b.enable_status,b.review_status,b.create_at,b.update_at,b.approve_time chance_approve_time,b.status,b.update_at process_create_time from ( 167 +select a.*,b.user_id,b.source_content,b.enable_status,b.review_status,b.create_at,b.update_at,b.approve_time chance_approve_time,b.status,b.update_at process_create_time,b.self_checks from (
163 select id,approve_time,approve_data,uid,chance_id,approve_message 168 select id,approve_time,approve_data,uid,chance_id,approve_message
164 from audit_flow_process where uid=? and review_status in (%v) and enable_status =1 169 from audit_flow_process where uid=? and review_status in (%v) and enable_status =1
165 )a left outer join chance b on a.chance_id = b.id 170 )a left outer join chance b on a.chance_id = b.id
  1 +package models
  2 +
  3 +import (
  4 + "fmt"
  5 + "time"
  6 +
  7 + "github.com/astaxie/beego/orm"
  8 +)
  9 +
  10 +type ChanceSelfCheck struct {
  11 + Id int64 `orm:"column(id);pk" description:"编号"`
  12 + UserCompanyId int64 `orm:"column(user_company_id);null" description:"提交人"`
  13 + ChanceId int64 `orm:"column(chanceId);null" description:"机会编号"`
  14 + RelateId int64 `orm:"column(relateId)" description:"关联编号 机会编号 / 审核流程编号"`
  15 + CheckItem string `orm:"column(checkItem);size(50)" description:"检查项"`
  16 + GroupId int64 `orm:"column(groupId)" description:"分组编号(audit_check.id/pid)"`
  17 + Answer string `orm:"column(answer);size(50);null" description:"回答"`
  18 + Reason string `orm:"column(reason);size(200);null" description:"理由"`
  19 + CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"`
  20 + UpdateAt time.Time `orm:"column(update_at);type(timestamp);null" description:"更新时间"`
  21 +}
  22 +
  23 +func (t *ChanceSelfCheck) TableName() string {
  24 + return "chance_self_check"
  25 +}
  26 +
  27 +func init() {
  28 + orm.RegisterModel(new(ChanceSelfCheck))
  29 +}
  30 +
  31 +// AddChanceSelfCheck insert a new ChanceSelfCheck into database and returns
  32 +// last inserted Id on success.
  33 +func AddChanceSelfCheck(m *ChanceSelfCheck) (id int64, err error) {
  34 + o := orm.NewOrm()
  35 + id, err = o.Insert(m)
  36 + return
  37 +}
  38 +
  39 +// GetChanceSelfCheckById retrieves ChanceSelfCheck by Id. Returns error if
  40 +// Id doesn't exist
  41 +func GetChanceSelfCheckById(id int64) (v *ChanceSelfCheck, err error) {
  42 + o := orm.NewOrm()
  43 + v = &ChanceSelfCheck{Id: id}
  44 + if err = o.Read(v); err == nil {
  45 + return v, nil
  46 + }
  47 + return nil, err
  48 +}
  49 +
  50 +// UpdateChanceSelfCheck updates ChanceSelfCheck by Id and returns error if
  51 +// the record to be updated doesn't exist
  52 +func UpdateChanceSelfCheckById(m *ChanceSelfCheck) (err error) {
  53 + o := orm.NewOrm()
  54 + v := ChanceSelfCheck{Id: m.Id}
  55 + // ascertain id exists in the database
  56 + if err = o.Read(&v); err == nil {
  57 + var num int64
  58 + if num, err = o.Update(m); err == nil {
  59 + fmt.Println("Number of records updated in database:", num)
  60 + }
  61 + }
  62 + return
  63 +}
@@ -117,14 +117,15 @@ type ChanceExampleResponse struct { @@ -117,14 +117,15 @@ type ChanceExampleResponse struct {
117 117
118 /*提交机会*/ 118 /*提交机会*/
119 type ChanceSubmitRequest struct { 119 type ChanceSubmitRequest struct {
120 - Id int64 `json:"id"` // = 0添加 >0 编辑  
121 - AuditTemplateId int64 `json:"auditTemplateId" valid:"Required"`  
122 - Content string `json:"content"`  
123 - FormList []*Form `json:"formList" valid:"Required"`  
124 - Speechs []Speech `json:"speechs"`  
125 - Pictures []Picture `json:"pictures"`  
126 - Videos []Video `json:"videos"`  
127 - RelatedDepartment int64 `json:"relatedDepartments" valid:"Required"` 120 + Id int64 `json:"id"` // = 0添加 >0 编辑
  121 + AuditTemplateId int64 `json:"auditTemplateId" valid:"Required"`
  122 + Content string `json:"content"`
  123 + FormList []*Form `json:"formList" valid:"Required"`
  124 + SelfChecks SelfChecks `json:"selfChecks"`
  125 + Speechs []Speech `json:"speechs"`
  126 + Pictures []Picture `json:"pictures"`
  127 + Videos []Video `json:"videos"`
  128 + RelatedDepartment int64 `json:"relatedDepartments" valid:"Required"`
128 } 129 }
129 type ChanceSubmitResponse struct { 130 type ChanceSubmitResponse struct {
130 } 131 }
@@ -140,7 +141,8 @@ type ChanceUpdateRequest struct { @@ -140,7 +141,8 @@ type ChanceUpdateRequest struct {
140 Videos []Video `json:"videos"` 141 Videos []Video `json:"videos"`
141 RelatedDepartment int64 `json:"relatedDepartments"` 142 RelatedDepartment int64 `json:"relatedDepartments"`
142 143
143 - IsPublish bool `json:"isPublish"` //是否重新发布 144 + IsPublish bool `json:"isPublish"` //是否重新发布
  145 + SelfChecks SelfChecks `json:"selfChecks"`
144 } 146 }
145 type ChanceUpdateResponse struct { 147 type ChanceUpdateResponse struct {
146 } 148 }
@@ -236,6 +238,8 @@ type ChanceApproveItemOrm struct { @@ -236,6 +238,8 @@ type ChanceApproveItemOrm struct {
236 ApproveUserId int64 `orm:"column(uid)"` 238 ApproveUserId int64 `orm:"column(uid)"`
237 ProcessCreateTime time.Time `orm:"column(process_create_time)"` 239 ProcessCreateTime time.Time `orm:"column(process_create_time)"`
238 ChanceId int64 `orm:"column(chance_id)"` // 机会id 240 ChanceId int64 `orm:"column(chance_id)"` // 机会id
  241 +
  242 + SelfChecks string `orm:"column(self_checks)"`
239 } 243 }
240 244
241 /*MyCollectChance 我的收藏*/ 245 /*MyCollectChance 我的收藏*/
@@ -451,12 +455,13 @@ type ChanceDetail struct { @@ -451,12 +455,13 @@ type ChanceDetail struct {
451 455
452 //模板 456 //模板
453 type Template struct { 457 type Template struct {
454 - Id int64 `json:"id"`  
455 - Name string `json:"name"`  
456 - Doc string `json:"doc"`  
457 - Icon string `json:"icon"`  
458 - FormList []*Form `json:"formList"`  
459 - Link string `json:"link"` //示例 458 + Id int64 `json:"id"`
  459 + Name string `json:"name"`
  460 + Doc string `json:"doc"`
  461 + Icon string `json:"icon"`
  462 + FormList []*Form `json:"formList"`
  463 + Question []*CheckQuestion `json:"question"`
  464 + Link string `json:"link"` //示例
460 } 465 }
461 466
462 //表单 467 //表单
@@ -527,6 +532,8 @@ type CommonListItem struct { @@ -527,6 +532,8 @@ type CommonListItem struct {
527 ThumbUpData interface{} `json:"thumbUpData,omitempty"` //点赞数据 532 ThumbUpData interface{} `json:"thumbUpData,omitempty"` //点赞数据
528 //我审核的-通过 533 //我审核的-通过
529 Score interface{} `json:"score,omitempty"` 534 Score interface{} `json:"score,omitempty"`
  535 + //我审核的-待审核
  536 + SelfCheckResult interface{} `json:"selfCheckResult,omitempty"` //自查统计数据
530 537
531 //模板 538 //模板
532 ChanceType interface{} `json:"chanceType,omitempty"` //机会类型 539 ChanceType interface{} `json:"chanceType,omitempty"` //机会类型
@@ -580,14 +587,16 @@ type ChanceItem struct { @@ -580,14 +587,16 @@ type ChanceItem struct {
580 Id int64 `json:"id"` 587 Id int64 `json:"id"`
581 CreateTime int64 `json:"createTime"` 588 CreateTime int64 `json:"createTime"`
582 //CreateTimeCopy int64 `json:"createTimeCopy"` 589 //CreateTimeCopy int64 `json:"createTimeCopy"`
583 - UpdateTime int64 `json:"updateTime"`  
584 - ApproveTime int64 `json:"approveTime"`  
585 - Provider *BaseUserInfo `json:"provider"`  
586 - FormList []*Form `json:"formList" valid:"Required"`  
587 - Speechs []Speech `json:"speechs"`  
588 - Pictures []Picture `json:"pictures"`  
589 - Videos []Video `json:"videos"`  
590 - PublicStatus int `json:"-"` //publicStatus 590 + UpdateTime int64 `json:"updateTime"`
  591 + ApproveTime int64 `json:"approveTime"`
  592 + Provider *BaseUserInfo `json:"provider"`
  593 + FormList []*Form `json:"formList" valid:"Required"`
  594 + SelfChecks SelfChecks `json:"selfChecks"`
  595 + Speechs []Speech `json:"speechs"`
  596 + Pictures []Picture `json:"pictures"`
  597 + Videos []Video `json:"videos"`
  598 +
  599 + PublicStatus int `json:"-"` //publicStatus
591 } 600 }
592 type ChanceData struct { 601 type ChanceData struct {
593 ThumbsUpTotal int `json:"thumbsupTotal"` //点赞总数 602 ThumbsUpTotal int `json:"thumbsupTotal"` //点赞总数
@@ -24,6 +24,7 @@ type ChanceApproveRequest struct { @@ -24,6 +24,7 @@ type ChanceApproveRequest struct {
24 ReviewStatus int `json:"reviewStatus"` //protocol.ReviewStatus 24 ReviewStatus int `json:"reviewStatus"` //protocol.ReviewStatus
25 //Suggestion string `json:"suggestion"` //原因/建议 25 //Suggestion string `json:"suggestion"` //原因/建议
26 ApproveData ApproveData `json:"approveData"` //审核数据 26 ApproveData ApproveData `json:"approveData"` //审核数据
  27 + SelfChecks SelfChecks `json:"selfChecks"`
27 } 28 }
28 type ChanceApproveResponse struct { 29 type ChanceApproveResponse struct {
29 } 30 }
@@ -66,13 +67,13 @@ type ProcessItem struct { @@ -66,13 +67,13 @@ type ProcessItem struct {
66 ApproveType int `json:"approveType"` //审批类型 1 业务区域负责人 2 指定成员 3 角色 67 ApproveType int `json:"approveType"` //审批类型 1 业务区域负责人 2 指定成员 3 角色
67 ApproveTime int64 `json:"approveTime"` //审核时间 68 ApproveTime int64 `json:"approveTime"` //审核时间
68 //Role Role `json:"role"` //角色 69 //Role Role `json:"role"` //角色
69 - Uid int64 `json:"uid"`  
70 - Name string `json:"name"`  
71 - RoleName string `json:"roleName"`  
72 - Role int `json:"-"`  
73 - ApproveData *ApproveData `json:"approveData"` //审核数据  
74 - //ApproveUser UserItem `json:"approveUser"` //审核人 //状态不是审核中  
75 - ApproveUsers []UserItem `json:"approveUsers"` //审核人员 //1 会签 2 或签 //审核中 1.部门长 2.角色 70 + Uid int64 `json:"uid"`
  71 + Name string `json:"name"`
  72 + RoleName string `json:"roleName"`
  73 + Role int `json:"-"`
  74 + SelfChecks SelfChecks `json:"selfChecks"`
  75 + ApproveData *ApproveData `json:"approveData"` //审核数据
  76 + ApproveUsers []UserItem `json:"approveUsers"` //审核人员 //1 会签 2 或签 //审核中 1.部门长 2.角色
76 } 77 }
77 78
78 //公开数据 79 //公开数据
1 package protocol 1 package protocol
2 2
3 -import "strings" 3 +import (
  4 + "bytes"
  5 + "encoding/json"
  6 + "fmt"
  7 + "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
  8 + "opp/internal/utils"
  9 + "strings"
  10 +)
4 11
5 /*机会-自查内容*/ 12 /*机会-自查内容*/
  13 +var CheckOptionsCommit = []CheckOption{{Item: "是", NeedOther: false}, {Item: "否", NeedOther: false}, {Item: "不清楚", NeedOther: false}}
6 14
  15 +//var CheckOptionsApprove = []CheckOption{{Item: "是",NeedOther:false},{Item: "否",NeedOther:true},{Item: "不清楚",NeedOther:false}}
7 //自查结果列表 16 //自查结果列表
8 type SelfCheckResults []selfCheckResult 17 type SelfCheckResults []selfCheckResult
9 type selfCheckResult struct { 18 type selfCheckResult struct {
10 - CheckItem string `json:"checkItem"`  
11 - Total int `json:"total"` 19 + Item string `json:"item"`
  20 + Total int `json:"total"`
12 } 21 }
13 22
14 //自查项列表 23 //自查项列表
15 type SelfChecks []SelfCheck 24 type SelfChecks []SelfCheck
16 type SelfCheck struct { 25 type SelfCheck struct {
17 - Id int64 `json:"id"`  
18 CheckItem string `json:"checkItem"` 26 CheckItem string `json:"checkItem"`
  27 + GroupId int64 `json:"groupId"` //分组
19 Answer string `json:"answer,omitempty"` 28 Answer string `json:"answer,omitempty"`
20 Reason string `json:"reason,omitempty"` 29 Reason string `json:"reason,omitempty"`
21 - Group int `json:"group"` //分组 30 +}
  31 +
  32 +func (c SelfCheck) Key() string {
  33 + return fmt.Sprintf("%v-%v", c.GroupId, c.CheckItem)
  34 +}
  35 +
  36 +func NewSelfChecks(data string) (rsp SelfChecks) {
  37 + if len(data) == 0 {
  38 + return
  39 + }
  40 + e := json.Unmarshal([]byte(data), &rsp)
  41 + if e != nil {
  42 + log.Error(e)
  43 + }
  44 + return
22 } 45 }
23 46
24 //统计自查结果 47 //统计自查结果
25 func (s SelfChecks) Static() SelfCheckResults { 48 func (s SelfChecks) Static() SelfCheckResults {
26 - results := []selfCheckResult{{CheckItem: "是"}, {CheckItem: "否"}, {CheckItem: "不清楚"}} 49 + if len(s) == 0 {
  50 + return []selfCheckResult{}
  51 + }
  52 + results := []selfCheckResult{{Item: "是"}, {Item: "否"}, {Item: "不清楚"}}
27 for i := range s { 53 for i := range s {
28 check := (s)[i] 54 check := (s)[i]
29 for k := range results { 55 for k := range results {
30 - if strings.EqualFold(results[k].CheckItem, check.CheckItem) { 56 + if strings.EqualFold(results[k].Item, check.Answer) {
31 results[k].Total = results[k].Total + 1 57 results[k].Total = results[k].Total + 1
32 break 58 break
33 } 59 }
@@ -35,3 +61,104 @@ func (s SelfChecks) Static() SelfCheckResults { @@ -35,3 +61,104 @@ func (s SelfChecks) Static() SelfCheckResults {
35 } 61 }
36 return SelfCheckResults(results) 62 return SelfCheckResults(results)
37 } 63 }
  64 +
  65 +//自查校验
  66 +func (s SelfChecks) Valid() (err error) {
  67 + if len(s) == 0 {
  68 + return
  69 + }
  70 + for i := range s {
  71 + c := s[i]
  72 + if c.GroupId == 0 {
  73 + err = NewErrWithMessage(2)
  74 + return
  75 + }
  76 + if len(c.CheckItem) == 0 {
  77 + err = NewErrWithMessage(2)
  78 + return
  79 + }
  80 + if len(c.Answer) == 0 {
  81 + err = NewCustomMessage(2, "自查项未填写")
  82 + return
  83 + }
  84 + }
  85 + return
  86 +}
  87 +
  88 +//自查内容
  89 +func (s SelfChecks) String() string {
  90 + var buf bytes.Buffer
  91 + for i := range s {
  92 + c := s[i]
  93 + if len(c.Reason) == 0 {
  94 + buf.WriteString(fmt.Sprintf("%v:%v;\n", c.CheckItem, c.Answer))
  95 + } else {
  96 + buf.WriteString(fmt.Sprintf("%v:%v,理由:%v;\n", c.CheckItem, c.Answer, c.Reason))
  97 + }
  98 + }
  99 + return buf.String()
  100 +}
  101 +func (s SelfChecks) Compare(dst string) (rspChecks SelfChecks, err error) {
  102 + var (
  103 + dstChecks SelfChecks
  104 + mapChecks = make(map[string]SelfCheck)
  105 + )
  106 + rspChecks = make([]SelfCheck, 0)
  107 + if len(s) == 0 {
  108 + return
  109 + }
  110 + utils.JsonUnmarshal(dst, &dstChecks)
  111 + if len(s) != len(dstChecks) {
  112 + err = NewCustomMessage(1, "自查项有误")
  113 + log.Error(err, s, dstChecks)
  114 + return
  115 + }
  116 + for i := range dstChecks {
  117 + c := dstChecks[i]
  118 + mapChecks[c.Key()] = c
  119 + }
  120 + for i := range s {
  121 + c := s[i]
  122 + if v, ok := mapChecks[c.Key()]; ok {
  123 + //回答不一直
  124 + if !strings.EqualFold(c.Answer, v.Answer) {
  125 + rspChecks = append(rspChecks, c)
  126 + continue
  127 + }
  128 + if len(c.Reason) > 0 {
  129 + rspChecks = append(rspChecks, c)
  130 + continue
  131 + }
  132 + }
  133 + }
  134 + return
  135 +}
  136 +
  137 +//自查问题
  138 +type CheckQuestion struct {
  139 + CheckItem string `json:"checkItem"`
  140 + Title string `json:"title"`
  141 + GroupId int64 `json:"groupId"`
  142 + CheckOptions []CheckOption `json:"options"`
  143 +}
  144 +type CheckOption struct {
  145 + Item string `json:"item"`
  146 + NeedOther bool `json:"needOther"` //是否需填写其他的内容【1:需要】【2:不需要】
  147 +}
  148 +
  149 +func NewCheckQuestion(checkItem, title string, groupId int64, ops []CheckOption) *CheckQuestion {
  150 + return &CheckQuestion{
  151 + CheckItem: checkItem,
  152 + Title: title,
  153 + GroupId: groupId,
  154 + CheckOptions: ops,
  155 + }
  156 +}
  157 +
  158 +/*CheckQuestions 自查问题列表*/
  159 +type CheckQuestionsRequest struct {
  160 + ChanceId int64 `json:"chanceId" valid:"Required"`
  161 +}
  162 +type CheckQuestionsResponse struct {
  163 + Questions []*CheckQuestion `json:"questions"`
  164 +}
@@ -61,9 +61,9 @@ func init() { @@ -61,9 +61,9 @@ func init() {
61 var ApproveLog = map[int]string{ 61 var ApproveLog = map[int]string{
62 1: "提交了机会", //提交人提交机会 62 1: "提交了机会", //提交人提交机会
63 2: "删除了机会", //提交人删除机会 63 2: "删除了机会", //提交人删除机会
64 - 3: "退回了机会", //审批人退回机会  
65 - 4: "通过了机会;基础评分:%v分,附加评分:%v分,价值评分:%v分,公开状态:公司公开", //审批人通过机会(公司公开)  
66 - 5: "通过了机会;基础评分:%v分,附加评分:%v分,价值评分:%v分,公开状态:%v", //审批人通过机会(部门公开) 测试部、销售部 64 + 3: "退回了机会;\n%v", //审批人退回机会
  65 + 4: "通过了机会;\n%v\n基础评分:%v分,附加评分:%v分,价值评分:%v分,公开状态:公司公开", //审批人通过机会(公司公开)
  66 + 5: "通过了机会;\n%v\n基础评分:%v分,附加评分:%v分,价值评分:%v分,公开状态:%v", //审批人通过机会(部门公开) 测试部、销售部
67 6: "系统 自动通过了机会;基础评分:%v分,附加评分:%v分,价值评分:%v分,公开状态:公司公开", //审批人通过了机会(系统自动通过) 67 6: "系统 自动通过了机会;基础评分:%v分,附加评分:%v分,价值评分:%v分,公开状态:公司公开", //审批人通过了机会(系统自动通过)
68 7: "修改了公开状态:公司公开", //审批通过后修改公开状态(公司公开) 68 7: "修改了公开状态:公司公开", //审批通过后修改公开状态(公司公开)
69 8: "修改了公开状态:%v", //审批通过后修改公开状态(部门公开) 69 8: "修改了公开状态:%v", //审批通过后修改公开状态(部门公开)
1 package agg 1 package agg
2 2
3 import ( 3 import (
  4 + "encoding/json"
4 "fmt" 5 "fmt"
  6 + "github.com/astaxie/beego/orm"
5 "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" 7 "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
6 "opp/internal/utils" 8 "opp/internal/utils"
7 "opp/models" 9 "opp/models"
@@ -233,3 +235,79 @@ func SetMsgItem(header *protocol.RequestHeader, msg protocol.MsgItemOrm, commIte @@ -233,3 +235,79 @@ func SetMsgItem(header *protocol.RequestHeader, msg protocol.MsgItemOrm, commIte
233 commItem.SourceId = msg.SourceId 235 commItem.SourceId = msg.SourceId
234 commItem.SourceType = msg.SourceType 236 commItem.SourceType = msg.SourceType
235 } 237 }
  238 +
  239 +//获取自查问题列表 通过模板
  240 +func GetCheckQuestionsByTemplateId(id int64) (rsp []*protocol.CheckQuestion, err error) {
  241 + var (
  242 + checks []*models.AuditCheck
  243 + )
  244 + rsp = make([]*protocol.CheckQuestion, 0)
  245 + if checks, err = models.GetAuditCheckBy(id); err != nil {
  246 + log.Error(err)
  247 + return
  248 + }
  249 + if len(checks) == 0 {
  250 + return
  251 + }
  252 + var tmpGroupId int64
  253 + var idx int = 0
  254 + var groupIdx = 0
  255 + for i := range checks {
  256 + c := checks[i]
  257 +
  258 + if tmpGroupId != c.Pid {
  259 + groupIdx++
  260 + idx = 0
  261 + }
  262 + tmpGroupId = c.Pid
  263 + item := protocol.NewCheckQuestion(c.Title, getQuestionTitle(groupIdx, idx, c.Title), c.Pid, protocol.CheckOptionsCommit)
  264 + rsp = append(rsp, item)
  265 + idx++
  266 + }
  267 + return
  268 +}
  269 +
  270 +//获取自查问题列表 通过机会(历史模板)
  271 +func GetCheckQuestionsByChanceId(id int64) (rsp []*protocol.CheckQuestion, err error) {
  272 + var (
  273 + chance *models.Chance
  274 + selfChecks protocol.SelfChecks
  275 + )
  276 + rsp = make([]*protocol.CheckQuestion, 0)
  277 + if err = utils.ExecuteQueryOne(&chance, models.SqlGetChanceSelfChecks, id); err != nil {
  278 + if err == orm.ErrNoRows {
  279 + err = nil
  280 + return
  281 + }
  282 + log.Error(err)
  283 + return
  284 + }
  285 + if len(chance.SelfChecks) == 0 {
  286 + return
  287 + }
  288 + if e := json.Unmarshal([]byte(chance.SelfChecks), &selfChecks); e != nil {
  289 + log.Error(e)
  290 + return
  291 + }
  292 + var tmpGroupId int64
  293 + var idx int = 0
  294 + var groupIdx = 0
  295 + for i := range selfChecks {
  296 + c := selfChecks[i]
  297 + if tmpGroupId != c.GroupId {
  298 + groupIdx++
  299 + idx = 0
  300 + }
  301 + item := protocol.NewCheckQuestion(c.CheckItem, getQuestionTitle(groupIdx, idx, c.CheckItem), c.GroupId, protocol.CheckOptionsCommit)
  302 + rsp = append(rsp, item)
  303 + idx++
  304 + }
  305 + return
  306 +}
  307 +
  308 +func getQuestionTitle(groupIdx int, idx int, title string) string {
  309 + if idx == 0 {
  310 + return fmt.Sprintf("%v、%v?", groupIdx, title)
  311 + }
  312 + return fmt.Sprintf("%v.%v、%v?", groupIdx, idx, title)
  313 +}
@@ -276,6 +276,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro @@ -276,6 +276,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro
276 mapProcess = make(map[string]interface{}) 276 mapProcess = make(map[string]interface{})
277 mapChance = make(map[string]interface{}) 277 mapChance = make(map[string]interface{})
278 result *protocol.ChanceCalculateScoreResponse 278 result *protocol.ChanceCalculateScoreResponse
  279 + difChecks protocol.SelfChecks
279 ) 280 )
280 rsp = &protocol.ChanceApproveResponse{} 281 rsp = &protocol.ChanceApproveResponse{}
281 //TODO:测试注入 282 //TODO:测试注入
@@ -308,6 +309,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro @@ -308,6 +309,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro
308 err = protocol.NewErrWithMessage(5202) 309 err = protocol.NewErrWithMessage(5202)
309 return 310 return
310 } 311 }
  312 + difChecks, _ = request.SelfChecks.Compare(chance.SelfChecks)
311 { 313 {
312 if request.ReviewStatus == protocol.ReviewStatusPass { 314 if request.ReviewStatus == protocol.ReviewStatusPass {
313 //计算发现分 315 //计算发现分
@@ -325,6 +327,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro @@ -325,6 +327,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro
325 mapProcess["ApproveTime"] = time.Now() 327 mapProcess["ApproveTime"] = time.Now()
326 mapProcess["IsActive"] = int8(0) 328 mapProcess["IsActive"] = int8(0)
327 mapProcess["UpdateAt"] = time.Now() 329 mapProcess["UpdateAt"] = time.Now()
  330 + mapProcess["SelfChecks"] = common.AssertJson(difChecks)
328 331
329 mapChance["ApproveTime"] = time.Now() 332 mapChance["ApproveTime"] = time.Now()
330 mapChance["BasicScore"] = request.ApproveData.Score.BasicScore 333 mapChance["BasicScore"] = request.ApproveData.Score.BasicScore
@@ -341,13 +344,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro @@ -341,13 +344,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro
341 mapProcess["DiscoveryScore"] = request.ApproveData.Score.DiscoveryScore 344 mapProcess["DiscoveryScore"] = request.ApproveData.Score.DiscoveryScore
342 mapProcess["ApproveData"] = common.AssertJson(request.ApproveData) 345 mapProcess["ApproveData"] = common.AssertJson(request.ApproveData)
343 mapProcess["EnableStatus"] = int8(1) 346 mapProcess["EnableStatus"] = int8(1)
344 -  
345 - //mapChance["BasicScore"] = request.ApproveData.Score.BasicScore  
346 - //mapChance["ExtraScore"] = request.ApproveData.Score.ExtraScore  
347 - //mapChance["ValueScore"] = request.ApproveData.Score.ValueScore  
348 - //mapChance["DiscoveryScore"] = request.ApproveData.Score.DiscoveryScore  
349 - //mapChance["ApproveData"] = common.AssertJson(request.ApproveData)  
350 - //mapChance["PublishStatus"] = request.ApproveData.PublicData.PublishStatus 347 + mapChance["SelfChecks"] = common.AssertJson(request.SelfChecks)
351 } 348 }
352 } 349 }
353 log.Info(fmt.Sprintf("用户:%v 提交审核 机会编号:%v 审批流编号:%v 审批状态:%v", header.UserId, chance.Id, process.Id, request.ReviewStatus)) 350 log.Info(fmt.Sprintf("用户:%v 提交审核 机会编号:%v 审批流编号:%v 审批状态:%v", header.UserId, chance.Id, process.Id, request.ReviewStatus))
@@ -384,16 +381,6 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro @@ -384,16 +381,6 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro
384 { 381 {
385 mapChance["ReviewStatus"] = int8(request.ReviewStatus) 382 mapChance["ReviewStatus"] = int8(request.ReviewStatus)
386 } 383 }
387 - //发送审核结果消息给提交人  
388 - //for i := range approveItemResponse.MessageData.ApplyUserMessage {  
389 - // message := approveItemResponse.MessageData.ApplyUserMessage[i]  
390 - // nextApprovers = append(nextApprovers, message.ReceiverInfo.ReceiverUid)  
391 - // if err = agg.SendApprovedMsg(message.ReceiverInfo.ReceiverUid, message.ReceiverInfo.ReceiverName,  
392 - // header.CompanyId, chance.Id, chance.ChanceTypeId, request.ReviewStatus, protocol.MsgTypeAuditBy); err != nil {  
393 - // log.Error(err)  
394 - // return  
395 - // }  
396 - //}  
397 } else { 384 } else {
398 //发送下一个消息给下一流程的审核人 385 //发送下一个消息给下一流程的审核人
399 for i := range approveItemResponse.MessageData.ApproveMessage { 386 for i := range approveItemResponse.MessageData.ApproveMessage {
@@ -423,7 +410,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro @@ -423,7 +410,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro
423 } 410 }
424 } 411 }
425 } 412 }
426 - if err = saveApproveMsgByApproveData(header, orm, request.ReviewStatus, chance, request.ApproveData); err != nil { 413 + if err = saveApproveMsgByApproveData(header, orm, request.ReviewStatus, chance, request.ApproveData, difChecks); err != nil {
427 orm.Rollback() 414 orm.Rollback()
428 log.Error("发送审核日志失败", err) 415 log.Error("发送审核日志失败", err)
429 return 416 return
@@ -486,7 +473,7 @@ func ProcessIntegrate(header *protocol.RequestHeader, request *ProcessIntegrateR @@ -486,7 +473,7 @@ func ProcessIntegrate(header *protocol.RequestHeader, request *ProcessIntegrateR
486 } 473 }
487 474
488 //发送审核日志 475 //发送审核日志
489 -func saveApproveMsgByApproveData(header *protocol.RequestHeader, orm orm.Ormer, reviewStatus int, chance *models.Chance, approveData protocol.ApproveData) (err error) { 476 +func saveApproveMsgByApproveData(header *protocol.RequestHeader, orm orm.Ormer, reviewStatus int, chance *models.Chance, approveData protocol.ApproveData, selfChecks protocol.SelfChecks) (err error) {
490 var ( 477 var (
491 parames = make([]interface{}, 0) 478 parames = make([]interface{}, 0)
492 code = 0 479 code = 0
@@ -494,11 +481,12 @@ func saveApproveMsgByApproveData(header *protocol.RequestHeader, orm orm.Ormer, @@ -494,11 +481,12 @@ func saveApproveMsgByApproveData(header *protocol.RequestHeader, orm orm.Ormer,
494 if reviewStatus == protocol.ReviewStatusReturn { 481 if reviewStatus == protocol.ReviewStatusReturn {
495 //发送退回日志 482 //发送退回日志
496 code = 3 483 code = 3
  484 + parames = append(parames, selfChecks.String())
497 } 485 }
498 if reviewStatus == protocol.ReviewStatusPass { 486 if reviewStatus == protocol.ReviewStatusPass {
499 //发送通过日志 487 //发送通过日志
500 score := approveData.Score 488 score := approveData.Score
501 - parames = append(parames, []interface{}{score.BasicScore, score.ExtraScore, score.ValueScore}...) 489 + parames = append(parames, []interface{}{selfChecks.String(), score.BasicScore, score.ExtraScore, score.ValueScore}...)
502 if approveData.PublicData.PublishStatus == protocol.PublicToCompany { 490 if approveData.PublicData.PublishStatus == protocol.PublicToCompany {
503 code = 4 491 code = 4
504 } 492 }
@@ -561,6 +549,7 @@ func ChanceApproveProcess(header *protocol.RequestHeader, chance *models.Chance) @@ -561,6 +549,7 @@ func ChanceApproveProcess(header *protocol.RequestHeader, chance *models.Chance)
561 Uid: process.Uid, 549 Uid: process.Uid,
562 Name: process.UserName, 550 Name: process.UserName,
563 } 551 }
  552 + utils.JsonUnmarshal(process.SelfChecks, &item.SelfChecks)
564 if item.ApproveType == protocol.AuditBySpecailUser { 553 if item.ApproveType == protocol.AuditBySpecailUser {
565 item.ApproveType = protocol.AuditByUser 554 item.ApproveType = protocol.AuditByUser
566 } 555 }
@@ -292,6 +292,10 @@ func Template(header *protocol.RequestHeader, request *protocol.TemplateRequest) @@ -292,6 +292,10 @@ func Template(header *protocol.RequestHeader, request *protocol.TemplateRequest)
292 if len(item.Example) > 0 { 292 if len(item.Example) > 0 {
293 template.Link = fmt.Sprintf("%v/#/ability/opportunity?id=%v", beego.AppConfig.String("h5_host"), item.Id) 293 template.Link = fmt.Sprintf("%v/#/ability/opportunity?id=%v", beego.AppConfig.String("h5_host"), item.Id)
294 } 294 }
  295 + if template.Question, err = agg.GetCheckQuestionsByTemplateId(templates.Id); err != nil {
  296 + log.Error(err)
  297 + return
  298 + }
295 for j := range forms { 299 for j := range forms {
296 form := forms[j] 300 form := forms[j]
297 template.FormList[j] = &protocol.Form{ 301 template.FormList[j] = &protocol.Form{
@@ -395,6 +399,7 @@ func ChanceSubmit(header *protocol.RequestHeader, request *protocol.ChanceSubmit @@ -395,6 +399,7 @@ func ChanceSubmit(header *protocol.RequestHeader, request *protocol.ChanceSubmit
395 DepartmentId: request.RelatedDepartment, 399 DepartmentId: request.RelatedDepartment,
396 Code: fmt.Sprintf("%v%v", chanceType.Code, template.Code), 400 Code: fmt.Sprintf("%v%v", chanceType.Code, template.Code),
397 Status: models.ChanceStatusOpen, 401 Status: models.ChanceStatusOpen,
  402 + SelfChecks: common.AssertJson(request.SelfChecks),
398 } 403 }
399 //生成提交记录 404 //生成提交记录
400 if _, err = orm.Insert(GenAuditFlowProcess_Submit(header.UserId, chance.Id, template.Id, protocol.ReviewStatusSubmit)); err != nil { 405 if _, err = orm.Insert(GenAuditFlowProcess_Submit(header.UserId, chance.Id, template.Id, protocol.ReviewStatusSubmit)); err != nil {
@@ -591,13 +596,13 @@ func ChanceUpdate(header *protocol.RequestHeader, request *protocol.ChanceUpdate @@ -591,13 +596,13 @@ func ChanceUpdate(header *protocol.RequestHeader, request *protocol.ChanceUpdate
591 //6.更新文件 596 //6.更新文件
592 { 597 {
593 if chanceData, err = models.GetChanceDataByChanceId(chance.Id); err == nil { 598 if chanceData, err = models.GetChanceDataByChanceId(chance.Id); err == nil {
594 -  
595 - if err = utils.UpdateTableByMapWithOrmer(orm, chanceData, map[string]interface{}{ 599 + chanceDataMap := map[string]interface{}{
596 "Speechs": common.AssertJson(request.Speechs), 600 "Speechs": common.AssertJson(request.Speechs),
597 "Images": common.AssertJson(request.Pictures), 601 "Images": common.AssertJson(request.Pictures),
598 "Videos": common.AssertJson(request.Videos), 602 "Videos": common.AssertJson(request.Videos),
599 "UpdateAt": time.Now(), 603 "UpdateAt": time.Now(),
600 - }); err != nil { 604 + }
  605 + if err = utils.UpdateTableByMapWithOrmer(orm, chanceData, chanceDataMap); err != nil {
601 log.Error(err) 606 log.Error(err)
602 orm.Rollback() 607 orm.Rollback()
603 return 608 return
@@ -700,6 +705,7 @@ func ChanceUpdate(header *protocol.RequestHeader, request *protocol.ChanceUpdate @@ -700,6 +705,7 @@ func ChanceUpdate(header *protocol.RequestHeader, request *protocol.ChanceUpdate
700 //机会发布 并且当前机会不是已经通过的,机会状态审核中(存在更新时自动通过) 705 //机会发布 并且当前机会不是已经通过的,机会状态审核中(存在更新时自动通过)
701 if request.IsPublish && chance.ReviewStatus != protocol.ReviewStatusPass { 706 if request.IsPublish && chance.ReviewStatus != protocol.ReviewStatusPass {
702 updateMap["ReviewStatus"] = int8(protocol.ReviewStatusAuditging) 707 updateMap["ReviewStatus"] = int8(protocol.ReviewStatusAuditging)
  708 + updateMap["SelfChecks"] = common.AssertJson(request.SelfChecks)
703 } 709 }
704 updateMap["AuditTemplateConfig"] = common.AssertJson(auditConfig) 710 updateMap["AuditTemplateConfig"] = common.AssertJson(auditConfig)
705 updateMap["Content"] = request.Content 711 updateMap["Content"] = request.Content
@@ -1655,7 +1661,6 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove @@ -1655,7 +1661,6 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove
1655 commItem.ChanceStatus = protocol.ChanceStatusDelete 1661 commItem.ChanceStatus = protocol.ChanceStatusDelete
1656 log.Error(chance.ChanceUserId, header.CompanyId, err) 1662 log.Error(chance.ChanceUserId, header.CompanyId, err)
1657 err = nil 1663 err = nil
1658 - //return  
1659 } else { 1664 } else {
1660 item := protocol.ChanceItem{ 1665 item := protocol.ChanceItem{
1661 Id: chance.ChanceId, 1666 Id: chance.ChanceId,
@@ -1663,8 +1668,6 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove @@ -1663,8 +1668,6 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove
1663 CreateTime: chance.CreateTime.Unix() * 1000, 1668 CreateTime: chance.CreateTime.Unix() * 1000,
1664 UpdateTime: chance.UpdateTime.Unix() * 1000, 1669 UpdateTime: chance.UpdateTime.Unix() * 1000,
1665 ApproveTime: chance.ChanceApproveTime.Unix() * 1000, 1670 ApproveTime: chance.ChanceApproveTime.Unix() * 1000,
1666 - //CreateTime:chance.c  
1667 - //CreateTime: chance.CreateTime.Unix() * 1000,  
1668 } 1671 }
1669 if item.ApproveTime < 0 { 1672 if item.ApproveTime < 0 {
1670 item.ApproveTime = chance.UpdateTime.Unix() * 1000 1673 item.ApproveTime = chance.UpdateTime.Unix() * 1000
@@ -1678,8 +1681,7 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove @@ -1678,8 +1681,7 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove
1678 } 1681 }
1679 } 1682 }
1680 approve := protocol.Approve{ 1683 approve := protocol.Approve{
1681 - ProcessId: chance.Id,  
1682 - //Provider:provider, 1684 + ProcessId: chance.Id,
1683 CreateTime: chance.ProcessCreateTime.Unix() * 1000, 1685 CreateTime: chance.ProcessCreateTime.Unix() * 1000,
1684 } 1686 }
1685 //审核过的才有审核时间 1687 //审核过的才有审核时间
@@ -1701,6 +1703,7 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove @@ -1701,6 +1703,7 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove
1701 commItem.Score = approveData.Score 1703 commItem.Score = approveData.Score
1702 } 1704 }
1703 } 1705 }
  1706 + commItem.SelfCheckResult = protocol.NewSelfChecks(chance.SelfChecks).Static()
1704 rsp.List = append(rsp.List, commItem) 1707 rsp.List = append(rsp.List, commItem)
1705 } 1708 }
1706 return 1709 return
@@ -2084,6 +2087,7 @@ func ChanceDetail(header *protocol.RequestHeader, request *protocol.ChanceDetail @@ -2084,6 +2087,7 @@ func ChanceDetail(header *protocol.RequestHeader, request *protocol.ChanceDetail
2084 UpdateTime: chance.UpdateAt.Unix() * 1000, 2087 UpdateTime: chance.UpdateAt.Unix() * 1000,
2085 } 2088 }
2086 jsonUnmarshal(chance.SourceContent, &item.FormList) 2089 jsonUnmarshal(chance.SourceContent, &item.FormList)
  2090 + jsonUnmarshal(chance.SelfChecks, &item.SelfChecks)
2087 item.FormList = clearEmptyForm(item.FormList) 2091 item.FormList = clearEmptyForm(item.FormList)
2088 2092
2089 if chanceData, err = models.GetChanceDataByChanceId(chance.Id); err == nil { 2093 if chanceData, err = models.GetChanceDataByChanceId(chance.Id); err == nil {
@@ -2324,3 +2328,14 @@ func ChanceReviseDetail(header *protocol.RequestHeader, request *protocol.Chance @@ -2324,3 +2328,14 @@ func ChanceReviseDetail(header *protocol.RequestHeader, request *protocol.Chance
2324 rsp.ChanceId = detail.ChanceId 2328 rsp.ChanceId = detail.ChanceId
2325 return 2329 return
2326 } 2330 }
  2331 +
  2332 +//自查问题列表
  2333 +func CheckQuestions(header *protocol.RequestHeader, request *protocol.CheckQuestionsRequest) (rsp *protocol.CheckQuestionsResponse, err error) {
  2334 + var ()
  2335 + rsp = &protocol.CheckQuestionsResponse{}
  2336 + rsp.Questions, err = agg.GetCheckQuestionsByChanceId(request.ChanceId)
  2337 + if err != nil {
  2338 + log.Error(err)
  2339 + }
  2340 + return
  2341 +}