Files
zmkgC/internal/app/system/logic/xiangmuhuafenbiao/xiangmuhuafenbiao.go
2025-07-07 20:11:59 +08:00

307 lines
10 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ==========================================================================
// 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
}