فهرست منبع

add:项目备案管理

zoie 2 روز پیش
والد
کامیت
ab5edccd5f
4فایلهای تغییر یافته به همراه401 افزوده شده و 0 حذف شده
  1. 244 0
      controllers/ProjectFiling.go
  2. 136 0
      models/ProjectFiling/ProjectFiling.go
  3. 2 0
      models/init.go
  4. 19 0
      routers/ProjectFiling.go

+ 244 - 0
controllers/ProjectFiling.go

@@ -0,0 +1,244 @@
+package controllers
+
+import (
+	"ERP_storage/Nats/NatsServer"
+	"ERP_storage/conf"
+	"ERP_storage/models/Account"
+	"ERP_storage/models/ProjectFiling"
+	"fmt"
+	"github.com/beego/beego/v2/adapter/orm"
+	beego "github.com/beego/beego/v2/server/web"
+	userlibs "gogs.baozhida.cn/zoie/ERP_libs/User"
+	"gogs.baozhida.cn/zoie/ERP_libs/lib"
+	"math"
+	"strconv"
+)
+
+type ProjectFilingController struct {
+	beego.Controller
+	User userlibs.User
+}
+
+func (c *ProjectFilingController) Prepare() {
+	c.User = *Account.User_r
+}
+
+// 项目备案
+func (c *ProjectFilingController) ProjectFiling_List() {
+
+	// 分页参数 初始化
+	page, _ := c.GetInt("page")
+	if page < 1 {
+		page = 1
+	}
+	page_z, _ := c.GetInt("page_z")
+	if page_z < 1 {
+		page_z = conf.Page_size
+	}
+
+	// 查询
+
+	T_sales_personnel := c.GetString("T_sales_personnel")
+	T_customers := c.GetString("T_customers")
+
+	R_List, R_cnt := ProjectFiling.Read_ProjectFiling_List("", T_sales_personnel, T_customers, page, page_z)
+
+	var r_jsons lib.R_JSONS
+	r_jsons.Num = R_cnt
+	r_jsons.Data = R_List
+	r_jsons.Page = page
+	r_jsons.Page_size = int(math.Ceil(float64(R_cnt) / float64(page_z)))
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
+	c.ServeJSON()
+	return
+}
+func (c *ProjectFilingController) ProjectFiling_User_List() {
+
+	// 分页参数 初始化
+	page, _ := c.GetInt("page")
+	if page < 1 {
+		page = 1
+	}
+	page_z, _ := c.GetInt("page_z")
+	if page_z < 1 {
+		page_z = conf.Page_size
+	}
+
+	// 查询
+	T_sales_personnel := c.GetString("T_sales_personnel")
+	T_customers := c.GetString("T_customers")
+
+	R_List, R_cnt := ProjectFiling.Read_ProjectFiling_List(c.User.T_uuid, T_sales_personnel, T_customers, page, page_z)
+
+	var r_jsons lib.R_JSONS
+	r_jsons.Num = R_cnt
+	r_jsons.Data = R_List
+	r_jsons.Page = page
+	r_jsons.Page_size = int(math.Ceil(float64(R_cnt) / float64(page_z)))
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
+	c.ServeJSON()
+	return
+}
+
+func (c *ProjectFilingController) ProjectFiling_Add() {
+
+	T_date := c.GetString("T_date")
+	T_sales_personnel := c.GetString("T_sales_personnel")
+	T_customers := c.GetString("T_customers")
+	T_customers_type := c.GetString("T_customers_type")
+	T_service_type := c.GetString("T_service_type")
+	T_content := c.GetString("T_content")
+	T_estimate_contract_amount := c.GetString("T_estimate_contract_amount")
+	T_sign_bill_time := c.GetString("T_sign_bill_time")
+	T_prepare_content := c.GetString("T_prepare_content")
+	T_remark := c.GetString("T_remark")
+
+	var_ := ProjectFiling.ProjectFiling{
+		T_date:                     T_date,
+		T_sales_personnel:          T_sales_personnel,
+		T_customers:                T_customers,
+		T_customers_type:           T_customers_type,
+		T_service_type:             T_service_type,
+		T_content:                  T_content,
+		T_estimate_contract_amount: T_estimate_contract_amount,
+		T_sign_bill_time:           T_sign_bill_time,
+		T_prepare_content:          T_prepare_content,
+		T_remark:                   T_remark,
+		T_state:                    1,
+		T_uuid:                     c.User.T_uuid,
+	}
+	ProjectFiling_r, err := ProjectFiling.Read_ProjectFiling_ByT_customers(T_customers)
+	if err != nil && err.Error() != orm.ErrNoRows.Error() {
+		c.Data["json"] = lib.JSONS{Code: 203, Msg: "添加失败"}
+		c.ServeJSON()
+		return
+	}
+
+	if ProjectFiling_r.Id > 0 {
+		c.Data["json"] = lib.JSONS{Code: 203, Msg: fmt.Sprintf("【%s】客户已存在", T_customers)}
+		c.ServeJSON()
+		return
+	}
+
+	Id, err := ProjectFiling.Add_ProjectFiling(var_)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 203, Msg: "添加失败"}
+		c.ServeJSON()
+		return
+	}
+
+	NatsServer.AddUserLogs(c.User.T_uuid, "项目备案", "添加", var_)
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Id}
+	c.ServeJSON()
+	return
+}
+func (c *ProjectFilingController) ProjectFiling_Edit() {
+	T_id, _ := c.GetInt("T_id")
+	T_date := c.GetString("T_date")
+	T_sales_personnel := c.GetString("T_sales_personnel")
+	T_customers := c.GetString("T_customers")
+	T_customers_type := c.GetString("T_customers_type")
+	T_service_type := c.GetString("T_service_type")
+	T_content := c.GetString("T_content")
+	T_estimate_contract_amount := c.GetString("T_estimate_contract_amount")
+	T_sign_bill_time := c.GetString("T_sign_bill_time")
+	T_prepare_content := c.GetString("T_prepare_content")
+	T_remark := c.GetString("T_remark")
+
+	ProjectFiling_r, err := ProjectFiling.Read_ProjectFiling_ById(T_id)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
+		c.ServeJSON()
+		return
+	}
+
+	ProjectFiling_r2, err := ProjectFiling.Read_ProjectFiling_ByT_customers(T_customers)
+	if err != nil && err.Error() != orm.ErrNoRows.Error() {
+		c.Data["json"] = lib.JSONS{Code: 203, Msg: "修改失败"}
+		c.ServeJSON()
+		return
+	}
+	if ProjectFiling_r2.Id != ProjectFiling_r.Id && ProjectFiling_r2.Id > 0 {
+		c.Data["json"] = lib.JSONS{Code: 203, Msg: fmt.Sprintf("【%s】客户已存在", T_customers)}
+		c.ServeJSON()
+		return
+	}
+	cols := []string{}
+	if len(T_date) > 0 {
+		ProjectFiling_r.T_date = T_date
+		cols = append(cols, "T_date")
+	}
+	if len(T_sales_personnel) > 0 {
+		ProjectFiling_r.T_sales_personnel = T_sales_personnel
+		cols = append(cols, "T_sales_personnel")
+	}
+	if len(T_customers) > 0 {
+		ProjectFiling_r.T_customers = T_customers
+		cols = append(cols, "T_customers")
+	}
+	if len(T_customers_type) > 0 {
+		ProjectFiling_r.T_customers_type = T_customers_type
+		cols = append(cols, "T_customers_type")
+	}
+	if len(T_service_type) > 0 {
+		ProjectFiling_r.T_service_type = T_service_type
+		cols = append(cols, "T_service_type")
+	}
+	if len(T_content) > 0 {
+		ProjectFiling_r.T_content = T_content
+		cols = append(cols, "T_content")
+	}
+	if len(T_estimate_contract_amount) > 0 {
+		ProjectFiling_r.T_estimate_contract_amount = T_estimate_contract_amount
+		cols = append(cols, "T_estimate_contract_amount")
+	}
+	if len(T_sign_bill_time) > 0 {
+		ProjectFiling_r.T_sign_bill_time = T_sign_bill_time
+		cols = append(cols, "T_sign_bill_time")
+	}
+	if len(T_prepare_content) > 0 {
+		ProjectFiling_r.T_prepare_content = T_prepare_content
+		cols = append(cols, "T_prepare_content")
+	}
+	if len(T_remark) > 0 {
+		ProjectFiling_r.T_remark = T_remark
+		cols = append(cols, "T_remark")
+	}
+
+	if err = ProjectFiling.Update_ProjectFiling(ProjectFiling_r, cols...); err != nil {
+		c.Data["json"] = lib.JSONS{Code: 203, Msg: "修改失败"}
+		c.ServeJSON()
+		return
+	}
+
+	NatsServer.AddUserLogs(c.User.T_uuid, "项目备案", "修改", ProjectFiling_r)
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
+	c.ServeJSON()
+	return
+}
+func (c *ProjectFilingController) ProjectFiling_Del() {
+
+	T_id, _ := c.GetInt("T_id")
+	ProjectFiling_r, err := ProjectFiling.Read_ProjectFiling_ById(T_id)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 203, Msg: "T_id Err!"}
+		c.ServeJSON()
+		return
+	}
+
+	if err = ProjectFiling.Delete_ProjectFiling(ProjectFiling_r); err != nil {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
+		c.ServeJSON()
+		return
+	}
+
+	NatsServer.AddUserLogs(c.User.T_uuid, "项目备案", "删除", strconv.Itoa(T_id))
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
+	c.ServeJSON()
+	return
+}

+ 136 - 0
models/ProjectFiling/ProjectFiling.go

@@ -0,0 +1,136 @@
+package ProjectFiling
+
+import (
+	"ERP_storage/logs"
+	_ "github.com/astaxie/beego/cache/redis"
+	"github.com/beego/beego/v2/adapter/orm"
+	orm2 "github.com/beego/beego/v2/client/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"gogs.baozhida.cn/zoie/ERP_libs/lib"
+)
+
+// 验证项目
+type ProjectFiling struct {
+	Id                         int    `orm:"column(ID);size(11);auto;pk"`
+	T_date                     string `orm:"size(256);null"`      // 备案时间
+	T_sales_personnel          string `orm:"size(256);null"`      // 销售人员
+	T_customers                string `orm:"size(256);null"`      // 客户名称
+	T_customers_type           string `orm:"size(256);null"`      // 客户类型
+	T_service_type             string `orm:"size(256);null"`      // 服务类型
+	T_content                  string `orm:"size(256);null"`      // 具体内容
+	T_estimate_contract_amount string `orm:"size(256);null"`      // 预计合同金额
+	T_sign_bill_time           string `orm:"size(256);null"`      // 预计签单时间
+	T_prepare_content          string `orm:"size(256);null"`      // 提前准备内容
+	T_remark                   string `orm:"size(256);null"`      // 备注
+	T_state                    int    `orm:"size(2);default(1)"`  // 0 删除(伪删除)   1 正常
+	T_uuid                     string `orm:"index;size(32);null"` // 申请人
+
+}
+
+func (t *ProjectFiling) TableName() string {
+	return "project_filing" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(ProjectFiling))
+
+}
+
+// 获取 ById
+func Read_ProjectFiling_ById(Id int) (r ProjectFiling, err error) {
+	o := orm.NewOrm()
+	qs := o.QueryTable(new(ProjectFiling))
+	err = qs.Filter("Id", Id).Filter("T_state", 1).One(&r)
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+	}
+	return
+}
+
+// 获取列表
+func Read_ProjectFiling_List(T_uuid string, T_sales_personnel, T_customers string, page, page_z int) (r_ []ProjectFiling, cnt int64) {
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+	qs := o.QueryTable(new(ProjectFiling))
+	var offset int64
+	if page <= 1 {
+		offset = 0
+	} else {
+		offset = int64((page - 1) * page_z)
+	}
+
+	// 过滤
+	cond := orm.NewCondition()
+	cond = cond.And("T_state", 1)
+
+	if len(T_uuid) > 0 {
+		cond = cond.And("T_uuid", T_uuid)
+	}
+	if len(T_sales_personnel) > 0 {
+		cond = cond.And("T_sales_personnel__icontains", T_sales_personnel)
+	}
+	if len(T_customers) > 0 {
+		cond = cond.And("T_customers__icontains", T_customers)
+	}
+
+	// 查询
+	var r []ProjectFiling
+	_, err := qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond)).OrderBy("Id").All(&r)
+
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+		return
+	}
+
+	cnt, err = qs.SetCond((*orm2.Condition)(cond)).Count()
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+		return
+	}
+
+	return r, cnt
+}
+
+// 修改
+func Update_ProjectFiling(m ProjectFiling, cols ...string) error {
+	o := orm.NewOrm()
+	_, err := o.Update(&m, cols...)
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+		return err
+	}
+	return nil
+}
+
+// 删除
+func Delete_ProjectFiling(v ProjectFiling) error {
+	o := orm.NewOrm()
+	v.T_state = 0
+	_, err := o.Update(&v, "T_state")
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+	}
+	return err
+}
+
+// 添加
+func Add_ProjectFiling(r ProjectFiling) (id int64, err error) {
+	o := orm.NewOrm()
+	id, err = o.Insert(&r)
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+	}
+	return id, err
+}
+
+// 获取 ById
+func Read_ProjectFiling_ByT_customers(T_customers string) (r ProjectFiling, err error) {
+	o := orm.NewOrm()
+	qs := o.QueryTable(new(ProjectFiling))
+	err = qs.Filter("T_customers", T_customers).Filter("T_state", 1).One(&r)
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+	}
+	return
+}

+ 2 - 0
models/init.go

@@ -5,6 +5,7 @@ import (
 	"ERP_storage/models/ContractReview"
 	"ERP_storage/models/IOTNetworkCard"
 	"ERP_storage/models/Percentage"
+	"ERP_storage/models/ProjectFiling"
 	"ERP_storage/models/Purchase"
 	"ERP_storage/models/RepairWorkOrder"
 	"ERP_storage/models/validationtool"
@@ -32,6 +33,7 @@ func AutoMigrateDB() {
 			&RepairWorkOrder.RepairWorkOrder{},
 			&Purchase.Purchase{},
 			&validationtool.ValidationToolHistory{},
+			&ProjectFiling.ProjectFiling{},
 		)
 	if err != nil {
 		log.Fatalf("migrate db fail: %v", err)

+ 19 - 0
routers/ProjectFiling.go

@@ -0,0 +1,19 @@
+package routers
+
+import (
+	"ERP_storage/controllers"
+	beego "github.com/beego/beego/v2/server/web"
+)
+
+func init() {
+
+	projectFiling := beego.NewNamespace("/ProjectFiling",
+		beego.NSRouter("/User_List", &controllers.ProjectFilingController{}, "*:ProjectFiling_User_List"), // 验证项目列表
+		beego.NSRouter("/List", &controllers.ProjectFilingController{}, "*:ProjectFiling_List"),           // 验证项目列表
+		beego.NSRouter("/Add", &controllers.ProjectFilingController{}, "*:ProjectFiling_Add"),             // 获取验证项目
+		beego.NSRouter("/Edit", &controllers.ProjectFilingController{}, "*:ProjectFiling_Edit"),           // 添加验证项目
+		beego.NSRouter("/Del", &controllers.ProjectFilingController{}, "*:ProjectFiling_Del"),             // 删除验证项目
+	)
+
+	beego.AddNamespace(projectFiling)
+}