Files
zmkgC/internal/app/system/logic/xiangmuhuafenbiao/xiangmuhuafenbiao.go

307 lines
10 KiB
Go
Raw Permalink Normal View History

2025-07-07 20:11:59 +08:00
// ==========================================================================
// GFast自动生成logic操作代码。
// 生成日期2023-10-07 16:08:10
// 生成路径: internal/app/system/logic/xiangmuhuafenbiao.go
// 生成人gfast
// desc:项目划分
// company:云南奇讯科技有限公司
// ==========================================================================
package logic
import (
"context"
"errors"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
"github.com/tiger1103/gfast/v3/api/v1/common/coryCommon"
"github.com/tiger1103/gfast/v3/api/v1/common/globe"
"github.com/tiger1103/gfast/v3/api/v1/common/tool/excel"
"github.com/tiger1103/gfast/v3/api/v1/system"
"github.com/tiger1103/gfast/v3/internal/app/system/consts"
"github.com/tiger1103/gfast/v3/internal/app/system/dao"
"github.com/tiger1103/gfast/v3/internal/app/system/model"
"github.com/tiger1103/gfast/v3/internal/app/system/model/do"
"github.com/tiger1103/gfast/v3/internal/app/system/service"
"github.com/tiger1103/gfast/v3/library/liberr"
"os"
"path/filepath"
"strconv"
"strings"
"time"
)
func init() {
service.RegisterXiangmuhuafenbiao(New())
}
func New() *sXiangmuhuafenbiao {
return &sXiangmuhuafenbiao{}
}
type sXiangmuhuafenbiao struct{}
func (s *sXiangmuhuafenbiao) EditExcelFunc(ctx context.Context, req *system.EditExcelFuncReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
//1、获取到document表对应的文件然后返回这一行的数据
var dt *model.DocumentInfoRes
dao.Document.Ctx(ctx).Where("name", req.FileName).Limit(1).Scan(&dt)
//2、根据
var ey *model.XiangmuhuafenbiaoInfoRes
dao.Xiangmuhuafenbiao.Ctx(ctx).WherePri(req.Id).Scan(&ey)
var pathName = ""
if ey != nil {
dir := filepath.Dir(dt.FilenPath)
dir = strings.ReplaceAll(dir, "/file", coryCommon.GetCWD()+"/resource/public")
timestamp := time.Now().UnixNano() / int64(time.Millisecond)
sjc := strconv.FormatInt(timestamp, 10)
pathName = dir + "/" + strconv.FormatInt(ey.ProjectId, 10) + strconv.FormatInt(ey.Id, 10) + sjc + ".txt"
flag, err := coryCommon.OutJson([]byte(req.Json), pathName)
if err != nil || flag == false {
err = errors.New("修改失败")
return
}
_, err = dao.Xiangmuhuafenbiao.Ctx(ctx).WherePri(req.Id).Update(do.DocumentProject{
Json: strings.ReplaceAll(pathName, "\\", "/"),
})
//把原本的json删除
if err == nil && ey.Json != "" {
dirTwo := strings.ReplaceAll(ey.Json, "/file", coryCommon.GetCWD()+"/resource/public")
os.Remove(dirTwo)
}
liberr.ErrIsNil(ctx, err, "修改失败")
}
})
return
}
func (s *sXiangmuhuafenbiao) List(ctx context.Context, req *system.XiangmuhuafenbiaoSearchReq) (listRes *system.XiangmuhuafenbiaoSearchRes, err error) {
listRes = new(system.XiangmuhuafenbiaoSearchRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.Xiangmuhuafenbiao.Ctx(ctx).WithAll()
if req.Id != "" {
m = m.Where(dao.Xiangmuhuafenbiao.Columns().Id+" = ?", req.Id)
}
if req.Danweigongcheng != "" {
//m = m.Where(dao.Xiangmuhuafenbiao.Columns().Danweigongcheng+" = ?", req.Danweigongcheng)
m = m.Where(dao.Xiangmuhuafenbiao.Columns().Danweigongcheng+" like ?", "%"+req.Danweigongcheng+"%")
}
if req.Zidanweigongcheng != "" {
//m = m.Where(dao.Xiangmuhuafenbiao.Columns().Zidanweigongcheng+" = ?", req.Zidanweigongcheng)
m = m.Where(dao.Xiangmuhuafenbiao.Columns().Zidanweigongcheng+" like ?", "%"+req.Zidanweigongcheng+"%")
}
if req.Fenbugongcheng != "" {
//m = m.Where(dao.Xiangmuhuafenbiao.Columns().Fenbugongcheng+" = ?", req.Fenbugongcheng)
m = m.Where(dao.Xiangmuhuafenbiao.Columns().Fenbugongcheng+" like ?", "%"+req.Fenbugongcheng+"%")
}
if req.Zifenbugongcheng != "" {
//m = m.Where(dao.Xiangmuhuafenbiao.Columns().Zifenbugongcheng+" = ?", req.Zifenbugongcheng)
m = m.Where(dao.Xiangmuhuafenbiao.Columns().Zifenbugongcheng+" like ?", "%"+req.Zifenbugongcheng+"%")
}
if req.Fenxianggongcheng != "" {
//m = m.Where(dao.Xiangmuhuafenbiao.Columns().Fenxianggongcheng+" = ?", req.Fenxianggongcheng)
m = m.Where(dao.Xiangmuhuafenbiao.Columns().Fenxianggongcheng+" like ?", "%"+req.Fenxianggongcheng+"%")
}
if req.Jianyanpi != "" {
//m = m.Where(dao.Xiangmuhuafenbiao.Columns().Jianyanpi+" = ?", req.Jianyanpi)
m = m.Where(dao.Xiangmuhuafenbiao.Columns().Jianyanpi+" like ?", "%"+req.Jianyanpi+"%")
}
if req.Name != "" {
m = m.Where(dao.Xiangmuhuafenbiao.Columns().Name+" like ?", "%"+req.Name+"%")
}
if req.Zhixingbiaohao != "" {
m = m.Where(dao.Xiangmuhuafenbiao.Columns().Zhixingbiaohao+" like ?", "%"+req.Zhixingbiaohao+"%")
//m = m.Where(dao.Xiangmuhuafenbiao.Columns().Zhixingbiaohao+" = ?", req.Zhixingbiaohao)
}
//if req.Json != "" {
// m = m.Where(dao.Xiangmuhuafenbiao.Columns().Json+" = ?", req.Json)
//}
if req.PrintStatus != "" {
m = m.Where(dao.Xiangmuhuafenbiao.Columns().PrintStatus+" = ?", gconv.Int(req.PrintStatus))
}
if req.ProjectId != "" {
m = m.Where(dao.Xiangmuhuafenbiao.Columns().ProjectId+" = ?", gconv.Int(req.ProjectId))
}
//if req.CreateBy != "" {
// m = m.Where(dao.Xiangmuhuafenbiao.Columns().CreateBy+" = ?", req.CreateBy)
//}
//if req.UpdateBy != "" {
// m = m.Where(dao.Xiangmuhuafenbiao.Columns().UpdateBy+" = ?", req.UpdateBy)
//}
//if req.CreateddAt != "" {
// m = m.Where(dao.Xiangmuhuafenbiao.Columns().CreateddAt+" = ?", gconv.Time(req.CreateddAt))
//}
listRes.Total, err = m.Count()
liberr.ErrIsNil(ctx, err, "获取总行数失败")
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "id asc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.XiangmuhuafenbiaoInfoRes
err = m.Fields(system.XiangmuhuafenbiaoSearchRes{}).Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.XiangmuhuafenbiaoListRes, len(res))
for k, v := range res {
listRes.List[k] = &model.XiangmuhuafenbiaoListRes{
Id: v.Id,
Danweigongcheng: v.Danweigongcheng,
Zidanweigongcheng: v.Zidanweigongcheng,
Fenbugongcheng: v.Fenbugongcheng,
Zifenbugongcheng: v.Zifenbugongcheng,
Fenxianggongcheng: v.Fenxianggongcheng,
Jianyanpi: v.Jianyanpi,
Name: v.Name,
Zhixingbiaohao: v.Zhixingbiaohao,
Json: v.Json,
PrintStatus: v.PrintStatus,
ProjectId: v.ProjectId,
CreateBy: v.CreateBy,
UpdateBy: v.UpdateBy,
CreateddAt: v.CreateddAt,
}
}
})
return
}
func (s *sXiangmuhuafenbiao) GetById(ctx context.Context, id int) (res *model.XiangmuhuafenbiaoInfoRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.Xiangmuhuafenbiao.Ctx(ctx).WithAll().Where(dao.Xiangmuhuafenbiao.Columns().Id, id).Scan(&res)
json := res.Json
if json != "" {
data, err2 := coryCommon.PutJson(json)
if err2 != nil {
err = err2
}
res.Json = data
}
liberr.ErrIsNil(ctx, err, "获取信息失败")
})
return
}
func (s *sXiangmuhuafenbiao) Add(ctx context.Context, req *system.XiangmuhuafenbiaoAddReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
res, e := service.SysProject().GetByProjectId(ctx, req.ProjectId)
if e != nil {
liberr.ErrIsNil(ctx, e)
return
}
if res == nil {
liberr.ErrIsNil(ctx, errors.New("项目不存在"))
return
}
str, err1 := coryCommon.UploadFile(ctx, req.File, coryCommon.ProjectSplitTable)
if err1 != nil {
liberr.ErrIsNil(ctx, err1, "上传失败!")
}
if !strings.HasSuffix(str, ".xls") {
liberr.ErrIsNil(ctx, err, "仅支持xls格式数据")
}
err2, sheets := excel.ReadXlsx(str)
if err2 != nil {
liberr.ErrIsNil(ctx, err2, "表格读取失败")
}
dao.Xiangmuhuafenbiao.Ctx(ctx).Where(dao.Xiangmuhuafenbiao.Columns().ProjectId, req.ProjectId).Delete()
var rows []do.Xiangmuhuafenbiao
for _, sheet := range sheets {
for _, row := range sheet.Rows {
r := do.Xiangmuhuafenbiao{
ProjectId: req.ProjectId,
PrintStatus: globe.DISABLE,
}
l := len(row)
if l > 0 {
r.Danweigongcheng = row[0]
}
if l > 1 {
r.Zidanweigongcheng = row[1]
}
if l > 2 {
r.Fenbugongcheng = row[2]
}
if l > 3 {
r.Zifenbugongcheng = row[3]
}
if l > 4 {
r.Fenxianggongcheng = row[4]
}
if l > 5 {
r.Jianyanpi = row[5]
}
if l > 6 {
r.Name = row[6]
}
if l > 7 {
r.Zhixingbiaohao = row[7]
}
rows = append(rows, r)
if len(rows) == 1000 {
dao.Xiangmuhuafenbiao.Ctx(ctx).Insert(&rows)
rows = []do.Xiangmuhuafenbiao{}
}
}
}
if len(rows) > 0 {
dao.Xiangmuhuafenbiao.Ctx(ctx).Insert(&rows)
}
liberr.ErrIsNil(ctx, err, "添加失败")
})
return
}
func (s *sXiangmuhuafenbiao) Edit(ctx context.Context, req *system.XiangmuhuafenbiaoEditReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
xiangmuhuafenbiao := do.Xiangmuhuafenbiao{
Danweigongcheng: req.Danweigongcheng,
Zidanweigongcheng: req.Zidanweigongcheng,
Fenbugongcheng: req.Fenbugongcheng,
Zifenbugongcheng: req.Zifenbugongcheng,
Fenxianggongcheng: req.Fenxianggongcheng,
Jianyanpi: req.Jianyanpi,
Name: req.Name,
Zhixingbiaohao: req.Zhixingbiaohao,
PrintStatus: req.PrintStatus,
//ProjectId: req.ProjectId,
//CreateBy: req.CreateBy,
//UpdateBy: req.UpdateBy,
//CreateddAt: req.CreateddAt,
}
//json不为空表示更改了文件把原本的文件删除了
if req.Json != "" {
value, _ := dao.Xiangmuhuafenbiao.Ctx(ctx).WherePri(req.Id).Fields("json").Value()
dir, _ := os.Getwd()
newPath := strings.ReplaceAll(value.String(), "/file", dir+"/resource/public")
os.Remove(newPath)
}
_, err = dao.Xiangmuhuafenbiao.Ctx(ctx).OmitEmpty().WherePri(req.Id).Update(xiangmuhuafenbiao)
_, err = dao.Xiangmuhuafenbiao.Ctx(ctx).WherePri(req.Id).Update(g.Map{"json": nil})
liberr.ErrIsNil(ctx, err, "修改失败")
})
return
}
func (s *sXiangmuhuafenbiao) Delete(ctx context.Context, ids []int) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.Xiangmuhuafenbiao.Ctx(ctx).Delete(dao.Xiangmuhuafenbiao.Columns().Id+" in (?)", ids)
liberr.ErrIsNil(ctx, err, "删除失败")
})
return
}