|
@@ -13,6 +13,12 @@ import (
|
|
|
"ERP_storage/models/Stock"
|
|
"ERP_storage/models/Stock"
|
|
|
"errors"
|
|
"errors"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
|
|
+ "math"
|
|
|
|
|
+ "os"
|
|
|
|
|
+ "strconv"
|
|
|
|
|
+ "strings"
|
|
|
|
|
+ "time"
|
|
|
|
|
+
|
|
|
"github.com/beego/beego/v2/adapter/orm"
|
|
"github.com/beego/beego/v2/adapter/orm"
|
|
|
beego "github.com/beego/beego/v2/server/web"
|
|
beego "github.com/beego/beego/v2/server/web"
|
|
|
"github.com/robfig/cron/v3"
|
|
"github.com/robfig/cron/v3"
|
|
@@ -20,11 +26,6 @@ import (
|
|
|
natslibs "gogs.baozhida.cn/zoie/ERP_libs/Nats"
|
|
natslibs "gogs.baozhida.cn/zoie/ERP_libs/Nats"
|
|
|
userlibs "gogs.baozhida.cn/zoie/ERP_libs/User"
|
|
userlibs "gogs.baozhida.cn/zoie/ERP_libs/User"
|
|
|
"gogs.baozhida.cn/zoie/ERP_libs/lib"
|
|
"gogs.baozhida.cn/zoie/ERP_libs/lib"
|
|
|
- "math"
|
|
|
|
|
- "os"
|
|
|
|
|
- "strconv"
|
|
|
|
|
- "strings"
|
|
|
|
|
- "time"
|
|
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
type StockController struct {
|
|
type StockController struct {
|
|
@@ -423,13 +424,14 @@ func (c *StockController) StockIn_List() {
|
|
|
T_start_date := c.GetString("T_start_date")
|
|
T_start_date := c.GetString("T_start_date")
|
|
|
T_end_date := c.GetString("T_end_date")
|
|
T_end_date := c.GetString("T_end_date")
|
|
|
T_name := c.GetString("T_name")
|
|
T_name := c.GetString("T_name")
|
|
|
|
|
+ T_batch_number := c.GetString("T_batch_number")
|
|
|
|
|
|
|
|
userList, _ := NatsServer.Read_User_List_All()
|
|
userList, _ := NatsServer.Read_User_List_All()
|
|
|
Account.Read_User_All_Map(userList)
|
|
Account.Read_User_All_Map(userList)
|
|
|
Basic.Read_Depot_All_Map()
|
|
Basic.Read_Depot_All_Map()
|
|
|
|
|
|
|
|
StockInDao := Stock.NewStockIn(orm.NewOrm())
|
|
StockInDao := Stock.NewStockIn(orm.NewOrm())
|
|
|
- R_List, R_cnt := StockInDao.Read_StockIn_List(T_name, T_depot_id, T_start_date, T_end_date, page, page_z)
|
|
|
|
|
|
|
+ R_List, R_cnt := StockInDao.Read_StockIn_List(T_batch_number, T_name, T_depot_id, T_start_date, T_end_date, page, page_z)
|
|
|
|
|
|
|
|
var r_jsons lib.R_JSONS
|
|
var r_jsons lib.R_JSONS
|
|
|
r_jsons.Num = R_cnt
|
|
r_jsons.Num = R_cnt
|
|
@@ -647,21 +649,47 @@ func (c *StockController) StockIn_Get() {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (c *StockController) StockIn_Add() {
|
|
|
|
|
-
|
|
|
|
|
|
|
+func (c *StockController) StockIn_generate_number() {
|
|
|
|
|
+ StockOutDao := Stock.NewStockOut(orm.NewOrm())
|
|
|
rand_x := 0
|
|
rand_x := 0
|
|
|
T_number := ""
|
|
T_number := ""
|
|
|
- o := orm.NewOrm()
|
|
|
|
|
- o.Begin()
|
|
|
|
|
- StockInDao := Stock.NewStockIn(o)
|
|
|
|
|
for true {
|
|
for true {
|
|
|
T_number = "RK-" + lib.GetRandstring(8, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", int64(rand_x))
|
|
T_number = "RK-" + lib.GetRandstring(8, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", int64(rand_x))
|
|
|
- _, err := StockInDao.Read_StockIn_ByT_number(T_number)
|
|
|
|
|
|
|
+ _, err := StockOutDao.Read_StockOut_ByT_number(T_number)
|
|
|
if err != nil && err.Error() == orm.ErrNoRows.Error() {
|
|
if err != nil && err.Error() == orm.ErrNoRows.Error() {
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|
|
|
rand_x += 1
|
|
rand_x += 1
|
|
|
}
|
|
}
|
|
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: T_number}
|
|
|
|
|
+ c.ServeJSON()
|
|
|
|
|
+ return
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (c *StockController) StockIn_Add() {
|
|
|
|
|
+
|
|
|
|
|
+ o := orm.NewOrm()
|
|
|
|
|
+ o.Begin()
|
|
|
|
|
+ StockInDao := Stock.NewStockIn(o)
|
|
|
|
|
+
|
|
|
|
|
+ T_number := c.GetString("T_number")
|
|
|
|
|
+
|
|
|
|
|
+ // 检查前端传入的T_number是否已提交过
|
|
|
|
|
+ _, err := StockInDao.Read_StockIn_ByT_number(T_number)
|
|
|
|
|
+ if err == nil {
|
|
|
|
|
+ // 入库编号已存在,不需要做任何处理
|
|
|
|
|
+ o.Rollback()
|
|
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 200, Msg: "入库编号已存在,无需重复提交!", Data: T_number}
|
|
|
|
|
+ c.ServeJSON()
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ if err != nil && err.Error() != orm.ErrNoRows.Error() {
|
|
|
|
|
+ // 数据库查询错误
|
|
|
|
|
+ o.Rollback()
|
|
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 203, Msg: "查询入库编号失败"}
|
|
|
|
|
+ c.ServeJSON()
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
T_depot_id, _ := c.GetInt("T_depot_id")
|
|
T_depot_id, _ := c.GetInt("T_depot_id")
|
|
|
T_type, _ := c.GetInt("T_type") // 1-入库 2-退库
|
|
T_type, _ := c.GetInt("T_type") // 1-入库 2-退库
|
|
@@ -670,6 +698,7 @@ func (c *StockController) StockIn_Add() {
|
|
|
T_remark := c.GetString("T_remark")
|
|
T_remark := c.GetString("T_remark")
|
|
|
T_project := c.GetString("T_project")
|
|
T_project := c.GetString("T_project")
|
|
|
T_return_user := c.GetString("T_return_user")
|
|
T_return_user := c.GetString("T_return_user")
|
|
|
|
|
+ T_batch_number := c.GetString("T_batch_number")
|
|
|
date, is := lib.DateStrToTime(T_date)
|
|
date, is := lib.DateStrToTime(T_date)
|
|
|
if !is {
|
|
if !is {
|
|
|
c.Data["json"] = lib.JSONS{Code: 202, Msg: "日期格式错误!"}
|
|
c.Data["json"] = lib.JSONS{Code: 202, Msg: "日期格式错误!"}
|
|
@@ -686,14 +715,15 @@ func (c *StockController) StockIn_Add() {
|
|
|
NatsServer.AddUserLogs(c.User.T_uuid, "仓库管理", "入库", T_product)
|
|
NatsServer.AddUserLogs(c.User.T_uuid, "仓库管理", "入库", T_product)
|
|
|
|
|
|
|
|
var_ := Stock.StockIn{
|
|
var_ := Stock.StockIn{
|
|
|
- T_number: T_number,
|
|
|
|
|
- T_depot_id: T_depot_id,
|
|
|
|
|
- T_type: T_type,
|
|
|
|
|
- T_date: T_date,
|
|
|
|
|
- T_remark: T_remark,
|
|
|
|
|
- T_submit: c.User.T_uuid,
|
|
|
|
|
- T_project: T_project,
|
|
|
|
|
- T_return_user: T_return_user,
|
|
|
|
|
|
|
+ T_number: T_number,
|
|
|
|
|
+ T_depot_id: T_depot_id,
|
|
|
|
|
+ T_type: T_type,
|
|
|
|
|
+ T_date: T_date,
|
|
|
|
|
+ T_remark: T_remark,
|
|
|
|
|
+ T_submit: c.User.T_uuid,
|
|
|
|
|
+ T_project: T_project,
|
|
|
|
|
+ T_return_user: T_return_user,
|
|
|
|
|
+ T_batch_number: T_batch_number,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
StockInProductDao := Stock.NewStockInProduct(o)
|
|
StockInProductDao := Stock.NewStockInProduct(o)
|
|
@@ -701,7 +731,7 @@ func (c *StockController) StockIn_Add() {
|
|
|
DeviceDao := Stock.NewDevice(o)
|
|
DeviceDao := Stock.NewDevice(o)
|
|
|
IotCardDao := Property.NewIotCard(&o)
|
|
IotCardDao := Property.NewIotCard(&o)
|
|
|
|
|
|
|
|
- _, err := StockInDao.Add_StockIn(var_)
|
|
|
|
|
|
|
+ _, err = StockInDao.Add_StockIn(var_)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
o.Rollback()
|
|
o.Rollback()
|
|
|
c.Data["json"] = lib.JSONS{Code: 203, Msg: "入库失败"}
|
|
c.Data["json"] = lib.JSONS{Code: 203, Msg: "入库失败"}
|
|
@@ -775,12 +805,13 @@ func (c *StockController) StockIn_Add() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
stockInProduct := Stock.StockInProduct{
|
|
stockInProduct := Stock.StockInProduct{
|
|
|
- T_number: T_number,
|
|
|
|
|
- T_product_id: product_id,
|
|
|
|
|
- T_depot_id: T_depot_id,
|
|
|
|
|
- T_num: num, // 入库数量
|
|
|
|
|
- T_date: T_date, // 入库日期
|
|
|
|
|
- T_relation_sn: T_relation_sn,
|
|
|
|
|
|
|
+ T_number: T_number,
|
|
|
|
|
+ T_product_id: product_id,
|
|
|
|
|
+ T_depot_id: T_depot_id,
|
|
|
|
|
+ T_num: num, // 入库数量
|
|
|
|
|
+ T_date: T_date, // 入库日期
|
|
|
|
|
+ T_relation_sn: T_relation_sn,
|
|
|
|
|
+ T_batch_number: T_batch_number,
|
|
|
}
|
|
}
|
|
|
_, err = StockInProductDao.Add_StockInProduct(stockInProduct)
|
|
_, err = StockInProductDao.Add_StockInProduct(stockInProduct)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -888,6 +919,7 @@ func (c *StockController) StockIn_Edit() {
|
|
|
T_remark := c.GetString("T_remark")
|
|
T_remark := c.GetString("T_remark")
|
|
|
T_project := c.GetString("T_project")
|
|
T_project := c.GetString("T_project")
|
|
|
T_return_user := c.GetString("T_return_user")
|
|
T_return_user := c.GetString("T_return_user")
|
|
|
|
|
+ T_batch_number := c.GetString("T_batch_number")
|
|
|
date, is := lib.DateStrToTime(T_date)
|
|
date, is := lib.DateStrToTime(T_date)
|
|
|
if !is {
|
|
if !is {
|
|
|
c.Data["json"] = lib.JSONS{Code: 202, Msg: "日期格式错误!"}
|
|
c.Data["json"] = lib.JSONS{Code: 202, Msg: "日期格式错误!"}
|
|
@@ -916,6 +948,7 @@ func (c *StockController) StockIn_Edit() {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
T_old_date := stockIn.T_date
|
|
T_old_date := stockIn.T_date
|
|
|
|
|
+ T_old_batch_number := stockIn.T_batch_number
|
|
|
|
|
|
|
|
// 查询入库产品信息
|
|
// 查询入库产品信息
|
|
|
productOldList := StockInProductDao.Read_StockInProduct_List_ByT_number(stockIn.T_number)
|
|
productOldList := StockInProductDao.Read_StockInProduct_List_ByT_number(stockIn.T_number)
|
|
@@ -1221,8 +1254,11 @@ func (c *StockController) StockIn_Edit() {
|
|
|
if len(T_return_user) > 0 {
|
|
if len(T_return_user) > 0 {
|
|
|
stockIn.T_return_user = T_return_user
|
|
stockIn.T_return_user = T_return_user
|
|
|
}
|
|
}
|
|
|
|
|
+ if len(T_batch_number) > 0 {
|
|
|
|
|
+ stockIn.T_batch_number = T_batch_number
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- err = StockInDao.Update_StockIn(stockIn, "T_remark", "T_date", "T_project", "T_return_user")
|
|
|
|
|
|
|
+ err = StockInDao.Update_StockIn(stockIn, "T_remark", "T_date", "T_project", "T_return_user", "T_batch_number")
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
o.Rollback()
|
|
o.Rollback()
|
|
|
c.Data["json"] = lib.JSONS{Code: 203, Msg: "修改入库失败"}
|
|
c.Data["json"] = lib.JSONS{Code: 203, Msg: "修改入库失败"}
|
|
@@ -1236,6 +1272,10 @@ func (c *StockController) StockIn_Edit() {
|
|
|
StockInProductDao.Update_StockInProduct_T_date(stockIn.T_number, T_date)
|
|
StockInProductDao.Update_StockInProduct_T_date(stockIn.T_number, T_date)
|
|
|
DeviceDao.Update_Device_CreateTimeByT_in_number(stockIn.T_number, T_date)
|
|
DeviceDao.Update_Device_CreateTimeByT_in_number(stockIn.T_number, T_date)
|
|
|
}
|
|
}
|
|
|
|
|
+ if len(T_batch_number) > 0 && T_old_batch_number != T_batch_number {
|
|
|
|
|
+ // 修改出库产品日期
|
|
|
|
|
+ StockInProductDao.Update_StockInProduct_T_batch_number(stockIn.T_number, T_date)
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// 更新月份统计表
|
|
// 更新月份统计表
|
|
|
allProductList := []int{}
|
|
allProductList := []int{}
|
|
@@ -1951,18 +1991,27 @@ func (c *StockController) StockOut_generate_number() {
|
|
|
|
|
|
|
|
func (c *StockController) StockOut_Add() {
|
|
func (c *StockController) StockOut_Add() {
|
|
|
|
|
|
|
|
- rand_x := 0
|
|
|
|
|
- T_number := ""
|
|
|
|
|
o := orm.NewOrm()
|
|
o := orm.NewOrm()
|
|
|
o.Begin()
|
|
o.Begin()
|
|
|
StockOutDao := Stock.NewStockOut(o)
|
|
StockOutDao := Stock.NewStockOut(o)
|
|
|
- for true {
|
|
|
|
|
- T_number = "CK-" + lib.GetRandstring(8, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", int64(rand_x))
|
|
|
|
|
- _, err := StockOutDao.Read_StockOut_ByT_number(T_number)
|
|
|
|
|
- if err != nil && err.Error() == orm.ErrNoRows.Error() {
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- rand_x += 1
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 检查前端传入的T_number是否已提交过
|
|
|
|
|
+ T_number := c.GetString("T_number")
|
|
|
|
|
+
|
|
|
|
|
+ _, err := StockOutDao.Read_StockOut_ByT_number(T_number)
|
|
|
|
|
+ if err == nil {
|
|
|
|
|
+ // 入库编号已存在,不需要做任何处理
|
|
|
|
|
+ o.Rollback()
|
|
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 200, Msg: "出库编号已存在,无需重复提交!", Data: T_number}
|
|
|
|
|
+ c.ServeJSON()
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ if err != nil && err.Error() != orm.ErrNoRows.Error() {
|
|
|
|
|
+ // 数据库查询错误
|
|
|
|
|
+ o.Rollback()
|
|
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 203, Msg: "查询入库编号失败"}
|
|
|
|
|
+ c.ServeJSON()
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
T_contract_number := c.GetString("T_contract_number")
|
|
T_contract_number := c.GetString("T_contract_number")
|
|
@@ -2014,7 +2063,7 @@ func (c *StockController) StockOut_Add() {
|
|
|
ContractDao := Contract.NewContract(o)
|
|
ContractDao := Contract.NewContract(o)
|
|
|
ContractProductDao := Contract.NewContractProduct(o)
|
|
ContractProductDao := Contract.NewContractProduct(o)
|
|
|
|
|
|
|
|
- _, err := StockOutDao.Add_StockOut(var_)
|
|
|
|
|
|
|
+ _, err = StockOutDao.Add_StockOut(var_)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
o.Rollback()
|
|
o.Rollback()
|
|
|
c.Data["json"] = lib.JSONS{Code: 203, Msg: "出库失败"}
|
|
c.Data["json"] = lib.JSONS{Code: 203, Msg: "出库失败"}
|