|
@@ -2,6 +2,7 @@ package biapprove
|
|
|
|
|
|
import (
|
|
|
"encoding/json"
|
|
|
+ "eta_gn/eta_api/models"
|
|
|
biapprove "eta_gn/eta_api/models/bi_approve"
|
|
|
"eta_gn/eta_api/models/bi_approve/response"
|
|
|
"eta_gn/eta_api/models/bi_dashboard"
|
|
@@ -864,3 +865,136 @@ func RefuseBiApprove(approveItem *biapprove.BiApprove, recordItem *biapprove.BiA
|
|
|
}()
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+func BiApproveCancel(biApproveId, adminId int, adminName string) (msg string, err error) {
|
|
|
+ approveItem, e := biapprove.GetBiApproveById(biApproveId)
|
|
|
+ if e != nil {
|
|
|
+ if utils.IsErrNoRow(e) {
|
|
|
+ msg = "审批已被删除, 请刷新页面"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ msg = "操作失败"
|
|
|
+ err = fmt.Errorf("GetBiApproveById err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if approveItem.ApplyUserId != adminId {
|
|
|
+ msg = "非申请人不可撤销"
|
|
|
+ err = fmt.Errorf("非申请人不可撤销")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 撤销审批
|
|
|
+ e = cancelBiApprove(approveItem.BiId, approveItem.BiApproveId, adminId, adminName)
|
|
|
+ if e != nil {
|
|
|
+ msg = "操作失败"
|
|
|
+ err = fmt.Errorf("cancelBiApprove err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// cancelBiApprove 撤回审批
|
|
|
+func cancelBiApprove(biId, approveId, sysAdminId int, sysAdminName string) (err error) {
|
|
|
+ // 默认内部审批, 如果是走的第三方审批, 那么仅修改状态
|
|
|
+ confMap, e := models.GetBusinessConf()
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("GetBusinessConf err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ openMap := map[string]bool{"false": false, "true": true}
|
|
|
+ openApprove := openMap[confMap[models.BusinessConfIsBIApprove]]
|
|
|
+ if !openApprove {
|
|
|
+ //err = fmt.Errorf("未开启审批")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 修改审批信息状态
|
|
|
+ approveItem, e := biapprove.GetBiApproveById(approveId)
|
|
|
+ if e != nil {
|
|
|
+ if utils.IsErrNoRow(e) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = fmt.Errorf("approve GetItemById err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if approveItem.State == BiApproveStateCancel {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ approveItem.State = BiApproveStateCancel
|
|
|
+ approveItem.ModifyTime = time.Now()
|
|
|
+ cols := []string{"State", "ModifyTime"}
|
|
|
+ if e = approveItem.Update(cols); e != nil {
|
|
|
+ err = fmt.Errorf("approve Update err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 修改报告状态
|
|
|
+ e = updateBiApproveState(biId, 0, BiStateWaitSubmit)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("更新报告审批撤回失败, Err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 推送撤回消息
|
|
|
+ go func() {
|
|
|
+ recordOb := new(biapprove.BiApproveRecord)
|
|
|
+ recordCond := fmt.Sprintf(` AND %s = ?`, biapprove.BiApproveRecordCols.BiApproveId)
|
|
|
+ recordPars := make([]interface{}, 0)
|
|
|
+ recordPars = append(recordPars, approveId)
|
|
|
+ recordItems, e := recordOb.GetItemsByCondition(recordCond, recordPars, []string{}, "")
|
|
|
+ if e != nil {
|
|
|
+ utils.FileLog.Info(fmt.Sprintf("approve record GetItemsByCondition err: %s", e.Error()))
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ messageOb := new(biapprove.BiApproveMessage)
|
|
|
+ messages := make([]*biapprove.BiApproveMessage, 0)
|
|
|
+ for _, v := range recordItems {
|
|
|
+ m := new(biapprove.BiApproveMessage)
|
|
|
+ m.SendUserId = sysAdminId
|
|
|
+ m.ReceiveUserId = v.ApproveUserId
|
|
|
+ m.Content = fmt.Sprintf("%s提交的【看板审批】已撤回", sysAdminName)
|
|
|
+ m.BiApproveId = approveId
|
|
|
+ m.ApproveState = BiApproveStateCancel
|
|
|
+ m.CreateTime = time.Now().Local()
|
|
|
+ m.ModifyTime = time.Now().Local()
|
|
|
+ messages = append(messages, m)
|
|
|
+ }
|
|
|
+ e = messageOb.CreateMulti(messages)
|
|
|
+ if e != nil {
|
|
|
+ utils.FileLog.Info(fmt.Sprintf("CancelBiApprove messages err: %s", e.Error()))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// CheckBiOpenApprove 校验报告是否开启了审批流
|
|
|
+func CheckBiOpenApprove(classifyId int) (opening bool, err error) {
|
|
|
+ // 获取审批配置
|
|
|
+ confMap, e := models.GetBusinessConf()
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("GetBusinessConf err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ openMap := map[string]bool{"false": false, "true": true}
|
|
|
+ openApprove := openMap[confMap[models.BusinessConfIsBIApprove]]
|
|
|
+
|
|
|
+ // 查询对应分类是否有审批流
|
|
|
+ flowOb := new(biapprove.BiApproveFlow)
|
|
|
+ flowCond := fmt.Sprintf(` AND %s = ?`, biapprove.BiApproveFlowCols.ClassifyId)
|
|
|
+ flowPars := make([]interface{}, 0)
|
|
|
+ flowPars = append(flowPars, classifyId)
|
|
|
+ flowItem, e := flowOb.GetItemByCondition(flowCond, flowPars, "")
|
|
|
+ if e != nil && !utils.IsErrNoRow(e) {
|
|
|
+ err = fmt.Errorf("ApproveFlow GetItemByCondition err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 开启审批/有审批流
|
|
|
+ if openApprove && (flowItem != nil) {
|
|
|
+ opening = true
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|