2
3
Просмотр исходного кода

增项申请各部门审批接口独立

baichengfei 5 лет назад
Родитель
Сommit
1b3f6d61ef

+ 69 - 67
src/dashoo.cn/backend/api/business/oilsupplier/suppliercertappend/oilsuppliercertappend.go

@@ -5,76 +5,78 @@ import (
 )
 
 type OilSupplierCertAppend struct {
-	Id             int       `xorm:"not null pk autoincr INT(10)"`
-	SupplierId     int       `xorm:"not null comment('供方基本信息表主键') INT(10)"`
-	SupplierName   string    `xorm:"comment('供方名称') VARCHAR(200)"`
-	SupplierCertId int       `xorm:"not null comment('供方准入证书信息表主键') INT(10)"`
-	AccessCardNo   string    `xorm:"comment('准入证号') VARCHAR(20)"`
-	ApplyDate      time.Time `xorm:"comment('申请日期') DATETIME"`
-	RecUnitFlag    string    `xorm:"comment('推荐单位的级联Id标记') VARCHAR(200)"`
-	RecUnitId      string    `xorm:"comment('推荐单位编码') VARCHAR(50)"`
-	RecUnitName    string    `xorm:"comment('推荐单位名称') VARCHAR(200)"`
-	AppendType     string    `xorm:"comment('增项类别(1 物资类,2 基建类,3 技术服务类)') VARCHAR(10)"`
-	InStyle        string    `xorm:"default '1' comment('准入方式') VARCHAR(10)"`
-	DenyReason     string    `xorm:"comment('退回原因') VARCHAR(50)"`
-	AuditDate      time.Time `xorm:"comment('审核日期') DATETIME"`
-	Status         string    `xorm:"comment('状态标识') VARCHAR(50)"`
-	WorkFlowId     string    `xorm:"default '0' comment('工作流的ID') VARCHAR(255)"`
-	AuditIndex     int       `xorm:"default 0 comment('审批次数') INT(11)"`
-	BusinessKey    string    `xorm:"VARCHAR(255)"`
-	ProcessKey     string    `xorm:"VARCHAR(255)"`
-	Remark         string    `xorm:"comment('备注') VARCHAR(500)"`
-	IsDelete       int       `xorm:"default 0 comment('删除状态,0正常,1已删除') INT(10)"`
-	Step           int       `xorm:"comment('页面上第几步') INT(10)"`
-	CommitComId    string    `xorm:"default '0' comment('提交二级单位Id') VARCHAR(50)"`
-	FirstAudit     int       `xorm:"default 0 comment('初审') INT(10)"`
-	SecondAudit    int       `xorm:"default 0 comment('复审') INT(10)"`
-	ThirdAudit     int       `xorm:"default 0 comment('专业科室审批') INT(10)"`
-	FourthAudit    int       `xorm:"default 0 comment('集中审批') INT(10)"`
-	CreateOn       time.Time `xorm:"DATETIME"`
-	CreateUserId   int       `xorm:"INT(10)"`
-	CreateBy       string    `xorm:"VARCHAR(50)"`
-	ModifiedOn     time.Time `xorm:"DATETIME"`
-	ModifiedUserId int       `xorm:"INT(10)"`
-	ModifiedBy     string    `xorm:"VARCHAR(50)"`
-	OldId          int       `xorm:"INT(10)"`
+	Id                int       `xorm:"not null pk autoincr INT(10)"`
+	SupplierId        int       `xorm:"not null comment('供方基本信息表主键') INT(10)"`
+	SupplierName      string    `xorm:"comment('供方名称') VARCHAR(200)"`
+	SupplierCertId    int       `xorm:"not null comment('供方准入证书信息表主键') INT(10)"`
+	AccessCardNo      string    `xorm:"comment('准入证号') VARCHAR(20)"`
+	ApplyDate         time.Time `xorm:"comment('申请日期') DATETIME"`
+	RecUnitFlag       string    `xorm:"comment('推荐单位的级联Id标记') VARCHAR(200)"`
+	RecUnitId         string    `xorm:"comment('推荐单位编码') VARCHAR(50)"`
+	RecUnitName       string    `xorm:"comment('推荐单位名称') VARCHAR(200)"`
+	AppendType        string    `xorm:"comment('增项类别(1 物资类,2 基建类,3 技术服务类)') VARCHAR(10)"`
+	InStyle           string    `xorm:"default '1' comment('准入方式') VARCHAR(10)"`
+	DenyReason        string    `xorm:"comment('退回原因') VARCHAR(50)"`
+	AuditDate         time.Time `xorm:"comment('审核日期') DATETIME"`
+	Status            string    `xorm:"comment('状态标识') VARCHAR(50)"`
+	WorkFlowId        string    `xorm:"default '0' comment('工作流的ID') VARCHAR(255)"`
+	AuditIndex        int       `xorm:"default 0 comment('审批次数') INT(11)"`
+	BusinessKey       string    `xorm:"VARCHAR(255)"`
+	ProcessKey        string    `xorm:"VARCHAR(255)"`
+	Remark            string    `xorm:"comment('备注') VARCHAR(500)"`
+	IsDelete          int       `xorm:"default 0 comment('删除状态,0正常,1已删除') INT(10)"`
+	Step              int       `xorm:"comment('页面上第几步') INT(10)"`
+	CommitComId       string    `xorm:"default '0' comment('提交二级单位Id') VARCHAR(50)"`
+	FirstAudit        int       `xorm:"default 0 comment('初审') INT(10)"`
+	SecondAudit       int       `xorm:"default 0 comment('复审') INT(10)"`
+	ThirdAudit        int       `xorm:"default 0 comment('专业科室审批') INT(10)"`
+	ProfessionalAudit int       `xorm:"default 0 comment('业务处室专业审批') INT(10)"`
+	FourthAudit       int       `xorm:"default 0 comment('集中审批') INT(10)"`
+	CreateOn          time.Time `xorm:"DATETIME"`
+	CreateUserId      int       `xorm:"INT(10)"`
+	CreateBy          string    `xorm:"VARCHAR(50)"`
+	ModifiedOn        time.Time `xorm:"DATETIME"`
+	ModifiedUserId    int       `xorm:"INT(10)"`
+	ModifiedBy        string    `xorm:"VARCHAR(50)"`
+	OldId             int       `xorm:"INT(10)"`
 }
 
 type Del_OilSupplierCertAppend struct {
-	Id             int       `xorm:"not null pk autoincr INT(10)"`
-	SupplierId     int       `xorm:"not null comment('供方基本信息表主键') INT(10)"`
-	SupplierName   string    `xorm:"comment('供方名称') VARCHAR(200)"`
-	SupplierCertId int       `xorm:"not null comment('供方准入证书信息表主键') INT(10)"`
-	AccessCardNo   string    `xorm:"comment('准入证号') VARCHAR(20)"`
-	ApplyDate      time.Time `xorm:"comment('申请日期') DATETIME"`
-	RecUnitFlag    string    `xorm:"comment('推荐单位的级联Id标记') VARCHAR(200)"`
-	RecUnitId      string    `xorm:"comment('推荐单位编码') VARCHAR(50)"`
-	RecUnitName    string    `xorm:"comment('推荐单位名称') VARCHAR(200)"`
-	AppendType     string    `xorm:"comment('增项类别(1 物资类,2 基建类,3 技术服务类)') VARCHAR(10)"`
-	InStyle        string    `xorm:"default '1' comment('准入方式') VARCHAR(10)"`
-	DenyReason     string    `xorm:"comment('退回原因') VARCHAR(50)"`
-	AuditDate      time.Time `xorm:"comment('审核日期') DATETIME"`
-	Status         string    `xorm:"comment('状态标识') VARCHAR(50)"`
-	WorkFlowId     string    `xorm:"default '0' comment('工作流的ID') VARCHAR(255)"`
-	AuditIndex     int       `xorm:"default 0 comment('审批次数') INT(11)"`
-	BusinessKey    string    `xorm:"VARCHAR(255)"`
-	ProcessKey     string    `xorm:"VARCHAR(255)"`
-	Remark         string    `xorm:"comment('备注') VARCHAR(500)"`
-	IsDelete       int       `xorm:"default 0 comment('删除状态,0正常,1已删除') INT(10)"`
-	Step           int       `xorm:"comment('页面上第几步') INT(10)"`
-	CommitComId    string    `xorm:"default '0' comment('提交二级单位Id') VARCHAR(50)"`
-	FirstAudit     int       `xorm:"default 0 comment('初审') INT(10)"`
-	SecondAudit    int       `xorm:"default 0 comment('复审') INT(10)"`
-	ThirdAudit     int       `xorm:"default 0 comment('专业科室审批') INT(10)"`
-	FourthAudit    int       `xorm:"default 0 comment('集中审批') INT(10)"`
-	CreateOn       time.Time `xorm:"DATETIME"`
-	CreateUserId   int       `xorm:"INT(10)"`
-	CreateBy       string    `xorm:"VARCHAR(50)"`
-	ModifiedOn     time.Time `xorm:"DATETIME"`
-	ModifiedUserId int       `xorm:"INT(10)"`
-	ModifiedBy     string    `xorm:"VARCHAR(50)"`
-	OldId          int       `xorm:"INT(10)"`
-	DeleteDate     time.Time `xorm:"DATETIME"`
+	Id                int       `xorm:"not null pk autoincr INT(10)"`
+	SupplierId        int       `xorm:"not null comment('供方基本信息表主键') INT(10)"`
+	SupplierName      string    `xorm:"comment('供方名称') VARCHAR(200)"`
+	SupplierCertId    int       `xorm:"not null comment('供方准入证书信息表主键') INT(10)"`
+	AccessCardNo      string    `xorm:"comment('准入证号') VARCHAR(20)"`
+	ApplyDate         time.Time `xorm:"comment('申请日期') DATETIME"`
+	RecUnitFlag       string    `xorm:"comment('推荐单位的级联Id标记') VARCHAR(200)"`
+	RecUnitId         string    `xorm:"comment('推荐单位编码') VARCHAR(50)"`
+	RecUnitName       string    `xorm:"comment('推荐单位名称') VARCHAR(200)"`
+	AppendType        string    `xorm:"comment('增项类别(1 物资类,2 基建类,3 技术服务类)') VARCHAR(10)"`
+	InStyle           string    `xorm:"default '1' comment('准入方式') VARCHAR(10)"`
+	DenyReason        string    `xorm:"comment('退回原因') VARCHAR(50)"`
+	AuditDate         time.Time `xorm:"comment('审核日期') DATETIME"`
+	Status            string    `xorm:"comment('状态标识') VARCHAR(50)"`
+	WorkFlowId        string    `xorm:"default '0' comment('工作流的ID') VARCHAR(255)"`
+	AuditIndex        int       `xorm:"default 0 comment('审批次数') INT(11)"`
+	BusinessKey       string    `xorm:"VARCHAR(255)"`
+	ProcessKey        string    `xorm:"VARCHAR(255)"`
+	Remark            string    `xorm:"comment('备注') VARCHAR(500)"`
+	IsDelete          int       `xorm:"default 0 comment('删除状态,0正常,1已删除') INT(10)"`
+	Step              int       `xorm:"comment('页面上第几步') INT(10)"`
+	CommitComId       string    `xorm:"default '0' comment('提交二级单位Id') VARCHAR(50)"`
+	FirstAudit        int       `xorm:"default 0 comment('初审') INT(10)"`
+	SecondAudit       int       `xorm:"default 0 comment('复审') INT(10)"`
+	ThirdAudit        int       `xorm:"default 0 comment('专业科室审批') INT(10)"`
+	ProfessionalAudit int       `xorm:"default 0 comment('业务处室专业审批') INT(10)"`
+	FourthAudit       int       `xorm:"default 0 comment('集中审批') INT(10)"`
+	CreateOn          time.Time `xorm:"DATETIME"`
+	CreateUserId      int       `xorm:"INT(10)"`
+	CreateBy          string    `xorm:"VARCHAR(50)"`
+	ModifiedOn        time.Time `xorm:"DATETIME"`
+	ModifiedUserId    int       `xorm:"INT(10)"`
+	ModifiedBy        string    `xorm:"VARCHAR(50)"`
+	OldId             int       `xorm:"INT(10)"`
+	DeleteDate        time.Time `xorm:"DATETIME"`
 }
 
 type OilSupplierCertAppendTodo struct {

+ 75 - 5
src/dashoo.cn/backend/api/business/oilsupplier/suppliercertappend/oilsuppliercertappendService.go

@@ -1,6 +1,8 @@
 package suppliercertappend
 
 import (
+	"dashoo.cn/backend/api/business/oilsupplier/supplier"
+	"dashoo.cn/backend/api/business/oilsupplier/supplierfile"
 	"fmt"
 	"strconv"
 	"strings"
@@ -12,8 +14,8 @@ import (
 	"dashoo.cn/backend/api/business/workflow"
 	. "dashoo.cn/backend/api/mydb"
 	"dashoo.cn/business2/userRole"
-	"github.com/go-xorm/xorm"
 	"dashoo.cn/utils"
+	"github.com/go-xorm/xorm"
 )
 
 type OilSupplierCertAppendService struct {
@@ -131,7 +133,7 @@ func (s *OilSupplierCertAppendService) GetMyPagingEntitiesWithOrderBytbl(supplie
 	} else {
 		sql += ` order by ` + orderby + ` DESC `
 	}
-	if (pageIndex != 0 && itemsPerPage !=0) {
+	if pageIndex != 0 && itemsPerPage != 0 {
 		sql += ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage)
 	}
 	s.DBE.SQL(sql).Find(entitiesPtr)
@@ -157,7 +159,7 @@ func (s *OilSupplierCertAppendService) GetTodoEntitie(supplierTableName, supplie
 	sql += ` left join ` + supplierCertAppendName + " b on b.SupplierId = a.Id"
 	sql += ` where ` + where
 
-	has,_ := s.DBE.SQL(sql).Get(entitiesPtr)
+	has, _ := s.DBE.SQL(sql).Get(entitiesPtr)
 	return has
 
 }
@@ -188,7 +190,7 @@ func (s *OilSupplierCertAppendService) GetProcessInfoWithOrderBytbl(supplierCert
 	} else {
 		sql += ` order by ` + orderby + ` DESC `
 	}
-	if (pageIndex != 0 && itemsPerPage !=0) {
+	if pageIndex != 0 && itemsPerPage != 0 {
 		sql += ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage)
 	}
 	s.DBE.SQL(sql).Find(entitiesPtr)
@@ -204,4 +206,72 @@ func (s *OilSupplierCertAppendService) GetProcessInfoWithOrderBytbl(supplierCert
 	}
 
 	return total
-}
+}
+
+func (s *OilSupplierCertAppendService) IsSupplierCertAppendCanSubmit(supplierId, supplierCertAppendId string) bool {
+	//获取主表信息
+	var supplierEntity supplier.OilSupplier
+	supplierService := supplier.GetOilSupplierService(s.DBE)
+	supplierService.GetEntityById(supplierId, &supplierEntity)
+	//获取准入信息表
+	var supplierCertAppendEntity OilSupplierCertAppend
+	s.GetEntityById(supplierCertAppendId, &supplierCertAppendEntity)
+
+	//对准入范围的判断
+	var certSubList []suppliercertsub.OilSupplierCertSub
+	certsubService := suppliercertsub.GetOilSupplierCertSubService(s.DBE)
+	certsubService.GetListByCertId(supplierCertAppendId, &certSubList)
+
+	if len(certSubList) <= 0 {
+		panic("准入范围不能为空!")
+	}
+
+	if supplierEntity.Grade == supplier.GRADE_2 {
+		for _, certSubItem := range certSubList {
+			if certSubItem.GoodsLevel == supplier.GOODS_LEVEL_1 {
+				panic("二级供应商不能准入一级物资!")
+			}
+		}
+	}
+
+	//请上传现场考察报告
+	//paramSvc := baseparameter.GetBaseparameterService(utils.DBE)
+	//isInvestigate := paramSvc.GetBaseparameterMessage("GFGL1", "paramset", "isInvestigate")
+	//if isInvestigate == "true" &&
+	//	supplierCertEntity.Type == supplier.SUPPLIER_TYPE_GOODS &&  //当前只有物资类才可上传现场考察报告
+	//	supplierEntity.OperType == "代理商" &&
+	//	supplierCertEntity.InStyle != supplier.IN_STYPE_GOODS_LEVEL_1 {
+	//
+	//	scenefileService := supplierscenefile.GetSupplierScenefileService(utils.DBE)
+	//	scenefileEntity := scenefileService.GetSceneFileList( strconv.Itoa(supplierEntity.Id) )
+	//	if len(scenefileEntity.FileUrl) <= 0 {
+	//		panic("请上传现场考察报告!")
+	//	}
+	//}
+
+	//对准入资质的判断
+	supplierFileService := supplierfile.GetSupplierfileService(utils.DBE)
+	supplierFiles := supplierFileService.GetListBySupplierId(strconv.Itoa(supplierEntity.Id))
+	needBiddingBook := false
+	hasBiddingBook := false
+	if supplierCertAppendEntity.InStyle == supplier.IN_STYPE_BIDDING {
+		needBiddingBook = true // 招标准入需提供中标通知书
+	}
+	for _, fileItem := range supplierFiles {
+		/* if fileItem.FileType == "1" { // 1:必须上传的文件, 0:非必须上传
+		} */
+		if fileItem.NeedFileType == supplier.BIDDING_BOOK_NAME {
+			hasBiddingBook = true
+		}
+		if len(fileItem.FileUrl) <= 0 {
+			panic("请上传文件 [" + fileItem.NeedFileType + "] !")
+		}
+	}
+
+	//其它判断
+	if needBiddingBook && !hasBiddingBook {
+		panic("招标准入需提供中标通知书 !")
+	}
+
+	return true
+}

+ 309 - 0
src/dashoo.cn/backend/api/controllers/oilsupplier/suppliercertAppendListener.go

@@ -0,0 +1,309 @@
+package oilsupplier
+
+import (
+	"encoding/json"
+	"strconv"
+	"strings"
+
+	"dashoo.cn/backend/api/business/auditsetting"
+	"dashoo.cn/backend/api/business/oilsupplier/suppliercert"
+	"dashoo.cn/backend/api/business/oilsupplier/suppliercertappend"
+	"dashoo.cn/backend/api/business/workflow"
+	. "dashoo.cn/backend/api/controllers"
+	"dashoo.cn/utils"
+)
+
+type OilSupplierCertAppendListenerController struct {
+	BaseController
+}
+
+// @Title 获取二级单位分办人员列表 --回调
+// @Description get user by token
+// @Success 200 {string} string
+// @router /pre-fen-trail [post]
+func (this *OilSupplierCertAppendListenerController) PreFenTrialStatus() {
+	var jsonBlob = this.Ctx.Input.RequestBody
+	var listenerApprove ListenerApproveParams
+	json.Unmarshal(jsonBlob, &listenerApprove)
+	supplierCertAppendId := strings.Split(listenerApprove.BusinessKey, "-")[0]
+
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(supplierCertAppendId, &supplierCertAppendEntity)
+	cols := []string{
+		"Id",
+		"Status",
+	}
+	//进入此步骤,记录在数据库中
+	supplierCertAppendEntity.Status = suppliercert.FEN_TRIAL_STATUS //二级单位分办
+	certSrv.UpdateEntityByIdCols(supplierCertAppendId, supplierCertAppendEntity, cols)
+
+	//查出二级单位分办的人员
+	stepCode := workflow.GetWorkFlowStepCode(supplierCertAppendEntity.AppendType)
+	auditSettingService := auditsetting.GetOilAuditSettingService(utils.DBE)
+	approverIds := auditSettingService.GetApproverIdsByStepCodeAndUnitId(stepCode, supplierCertAppendEntity.CommitComId)
+	var approveInfo ListenerApproveInfo
+	approveInfo.Users = approverIds
+	this.Data["json"] = &approveInfo
+	this.ServeJSON()
+}
+
+// @Title 获取二级单位初审人员列表--回调
+// @Description get user by token
+// @Success 200 {string} string
+// @router /pre-first-trail [get]
+func (this *OilSupplierCertAppendListenerController) PreFirstTrail() {
+	businessKey := this.GetString("businessKey")
+	supplierCertAppendId := strings.Split(businessKey, "-")[0]
+
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(supplierCertAppendId, &supplierCertAppendEntity)
+	cols := []string{
+		"Id",
+		"Status",
+	}
+	//进入此步骤,记录在数据库中
+	supplierCertAppendEntity.Status = suppliercert.FIRST_TRIAL_STATUS //二级单位初审
+	certSrv.UpdateEntityByIdCols(supplierCertAppendId, supplierCertAppendEntity, cols)
+
+	//返回查出的初审人员操作人员列表
+	approverIds := supplierCertAppendEntity.FirstAudit
+	this.Data["json"] = approverIds
+	this.ServeJSON()
+}
+
+// @Title 获取二级单位复审人员列表--回调
+// @Description get user by token
+// @Success 200 {string} string
+// @router /pre-second-trail [get]
+func (this *OilSupplierCertAppendListenerController) PreSecondTrail() {
+	businessKey := this.GetString("businessKey")
+	supplierCertAppendId := strings.Split(businessKey, "_")[0]
+
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(supplierCertAppendId, &supplierCertAppendEntity)
+	cols := []string{
+		"Id",
+		"Status",
+	}
+	//进入此步骤,记录在数据库中
+	supplierCertAppendEntity.Status = suppliercert.SECOND_TRIAL_STATUS //二级单位复审
+	certSrv.UpdateEntityByIdCols(supplierCertAppendId, supplierCertAppendEntity, cols)
+
+	//返回查出的复审人员操作人员列表
+	approverIds := supplierCertAppendEntity.SecondAudit
+	this.Data["json"] = approverIds
+	this.ServeJSON()
+}
+
+// @Title 获取业务处室接收分办人员列表 --回调
+// @Description get user by token
+// @Success 200 {string} string
+// @router /pre-third-trail [post]
+func (this *OilSupplierCertAppendListenerController) PreThirdTrialStatus() {
+	var jsonBlob = this.Ctx.Input.RequestBody
+	var listenerApprove ListenerApproveParams
+	json.Unmarshal(jsonBlob, &listenerApprove)
+	supplierCertAppendId := strings.Split(listenerApprove.BusinessKey, "-")[0]
+
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(supplierCertAppendId, &supplierCertAppendEntity)
+	cols := []string{
+		"Id",
+		"Status",
+	}
+	//进入此步骤,记录在数据库中
+	supplierCertAppendEntity.Status = suppliercert.THIRD_TRIAL_STATUS ////专业处接收
+	certSrv.UpdateEntityByIdCols(supplierCertAppendId, supplierCertAppendEntity, cols)
+
+	//查出业务处室接收分办的人员
+	stepCode := workflow.PROF_RECE //专业处室接收
+	auditSettingService := auditsetting.GetOilAuditSettingService(utils.DBE)
+	approverIds := auditSettingService.GetApproverIdsByStepCodeAndUnitId(stepCode, strconv.Itoa(supplierCertAppendEntity.ThirdAudit))
+	var approveInfo ListenerApproveInfo
+	approveInfo.Users = approverIds
+	this.Data["json"] = &approveInfo
+	this.ServeJSON()
+}
+
+// @Title 获取业务处室专业审批人员列表--回调
+// @Description get user by token
+// @Success 200 {string} string
+// @router /pre-prof-audit [get]
+func (this *OilSupplierCertAppendListenerController) PreProfAudit() {
+	businessKey := this.GetString("businessKey")
+	supplierCertAppendId := strings.Split(businessKey, "-")[0]
+
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(supplierCertAppendId, &supplierCertAppendEntity)
+	cols := []string{
+		"Id",
+		"Status",
+	}
+	//进入此步骤,记录在数据库中
+	supplierCertAppendEntity.Status = suppliercert.PROF_AUDIT_STATUS //业务处室专业审批
+	certSrv.UpdateEntityByIdCols(supplierCertAppendId, supplierCertAppendEntity, cols)
+
+	//查出业务处室专业审批的人员
+	//专业审批人已在分办时指定
+	//stepCode := workflow.PROF_AUDIT
+	//auditSettingService := auditsetting.GetOilAuditSettingService(utils.DBE)
+	//approverIds := auditSettingService.GetApproverIdsByStepCodeAndUnitId(stepCode, supplierCertEntity.CommitComId)
+	this.Data["json"] = 1
+	this.ServeJSON()
+}
+
+// @Title 查询是否交费--回调
+// @Description get user by token
+// @Success 200 {string} string
+// @router /check-need-pay [get]
+func (this *OilSupplierCertAppendListenerController) CheckNeedPay() {
+	businessKey := this.GetString("businessKey")
+	supplierCertAppendId := strings.Split(businessKey, "-")[0]
+
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(supplierCertAppendId, &supplierCertAppendEntity)
+
+	var isPayList []string
+	isPayList = append(isPayList, suppliercert.PINGSHEN)
+	isPayList = append(isPayList, suppliercert.WAIBUSHICHANG)
+	var unPayList []string
+	unPayList = append(unPayList, suppliercert.YIJIWUZI)
+	unPayList = append(unPayList, suppliercert.ERJIWUZI)
+	unPayList = append(unPayList, suppliercert.ZHANLUEHEZUO)
+	unPayList = append(unPayList, suppliercert.NEIBUDUOYUAN)
+
+	result := 0
+	isPay := "false"
+	unPay := "false"
+	for _, eachItem := range isPayList {
+		if eachItem == supplierCertAppendEntity.InStyle {
+			// 需要付费
+			isPay = "true"
+			result = 1
+			break
+		}
+	}
+	for _, eachItem := range unPayList {
+		if eachItem == supplierCertAppendEntity.InStyle {
+			// 不需要付费
+			unPay = "true"
+			result = 2
+			break
+		}
+	}
+	if isPay == unPay {
+		// 准入类型是否付费有误!请联系管理员
+		result = 0
+	}
+
+	this.Data["json"] = result
+	this.ServeJSON()
+}
+
+// @Title 获取交费人--回调
+// @Description get user by token
+// @Success 200 {string} string
+// @router /pre-payer [get]
+func (this *OilSupplierCertAppendListenerController) GetPrePayer() {
+	businessKey := this.GetString("businessKey")
+	supplierCertAppendId := strings.Split(businessKey, "-")[0]
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(supplierCertAppendId, &supplierCertAppendEntity)
+
+	cols := []string{
+		"Id",
+		"Status",
+	}
+	//进入此步骤,记录在数据库中
+	supplierCertAppendEntity.Status = suppliercert.PAYING_AUDIT_STATUS //待缴费
+	certSrv.UpdateEntityByIdCols(supplierCertAppendId, supplierCertAppendEntity, cols)
+
+	//创建人即为交费的人员 TODO 取值可能有问题
+	approverIds := supplierCertAppendEntity.CommitComId
+	this.Data["json"] = approverIds
+	this.ServeJSON()
+}
+
+// @Title 企业法规处入库人员列表 --回调
+// @Description get user by token
+// @Success 200 {string} string
+// @router /pre-storage-audit [post]
+func (this *OilSupplierCertAppendListenerController) GetStorageAuditor() {
+	var jsonBlob = this.Ctx.Input.RequestBody
+	var listenerApprove ListenerApproveParams
+	json.Unmarshal(jsonBlob, &listenerApprove)
+	supplierCertAppendId := strings.Split(listenerApprove.BusinessKey, "-")[0]
+
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(supplierCertAppendId, &supplierCertAppendEntity)
+	cols := []string{
+		"Id",
+		"Status",
+	}
+	//进入此步骤,记录在数据库中
+	supplierCertAppendEntity.Status = suppliercert.STOREING_STATUS //待入库
+	certSrv.UpdateEntityByIdCols(supplierCertAppendId, supplierCertAppendEntity, cols)
+
+	//查出入库审批的人员
+	stepCode := workflow.PROF_REGULATION //待入库(企业法规处)
+	auditSettingService := auditsetting.GetOilAuditSettingService(utils.DBE)
+	approverIds := auditSettingService.GetApproverIdsByStepCodeForConcentrateAudit(stepCode)
+	var approveInfo ListenerApproveInfo
+	approveInfo.Users = approverIds
+	this.Data["json"] = &approveInfo
+	this.ServeJSON()
+}
+
+// @Title 企业法规处审批入库完成, 工作流结束--回调
+// @Description get user by token
+// @Success 200 {string} string
+// @router /workflow-end [get]
+func (this *OilSupplierCertAppendListenerController) WorkflowEndAudit() {
+	businessKey := this.GetString("businessKey")
+	supplierCertAppendId := strings.Split(businessKey, "-")[0]
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(supplierCertAppendId, &supplierCertAppendEntity)
+
+	cols := []string{
+		"Id",
+		"Status",
+	}
+	//进入此步骤,记录在数据库中
+	supplierCertAppendEntity.Status = suppliercert.STORE_STATUS //已入库
+	certSrv.UpdateEntityByIdCols(supplierCertAppendId, supplierCertAppendEntity, cols)
+
+	this.Data["json"] = 1
+	this.ServeJSON()
+}
+
+// @Title 审批驳回--回调
+// @Description get user by token
+// @Success 200 {string} string
+// @router /approval-refuse [get]
+func (this *OilSupplierCertAppendListenerController) ApprovalRefuse() {
+	businessKey := this.GetString("businessKey")
+	supplierCertAppendId := strings.Split(businessKey, "-")[0]
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(supplierCertAppendId, &supplierCertAppendEntity)
+
+	cols := []string{
+		"Id",
+		"Status",
+	}
+	//进入此步骤,记录在数据库中
+	supplierCertAppendEntity.Status = suppliercert.DRAFT_STATUS //重置为草稿状态
+	certSrv.UpdateEntityByIdCols(supplierCertAppendId, supplierCertAppendEntity, cols)
+
+	this.Data["json"] = 1
+	this.ServeJSON()
+}

+ 288 - 4
src/dashoo.cn/backend/api/controllers/oilsupplier/suppliercertappend.go

@@ -656,17 +656,95 @@ func (this *OilSupplierCertAppendController) AuditEntity() {
 // @Description 企业用户提交按钮
 // @Success	200	{object} controllers.Request
 // @router /company-audit/:id [post]
-func (this *OilSupplierCertAppendController) companySubmitAuditEntity() {
-	certId := this.Ctx.Input.Param(":id")
-	unitId := this.GetString("UnitId") // 分办单位id
+func (this *OilSupplierCertAppendController) CompanySubmitAuditEntity() {
+	certAppendId := this.Ctx.Input.Param(":id")
+	unitId := this.GetString("UnitId")
 	AuditRemark := this.GetString("AuditRemark")
+	var errinfo ErrorDataInfo
+	defer func() { //finally处理失败的异常
+		if err := recover(); err != nil {
+			errinfo.Message = err.(string)
+			errinfo.Code = -1
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		} else {
+			//返回正确结果
+			errinfo.Message = "提交成功"
+			errinfo.Code = 0
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		}
+	}()
+
+	if this.User.IsCompanyUser == 0 {
+		// 0二级单位; 1企业用户
+		panic("非企业用户,请用分办功能提交!")
+	}
+
+	//取出准入申请表
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(certAppendId, &supplierCertAppendEntity)
+	// 检查是否允许提交
+	certSrv.IsSupplierCertAppendCanSubmit(strconv.Itoa(supplierCertAppendEntity.Id), certAppendId)
+
+	//取出企业主表
+	supplierSvc := supplier.GetOilSupplierService(utils.DBE)
+	var supplierEntity supplier.OilSupplier
+	//检查是否可提交
+	supplierSvc.GetEntityById(supplierCertAppendEntity.SupplierId, &supplierEntity)
+
+	status, _ := strconv.Atoi(supplierCertAppendEntity.Status)
+	if status > 0 {
+		panic("工作流已经启动,请刷新重试!")
+	}
+
+	svcActiviti := workflow.GetActivitiService(utils.DBE)
+	//启动工作流
+	businessKey := certAppendId + "-" + strconv.Itoa(supplierCertAppendEntity.AuditIndex)
+	processInstanceId := supplierCertAppendEntity.WorkFlowId
+	// 如果被驳回,不再新启工作流
+	if processInstanceId == "" {
+		processInstanceId = svcActiviti.StartProcess2(workflow.OIL_ENUSER_SUPPLIER_APPLY, businessKey, this.User.Id, "1", supplierCertAppendEntity.AppendType, supplierEntity.SupplierName)
+		if len(processInstanceId) <= 0 {
+			panic("工作流启动失败!")
+		}
+	}
+	// 将启动和工作流,选择的初审和复审人员保存下来
+	cols := []string{
+		"Id",
+		"WorkflowId",
+		"BusinessKey",
+		"ProcessKey",
+		"CommitComId",
+		"AuditIndex",
+	}
+	supplierCertAppendEntity.ProcessKey = workflow.OIL_ENUSER_SUPPLIER_APPLY
+	supplierCertAppendEntity.BusinessKey = businessKey
+	supplierCertAppendEntity.WorkFlowId = processInstanceId
+	supplierCertAppendEntity.CommitComId = unitId
+	supplierCertAppendEntity.AuditIndex += 1
+	certSrv.UpdateEntityByIdCols(certAppendId, supplierCertAppendEntity, cols)
+
+	var ActiComplete workflow.ActiCompleteVM
+	ActiComplete.ProcessKey = workflow.OIL_ENUSER_SUPPLIER_APPLY
+	ActiComplete.BusinessKey = businessKey
+	ActiComplete.UserId = this.User.Id
+	ActiComplete.Result = "1" //提交给二级单位分办
+	ActiComplete.Remarks = AuditRemark
+	ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")
+
+	receiveVal := svcActiviti.TaskComplete(ActiComplete)
+	if receiveVal != "true" {
+		panic("工作流异常,请联系管理员!" + receiveVal)
+	}
 }
 
 // @Title 二级分办单位提交审批----启动工作流
 // @Description 二级分办单位提交审批按钮
 // @Success	200	{object} controllers.Request
 // @router /unit-audit/:id [post]
-func (this *OilSupplierCertAppendController) separateUnitSubmitAuditEntity() {
+func (this *OilSupplierCertAppendController) SeparateUnitSubmitAuditEntity() {
 	certAppendId := this.Ctx.Input.Param(":id")
 	firstAudit := this.GetString("firstAudit")
 	secondAudit := this.GetString("SecondAudit")
@@ -749,6 +827,212 @@ func (this *OilSupplierCertAppendController) separateUnitSubmitAuditEntity() {
 	}
 }
 
+// @Title 二级单位分办 --审批
+// @Description 二级分办
+// @Success	200	{object} controllers.Request
+// @router /separate-audit/:id [post]
+func (this *OilSupplierCertAppendController) AppendSeparateAuditEntity() {
+	certAppendId := this.Ctx.Input.Param(":id")
+	firstAudit := this.GetString("FirstAudit")
+	secondAudit := this.GetString("SecondAudit")
+	thirdAudit := this.GetString("ThirdAudit")
+	// typeCode := this.GetString("TypeCode")
+	AuditRemark := this.GetString("AuditRemark")
+
+	var errinfo ErrorDataInfo
+	defer func() { //finally处理失败的异常
+		if err := recover(); err != nil {
+			errinfo.Message = err.(string)
+			errinfo.Code = -1
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		} else {
+			//返回正确结果
+			errinfo.Message = "审核提交成功"
+			errinfo.Code = 0
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		}
+	}()
+
+	// 取出准入表信息
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(certAppendId, &supplierCertAppendEntity)
+	// 将选择的初审和复审人员保存下来
+	cols := []string{
+		"FirstAudit",
+		"SecondAudit",
+		"thirdAudit",
+	}
+	supplierCertAppendEntity.FirstAudit, _ = strconv.Atoi(firstAudit)
+	supplierCertAppendEntity.SecondAudit, _ = strconv.Atoi(secondAudit)
+	supplierCertAppendEntity.ThirdAudit, _ = strconv.Atoi(thirdAudit) // 专业处室
+	certSrv.UpdateEntityByIdCols(certAppendId, supplierCertAppendEntity, cols)
+
+	svcActiviti := workflow.GetActivitiService(utils.DBE)
+	var ActiComplete workflow.ActiCompleteVM
+	ActiComplete.ProcessKey = workflow.OIL_ENUSER_SUPPLIER_APPLY
+	ActiComplete.BusinessKey = supplierCertAppendEntity.BusinessKey
+	ActiComplete.UserId = this.User.Id // 审批人员
+	// ActiComplete.UserNames = secondAudit // 初审人员
+	ActiComplete.Result = "1" //分办完成后只向前走
+	ActiComplete.Remarks = AuditRemark
+	ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")
+	receiveVal := svcActiviti.TaskComplete(ActiComplete)
+	if receiveVal != "true" {
+		panic("工作流异常,请联系管理员!" + receiveVal)
+	}
+}
+
+// @Title 分办之后的各级审批  --审批 包含:二级单位初审、复审, 业务处室专业审核
+// @Description 分办之后的各级审批
+// @Success	200	{object} controllers.Request
+// @router /common-audit/:id [post]
+func (this *OilSupplierCertAppendController) AppendCommonAuditEntity() {
+	certAppendId := this.Ctx.Input.Param(":id")
+	result := this.GetString("result")
+	AuditRemark := this.GetString("AuditRemark")
+
+	var errinfo ErrorDataInfo
+	defer func() { //finally处理失败的异常
+		if err := recover(); err != nil {
+			errinfo.Message = err.(string)
+			errinfo.Code = -1
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		} else {
+			//返回正确结果
+			errinfo.Message = "审核提交成功"
+			errinfo.Code = 0
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		}
+	}()
+
+	//取出准入表信息
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(certAppendId, &supplierCertAppendEntity)
+
+	svcActiviti := workflow.GetActivitiService(utils.DBE)
+	var ActiComplete workflow.ActiCompleteVM
+	ActiComplete.ProcessKey = workflow.OIL_ENUSER_SUPPLIER_APPLY
+	ActiComplete.BusinessKey = supplierCertAppendEntity.BusinessKey
+	ActiComplete.UserId = this.User.Id //审批人员
+	ActiComplete.Result = result       //前台审批[同意、不同意]
+	ActiComplete.Remarks = AuditRemark
+	ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")
+	receiveVal := svcActiviti.TaskComplete(ActiComplete)
+	if receiveVal != "true" {
+		panic("工作流异常,请联系管理员!" + receiveVal)
+	}
+}
+
+// @Title 业务处室接收分办 专业审批
+// @Description 业务处室接收分办 专业审批
+// @Success 200 {object} controllers.Request
+// @router /business-separate-audit/:id [post]
+func (this *OilSupplierCertAppendController) AppendBusinessOfficeSeparateAuditEntity() {
+	certAppendId := this.Ctx.Input.Param(":id")
+	ProfessionalAudit := this.GetString("ProfessionalAudit")
+	AuditRemark := this.GetString("AuditRemark")
+
+	var errInfo ErrorDataInfo
+	defer func() { //finally处理失败的异常
+		if err := recover(); err != nil {
+			errInfo.Message = err.(string)
+			errInfo.Code = -1
+			this.Data["json"] = &errInfo
+			this.ServeJSON()
+		} else {
+			//返回正确结果
+			errInfo.Message = "审核提交成功"
+			errInfo.Code = 0
+			this.Data["json"] = &errInfo
+			this.ServeJSON()
+		}
+	}()
+
+	//取出准入表信息
+	certSrv := suppliercert.GetOilSupplierCertService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(certAppendId, &supplierCertAppendEntity)
+
+	svcActiviti := workflow.GetActivitiService(utils.DBE)
+	var ActiComplete workflow.ActiCompleteVM
+	ActiComplete.ProcessKey = workflow.OIL_ENUSER_SUPPLIER_APPLY
+	ActiComplete.BusinessKey = supplierCertAppendEntity.BusinessKey
+	ActiComplete.UserId = this.User.Id //审批人员
+	ActiComplete.Result = "1"          //前台审批[同意、不同意]
+	ActiComplete.UserNames = ProfessionalAudit
+	ActiComplete.Remarks = AuditRemark
+	ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")
+	receiveVal := svcActiviti.TaskComplete(ActiComplete)
+	if receiveVal != "true" {
+		panic("工作流异常,请联系管理员!" + receiveVal)
+	}
+	cols := []string{
+		"Id",
+		"Status",
+		"ProfessionalAudit",
+	}
+	supplierCertAppendId := strings.Split(supplierCertAppendEntity.BusinessKey, "-")[0]
+	supplierCertAppendEntity.Status = suppliercert.PROF_AUDIT_STATUS //专业处室接收
+	supplierCertAppendEntity.ProfessionalAudit, _ = strconv.Atoi(ProfessionalAudit)
+	certSrv.UpdateEntityByIdCols(supplierCertAppendId, supplierCertAppendEntity, cols)
+}
+
+// @Title 集中审批
+// @Description 集中审批
+// @Success 200 {object} controllers.Request
+// @router /concentrate-audit/:id [post]
+func (this *OilSupplierCertController) AppendConcentrateAuditEntity() {
+	certAppendId := this.Ctx.Input.Param(":id")
+	AuditRemark := this.GetString("AuditRemark") // TODO 前台选择的审批结果
+
+	var errInfo ErrorDataInfo
+	defer func() { //finally处理失败的异常
+		if err := recover(); err != nil {
+			errInfo.Message = err.(string)
+			errInfo.Code = -1
+			this.Data["json"] = &errInfo
+			this.ServeJSON()
+		} else {
+			//返回正确结果
+			errInfo.Message = "审核提交成功"
+			errInfo.Code = 0
+			this.Data["json"] = &errInfo
+			this.ServeJSON()
+		}
+	}()
+
+	//取出准入表信息
+	certSrv := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
+	var supplierCertAppendEntity suppliercertappend.OilSupplierCertAppend
+	certSrv.GetEntityById(certAppendId, &supplierCertAppendEntity)
+
+	svcActiviti := workflow.GetActivitiService(utils.DBE)
+	var ActiComplete workflow.ActiCompleteVM
+	ActiComplete.ProcessKey = workflow.OIL_ENUSER_SUPPLIER_APPLY
+	ActiComplete.BusinessKey = supplierCertAppendEntity.BusinessKey
+	ActiComplete.UserId = this.User.Id //审批人员
+	ActiComplete.Result = "1"          //前台审批[同意、不同意] // TODO 前台选择的审批结果
+	ActiComplete.Remarks = AuditRemark
+	ActiComplete.CallbackUrl = utils.Cfg.MustValue("workflow", "callbackHost")
+	receiveVal := svcActiviti.TaskComplete(ActiComplete)
+	if receiveVal != "true" {
+		panic("工作流异常,请联系管理员!" + receiveVal)
+	}
+	//cols := []string{
+	//	"Id",
+	//	"Status",
+	//}
+	//supplierCertId := strings.Split(supplierCertEntity.BusinessKey, "-")[0]
+	//supplierCertEntity.Status = suppliercert.PROF_AUDIT_STATUS //专业处室接收
+	//certSrv.UpdateEntityByIdCols(supplierCertId, supplierCertEntity, cols)
+}
+
 // @Title 审批
 // @Description 审批
 // @Param 	body body suppliercert.OilSupplierCert