Browse Source

fix 客户审批列表调整

Roc 3 years ago
parent
commit
2e7701ddaa

+ 3 - 3
controllers/approval.go

@@ -26,7 +26,7 @@ type ApprovalCommon struct {
 	BaseAuth
 }
 
-// List
+// ListOld
 // @Title 获取审批列表接口
 // @Description 获取审批列表接口
 // @Param   PageSize   query   int  true       "每页数据条数"
@@ -36,8 +36,8 @@ type ApprovalCommon struct {
 // @Param   Keyword   query   string  true       "搜索关键词"
 // @Param   KeywordEq   query   string  true       "搜索关键词(全等)"
 // @Success 200 {object} approval.CompanyApprovalListResp
-// @router /list [get]
-func (c *ApprovalCommon) List() {
+// @router /list_old [get]
+func (c *ApprovalCommon) ListOld() {
 	sysUser := c.AdminWx
 	roleTypeCode := sysUser.RoleTypeCode
 

+ 5 - 117
controllers/approval_new.go

@@ -29,7 +29,7 @@ import (
 // @Param   Keyword   query   string  true       "搜索关键词"
 // @Param   KeywordEq   query   string  true       "搜索关键词(全等)"
 // @Success 200 {object} approval.CompanyApprovalListResp
-// @router /listV2 [get]
+// @router /list [get]
 func (c *ApprovalCommon) ListV2() {
 	sysUser := c.AdminWx
 
@@ -45,16 +45,13 @@ func (c *ApprovalCommon) ListV2() {
 	//join表字段
 	//归属
 	if status == "待审批" {
-		condition += ` AND ( (((c.apply_user_id = ? and a.start_node_id = a.curr_node_id) OR (d.approve_user_id = ? and a.curr_node_id=d.node_id )) and d.approve_status="待审批" or (d.approve_user_id = ? and a.curr_node_id > d.node_id and d.node_type="cc") )`
-		//condition += ` AND ((c.apply_user_id = ? and a.start_node_id = a.curr_node_id) OR (d.approve_user_id = ? )) and d.approve_status="待审批" `
+		condition += ` AND ( (((c.apply_user_id = ? and a.start_node_id = a.curr_node_id) OR (f.approve_user_id = ? and a.curr_node_id=f.node_id ) ) and c.approve_status="待审批") or (f.approve_user_id = ? and a.curr_node_id > f.node_id and f.node_type="cc") )`
+		//condition += ` AND ( (((c.user_id = ? and a.start_node_id = a.curr_node_id) OR (d.approve_user_id = ? and a.curr_node_id=d.node_id)) and d.status="待审批") or (d.approve_user_id = ? and a.curr_node_id > d.node_id and d.node_type="cc") )`
 
 		pars = append(pars, sysUser.AdminId, sysUser.AdminId, sysUser.AdminId)
-	} else if status == "处理中" {
-		condition += ` AND ((c.apply_user_id = ? and a.start_node_id != a.curr_node_id) OR (d.approve_user_id = ? and a.curr_node_id > d.node_id and d.node_type!="cc")) and c.approve_status="待审批" `
-
-		pars = append(pars, sysUser.AdminId, sysUser.AdminId)
 	} else {
-		condition += ` AND (c.apply_user_id = ? or (d.approve_user_id = ? and d.node_id <= a.curr_node_id) )`
+		condition += ` AND (c.apply_user_id = ? or (f.approve_user_id = ? and f.node_id <= a.curr_node_id) )`
+
 		pars = append(pars, sysUser.AdminId, sysUser.AdminId)
 	}
 
@@ -250,115 +247,6 @@ func (c *ApprovalCommon) ListV2() {
 		Paging: page,
 	}, "获取成功")
 }
-func (c *ApprovalCommon) ListNew() {
-	sysUser := c.AdminWx
-	roleTypeCode := sysUser.RoleTypeCode
-
-	pageSize, _ := c.GetInt("PageSize")
-	currentIndex, _ := c.GetInt("CurrentIndex")
-	status := c.GetString("Status")
-	keyword := c.GetString("Keyword")
-	keywordEq := c.GetString("KeywordEq")
-	keyWord := c.GetString("KeyWord")
-	if keyword == "" {
-		keyword = keyWord
-	}
-
-	var startSize int
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-
-	var condition string
-	var pars []interface{}
-
-	if status != "" {
-		if status == "已审批" {
-			condition += ` AND c.approve_status IN('已审批','驳回') `
-		} else {
-			condition += ` AND c.approve_status=? `
-			pars = append(pars, status)
-		}
-	}
-
-	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_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_COMPLIANCE { //超管或者合规
-
-	} else { //销售
-		condition += ` AND c.apply_user_id=? `
-		pars = append(pars, sysUser.AdminId)
-	}
-
-	if keyword != "" {
-		condition += ` AND (a.company_name LIKE '%` + keyword + `%' OR a.credit_code LIKE '%` + keyword + `%') `
-	}
-	if keywordEq != "" {
-		condition += ` AND a.company_name = ? `
-		pars = append(pars, keywordEq)
-	}
-
-	total, err := company_approval.GetApprovalCount(condition, pars)
-	if err != nil {
-		c.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
-		return
-	}
-
-	list, err := company_approval.GetApprovalList(condition, pars, startSize, pageSize)
-	if err != nil {
-		c.FailWithMessage("获取失败", "获取数据失败,Err:"+err.Error())
-		return
-	}
-	listLen := len(list)
-	for i := 0; i < listLen; i++ {
-		item := list[i]
-		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
-				list[i].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
-				list[i].ExpireDay = int(expireDays)
-			}
-		}
-
-		approvalCount, err := company_approval.GetCompanyApprovalCount(item.CompanyId, item.ProductId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			c.FailWithMessage("获取失败", "获取延期审批次数失败,Err:"+err.Error())
-			return
-		}
-		list[i].ApprovalCount = approvalCount
-
-		if item.ApplyMethod == 3 {
-			delayPermission, err := company_delay_permission.GetApplyDelayPermission(item.CompanyApprovalId)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				c.FailWithMessage("获取失败", "获取延期审批权限失败,Err:"+err.Error())
-				return
-			}
-			list[i].DelayPermission = delayPermission
-		}
-		if item.ApproveRoleTypeCode == roleTypeCode {
-			list[i].OpButton = true
-		}
-	}
-
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := approvalResp.CompanyApprovalListResp{
-		Paging: page,
-		List:   list,
-	}
-	c.OkDetailed(resp, "获取成功")
-}
 
 // @Title 获取审批单详情接口
 // @Description 获取审批单详情接口

+ 35 - 29
models/tables/contract_approval/contract_approval.go

@@ -671,21 +671,6 @@ WHERE c.is_delete = 0 AND a.approval_type="seal" `
 	return
 }
 
-func GetCompanyApprovalCount(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT COUNT(1) AS count
-			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 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY c.modify_time DESC `
-	err = o.Raw(sql, pars).QueryRow(&count)
-	return
-}
-
 //审批列表
 type CompanyApprovalList struct {
 	ContractApprovalId       int                     `description:"审批单id"`
@@ -738,20 +723,41 @@ type CompanyApprovalList struct {
 	ApplyRealName        string `description:"申请人姓名"`
 }
 
-func GetCompanyApprovalList(condition string, pars []interface{}, startSize, pageSize int) (items []*CompanyApprovalList, err error) {
+func GetCompanyApprovalCount(condition string, pars []interface{}) (count int, 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 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY c.modify_time DESC LIMIT ?,? `
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	sql := `
+SELECT
+a.contract_approval_id,a.contract_id,a.apply_content,a.contract_detail,a.create_time,a.modify_time,a.status,a.curr_node_id,a.start_node_id,a.apply_user_id,c.approve_time,c.company_approval_id,c.company_id,c.product_id,c.apply_real_name,d.company_type,d.industry_name,d.seller_name,d.status company_product_status,c.approve_status,c.apply_method,c.apply_reasons,d.freeze_start_date,d.freeze_end_date,e.address,d.source,c.approve_remark,d.start_date,d.end_date,c.company_contract_id,e.company_name,e.credit_code
+from contract_approval a
+	join  ( SELECT max( contract_approval_id ) max_id,contract_id FROM contract_approval where 1=1 and approval_type="company" `
+	sql += `  GROUP BY contract_id ) b on a.contract_approval_id=b.max_id
+			INNER JOIN company_approval AS c ON a.contract_id=c.company_approval_id
+			INNER JOIN company_product AS d ON d.company_id=c.company_id AND d.product_id=c.product_id
+			INNER JOIN company AS e ON e.company_id=d.company_id
+	JOIN contract_approval_record f on a.contract_approval_id=f.contract_approval_id 
+ 			WHERE 1=1 and  a.approval_type="company" `
+	sql += condition
+	sql += ` group by contract_id `
+	sql = `select count(1) from (` + sql + `) z `
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}
+
+func GetCompanyApprovalList(condition string, pars []interface{}, startSize, pageSize int) (list []*CompanyApprovalList, err error) {
+	o := orm.NewOrm()
+	sql := `
+SELECT
+a.contract_approval_id,a.contract_id,a.apply_content,a.contract_detail,a.create_time,a.modify_time,a.status,a.curr_node_id,a.start_node_id,a.apply_user_id,c.approve_time,c.company_approval_id,c.company_id,c.product_id,c.apply_real_name,d.company_type,d.industry_name,d.seller_name,d.status company_product_status,c.approve_status,c.apply_method,c.apply_reasons,d.freeze_start_date,d.freeze_end_date,e.address,d.source,c.approve_remark,d.start_date,d.end_date,c.company_contract_id,e.company_name,e.credit_code
+from contract_approval a
+	join  ( SELECT max( contract_approval_id ) max_id,contract_id FROM contract_approval where 1=1 and approval_type="company" `
+	sql += `  GROUP BY contract_id ) b on a.contract_approval_id=b.max_id
+			INNER JOIN company_approval AS c ON a.contract_id=c.company_approval_id
+			INNER JOIN company_product AS d ON d.company_id=c.company_id AND d.product_id=c.product_id
+			INNER JOIN company AS e ON e.company_id=d.company_id
+	JOIN contract_approval_record f on a.contract_approval_id=f.contract_approval_id 
+ 			WHERE 1=1 and  a.approval_type="company" `
+	sql += condition
+	sql += ` group by contract_id order by modify_time desc LIMIT ?,? `
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
 	return
 }