Browse Source

金蝶更新

pull/262/head
yehongyang 3 years ago
parent
commit
519b16fb33
23 changed files with 465 additions and 142 deletions
  1. +15
    -0
      conf/htm_log_config.yaml
  2. +16
    -10
      conf/log_config.yaml
  3. +1
    -0
      infra/logger/config.go
  4. +0
    -3
      infra/logger/file.go
  5. +5
    -5
      infra/logger/log_config.yaml
  6. +3
    -1
      main.go
  7. +1
    -1
      models/base/leit_server_log_model.go
  8. +8
    -1
      services/ap/implments/PlanOrderVersion.service.impl.go
  9. +1
    -0
      services/base/Article.service.go
  10. +1
    -0
      services/base/Customer.service.go
  11. +117
    -24
      services/base/implments/Article.service.impl.go
  12. +94
    -19
      services/base/implments/Customer.service.impl.go
  13. +17
    -0
      task/bindArticle/main.go
  14. +29
    -14
      task/k3cloud.go
  15. +12
    -12
      utils/k3cloud.go
  16. +4
    -7
      utils/k3cloud/base/curl.go
  17. +8
    -6
      utils/k3cloud/service/PLN_PLANORDER.go
  18. +1
    -1
      utils/k3cloud/service/PRD_MO.go
  19. +30
    -30
      utils/k3cloud/service/PUR_Requisition.go
  20. +1
    -1
      utils/k3cloud/service/REM_IndepenReqPlan.go
  21. +1
    -1
      utils/k3cloud/service/pln_forecast.go
  22. +95
    -0
      utils/log/log.go
  23. +5
    -6
      utils/utils.go

+ 15
- 0
conf/htm_log_config.yaml View File

@ -0,0 +1,15 @@
# module配置输出源 配置为map
config:
plan:
# 文件location
filename: ./log/plan
filetype: html
default: "<style>.hr{width:100%;}table{width:100%;border:1;background:#FF9966;}table td{word-break: break-all;background-color:#fff;}.t_title{width:15%;}.time-val{width:30%;}.val{width:40%;}.info{width:75%;}</style>"
# 支持文件的最大个数
MaxAge: 30
info : "<table><tr><td class=\"t_title\">时间:</td><td class=\"time-val\">[time]</td><td class=\"t_title\">错误提示:</td><td class=\"val\">[info]</td></tr><tr><td>Request:</td><td class=\"info\" colspan=\"3\">[request]</td></tr><tr><td>Response:</td><td class=\"info\" colspan=\"3\">[response]</td></tr></table><hr></hr>"
replace :
- "time"
- "info"
- "request"
- "response"

+ 16
- 10
conf/log_config.yaml View File

@ -1,4 +1,4 @@
# 配置输出 支持三种输出 db file 和console
# 配置输出 支持三种输出 db log 和console
# db为数据库输出 目前支持输出到mongo 配置为map
db:
mongo1:
@ -23,6 +23,12 @@ file:
filename: ./log/common.log
# 支持文件的最大个数
MaxAge: 30
plan:
# 文件location
filename: ./log/plan/plan.log
# 支持文件的最大个数
MaxAge: 30
Default : "<style>.hr{width:100%;}table{width:100%;border:1;background:#FF9966;}table td{word-break: break-all;background-color:#fff;}.t_title{width:15%;}.time-val{width:30%;}.val{width:40%;}.info{width:75%;}</style>"
user:
# 文件location
filename: ./log/user.log
@ -42,8 +48,8 @@ config:
root:
# 此处的file、db、console名称可以随意起 见文知意即可
file:
# drivertype 为驱动类型 file-文件 db-数据库 console-控制台
drivertype: file
# drivertype 为驱动类型 log-文件 db-数据库 console-控制台
drivertype: log
level: debug
# drivername 需要和output的map 键值相同
drivername: common
@ -55,13 +61,13 @@ config:
# drivertype: console
# level: debug
# drivername: console
# user:
# file:
# # drivertype 为驱动类型 file-文件 db-数据库 console-控制台
# drivertype: file
# level: info
# # drivername 需要和output的map 键值相同
# drivername: user
plan:
file:
# drivertype 为驱动类型 log-文件 db-数据库 console-控制台
drivertype: log
level: debug
# drivername 需要和output的map 键值相同
drivername: plan
# db:
# drivertype: db
# level: debug


+ 1
- 0
infra/logger/config.go View File

@ -30,6 +30,7 @@ type file struct {
MaxAge int `yaml:"maxAge"`
//MaxBackups int `yaml:"maxBackups"`
//Compress bool `yaml:"compress"`
Default string `yaml:"Default"`
}
type console struct {


+ 0
- 3
infra/logger/file.go View File

@ -24,11 +24,9 @@ func NewFileDriver(config file, level int) (driver, error) {
if fileLogCoreMap == nil {
fileLogCoreMap = make(map[string]*zap.Logger)
}
mKey := config.Filename + strconv.Itoa(config.MaxAge)
logCore = fileLogCoreMap[mKey]
if logCore == nil {
//lumberjackLogger := &lumberjack.Logger{
// Filename: config.Filename,
// MaxSize: config.MaxSize,
@ -43,7 +41,6 @@ func NewFileDriver(config file, level int) (driver, error) {
rotatelogs.WithMaxAge(age),
rotatelogs.WithRotationTime(time.Hour*24),
)
if err != nil {
return nil, err
}


+ 5
- 5
infra/logger/log_config.yaml View File

@ -1,4 +1,4 @@
# 配置输出 支持三种输出 db file 和console
# 配置输出 支持三种输出 db log 和console
# db为数据库输出 目前支持输出到mongo 配置为map
db:
mongo1:
@ -42,8 +42,8 @@ config:
root:
# 此处的file、db、console名称可以随意起 见文知意即可
file:
# drivertype 为驱动类型 file-文件 db-数据库 console-控制台
drivertype: file
# drivertype 为驱动类型 log-文件 db-数据库 console-控制台
drivertype: log
level: debug
# drivername 需要和output的map 键值相同
drivername: common
@ -57,8 +57,8 @@ config:
drivername: console
user:
file:
# drivertype 为驱动类型 file-文件 db-数据库 console-控制台
drivertype: file
# drivertype 为驱动类型 log-文件 db-数据库 console-控制台
drivertype: log
level: info
# drivername 需要和output的map 键值相同
drivername: user


+ 3
- 1
main.go View File

@ -11,6 +11,7 @@ import (
"leit.com/LAPP_CHEERSSON_BACKEND/task"
"leit.com/LAPP_CHEERSSON_BACKEND/task/createVersion"
"leit.com/LAPP_CHEERSSON_BACKEND/utils"
logUtils "leit.com/LAPP_CHEERSSON_BACKEND/utils/log"
"leit.com/LAPP_CHEERSSON_BACKEND/web/middleware/glog"
"leit.com/LAPP_CHEERSSON_BACKEND/web/routes"
"log"
@ -117,7 +118,6 @@ func imain() {
//加载配置
conf.AppOtherParse()
//启动任务
go task.TaskInit()
app := iris.New()
//注册中间件
//conf.PreSettring(app)
@ -132,6 +132,8 @@ func imain() {
if err != nil {
log.Fatal("init logger config failed, error:", err.Error())
}
logUtils.InitLog()
go task.TaskInit()
// 开启自动创建功能
go createVersion.CreateVersionTask()
//启动监听端口


+ 1
- 1
models/base/leit_server_log_model.go View File

@ -19,7 +19,7 @@ type LeitServerLog struct {
TimeStamp string `bson:"timestamp" json:"leit_server_log-timestamp"` //时间戳
Message string `bson:"message" json:"leit_server_log-message"` //出错信息提示
Function string `bson:"function" json:"leit_server_log-function"` //出错函数
File string `bson:"file" json:"leit_server_log-file"` //出错文件
File string `bson:"file" json:"leit_server_log-log"` //出错文件
Operator string `bson:"operator" json:"leit_server_log-operator"` //操作人员
}


+ 8
- 1
services/ap/implments/PlanOrderVersion.service.impl.go View File

@ -14,6 +14,7 @@ import (
baseModel "leit.com/LAPP_CHEERSSON_BACKEND/models/base"
"leit.com/LAPP_CHEERSSON_BACKEND/utils"
utilService "leit.com/LAPP_CHEERSSON_BACKEND/utils/k3cloud/service"
logUtils "leit.com/LAPP_CHEERSSON_BACKEND/utils/log"
"time"
)
@ -166,9 +167,15 @@ func (impl *PlanOrderVersionServiceImplement) Publish(info utils.ChannelsInfo) (
_init := utilService.PLN_PLANORDER_Init()
iserr := false
for _, v := range detailList {
_ids, err := _init.Save(v.PlantNr, "system", &v, &alldata_Article)
_ids, err, req, res := _init.Save(v.PlantNr, "system", &v, &alldata_Article)
if err != nil || _ids == "" {
iserr = true
message := make(map[string]string)
message["time"] = "2021-09-01 00:02:03"
message["info"] = "版本:" + v.VersionNr + " 物料:" + v.ArtId + " 计划周:" + utils.ValueToString(v.PlanYear, "") + "-" + utils.ValueToString(v.PlanWeek, "")
message["request"] = req
message["response"] = res
logUtils.Write("plan", message)
} else {
if ids != "" {
ids += ","


+ 1
- 0
services/base/Article.service.go View File

@ -238,6 +238,7 @@ type ArticleService interface {
*
******************************************************************************/
ImportArtcleLockWeekFile(user *global.User, savePath string) error
BindArticle(taskVal map[string]string)
}
/******************************************************************************


+ 1
- 0
services/base/Customer.service.go View File

@ -251,6 +251,7 @@ type CustomerService interface {
//erp导入
ImportCustomer([][]interface{})
BindCustomer(taskVal map[string]string)
}
/******************************************************************************


+ 117
- 24
services/base/implments/Article.service.impl.go View File

@ -12,6 +12,7 @@ import (
"leit.com/LAPP_CHEERSSON_BACKEND/db"
"leit.com/LAPP_CHEERSSON_BACKEND/global"
"leit.com/LAPP_CHEERSSON_BACKEND/grmi"
apMeta "leit.com/LAPP_CHEERSSON_BACKEND/meta/ap"
meta "leit.com/LAPP_CHEERSSON_BACKEND/meta/base"
modelAp "leit.com/LAPP_CHEERSSON_BACKEND/models/ap"
model "leit.com/LAPP_CHEERSSON_BACKEND/models/base"
@ -155,6 +156,98 @@ func (impl *ArticleServiceImplement) InsertOne(user *global.User, entity *model.
return nil
}
func (impl *ArticleServiceImplement) BindArticle(taskVal map[string]string) {
grmi.Log(nil, "/services/base/implments/Customer.service.impl.go", "BindArticle", "自动绑定物料")
engine := db.Eloquent.Master()
session := engine.NewSession()
defer session.Close()
//查询客户
custDao := dal.NewCustomerDAO(session, model.PlantNr, "System")
custId := strings.Split(taskVal["bindCust"], ",")
var _custId []interface{}
for _, v := range custId {
_custId = append(_custId, v)
}
custList, err := custDao.Select([]grmi.Predicate{
meta.Customer_CustomerId.NewPredicate(grmi.Include, _custId...),
}, nil)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(len(_custId))
fmt.Println(len(custId))
var custArticleData []modelAp.CustArtlst
custArticleDao := dalAp.NewCustArtlstDAO(session, model.PlantNr, "System")
if custList != nil {
//查询所有成品
custDao := dal.NewArticleDAO(session, model.PlantNr, "System")
artList, err := custDao.Select([]grmi.Predicate{
meta.Article_ArtTypeId.NewPredicate(grmi.Equal, model.ART_TYPE_FINISHED),
}, nil)
if err != nil {
return
}
_map := make(map[string]int)
for _, v := range custList {
//删除现有关系
_ = custArticleDao.DeleteWhere([]grmi.Predicate{
apMeta.CustArtlst_CustomerId.NewPredicate(grmi.Equal, v.CustomerId),
})
for _, _v := range artList {
//查询物料是否存在关系
if key, ok := _map[_v.ArtId]; ok {
if key == 1 {
continue
}
} else {
_custArticleOne, _ := custArticleDao.Select([]grmi.Predicate{
apMeta.CustArtlst_ArtId.NewPredicate(grmi.Equal, _v.ArtId),
}, nil)
if len(_custArticleOne) == 0 {
_map[_v.ArtId] = 2
} else {
_map[_v.ArtId] = 1
}
}
custArticleData = append(custArticleData, modelAp.CustArtlst{
PlantNr: model.PlantNr,
CustomerId: v.CustomerId,
ArtId: _v.ArtId,
Descr1: _v.Descr1,
Descr2: _v.Descr2,
})
}
}
}
_ = session.Begin()
if custArticleData != nil {
if len(custArticleData) > 20 {
var _detail []modelAp.CustArtlst
for k, v := range custArticleData {
_detail = append(_detail, v)
if (k > 0 && k%20 == 0) || k+1 == len(custArticleData) {
err := custArticleDao.Insert(&_detail)
if err != nil {
_ = session.Rollback()
fmt.Println(err.Error())
panic(err.Error())
}
_detail = []modelAp.CustArtlst{}
}
}
} else {
err := custArticleDao.Insert(&custArticleData)
if err != nil {
_ = session.Rollback()
panic(err.Error())
}
}
}
_ = session.Commit()
}
/******************************************************************************
*
* @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/base/ArticleService.DeleteOne
@ -728,7 +821,7 @@ func (impl *ArticleServiceImplement) ImportArtcleLockWeekFile(user *global.User,
}
//开启session
err = session.Begin()
if err != nil{
if err != nil {
return err
}
//判断客户是否相同,不相同continue
@ -755,30 +848,30 @@ func (impl *ArticleServiceImplement) ImportArtcleLockWeekFile(user *global.User,
return errors.New("第五列主要没有维护")
}
//查询物料信息
artInfo,err := dao.SelectOne(ArtId)
if err != nil{
artInfo, err := dao.SelectOne(ArtId)
if err != nil {
session.Rollback()
return err
}
if artInfo == nil{
if artInfo == nil {
session.Rollback()
return errors.New(fmt.Sprintf("物料编号:%s没有维护",ArtId))
return errors.New(fmt.Sprintf("物料编号:%s没有维护", ArtId))
}
artInfo.DeliveryBuffer = utils.ValueToFloat(lockWeek,0.0)
artInfo.DeliveryBuffer = utils.ValueToFloat(lockWeek, 0.0)
err = dao.UpdateOne(artInfo)
if err != nil {
session.Rollback()
return err
}
//更新库存
lockArt,err := daoAp.SelectOne(ArtId)
if lockArt == nil{
lockArt, err := daoAp.SelectOne(ArtId)
if lockArt == nil {
stockArt := new(modelAp.ArticleStockLevel)
stockArt.PlantNr = user.PlantNr
stockArt.Descr = artInfo.Descr1
stockArt.ArtId = ArtId
stockArt.MaxCoverPeriod = utils.ValueToFloat(targetStockWeek,0.0)
stockArt.MinCoverPeriod =utils.ValueToFloat(smallStockWeek,0.0)
stockArt.MaxCoverPeriod = utils.ValueToFloat(targetStockWeek, 0.0)
stockArt.MinCoverPeriod = utils.ValueToFloat(smallStockWeek, 0.0)
stockArt.MaxCoverPeriodType = "W"
stockArt.MinCoverPeriodType = "W"
err = daoAp.InsertOne(stockArt)
@ -786,9 +879,9 @@ func (impl *ArticleServiceImplement) ImportArtcleLockWeekFile(user *global.User,
session.Rollback()
return err
}
}else{
lockArt.MaxCoverPeriod = utils.ValueToFloat(targetStockWeek,0.0)
lockArt.MinCoverPeriod =utils.ValueToFloat(smallStockWeek,0.0)
} else {
lockArt.MaxCoverPeriod = utils.ValueToFloat(targetStockWeek, 0.0)
lockArt.MinCoverPeriod = utils.ValueToFloat(smallStockWeek, 0.0)
lockArt.MaxCoverPeriodType = "W"
lockArt.MinCoverPeriodType = "W"
err := daoAp.UpdateOne(lockArt)
@ -798,8 +891,8 @@ func (impl *ArticleServiceImplement) ImportArtcleLockWeekFile(user *global.User,
}
}
//更新主要资源
mainResurce,err := mainRedao.SelectOne(ArtId)
if mainResurce == nil{
mainResurce, err := mainRedao.SelectOne(ArtId)
if mainResurce == nil {
mainResurceone := new(modelAp.ArticleResource)
mainResurceone.PlantNr = user.PlantNr
mainResurceone.ResourceId = resourceId
@ -809,7 +902,7 @@ func (impl *ArticleServiceImplement) ImportArtcleLockWeekFile(user *global.User,
session.Rollback()
return err
}
}else{
} else {
mainResurce.ResourceId = resourceId
err := mainRedao.UpdateOne(mainResurce)
if err != nil {
@ -817,10 +910,10 @@ func (impl *ArticleServiceImplement) ImportArtcleLockWeekFile(user *global.User,
return err
}
}
if sedResourceId != ""{
if sedResourceId != "" {
//更新次要资源
sedResurce,err := secMaindao.SelectOne(ArtId,sedResourceId)
if sedResurce == nil{
sedResurce, err := secMaindao.SelectOne(ArtId, sedResourceId)
if sedResurce == nil {
sedResurceeone := new(modelAp.ArticleSecondaryResource)
sedResurceeone.PlantNr = user.PlantNr
sedResurceeone.SecondaryResourceId = sedResourceId
@ -830,7 +923,7 @@ func (impl *ArticleServiceImplement) ImportArtcleLockWeekFile(user *global.User,
session.Rollback()
return err
}
}else{
} else {
sedResurce.SecondaryResourceId = sedResourceId
err := secMaindao.UpdateOne(sedResurce)
if err != nil {
@ -839,10 +932,10 @@ func (impl *ArticleServiceImplement) ImportArtcleLockWeekFile(user *global.User,
}
}
}
if threeResourceId != ""{
if threeResourceId != "" {
//更新替代资源
threeResurce,err := threeDao.SelectOne(ArtId,threeResourceId)
if threeResurce == nil{
threeResurce, err := threeDao.SelectOne(ArtId, threeResourceId)
if threeResurce == nil {
threeResurceeone := new(modelAp.ArticleAlternativeResource)
threeResurceeone.PlantNr = user.PlantNr
threeResurceeone.AlternativeResourceId = threeResourceId
@ -852,7 +945,7 @@ func (impl *ArticleServiceImplement) ImportArtcleLockWeekFile(user *global.User,
session.Rollback()
return err
}
}else{
} else {
threeResurce.AlternativeResourceId = threeResourceId
err := threeDao.UpdateOne(threeResurce)
if err != nil {


+ 94
- 19
services/base/implments/Customer.service.impl.go View File

@ -3,6 +3,7 @@
package implments
import (
"fmt"
apDal "leit.com/LAPP_CHEERSSON_BACKEND/dao/ap"
dal "leit.com/LAPP_CHEERSSON_BACKEND/dao/base"
"leit.com/LAPP_CHEERSSON_BACKEND/db"
@ -13,6 +14,7 @@ import (
apModel "leit.com/LAPP_CHEERSSON_BACKEND/models/ap"
model "leit.com/LAPP_CHEERSSON_BACKEND/models/base"
"leit.com/LAPP_CHEERSSON_BACKEND/utils"
"strings"
)
/******************************************************************************
@ -292,6 +294,78 @@ func (impl *CustomerServiceImplement) Delete(user *global.User, entities *[]mode
return nil
}
func (impl *CustomerServiceImplement) BindCustomer(taskVal map[string]string) {
grmi.Log(nil, "/services/base/implments/Customer.service.impl.go", "BindCustomer", "自动绑定客户")
engine := db.Eloquent.Master()
session := engine.NewSession()
defer session.Close()
//查询用户
userDao := dal.NewUserDAO(session, model.PlantNr, "System")
userId := strings.Split(taskVal["bindUser"], ",")
var _userId []interface{}
for _, v := range userId {
_userId = append(_userId, v)
}
userList, err := userDao.Select([]grmi.Predicate{
meta.User_UserId.NewPredicate(grmi.Include, _userId...),
}, nil)
if err != nil {
fmt.Println(err.Error())
return
}
var custUserData []apModel.UserCustlst
userCustDao := apDal.NewUserCustlstDAO(session, model.PlantNr, "System")
if userList != nil {
//查询所有客户
custDao := dal.NewCustomerDAO(session, model.PlantNr, "System")
custList, err := custDao.Select(nil, nil)
if err != nil {
return
}
for _, v := range userList {
if v.CustCommissioner != "" {
v.CustCommissioner = ""
_ = userDao.UpdateOne(&v)
}
//删除现有关系
userCustDao.DeleteWhere([]grmi.Predicate{
apMeta.UserCustlst_UserId.NewPredicate(grmi.Equal, v.UserId),
})
for _, _v := range custList {
custUserData = append(custUserData, apModel.UserCustlst{
UserId: v.UserId,
CustomerId: _v.CustomerId,
})
}
}
}
_ = session.Begin()
if custUserData != nil {
if len(custUserData) > 20 {
var _detail []apModel.UserCustlst
for k, v := range custUserData {
_detail = append(_detail, v)
if (k > 0 && k%20 == 0) || k+1 == len(custUserData) {
err := userCustDao.Insert(&_detail)
if err != nil {
_ = session.Rollback()
panic(err.Error())
}
_detail = []apModel.UserCustlst{}
}
}
} else {
err := userCustDao.Insert(&custUserData)
if err != nil {
_ = session.Rollback()
panic(err.Error())
}
}
}
_ = session.Commit()
}
func (impl *CustomerServiceImplement) ImportCustomer(_list [][]interface{}) {
grmi.Log(nil, "/services/base/implments/Customer.service.impl.go", "CustomerTree", "客户列表")
@ -324,6 +398,7 @@ func (impl *CustomerServiceImplement) ImportCustomer(_list [][]interface{}) {
})
userCustMap[v.CustCommissioner] = append(userCustMap[v.CustCommissioner], v.UserId)
}
var userCustList []apModel.UserCustlst
for _, v := range _list {
if _, ok := custMap[utils.ValueToString(v[1], "")]; ok {
@ -387,28 +462,28 @@ func (impl *CustomerServiceImplement) ImportCustomer(_list [][]interface{}) {
DemandModelId: _demandModel.DemandModelId,
})
}
if data == nil {
return
}
_ = session.Begin()
if len(data) > 20 {
var _detail []model.Customer
for k, v := range data {
_detail = append(_detail, v)
if (k > 0 && k%20 == 0) || k+1 == len(data) {
err := dao.Insert(&_detail)
if err != nil {
_ = session.Rollback()
panic(err.Error())
if data != nil {
if len(data) > 20 {
var _detail []model.Customer
for k, v := range data {
_detail = append(_detail, v)
if (k > 0 && k%20 == 0) || k+1 == len(data) {
err := dao.Insert(&_detail)
if err != nil {
_ = session.Rollback()
panic(err.Error())
}
_detail = []model.Customer{}
}
_detail = []model.Customer{}
}
}
} else {
err := dao.Insert(&data)
if err != nil {
_ = session.Rollback()
panic(err.Error())
} else {
err := dao.Insert(&data)
if err != nil {
_ = session.Rollback()
panic(err.Error())
}
}
}
if userCustList != nil {


+ 17
- 0
task/bindArticle/main.go View File

@ -0,0 +1,17 @@
package main
import (
"fmt"
"leit.com/LAPP_CHEERSSON_BACKEND/task"
)
func main() {
err, taskVal := task.EtlTaskArticleInit()
if err != nil {
fmt.Println(err)
return
}
task.BindArticle(taskVal)
fmt.Println("OK")
return
}

+ 29
- 14
task/k3cloud.go View File

@ -28,14 +28,18 @@ var lastTime = TypeTime{}
var serviceOfArticle = svr.NewArticleService()
var serviceOfBomList = svrMe.NewBomLstService()
var serviceOfCustomer = svr.NewCustomerService()
var serviceOfSaleOrder = svr.NewSalesOrderService()
var serviceOfStdef = svr.NewStdefService()
//var serviceOfSaleOrder = svr.NewSalesOrderService()
//var serviceOfStdef = svr.NewStdefService()
var serviceOfCustArtlst = svrAp.NewCustArtlstService()
var serviceOfProject = svrMe.NewProjectService()
var serviceOfUom = svr.NewUomService()
var balanceService = svrAp.NewBalanceService()
func TaskInit() {
//innerLog, err := logger.NewLogger("system", "plan")
//fmt.Println(err)
//innerLog.Debug("系统异常:")
time.AfterFunc(10*time.Second, func() {
balanceService.RefreshData()
})
@ -70,8 +74,9 @@ func oneTask(_date time.Time) {
//ImportMaterial()
//ImportMaterialGroupSearch()
//val := make(map[string]string)
//val["ResourceId"] = "0105"
//ImportArticle(val)
//val["bindCust"] = "011016"
//ImportArticle(val, "")
//BindArticle(val)
//ImportBomList()
//ImportCustomer()
//ImportSaleOrder()
@ -106,23 +111,32 @@ func ImportCustomer() {
serviceOfCustomer.ImportCustomer(response)
}
func ImportQichu(){
//用户自动绑定客户
func BindCustomer(taskVal map[string]string) {
serviceOfCustomer.BindCustomer(taskVal)
}
//客户自动绑定物料
func BindArticle(taskVal map[string]string) {
serviceOfArticle.BindArticle(taskVal)
}
func ImportQichu() {
impl := implments.NewBalanceServiceImplement()
alldata_Article := impl.GetGlobalArticleData()
erp.GetQiChuQty(model.PlantNr,"system", &alldata_Article)
erp.GetQiChuQty(model.PlantNr, "system", &alldata_Article)
}
func ImportZhaizhi(){
func ImportZhaizhi() {
impl := implments.NewBalanceServiceImplement()
alldata_Article := impl.GetGlobalArticleData()
erp.GetZhaizhiQty(model.PlantNr,"system", &alldata_Article)
erp.GetZhaizhiWeekQty(model.PlantNr,"system", &alldata_Article)
erp.GetZhaizhiQty(model.PlantNr, "system", &alldata_Article)
erp.GetZhaizhiWeekQty(model.PlantNr, "system", &alldata_Article)
}
func ImportChaigou(){
func ImportChaigou() {
impl := implments.NewBalanceServiceImplement()
alldata_Article := impl.GetGlobalArticleData()
erp.GetChaigouQty(model.PlantNr,"system", &alldata_Article)
erp.GetChaigouQty(model.PlantNr, "system", &alldata_Article)
}
//销售订单
@ -131,15 +145,16 @@ func ImportSaleOrder() {
//serviceOfSaleOrder.ImportSalesOrder(response)
impl := implments.NewBalanceServiceImplement()
alldata_Article := impl.GetGlobalArticleData()
erp.GetOrderQty(model.PlantNr,"system", &alldata_Article)
erp.GetOrderQty(model.PlantNr, "system", &alldata_Article)
}
func ImportDuli(){
func ImportDuli() {
// 独立需求
impl := implments.NewBalanceServiceImplement()
alldata_Article := impl.GetGlobalArticleData()
erp.GetDuliQty(model.PlantNr, "system", &alldata_Article)
}
//物料分组
func ImportMaterialGroupSearch() string {
response := utilService.MaterialGroupInit().MaterialGroupSearch("", "")
@ -268,7 +283,7 @@ func ImportBalance() {
engine := db.Eloquent.Master()
session := engine.NewSession()
defer session.Close()
dao := dal.NewArticleStockDAO(session,model.PlantNr, "system")
dao := dal.NewArticleStockDAO(session, model.PlantNr, "system")
dao.DeleteWhere([]grmi.Predicate{meta.ArticleStock_PlantNr.NewPredicate(grmi.Equal, model.PlantNr)})
impl_Balance := implments.NewBalanceServiceImplement()


+ 12
- 12
utils/k3cloud.go View File

@ -18,8 +18,8 @@ type K3config struct {
K3Response response.K3ResponseStruct
FUseOrgId string `json:"FUseOrgId1"`
FUseOrgNo string `json:"FUseOrgId1"`
FUseOrgId2 string `json:"FUseOrgId2"`
FUseOrgNo2 string `json:"FUseOrgNo2"`
FUseOrgId2 string `json:"FUseOrgId2"`
FUseOrgNo2 string `json:"FUseOrgNo2"`
}
var K3Obj *K3config
@ -86,7 +86,7 @@ K3cloud 登录
*/
func (k3config *K3config) Login() {
formParams := util.CreateLoginPostData(k3config.AcctID, k3config.Username, k3config.Password, k3config.LcID, k3config.OrgNumber)
res, _ := k3config.session.PostJson(k3config.CloudUrl+util.LOGIN_API, formParams)
res, _, _ := k3config.session.PostJson(k3config.CloudUrl+util.LOGIN_API, formParams)
k3Response := response.K3LoginResponseToStruct(res)
if k3Response.LoginResultType == 0 {
panic(k3Response.Message)
@ -99,7 +99,7 @@ func (k3config *K3config) Login() {
func (K3config *K3config) SearchApi(formId string, search interface{}) ([][]interface{}, error) {
//root.Model
formParams := util.CreateBusinessPostData(formId, util.Struct2Map(search))
res, err := K3config.GetSession().PostJson(K3config.CloudUrl+util.GETBILL_API, formParams)
res, err, _ := K3config.GetSession().PostJson(K3config.CloudUrl+util.GETBILL_API, formParams)
if err != nil {
return nil, err
}
@ -109,23 +109,23 @@ func (K3config *K3config) SearchApi(formId string, search interface{}) ([][]inte
/**
保存数据
*/
func (K3config *K3config) SaveApi(formId string, saveData request.SaveRequest) (*response.K3ResponseStruct, error) {
func (K3config *K3config) SaveApi(formId string, saveData request.SaveRequest) (*response.K3ResponseStruct, error, string) {
formParams := util.CreateBusinessPostData(formId, util.Struct2Map(saveData))
res, err := K3config.GetSession().PostJson(K3config.CloudUrl+util.SAVE_API, formParams)
res, err, req := K3config.GetSession().PostJson(K3config.CloudUrl+util.SAVE_API, formParams)
if err != nil {
return nil, err
return nil, err, req
}
response := response.K3ResponseToStruct(res)
if !response.Result.ResponseStatus.IsSuccess {
return nil, fmt.Errorf("%s", response.Result.ResponseStatus.Errors)
return nil, fmt.Errorf("%s", response.Result.ResponseStatus.Errors), req
}
return &response, nil
return &response, nil, req
}
//批量保存
func (K3config *K3config) BatchSaveApi(formId string, saveData request.SaveRequest) (*response.K3ResponseStruct, error) {
formParams := util.CreateBusinessPostData(formId, util.Struct2Map(saveData))
res, err := K3config.GetSession().PostJson(K3config.CloudUrl+util.BATCHSAVE_API, formParams)
res, err, _ := K3config.GetSession().PostJson(K3config.CloudUrl+util.BATCHSAVE_API, formParams)
if err != nil {
return nil, err
}
@ -138,7 +138,7 @@ func (K3config *K3config) BatchSaveApi(formId string, saveData request.SaveReque
func (K3config *K3config) BillCloseApi(formId string, opNumber string, saveData request.CloseRequest) (*response.K3ResponseStruct, error) {
formParams := util.CreateClosePostData(formId, opNumber, util.Struct2Map(saveData))
res, err := K3config.GetSession().PostJson(K3config.CloudUrl+util.BILLCLOSE_API, formParams)
res, err, _ := K3config.GetSession().PostJson(K3config.CloudUrl+util.BILLCLOSE_API, formParams)
if err != nil {
return nil, err
}
@ -152,7 +152,7 @@ func (K3config *K3config) BillCloseApi(formId string, opNumber string, saveData
func (K3config *K3config) DeleteApi(formId string, saveData request.DeleteRequest) (*response.K3ResponseStruct, error) {
formParams := util.CreateBusinessPostData(formId, util.Struct2Map(saveData))
res, err := K3config.GetSession().PostJson(K3config.CloudUrl+util.DELETE_API, formParams)
res, err, _ := K3config.GetSession().PostJson(K3config.CloudUrl+util.DELETE_API, formParams)
if err != nil {
return nil, err
}


+ 4
- 7
utils/k3cloud/base/curl.go View File

@ -8,7 +8,6 @@ package util
import (
"encoding/json"
"fmt"
"io/ioutil"
"leit.com/LAPP_CHEERSSON_BACKEND/infra/logger"
"net/http"
@ -86,16 +85,15 @@ func (self *Browser) Post(requestUrl string, params map[string]string) []byte {
}
//发送PostJson请求
func (self *Browser) PostJson(requestUrl string, params map[string]interface{}) ([]byte, error) {
func (self *Browser) PostJson(requestUrl string, params map[string]interface{}) ([]byte, error, string) {
postData := self.jsonParams(params)
fmt.Println(postData)
request, _ := http.NewRequest("POST", requestUrl, strings.NewReader(postData))
request.Header.Set("Content-Type", "application/json")
self.setRequestCookie(request)
response, err := self.client.Do(request)
if err != nil {
return []byte{}, err
return []byte{}, err, postData
}
defer response.Body.Close()
@ -105,15 +103,14 @@ func (self *Browser) PostJson(requestUrl string, params map[string]interface{})
data, err := ioutil.ReadAll(response.Body)
result := string(data)
fmt.Println(result)
is := strings.Contains(result, "\"ErrorCode\":500,\"")
if is {
innerLog, _ := logger.NewLogger("system", "erp_post_response")
innerLog.Debug("erp报错请求:", postData)
innerLog.Debug("erp报错:", result)
return nil, err
return nil, err, postData
}
return data, err
return data, err, postData
}
//为请求设置 cookie


+ 8
- 6
utils/k3cloud/service/PLN_PLANORDER.go View File

@ -1,6 +1,7 @@
package service
import (
"encoding/json"
"fmt"
dal "leit.com/LAPP_CHEERSSON_BACKEND/dao/ap"
dal_base "leit.com/LAPP_CHEERSSON_BACKEND/dao/base"
@ -73,7 +74,7 @@ func (_this *PLN_PLANORDER_Service) Search(FilterString, OrderString string) [][
return data
}
func (_this *PLN_PLANORDER_Service) Save(PlantNr int, UserId string, articleDemand *model.PlanOrder, alldata_Article *[]model_base.Article) (string, error) {
func (_this *PLN_PLANORDER_Service) Save(PlantNr int, UserId string, articleDemand *model.PlanOrder, alldata_Article *[]model_base.Article) (string, error, string, string) {
engine := db.Eloquent.Master()
session := engine.NewSession()
defer session.Close()
@ -82,7 +83,7 @@ func (_this *PLN_PLANORDER_Service) Save(PlantNr int, UserId string, articleDema
dao_PlanOrder := dal.NewPlanOrderDAO(session, PlantNr, UserId)
article, err := dao_Article.SelectOne(articleDemand.ArtId)
if err != nil || article == nil {
return "", err
return "", err, "", ""
}
//周一
articleDemand.PlanDate = grmi.Date(utils2.WeekDayMondayZeroTs(articleDemand.PlanDate.Restore()))
@ -174,17 +175,18 @@ func (_this *PLN_PLANORDER_Service) Save(PlantNr int, UserId string, articleDema
},
}
response, err := _this.SaveApi(_this.FormID, request)
response, err, req := _this.SaveApi(_this.FormID, request)
_response, _ := json.Marshal(response)
if err != nil {
return "", err
return "", err, req, string(_response)
}
if response.Result.ResponseStatus.IsSuccess == true {
articleDemand.Operator = strconv.Itoa(response.Result.ID)
dao_PlanOrder.UpdateOne(articleDemand)
return strconv.Itoa(response.Result.ID), nil
return strconv.Itoa(response.Result.ID), nil, req, string(_response)
}
return "", fmt.Errorf(fmt.Sprint(response.Result.ResponseStatus.Errors))
return "", fmt.Errorf(fmt.Sprint(response.Result.ResponseStatus.Errors)), req, string(_response)
}
func (_this *PLN_PLANORDER_Service) Delete(ids string) error {


+ 1
- 1
utils/k3cloud/service/PRD_MO.go View File

@ -30,7 +30,7 @@ func PRD_MO_Init_Weiwai() *PRD_MO_Service {
K3config: utils.K3Obj,
FormID: "PRD_MO",
FieldKeys: "FMaterialId.FNumber,FNoStockInQty,FBillType.FNumber",
FUseOrgKey: "FEntrustOrgId=" + utils.K3Obj.FUseOrgId+ " And FStatus IN (1,2,3,4,5)",
FUseOrgKey: "FEntrustOrgId=" + utils.K3Obj.FUseOrgId + " And FStatus IN (1,2,3,4,5)",
}
return voucher
}


+ 30
- 30
utils/k3cloud/service/PUR_Requisition.go View File

@ -10,13 +10,14 @@ import (
request2 "leit.com/LAPP_CHEERSSON_BACKEND/utils/k3cloud/struct/request"
"time"
)
/**
供应链 - 采购管理 采购申请单
*/
type PUR_Requisition_Service struct {
*utils2.K3config
FormID string
FieldKeys string
FormID string
FieldKeys string
FUseOrgKey string
}
@ -24,20 +25,19 @@ type PUR_Requisition_Service struct {
//到货日期 入库数量 物料编码
func PUR_Requisition_Init() *PUR_Requisition_Service {
voucher := &PUR_Requisition_Service{
K3config: utils2.K3Obj,
FormID: "PUR_Requisition",
FieldKeys: "FMaterialId.FNumber,FStockQty,FArrivalDate",
FUseOrgKey: "FReceiveOrgId="+utils2.K3Obj.FUseOrgId,
K3config: utils2.K3Obj,
FormID: "PUR_Requisition",
FieldKeys: "FMaterialId.FNumber,FStockQty,FArrivalDate",
FUseOrgKey: "FReceiveOrgId=" + utils2.K3Obj.FUseOrgId,
}
return voucher
}
func (_this *PUR_Requisition_Service) Search( FilterString, OrderString string) [][]interface{} {
func (_this *PUR_Requisition_Service) Search(FilterString, OrderString string) [][]interface{} {
var data [][]interface{}
if FilterString != ""{
FilterString = _this.FUseOrgKey+" And "+FilterString
}else{
if FilterString != "" {
FilterString = _this.FUseOrgKey + " And " + FilterString
} else {
FilterString = _this.FUseOrgKey
}
request := request2.SearchRequest{
@ -74,7 +74,7 @@ func (_this *PUR_Requisition_Service) Save(PlantNr int, UserId string, articleDe
dao_Article := dal_base.NewArticleDAO(session, PlantNr, UserId)
article, err := dao_Article.SelectOne(articleDemand.ArtId)
if err != nil || article == nil{
if err != nil || article == nil {
return err
}
//周一
@ -92,18 +92,18 @@ func (_this *PUR_Requisition_Service) Save(PlantNr int, UserId string, articleDe
FNumber: article.ArtId,
},
FMaterialDesc: article.Descr1,
FUnitID: PUR_Requisition.FUnitID{
FUnitID: PUR_Requisition.FUnitID{
article.UomId,
},
FReqQty: articleDemand.DemandQty,
FApproveQty: articleDemand.DemandQty,
FReqQty: articleDemand.DemandQty,
FApproveQty: articleDemand.DemandQty,
FPurchaseOrgID: PUR_Requisition.FPurchaseOrgID{
FNumber: utils2.K3Obj.FUseOrgNo,
},
FReceiveOrgID:PUR_Requisition.FReceiveOrgID{
FReceiveOrgID: PUR_Requisition.FReceiveOrgID{
FNumber: utils2.K3Obj.FUseOrgNo,
},
FPriceUnitID:PUR_Requisition.FPriceUnitID{
FPriceUnitID: PUR_Requisition.FPriceUnitID{
article.UomId,
},
FPriceUnitQty: articleDemand.DemandQty,
@ -111,12 +111,12 @@ func (_this *PUR_Requisition_Service) Save(PlantNr int, UserId string, articleDe
article.UomId,
},
FREQSTOCKQTY: articleDemand.DemandQty,
FBaseReqQty: articleDemand.DemandQty,
FSalUnitID: PUR_Requisition.FSalUnitID{
FBaseReqQty: articleDemand.DemandQty,
FSalUnitID: PUR_Requisition.FSalUnitID{
article.UomId,
},
FSalQty: articleDemand.DemandQty,
FSalBaseQty: articleDemand.DemandQty,
FSalQty: articleDemand.DemandQty,
FSalBaseQty: articleDemand.DemandQty,
FIsVmiBusiness: false,
// "FLeadTime": 2,
}
@ -131,12 +131,12 @@ func (_this *PUR_Requisition_Service) Save(PlantNr int, UserId string, articleDe
FBillTypeID: PUR_Requisition.FBillTypeID{
FNUMBER: "CGSQD01_SYS",
},
FApplicationDate: articleDemand.DemandDate.ToString(),
FRequestType:article.ArtTypeId,
FApplicationOrgID:PUR_Requisition.FApplicationOrgID{
FApplicationDate: articleDemand.DemandDate.ToString(),
FRequestType: article.ArtTypeId,
FApplicationOrgID: PUR_Requisition.FApplicationOrgID{
FNumber: utils2.K3Obj.FUseOrgNo,
},
FCurrencyID:PUR_Requisition.FCurrencyID{
FCurrencyID: PUR_Requisition.FCurrencyID{
//todo
FNumber: "PRE001",
},
@ -145,15 +145,15 @@ func (_this *PUR_Requisition_Service) Save(PlantNr int, UserId string, articleDe
FNumber: "HLTX01_SYS",
},
FIsConvert: false,
FACCTYPE: "Q",
FACCTYPE: "Q",
FMobBillHead: PUR_Requisition.FMobBillHead{
FIsMobBill: false,
FIsMobBill: false,
FMobIsPending: false,
},
FEntity:entityList,
FEntity: entityList,
},
}
_, err = _this.SaveApi(_this.FormID, request)
_, err, _ = _this.SaveApi(_this.FormID, request)
return err
}
}

+ 1
- 1
utils/k3cloud/service/REM_IndepenReqPlan.go View File

@ -128,6 +128,6 @@ func (_this *REM_IndepenReqPlan_Service) Save(PlantNr int, UserId string, articl
},
}
_, err = _this.SaveApi(_this.FormID, request)
_, err, _ = _this.SaveApi(_this.FormID, request)
return err
}

+ 1
- 1
utils/k3cloud/service/pln_forecast.go View File

@ -26,7 +26,7 @@ func (_this *PlnForecastService) SaveForecast(_request pln_forecast.PlnForecastS
Model: _request,
}
response, err = _this.SaveApi(_this.FormID, request)
response, err, _ = _this.SaveApi(_this.FormID, request)
return
}


+ 95
- 0
utils/log/log.go View File

@ -0,0 +1,95 @@
package log
import (
"github.com/spf13/viper"
"leit.com/LAPP_CHEERSSON_BACKEND/utils"
"os"
"strings"
"time"
)
var loggerConfig = new(outputSettings)
var logFileMap map[string]string
func InitLog() error {
var err error
viper.SetConfigName("htm_log_config")
viper.SetConfigType("yaml")
viper.AddConfigPath("./conf/")
if err = viper.ReadInConfig(); err != nil {
return err
}
if err = viper.Unmarshal(loggerConfig); err != nil {
return err
}
for _, v := range loggerConfig.Config {
err = folder(v)
if err != nil {
panic(err)
}
}
return nil
}
/**
*打开文件不存在创建文件
*/
func folder(model outputDriver) error {
err := os.MkdirAll(model.Filename, os.ModePerm)
return err
}
/**
写入文件
*/
func Write(model string, info map[string]string) {
year, month, day := time.Now().Date()
path := loggerConfig.Config[model].Filename + "/" + utils.ValueToString(year, "") + utils.ValueToString(month, "") + utils.ValueToString(day, "") + "." + loggerConfig.Config[model].Filetype
var file *os.File
message := loggerConfig.Config[model].Info
for _, v := range loggerConfig.Config[model].Replace {
message = strings.Replace(message, "["+v+"]", info[v], -1)
}
if !IsExist(path) {
message = loggerConfig.Config[model].Default + message
}
file, err := os.OpenFile(path, os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
panic(err)
}
defer file.Close()
file.Write([]byte(message))
}
//判断文件是否存在
func IsExist(path string) bool {
_, err := os.Stat(path)
return err == nil || os.IsExist(err)
}
/**
* 判断文件是否存在 存在返回 true 不存在返回false
*/
func checkFileIsExist(filename string) bool {
var exist = true
if _, err := os.Stat(filename); os.IsNotExist(err) {
exist = false
}
return exist
}
type outputSettings struct {
Config map[string]outputDriver `yaml:"config"`
}
type outputDriver struct {
Filename string `yaml:"filename"`
Filetype string `yaml:"filetype"`
Default string `yaml:"default"`
MaxAge string `yaml:"MaxAge"`
Info string `yaml:"info"`
Replace []string `yaml:"replace"`
}
func LogFileMapInit() {
logFileMap = make(map[string]string)
}

+ 5
- 6
utils/utils.go View File

@ -445,17 +445,16 @@ func MinTime(vals ...time.Time) time.Time {
return min
}
func Decimal(value float64,length int) float64 {
if length <= 0{
func Decimal(value float64, length int) float64 {
if length <= 0 {
length = 2
}
format := "%."+strconv.Itoa(length)+"f"
format := "%." + strconv.Itoa(length) + "f"
value, _ = strconv.ParseFloat(fmt.Sprintf(format, value), 64)
return value
}
func FloatToString(value float64,length int) string {
func FloatToString(value float64, length int) string {
value = math.Floor(value + 0/5)
return strconv.FormatFloat(value, 'f', -1, 64)
}
@ -463,4 +462,4 @@ func FloatToString(value float64,length int) string {
func Round(f float64, n int) float64 {
n10 := math.Pow10(n)
return math.Trunc((f+0.5/n10)*n10) / n10
}
}

Loading…
Cancel
Save