Browse Source

fix(用印、合同):调整已审核的列表数据返回

Roc 3 years ago
parent
commit
87673ae23a

+ 1 - 1
controllers/contract.go

@@ -115,7 +115,7 @@ func (this *ContractCommon) CompanyList() {
 	}
 	status := this.GetString("Status")
 	companyNameList := make([]string, 0)
-	list, err := contract.GetCompanyNameList(companyName, status)
+	list, err := contract.GetCompanyNameList(this.AdminWx.AdminId, companyName, status)
 	if err != nil {
 		this.FailWithMessage("获取客户名称列表失败!", "获取客户名称列表失败,ERR:"+err.Error())
 		return

+ 30 - 10
controllers/contract_approval.go

@@ -124,17 +124,37 @@ func (this *ContractApprovalCommon) List() {
 	}
 	startSize = paging.StartIndex(currentIndex, pageSize)
 
-	//total, err := contract_approval.GetContractApprovalListCount(condition, pars)
-	total, err := contract_approval.GetContractApprovalListCount(childCondition, condition, childPars, pars)
-	if err != nil {
-		this.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
-		return
-	}
+	var total int
+	var list []*contract_approval.ContractApprovalList
 
-	list, err := contract_approval.GetContractApprovalList(childCondition, condition, childPars, pars, startSize, pageSize)
-	if err != nil {
-		this.FailWithMessage("获取审批列表失败!", "获取审批列表失败,Err:"+err.Error())
-		return
+	if status != "待审批" && status != "处理中" {
+		tmpTotal, err := contract_approval.GetContractApprovalListCountV2(childCondition, condition, childPars, pars)
+		if err != nil {
+			this.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
+			return
+		}
+
+		tmpList, err := contract_approval.GetContractApprovalListV2(childCondition, condition, childPars, pars, startSize, pageSize)
+		if err != nil {
+			this.FailWithMessage("获取审批列表失败!", "获取审批列表失败,Err:"+err.Error())
+			return
+		}
+		total = tmpTotal
+		list = tmpList
+	} else {
+		tmpTotal, err := contract_approval.GetContractApprovalListCount(childCondition, condition, childPars, pars)
+		if err != nil {
+			this.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
+			return
+		}
+
+		tmpList, err := contract_approval.GetContractApprovalList(childCondition, condition, childPars, pars, startSize, pageSize)
+		if err != nil {
+			this.FailWithMessage("获取审批列表失败!", "获取审批列表失败,Err:"+err.Error())
+			return
+		}
+		total = tmpTotal
+		list = tmpList
 	}
 
 	if len(list) > 0 {

+ 205 - 2
controllers/seal_approval.go

@@ -67,6 +67,209 @@ func (this *SealApprovalCommon) List() {
 	condition += ` AND (c.user_id = ? or d.approve_user_id = ?)`
 	pars = append(pars, sysUser.AdminId, sysUser.AdminId)
 
+	//合同类型、、更新时间、所选销售
+	//关键字:合同编号、客户名称,社会信用码
+	if use != "" {
+		condition += ` AND c.use = ? `
+		pars = append(pars, use)
+	}
+	if serviceType != "" {
+		condition += ` AND c.service_type = ? `
+		pars = append(pars, serviceType)
+	}
+	if sealType != "" {
+		condition += ` AND c.seal_type = ? `
+		pars = append(pars, sealType)
+	}
+	//审批状态
+	if status != "" {
+		if status == "已审批" {
+			condition += ` AND c.status in ("已审批","已驳回")  `
+		} else {
+			condition += ` AND c.status = ? `
+			pars = append(pars, status)
+		}
+	} else {
+		//childCondition += ` AND status != "已撤回" `
+
+		condition += ` AND c.status not in ("已撤回","待提交")  `
+	}
+	//产品类型
+	if productId > 0 {
+		condition += ` AND c.product_id = ? `
+		pars = append(pars, productId)
+	}
+	//所选销售
+	if sellerIds != "" {
+		condition += ` AND c.user_id IN (` + sellerIds + `) `
+	}
+	//更新开始时间
+
+	//更新开始时间
+	if modifyStartTime != "" {
+		condition += ` AND a.modify_time >= ? `
+		pars = append(pars, modifyStartTime)
+	}
+	//更新结束时间
+	if modifyEndTime != "" {
+		condition += ` AND a.modify_time <= ? `
+		pars = append(pars, modifyEndTime)
+	}
+	//关键字
+	if keyword != "" {
+		condition += ` AND (c.contract_code LIKE '%` + keyword + `%' OR c.company_name LIKE '%` + keyword + `%' OR c.credit_code LIKE '%` + keyword + `%' ) `
+	}
+
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = paging.StartIndex(currentIndex, pageSize)
+
+	var total int
+	var list []*contract_approval.SealApprovalList
+
+	if status != "待审批" && status != "处理中" {
+		tmpTotal, err := contract_approval.GetSealApprovalListCountV2(childCondition, condition, childPars, pars)
+		if err != nil {
+			this.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
+			return
+		}
+
+		tmpList, err := contract_approval.GetSealApprovalListV2(childCondition, condition, childPars, pars, startSize, pageSize)
+		if err != nil {
+			this.FailWithMessage("获取审批列表失败!", "获取审批列表失败,Err:"+err.Error())
+			return
+		}
+		total = tmpTotal
+		list = tmpList
+	} else {
+		tmpTotal, err := contract_approval.GetSealApprovalListCount(childCondition, condition, childPars, pars)
+		if err != nil {
+			this.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
+			return
+		}
+
+		tmpList, err := contract_approval.GetSealApprovalList(childCondition, condition, childPars, pars, startSize, pageSize)
+		if err != nil {
+			this.FailWithMessage("获取审批列表失败!", "获取审批列表失败,Err:"+err.Error())
+			return
+		}
+		total = tmpTotal
+		list = tmpList
+	}
+
+	if len(list) > 0 {
+		contractApprovalIdSlice := make([]string, 0)
+		for i := 0; i < len(list); i++ {
+			contractApprovalIdSlice = append(contractApprovalIdSlice, strconv.Itoa(list[i].ContractApprovalId))
+		}
+		contractApprovalIdStr := strings.Join(contractApprovalIdSlice, ",")
+
+		//获取审批流列表数据
+		contractApprovalRecordList, err := contract_approval_record.GetContractApprovalRecordList(contractApprovalIdStr, sysUser.AdminId)
+		if err != nil {
+			this.FailWithMessage("获取审批列表失败!", "获取审批列表失败,Err:"+err.Error())
+			return
+		}
+		contractApprovalRecordMap := make(map[int]*contract_approval_record.ContractApprovalRecord)
+		for i := 0; i < len(contractApprovalRecordList); i++ {
+			contractApprovalRecordMap[contractApprovalRecordList[i].ContractApprovalId] = contractApprovalRecordList[i]
+		}
+
+		for i := 0; i < len(list); i++ {
+			item := list[i]
+			list[i].CreateTimeStr = item.CreateTime.Format(utils.FormatDateTime)
+			list[i].ModifyTimeStr = item.ModifyTime.Format(utils.FormatDateTime)
+
+			if item.Status == "已审批" || item.Status == "已驳回" {
+				list[i].ApproveTime = item.ModifyTime
+				list[i].ApproveTimeStr = item.ModifyTime.Format(utils.FormatDateTime)
+			}
+
+			//list[i].ContractInfo = contractDetail
+			//校验最新审批流数据
+			//if contractApprovalRecord, has := contractApprovalRecordMap[item.ContractApprovalId]; has {
+			//	//审批流id
+			//	list[i].ContractApprovalRecordId = contractApprovalRecord.ContractApprovalRecordId
+			//	//审批时间
+			//	list[i].ApproveTime = contractApprovalRecord.ApproveTime
+			//	list[i].ApproveTimeStr = contractApprovalRecord.ApproveTime.Format(utils.FormatDateTime)
+			//	//判断是否有操作权限
+			//	list[i].Status = contractApprovalRecord.Status
+			//
+			//	//判断是否处于待审批状态
+			//	//if contractApprovalRecord.Status == "待审批" {
+			//	//	//如果不是审批者,那么不能审批操作
+			//	//	if contractApprovalRecord.NodeType != "check" {
+			//	//		continue
+			//	//	}
+			//	//	//如果没有指定审批人的话
+			//	//	if contractApprovalRecord.ApproveUserId <= 0 {
+			//	//		//判断是否与审批角色一致,如果一致,那么允许操作审批
+			//	//		if contractApprovalRecord.ApproveRoleTypeCode == sysUser.RoleTypeCode {
+			//	//			list[i].CanApprovalButton = true
+			//	//		}
+			//	//	} else if contractApprovalRecord.ApproveUserId == sysUser.AdminId {
+			//	//		//如果指定审批人就是自己的话,那么操作审批
+			//	//		list[i].CanApprovalButton = true
+			//	//	}
+			//	//}
+			//}
+
+			//合同状态(突然说要改成展示合同状态,那就根据业务需求,改成返回:合同状态咯)
+			list[i].Status = item.SealStatus
+		}
+	}
+
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	this.OkDetailed(sealResp.SealApprovalListResp{
+		List:   list,
+		Paging: page,
+	}, "获取成功")
+}
+func (this *SealApprovalCommon) list() {
+	sysUser := this.AdminWx
+
+	//合同类型、产品类型、合同状态、更新时间、所选销售
+	//关键字:合同编号、客户名称,社会信用码
+	serviceType := this.GetString("ServiceType")
+	use := this.GetString("Use")
+	sealType := this.GetString("SealType")
+	status := this.GetString("Status")
+	productId, _ := this.GetInt("ProductId")
+	sellerIds := this.GetString("SellerId")
+	keyword := this.GetString("Keyword")
+	modifyStartTime := this.GetString("ModifyStartTime")
+	modifyEndTime := this.GetString("ModifyEndTime")
+
+	childCondition := ""
+	condition := ""
+	childPars := make([]interface{}, 0)
+	pars := make([]interface{}, 0)
+	////如果不是超管或者合规,那么只能查看自己的合同
+	//if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN { //权益管理员
+	//	condition += ` AND c.product_id = ? `
+	//	pars = append(pars, 2)
+	//} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN { //ficc管理员
+	//	condition += ` AND c.product_id = ? `
+	//	pars = append(pars, 1)
+	//} else {
+	//	if sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_COMPLIANCE && sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_ADMIN {
+	//		condition += ` AND c.seller_id = ? `
+	//		pars = append(pars, sysUser.AdminId)
+	//	}
+	//}
+
+	condition += ` AND (c.user_id = ? or d.approve_user_id = ?)`
+	pars = append(pars, sysUser.AdminId, sysUser.AdminId)
+
 	//合同类型、、更新时间、所选销售
 	//关键字:合同编号、客户名称,社会信用码
 	if use != "" {
@@ -135,13 +338,13 @@ func (this *SealApprovalCommon) List() {
 	}
 	startSize = paging.StartIndex(currentIndex, pageSize)
 
-	total, err := contract_approval.GetSealApprovalListCount(childCondition, condition, childPars, pars)
+	total, err := contract_approval.GetSealApprovalListCountV2(childCondition, condition, childPars, pars)
 	if err != nil {
 		this.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
 		return
 	}
 
-	list, err := contract_approval.GetSealApprovalList(childCondition, condition, childPars, pars, startSize, pageSize)
+	list, err := contract_approval.GetSealApprovalListV2(childCondition, condition, childPars, pars, startSize, pageSize)
 	if err != nil {
 		this.FailWithMessage("获取审批列表失败!", "获取审批列表失败,Err:"+err.Error())
 		return

+ 3 - 3
models/tables/contract/contract.go

@@ -401,13 +401,13 @@ type CompanyNameList struct {
 }
 
 //获取客户名称列表数据
-func GetCompanyNameList(name, status string) (list []*CompanyNameList, err error) {
+func GetCompanyNameList(sellerId int, name, status string) (list []*CompanyNameList, err error) {
 	o := orm.NewOrm()
-	sql := `select * from contract where company_name like '%` + name + `%' `
+	sql := `select * from contract where is_delete=0 and seller_id=? and company_name like '%` + name + `%' `
 	if status != "" {
 		sql += ` AND status='` + status + `' `
 	}
 	sql += ` group by company_name order by modify_time desc `
-	_, err = o.Raw(sql).QueryRows(&list)
+	_, err = o.Raw(sql, sellerId).QueryRows(&list)
 	return
 }

+ 76 - 1
models/tables/contract_approval/contract_approval.go

@@ -137,6 +137,46 @@ WHERE c.is_delete = 0  AND a.approval_type="contract" `
 	return
 }
 
+//获取审批后的数据
+func GetContractApprovalListCountV2(childCondition, condition string, childPars, pars []interface{}) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `
+SELECT
+a.contract_approval_id,a.contract_id,a.apply_content,a.contract_detail,a.approve_remark,a.create_time,a.modify_time,a.status,c.status contract_status,c.product_id,
+c.contract_type,c.start_date,c.end_date,c.price,c.company_name,c.seller_id,c.seller_name,c.file_url,c.contract_code from contract_approval a
+	join 
+	( SELECT max( contract_approval_id ) max_id,contract_id FROM contract_approval where 1=1 `
+	sql += childCondition
+	sql += `  GROUP BY contract_id ) b on a.contract_approval_id=b.max_id
+	JOIN contract c ON a.contract_id = c.contract_id 
+	JOIN contract_approval_record d on a.contract_approval_id=d.contract_approval_id
+WHERE c.is_delete = 0  AND a.approval_type="contract" `
+	sql += condition
+	sql += ` group by contract_id `
+
+	sql = `select count(*) count from (` + sql + `) g`
+	err = o.Raw(sql, childPars, pars).QueryRow(&count)
+	return
+}
+func GetContractApprovalListV2(childCondition, condition string, childPars, pars []interface{}, startSize, pageSize int) (list []*ContractApprovalList, err error) {
+	o := orm.NewOrm()
+	sql := `
+SELECT
+a.contract_approval_id,d.contract_approval_record_id,a.contract_id,a.apply_content,a.approve_remark,a.create_time,a.modify_time,a.status,c.status contract_status,c.product_id,
+c.contract_type,c.start_date,c.end_date,c.price,c.company_name,c.seller_id,c.seller_name,c.file_url,c.contract_code,c.approve_time,c.invalid_time,c.check_back_file_time,c.rescind_time from contract_approval a
+	join 
+	( SELECT max( contract_approval_id ) max_id,contract_id FROM contract_approval where 1=1 `
+	sql += childCondition
+	sql += `  GROUP BY contract_id ) b on a.contract_approval_id=b.max_id
+	JOIN contract c ON a.contract_id = c.contract_id 
+	JOIN contract_approval_record d on a.contract_approval_id=d.contract_approval_id
+WHERE c.is_delete = 0  AND a.approval_type="contract" `
+	sql += condition
+	sql += ` group by contract_id order by modify_time desc LIMIT ?,? `
+	_, err = o.Raw(sql, childPars, pars, startSize, pageSize).QueryRows(&list)
+	return
+}
+
 //根据合同id获取合同审批单信息
 func (ContractApproval) CheckPendingByContractId(contractId int, approvalType string) (has bool, err error) {
 	o := orm.NewOrm()
@@ -454,7 +494,7 @@ c.seal_type,c.company_name,c.user_id,c.user_name,c.file_url,c.code from contract
 	sql += childCondition
 	sql += `  GROUP BY contract_id ) b on a.contract_approval_id=b.max_id
 	JOIN seal c ON c.seal_id = a.contract_id 
-	JOIN contract_approval_record d on a.contract_approval_id=d.contract_approval_id
+	JOIN contract_approval_record d on a.contract_approval_id=d.contract_approval_id and a.curr_node_id=d.node_id
 WHERE c.is_delete = 0  AND a.approval_type="seal" `
 	sql += condition
 	sql += ` group by contract_id `
@@ -509,3 +549,38 @@ WHERE c.is_delete = 0 AND a.approval_type="seal" `
 	_, err = o.Raw(sql, childPars, pars, startSize, pageSize).QueryRows(&list)
 	return
 }
+
+//处理后的
+func GetSealApprovalListCountV2(childCondition, condition string, childPars, pars []interface{}) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT a.contract_approval_id,a.contract_id,a.apply_content,a.approve_remark,a.create_time,a.modify_time,a.status,c.status seal_status,
+c.seal_type,c.company_name,c.user_id,c.user_name,c.file_url,c.code from contract_approval a
+	join 
+	( SELECT max( contract_approval_id ) max_id,contract_id FROM contract_approval where 1=1 `
+	sql += childCondition
+	sql += `  GROUP BY contract_id ) b on a.contract_approval_id=b.max_id
+	JOIN seal c ON c.seal_id = a.contract_id 
+	JOIN contract_approval_record d on a.contract_approval_id=d.contract_approval_id
+WHERE c.is_delete = 0  AND a.approval_type="seal" `
+	sql += condition
+	sql += ` group by contract_id `
+
+	sql = `select count(*) count from (` + sql + `) g`
+	err = o.Raw(sql, childPars, pars).QueryRow(&count)
+	return
+}
+func GetSealApprovalListV2(childCondition, condition string, childPars, pars []interface{}, startSize, pageSize int) (list []*SealApprovalList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT a.contract_approval_id,a.contract_id,a.apply_content,a.approve_remark,a.create_time,a.modify_time,a.status,c.status seal_status,c.seal_type,c.company_name,c.user_id,c.user_name,c.file_url,c.approve_time,c.invalid_time,c.code from contract_approval a
+	join 
+	( SELECT max( contract_approval_id ) max_id,contract_id FROM contract_approval where 1=1 `
+	sql += childCondition
+	sql += `  GROUP BY contract_id ) b on a.contract_approval_id=b.max_id
+	JOIN seal c ON c.seal_id = a.contract_id 
+	JOIN contract_approval_record d on a.contract_approval_id=d.contract_approval_id 
+WHERE c.is_delete = 0 AND a.approval_type="seal" `
+	sql += condition
+	sql += ` group by contract_id order by modify_time desc LIMIT ?,? `
+	_, err = o.Raw(sql, childPars, pars, startSize, pageSize).QueryRows(&list)
+	return
+}