Browse Source

feat(新增审批单详情接口)

Roc 3 years ago
parent
commit
4957cb7bc1

+ 115 - 1
controllers/approval.go

@@ -126,6 +126,120 @@ func (this *ApprovalCommon) List() {
 	this.OkDetailed(resp, "获取成功")
 }
 
+// @Title 获取审批单详情接口
+// @Description 获取审批单详情接口
+// @Param   CompanyApprovalId   query   int  true       "审批单id"
+// @Success 200 {object} approval.CompanyApprovalDetailResp
+// @router /detail [get]
+func (this *ApprovalCommon) Detail() {
+	sysUser := this.AdminWx
+	roleTypeCode := sysUser.RoleTypeCode
+
+	companyApprovalId, _ := this.GetInt("CompanyApprovalId")
+	var condition string
+	var pars []interface{}
+
+	if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN { //审批
+		condition += ` AND c.approve_role_type_code=? `
+		pars = append(pars, roleTypeCode)
+	} else if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER { //销售
+		condition += ` AND c.apply_user_id=? `
+		pars = append(pars, sysUser.AdminId)
+	}
+
+	item, err := company_approval.GetApprovalListByApprovalId(condition, pars, companyApprovalId)
+	if err != nil {
+		this.FailWithMessage("获取失败", "获取数据失败,Err:"+err.Error())
+		return
+	}
+	if item.FreezeStartDate != "" && item.FreezeEndDate != "" && item.Status == utils.COMPANY_STATUS_FREEZE {
+		freezeEndDate, _ := time.Parse(utils.FormatDate, item.FreezeEndDate)
+		if time.Now().Before(freezeEndDate) {
+			expireDays := freezeEndDate.Sub(time.Now()).Hours() / 24
+			item.FreezeExpireDays = int(expireDays)
+		}
+	}
+	if item.StartDate != "" && item.EndDate != "" {
+		endDate, _ := time.Parse(utils.FormatDate, item.EndDate)
+		if time.Now().Before(endDate) {
+			expireDays := endDate.Sub(time.Now()).Hours() / 24
+			item.ExpireDay = int(expireDays)
+		}
+	}
+
+	approvalCount, err := company_approval.GetCompanyApprovalCount(item.CompanyId, item.ProductId)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		this.FailWithMessage("获取失败", "获取延期审批次数失败,Err:"+err.Error())
+		return
+	}
+	item.ApprovalCount = approvalCount
+
+	//if item.ApplyMethod == 3 {
+	//	delayPermission, err := company_delay_permission.GetApplyDelayPermission(item.CompanyApprovalId)
+	//	if err != nil && err.Error() != utils.ErrNoRow() {
+	//		this.FailWithMessage("获取失败", "获取延期审批权限失败,Err:"+err.Error())
+	//		return
+	//	}
+	//	item.DelayPermission = delayPermission
+	//}
+
+	resp := approval.CompanyApprovalDetailResp{
+		CompanyApprovalDetail: item,
+	}
+
+	//获取权限列表
+
+	//子权限切片集合
+	var permissionClassifyArr []string
+	if item.ProductId == 1 {
+		for _, v := range utils.PermissionFiccClassifyArr {
+			permissionClassifyArr = append(permissionClassifyArr, v)
+		}
+	} else {
+		permissionClassifyArr = append(permissionClassifyArr, "权益")
+	}
+
+	//获取需要审批的权限
+	delayPermissionList, err := company_delay_permission.GetDelayPermissionItems(item.CompanyId, item.CompanyApprovalId)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		this.FailWithMessage("获取失败", "获取审批权限失败,Err:"+err.Error())
+		return
+	}
+
+	delayPermissionIdMap := make(map[int]int)
+	for _, delayPermission := range delayPermissionList {
+		delayPermissionIdMap[delayPermission.ChartPermissionId] = 0
+	}
+
+	//遍历获取
+	for _, v := range permissionClassifyArr {
+		checkList := make([]int, 0)
+		plist := new(company_report_permission.PermissionLookList)
+		items, err := company_report_permission.GetPermissionLookItems(item.ProductId, v)
+		if err != nil {
+			this.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
+			return
+		}
+		for _, n := range items {
+			if _, ok := delayPermissionIdMap[n.ChartPermissionId]; ok {
+				checkList = append(checkList, n.ChartPermissionId)
+			}
+		}
+		plist.Items = items
+		plist.ClassifyName = v
+		plist.CheckList = checkList
+
+		if item.ProductId == 1 {
+			resp.FiccPermissionList = append(resp.FiccPermissionList, plist)
+		} else {
+			resp.PermissionList = append(resp.PermissionList, plist)
+		}
+
+	}
+
+	this.OkDetailed(resp, "获取成功")
+}
+
 // @Title 获取审批单中的权限列表
 // @Description 获取审批单中的权限列表接口
 // @Param   ApprovalId   query   int  true       "审批单id"
@@ -236,7 +350,7 @@ func (this *ApprovalCommon) ApplyApprove() {
 		return
 	}
 
-	approvalItem, err := company_approval.GetCompanyApprovalById(req.CompanyId, productId)
+	approvalItem, err := company_approval.GetCompanyApprovalByCompanyId(req.CompanyId, productId)
 	if err != nil {
 		if err.Error() == utils.ErrNoRow() {
 			this.FailWithMessage("订单已审批,请刷新页面查看最新状态", "待审批信息不存在,CompanyId:"+strconv.Itoa(req.CompanyId)+";productId:"+strconv.Itoa(productId))

+ 1 - 0
models/request/approval/approval.go

@@ -2,6 +2,7 @@ package approval
 
 type CompanyApplyApproveReq struct {
 	CompanyId         int    `description:"客户id"`
+	CompanyApprovalId int    `description:"审批单id"`
 	Status            int    `description:"审批状态,1:通过,2:拒绝"`
 	Remark            string `description:"审批理由"`
 	CompanyContractId int    `description:"合同id"`

+ 6 - 0
models/response/approval/approval.go

@@ -11,6 +11,12 @@ type CompanyApprovalListResp struct {
 	List   []*company_approval.CompanyApprovalList
 }
 
+//审批单详情
+type CompanyApprovalDetailResp struct {
+	CompanyApprovalDetail *company_approval.CompanyApprovalList
+	CompanyPermissionResp
+}
+
 //客户权限列表
 type CompanyPermissionResp struct {
 	FiccPermissionList []*company_report_permission.PermissionLookList `description:"Ficc权限列表"`

+ 27 - 1
models/tables/company_approval/company_approval.go

@@ -58,13 +58,21 @@ func GetCompanyApprovalCountById(companyId, productId int) (count int, err error
 	return
 }
 
-func GetCompanyApprovalById(companyId, productId int) (item *CompanyApproval, err error) {
+func GetCompanyApprovalByCompanyId(companyId, productId int) (item *CompanyApproval, err error) {
 	sql := `SELECT * FROM company_approval WHERE company_id=? AND product_id=? AND approve_status='待审批' LIMIT 1 `
 	o := orm.NewOrm()
 	err = o.Raw(sql, companyId, productId).QueryRow(&item)
 	return
 }
 
+//根据审批单id获取审批单详情
+func GetCompanyApprovalById(companyApprovalId int) (item *CompanyApproval, err error) {
+	sql := `SELECT * FROM company_approval WHERE company_approval_id=? LIMIT 1 `
+	o := orm.NewOrm()
+	err = o.Raw(sql, companyApprovalId).QueryRow(&item)
+	return
+}
+
 func GetCompanyApprovalByApprovalId(companyApprovalId int) (item *CompanyApproval, err error) {
 	sql := `SELECT * FROM company_approval WHERE company_approval_id=? LIMIT 1 `
 	o := orm.NewOrm()
@@ -123,6 +131,24 @@ func GetApprovalList(condition string, pars []interface{}, startSize, pageSize i
 	return
 }
 
+func GetApprovalListByApprovalId(condition string, pars []interface{}, companyApprovalId int) (item *CompanyApprovalList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT a.company_id,b.product_id,a.company_name,a.credit_code,a.address,b.company_type,b.industry_name,
+			b.seller_name,b.create_time,b.freeze_start_date,b.freeze_end_date,b.source,c.create_time AS approval_time,c.approve_time,b.status,
+            c.approve_content,c.approve_status,c.apply_method,c.apply_reasons,c.approve_remark,b.start_date,b.end_date,c.company_approval_id,c.company_contract_id,
+            c.apply_real_name
+			FROM company AS a
+			INNER JOIN company_product AS b ON a.company_id=b.company_id
+			INNER JOIN company_approval AS c ON b.company_id=c.company_id AND b.product_id=c.product_id
+ 			WHERE 1=1 AND company_approval_id=?`
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY c.modify_time DESC `
+	err = o.Raw(sql, companyApprovalId, pars).QueryRow(&item)
+	return
+}
+
 func GetApprovalCount(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT COUNT(1) AS count