12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585 |
- package util
- import (
- "fmt"
- "log"
- "net/smtp"
- "os"
- "strconv"
- "strings"
- "time"
- "github.com/360EntSecGroup-Skylar/excelize"
- "github.com/jordan-wright/email"
- "github.com/robfig/cron"
- "kpt.xdmy/apiserver/routers/restful"
- "kpt.xdmy/pkg/logging"
- "kpt.xdmy/pkg/setting"
- )
- // 邮件相关(现代牧业暂未启用)
- func SendMail() {
- defer func() { // 必须要先声明defer
- if err := recover(); err != nil {
- logging.Error(" SendMail pnic err", err) // 这里的err其实就是panic传入的内容,55
- }
- }()
- log.Println("******** ******* *******", time.Now())
- e := email.NewEmail()
- // 发件人
- fromName := ""
- pas := ""
- mails := make([]string, 0)
- //
- subject := ""
- note := ""
- mailreport, err := restful.MapStrList("select * from mailreport where enable = 1")
- if err != nil {
- println("err sql", err.Error())
- } else {
- for _, value := range mailreport {
- //GetMailDataByPasture("集团设备指标",value["name"],value["id"],A,f)
- //GetPastureDeptData(value["name"],value["id"],f)
- if value["type"] == "1" {
- fromName = value["addr"]
- pas = value["pas"]
- subject = value["title"]
- note = value["note"]
- } else {
- mails = append(mails, value["addr"])
- }
- println(value["addr"])
- }
- }
- // 发件人
- //e.From = "864919639@qq.com"
- e.From = fromName
- // 收件人(可以有多个)
- e.To = mails
- //e.To = []string{"18322596935@163.com","1406599862@qq.com"} //"1406599862@qq.com"
- // 邮件主题
- //e.Subject = "集团设备指标报表"
- e.Subject = subject
- // 解析html模板
- //t,err := template.ParseFiles("email-template.html")
- //body := new(bytes.Buffer)
- // Execute方法将解析好的模板应用到匿名结构体上,并将输出写入body中
- e.Text = []byte(note)
- // html形式的消息
- //body.Write([]byte("测试"))
- //// 从缓冲中将内容作为附件到邮件中
- //e.Attach(body, "email-template.html", "text/html")
- // 以路径将文件作为附件添加到邮件中
- //_,err := GetMailData()
- filename := setting.CurrentPath + "uploads/mailreport/" + time.Now().Format("2006-01-02") + "集团设备指标.xlsx"
- e.AttachFile(filename)
- // 发送邮件(如果使用QQ邮箱发送邮件的话,passwd不是邮箱密码而是授权码)
- err = e.Send("smtp.qq.com:587", smtp.PlainAuth("", fromName, pas, "smtp.qq.com"))
- if err != nil {
- println("sent err", err.Error())
- } else {
- println("发送成功")
- }
- }
- func CronMail() {
- log.Println("Starting Cron...")
- defer func() { // 必须要先声明defer
- if err := recover(); err != nil {
- fmt.Printf("CronTest pnic err%+v \n", err)
- logging.Error("panic recover err ", err)
- //println("pnic err",err.(error).Error()) // 这里的err其实就是panic传入的内容,55
- }
- }()
- c := cron.New()
- err := c.AddFunc(setting.ServerSetting.CronFormula, SendMail) //2 * * * * *, 2 表示每分钟的第2s执行一次
- if err != nil {
- println("cron1 err", err.Error())
- err = c.AddFunc("0 9 * * *", SendMail) //2 * * * * *, 2 表示每分钟的第2s执行一次
- if err != nil {
- println("cron2 err", err.Error())
- } else {
- println("开始启动定时任务发送邮件 0 9 * * *")
- }
- } else {
- println("开始启动定时任务发送邮件 ", setting.ServerSetting.CronFormula)
- }
- err = c.AddFunc("0 1 * * *", GetMailData) //2 * * * * *, 2 表示每分钟的第2s执行一次
- if err != nil {
- println("cron3 err", err.Error())
- }
- //_, err = c.AddFunc("30 * * * *", GetMailData) //2 * * * * *, 2 表示每分钟的第2s执行一次
- //if err != nil {
- // println("cron4 err", err.Error())
- //}
- c.Start()
- }
- func GetMailData() {
- defer func() { // 必须要先声明defer
- if err := recover(); err != nil {
- logging.Error("GetMailData pnic err", err) // 这里的err其实就是panic传入的内容,55
- }
- }()
- f := excelize.NewFile()
- f.SetSheetName("Sheet1", "集团设备指标")
- //f.GetSheetMap()
- //f.NewSheet("集团设备指标")
- //f.SetSheetVisible(,false)
- //隐藏名称为 Sheet1 的工作表中的 D 至 F 列:
- //f.SetColVisible("Sheet1", "D:F", false)
- //根据给定的工作表名称(大小写敏感)、列范围和宽度值设置单个或多个列的宽度。
- //例如设置名为 Sheet1 工作表上 A 到 D 列的宽度为 20:
- // 设置单元格的值
- //style, err := f.NewStyle(`{"fill":{"type":"center"}}`)
- //if err != nil {
- // fmt.Println(err)
- //}
- //f.SetCellStyle("集团设备指标", "B1", "M1", style)
- //
- //f.MergeCell("集团设备指标", "N1", "T1")
- //err := SetSheetRow(f,"集团设备指标", "B1", &[]interface{}{"1月", nil,nil,nil,nil,nil,nil,"2月", nil,nil,nil,nil,nil,nil,
- // "3月", nil,nil,nil,nil,nil,nil,"4月", nil,nil,nil,nil,nil,nil,"5月", nil,nil,nil,nil,nil,nil,"6月", nil,nil,nil,nil,nil,nil,"1月", nil,nil,nil,nil,nil,nil,
- // "1月", nil,nil,nil,nil,nil,nil,"1月", nil,nil,nil,nil,nil,nil,"1月", nil,nil,nil,nil,nil,nil,"1月", nil,nil,nil,nil,nil,nil,"1月", nil,nil,nil,nil,nil,nil})
- tem := make([]interface{}, 0)
- tem1 := make([]interface{}, 0)
- c := []interface{}{}
- d := []interface{}{}
- e := []interface{}{}
- g := []interface{}{}
- h := []interface{}{}
- o := []interface{}{}
- p := []interface{}{}
- r := []interface{}{}
- for i := 1; i <= 12; i++ {
- a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
- b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
- c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- tem = append(tem, a...)
- tem1 = append(tem1, b...)
- }
- //d := c
- //e := c
- //g := c
- //h := c
- //o := c
- //p := c
- if err := SetSheetRow(f, "集团设备指标", "N1", &tem); err != nil {
- println(err.Error())
- }
- year := time.Now().Add(-24 * time.Hour).Format("2006")
- f.SetCellValue("集团设备指标", "A1", "时间")
- f.MergeCell("集团设备指标", "B1", "M1")
- f.MergeCell("集团设备指标", "N1", "T1")
- f.MergeCell("集团设备指标", "U1", "AA1")
- f.MergeCell("集团设备指标", "AB1", "AH1")
- f.MergeCell("集团设备指标", "AI1", "AO1")
- f.MergeCell("集团设备指标", "AP1", "AV1")
- f.MergeCell("集团设备指标", "AW1", "BC1")
- f.MergeCell("集团设备指标", "BD1", "BJ1")
- f.MergeCell("集团设备指标", "BK1", "BQ1")
- f.MergeCell("集团设备指标", "BR1", "BX1")
- f.MergeCell("集团设备指标", "BY1", "CE1")
- f.MergeCell("集团设备指标", "CF1", "CL1")
- f.MergeCell("集团设备指标", "CM1", "CS1")
- f.SetCellValue("集团设备指标", "H1", year+"年")
- SetSheetRow(f, "集团设备指标", "A2", &[]interface{}{"牧场", "成本项目", "预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "年度达成率", "迄今饲养头日", "迄今产量(公斤)", "迄今实际单头牛成本", "迄今实际公斤奶成本(元/公斤)"})
- if err := SetSheetRow(f, "集团设备指标", "N2", &tem1); err != nil {
- println(err.Error())
- }
- //
- A := 3
- pastures, err := restful.MapStrList("select id,name from pasture where isdel = 0 AND id <> 18 order by sort")
- if err != nil {
- println("err sql", err.Error())
- } else {
- for _, value := range pastures {
- GetMailDataByPasture("集团设备指标", value["name"], time.Now().Format("2006-01-02"), value["id"], A, f)
- GetPastureDeptData(value["name"], value["id"], f)
- println(value["name"])
- A = A + 8
- }
- }
- valuesMap, err := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportJY")
- valuesMap1, err1 := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportJM")
- sqls := ""
- parammaps := make(map[string]interface{}, 0)
- parammaps["month"] = time.Now().Format("2006-01-02")
- s_params := make([]interface{}, 0)
- if err == nil && len(valuesMap) > 0 {
- sqls = valuesMap["sqlstr"]
- paramslist := strings.Split(valuesMap["params"], ",")
- if len(paramslist) > 0 && valuesMap["params"] != "" {
- for _, value := range paramslist {
- s_params = append(s_params, parammaps[strings.Trim(value, " ")])
- }
- }
- }
- tem = []interface{}{}
- values, err := restful.MapStrList(sqls, s_params...)
- B := A
- temMap := make(map[string][]interface{}, 0)
- if err == nil {
- for _, value := range values {
- tem = append(tem, value["ftype"])
- tem = append(tem, value["monthBudget"])
- tem = append(tem, value["monthLimit"])
- tem = append(tem, value["qmonthBudget"])
- tem = append(tem, value["sumPrice"])
- tem = append(tem, value["asave"])
- tem = append(tem, value["dac"])
- tem = append(tem, value["dacY"])
- tem = append(tem, value["cowNum"])
- tem = append(tem, value["saleNum"])
- tem = append(tem, value["cowprice"])
- tem = append(tem, value["milkprice"])
- temMap[value["ftype"]] = tem
- tem = []interface{}{}
- }
- } else {
- println(err.Error())
- }
- if m, ok := temMap["维修费(万元)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"维修费(万元)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["电费(万元)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"电费(万元)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["燃动费(万元)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"燃动费(万元)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["水费(万元)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"水费(万元)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["设备指标(万元)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"设备指标(万元)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["电量(度)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"电量(度)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["用水量(吨)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"用水量(吨)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["柴油用量(L)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"柴油用量(L)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- s_params = make([]interface{}, 0)
- if err1 == nil && len(valuesMap1) > 0 {
- sqls = valuesMap1["sqlstr"]
- parammaps := make(map[string]interface{}, 0)
- parammaps["month"] = time.Now().Format("2006-01-02")
- paramslist := strings.Split(valuesMap1["params"], ",")
- if len(paramslist) > 0 && valuesMap1["params"] != "" {
- for _, value := range paramslist {
- s_params = append(s_params, parammaps[strings.Trim(value, " ")])
- }
- }
- }
- f.SetCellValue("集团设备指标", "A"+strconv.Itoa(A), "集团")
- f.MergeCell("集团设备指标", "A"+strconv.Itoa(A), "A"+strconv.Itoa(A+7))
- values, err = restful.MapStrList(sqls, s_params...)
- tem = []interface{}{}
- tem2 := []interface{}{}
- if err == nil {
- for _, value := range values {
- tem2 = append(tem2, value["monthBudget"])
- tem2 = append(tem2, value["monthLimit"])
- tem2 = append(tem2, value["qmonthBudget"])
- tem2 = append(tem2, value["sumPrice"])
- tem2 = append(tem2, value["asave"])
- tem2 = append(tem2, value["dac"])
- tem2 = append(tem2, value["dacY"])
- num, _ := strconv.Atoi(value["num"])
- switch value["ftype"] {
- case "维修费(万元)":
- c[(num-1)*7] = tem2[0]
- c[(num-1)*7+1] = tem2[1]
- c[(num-1)*7+2] = tem2[2]
- c[(num-1)*7+3] = tem2[3]
- c[(num-1)*7+4] = tem2[4]
- c[(num-1)*7+5] = tem2[5]
- c[(num-1)*7+6] = tem2[6]
- case "电费(万元)":
- d[(num-1)*7] = tem2[0]
- d[(num-1)*7+1] = tem2[1]
- d[(num-1)*7+2] = tem2[2]
- d[(num-1)*7+3] = tem2[3]
- d[(num-1)*7+4] = tem2[4]
- d[(num-1)*7+5] = tem2[5]
- d[(num-1)*7+6] = tem2[6]
- case "燃动费(万元)":
- e[(num-1)*7] = tem2[0]
- e[(num-1)*7+1] = tem2[1]
- e[(num-1)*7+2] = tem2[2]
- e[(num-1)*7+3] = tem2[3]
- e[(num-1)*7+4] = tem2[4]
- e[(num-1)*7+5] = tem2[5]
- e[(num-1)*7+6] = tem2[6]
- case "水费(万元)":
- g[(num-1)*7] = tem2[0]
- g[(num-1)*7+1] = tem2[1]
- g[(num-1)*7+2] = tem2[2]
- g[(num-1)*7+3] = tem2[3]
- g[(num-1)*7+4] = tem2[4]
- g[(num-1)*7+5] = tem2[5]
- g[(num-1)*7+6] = tem2[6]
- case "电量(度)":
- h[(num-1)*7] = tem2[0]
- h[(num-1)*7+1] = tem2[1]
- h[(num-1)*7+2] = tem2[2]
- h[(num-1)*7+3] = tem2[3]
- h[(num-1)*7+4] = tem2[4]
- h[(num-1)*7+5] = tem2[5]
- h[(num-1)*7+6] = tem2[6]
- case "柴油用量(L)":
- o[(num-1)*7] = tem2[0]
- o[(num-1)*7+1] = tem2[1]
- o[(num-1)*7+2] = tem2[2]
- o[(num-1)*7+3] = tem2[3]
- o[(num-1)*7+4] = tem2[4]
- o[(num-1)*7+5] = tem2[5]
- o[(num-1)*7+6] = tem2[6]
- case "用水量(吨)":
- p[(num-1)*7] = tem2[0]
- p[(num-1)*7+1] = tem2[1]
- p[(num-1)*7+2] = tem2[2]
- p[(num-1)*7+3] = tem2[3]
- p[(num-1)*7+4] = tem2[4]
- p[(num-1)*7+5] = tem2[5]
- p[(num-1)*7+6] = tem2[6]
- case "设备指标(万元)":
- r[(num-1)*7] = tem2[0]
- r[(num-1)*7+1] = tem2[1]
- r[(num-1)*7+2] = tem2[2]
- r[(num-1)*7+3] = tem2[3]
- r[(num-1)*7+4] = tem2[4]
- r[(num-1)*7+5] = tem2[5]
- r[(num-1)*7+6] = tem2[6]
- }
- tem2 = []interface{}{}
- }
- } else {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A), &c); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+1), &d); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+2), &e); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+3), &g); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+4), &r); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+5), &h); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+6), &p); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+7), &o); err != nil {
- println(err.Error())
- }
- //sums[2] = sums[2].(int)+value["monthLimit"].(int)
- //sums[1] = sums[1].(int)+value["monthBudget"].(int)
- // 设置月份单元格字体
- monthStyle, err := f.NewStyle("{\"Alignment\":{\"Vertical\": \"center\", \"Horizontal\":\"center\"}}")
- if err != nil {
- println("monthStyle err", err.Error())
- }
- f.SetCellStyle("集团设备指标", "A1", "CS154", monthStyle)
- // 根据指定路径保存文件
- filename := setting.CurrentPath + "uploads/mailreport/" + time.Now().Format("2006-01-02") + "集团设备指标.xlsx"
- err = PathCheck(setting.CurrentPath + "uploads/mailreport") //检查路径并创建
- os.Remove(filename)
- if err != nil {
- println("PathCheck err", err)
- }
- if err := f.SaveAs(filename); err != nil {
- println(err.Error())
- }
- }
- func GetMailDataByPasture(sheetName, pastureName, date string, pastureId interface{}, B int, f *excelize.File) {
- tem := make([]interface{}, 0)
- tem1 := make([]interface{}, 0)
- c := []interface{}{}
- d := []interface{}{}
- e := []interface{}{}
- g := []interface{}{}
- h := []interface{}{}
- o := []interface{}{}
- p := []interface{}{}
- r := []interface{}{}
- for i := 1; i <= 12; i++ {
- a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
- b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
- c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- tem = append(tem, a...)
- tem1 = append(tem1, b...)
- }
- //
- valuesMap, err := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMY")
- valuesMap1, err1 := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMM")
- sqls := ""
- parammaps := make(map[string]interface{}, 0)
- parammaps["month"] = date
- parammaps["pastureId"] = pastureId
- s_params := make([]interface{}, 0)
- if err == nil && len(valuesMap) > 0 {
- sqls = valuesMap["sqlstr"]
- paramslist := strings.Split(valuesMap["params"], ",")
- if len(paramslist) > 0 && valuesMap["params"] != "" {
- for _, value := range paramslist {
- s_params = append(s_params, parammaps[strings.Trim(value, " ")])
- }
- }
- }
- f.SetCellValue(sheetName, "A"+strconv.Itoa(B), pastureName)
- f.MergeCell(sheetName, "A"+strconv.Itoa(B), "A"+strconv.Itoa(B+7))
- tem = []interface{}{}
- temMap := make(map[string][]interface{}, 0)
- //sums := []interface{}{"设备指标(万元)",0,0,0,0,0,0,0,0}
- values, err := restful.MapStrList(sqls, s_params...)
- Bt := B
- if err == nil {
- for _, value := range values {
- tem = append(tem, value["ftype"])
- tem = append(tem, value["monthBudget"])
- tem = append(tem, value["monthLimit"])
- tem = append(tem, value["qmonthBudget"])
- tem = append(tem, value["sumPrice"])
- tem = append(tem, value["asave"])
- tem = append(tem, value["dac"])
- tem = append(tem, value["dacY"])
- tem = append(tem, value["cowNum"])
- tem = append(tem, value["saleNum"])
- tem = append(tem, value["cowprice"])
- tem = append(tem, value["milkprice"])
- temMap[value["ftype"]] = tem
- //if err := SetSheetRow(f,sheetName, "B"+strconv.Itoa(Bt),&tem); err != nil {
- // println(err.Error())
- //}
- tem = []interface{}{}
- //Bt++
- }
- } else {
- println(err.Error())
- }
- if m, ok := temMap["维修费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"维修费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["电费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"电费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["燃动费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"燃动费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["水费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"水费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["设备指标(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"设备指标(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["电量(度)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"电量(度)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["用水量(吨)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"用水量(吨)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["柴油用量(L)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"柴油用量(L)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- s_params = make([]interface{}, 0)
- if err1 == nil && len(valuesMap1) > 0 {
- sqls = valuesMap1["sqlstr"]
- parammaps := make(map[string]interface{}, 0)
- parammaps["month"] = date
- parammaps["pastureId"] = pastureId
- paramslist := strings.Split(valuesMap1["params"], ",")
- if len(paramslist) > 0 && valuesMap1["params"] != "" {
- for _, value := range paramslist {
- s_params = append(s_params, parammaps[strings.Trim(value, " ")])
- }
- }
- }
- values, err = restful.MapStrList(sqls, s_params...)
- tem = []interface{}{}
- tem2 := []interface{}{}
- if err == nil {
- for _, value := range values {
- tem2 = append(tem2, value["monthBudget"])
- tem2 = append(tem2, value["monthLimit"])
- tem2 = append(tem2, value["qmonthBudget"])
- tem2 = append(tem2, value["sumPrice"])
- tem2 = append(tem2, value["asave"])
- tem2 = append(tem2, value["dac"])
- tem2 = append(tem2, value["dacY"])
- num, _ := strconv.Atoi(value["num"])
- switch value["ftype"] {
- case "维修费(万元)":
- c[(num-1)*7] = tem2[0]
- c[(num-1)*7+1] = tem2[1]
- c[(num-1)*7+2] = tem2[2]
- c[(num-1)*7+3] = tem2[3]
- c[(num-1)*7+4] = tem2[4]
- c[(num-1)*7+5] = tem2[5]
- c[(num-1)*7+6] = tem2[6]
- case "电费(万元)":
- d[(num-1)*7] = tem2[0]
- d[(num-1)*7+1] = tem2[1]
- d[(num-1)*7+2] = tem2[2]
- d[(num-1)*7+3] = tem2[3]
- d[(num-1)*7+4] = tem2[4]
- d[(num-1)*7+5] = tem2[5]
- d[(num-1)*7+6] = tem2[6]
- case "燃动费(万元)":
- e[(num-1)*7] = tem2[0]
- e[(num-1)*7+1] = tem2[1]
- e[(num-1)*7+2] = tem2[2]
- e[(num-1)*7+3] = tem2[3]
- e[(num-1)*7+4] = tem2[4]
- e[(num-1)*7+5] = tem2[5]
- e[(num-1)*7+6] = tem2[6]
- case "水费(万元)":
- g[(num-1)*7] = tem2[0]
- g[(num-1)*7+1] = tem2[1]
- g[(num-1)*7+2] = tem2[2]
- g[(num-1)*7+3] = tem2[3]
- g[(num-1)*7+4] = tem2[4]
- g[(num-1)*7+5] = tem2[5]
- g[(num-1)*7+6] = tem2[6]
- case "电量(度)":
- h[(num-1)*7] = tem2[0]
- h[(num-1)*7+1] = tem2[1]
- h[(num-1)*7+2] = tem2[2]
- h[(num-1)*7+3] = tem2[3]
- h[(num-1)*7+4] = tem2[4]
- h[(num-1)*7+5] = tem2[5]
- h[(num-1)*7+6] = tem2[6]
- case "柴油用量(L)":
- o[(num-1)*7] = tem2[0]
- o[(num-1)*7+1] = tem2[1]
- o[(num-1)*7+2] = tem2[2]
- o[(num-1)*7+3] = tem2[3]
- o[(num-1)*7+4] = tem2[4]
- o[(num-1)*7+5] = tem2[5]
- o[(num-1)*7+6] = tem2[6]
- case "用水量(吨)":
- p[(num-1)*7] = tem2[0]
- p[(num-1)*7+1] = tem2[1]
- p[(num-1)*7+2] = tem2[2]
- p[(num-1)*7+3] = tem2[3]
- p[(num-1)*7+4] = tem2[4]
- p[(num-1)*7+5] = tem2[5]
- p[(num-1)*7+6] = tem2[6]
- case "设备指标(万元)":
- r[(num-1)*7] = tem2[0]
- r[(num-1)*7+1] = tem2[1]
- r[(num-1)*7+2] = tem2[2]
- r[(num-1)*7+3] = tem2[3]
- r[(num-1)*7+4] = tem2[4]
- r[(num-1)*7+5] = tem2[5]
- r[(num-1)*7+6] = tem2[6]
- }
- tem2 = []interface{}{}
- }
- } else {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "N"+strconv.Itoa(B), &c); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "N"+strconv.Itoa(B+1), &d); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "N"+strconv.Itoa(B+2), &e); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "N"+strconv.Itoa(B+3), &g); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "N"+strconv.Itoa(B+4), &r); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "N"+strconv.Itoa(B+5), &h); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "N"+strconv.Itoa(B+6), &p); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "N"+strconv.Itoa(B+7), &o); err != nil {
- println(err.Error())
- }
- }
- func GetMailDataByDept(sheetName, DeptName, date string, DeptId, pastureId interface{}, B int, f *excelize.File) {
- tem := make([]interface{}, 0)
- tem1 := make([]interface{}, 0)
- c := []interface{}{}
- d := []interface{}{}
- e := []interface{}{}
- g := []interface{}{}
- h := []interface{}{}
- o := []interface{}{}
- p := []interface{}{}
- r := []interface{}{}
- for i := 1; i <= 12; i++ {
- a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
- b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
- c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- tem = append(tem, a...)
- tem1 = append(tem1, b...)
- }
- //
- valuesMap, err := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportBY")
- valuesMap1, err1 := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportBM")
- sqls := ""
- parammaps := make(map[string]interface{}, 0)
- parammaps["month"] = date
- parammaps["pastureId"] = pastureId
- parammaps["departmentId"] = DeptId
- s_params := make([]interface{}, 0)
- if err == nil && len(valuesMap) > 0 {
- sqls = valuesMap["sqlstr"]
- paramslist := strings.Split(valuesMap["params"], ",")
- if len(paramslist) > 0 && valuesMap["params"] != "" {
- for _, value := range paramslist {
- s_params = append(s_params, parammaps[strings.Trim(value, " ")])
- }
- }
- }
- f.SetCellValue(sheetName, "A"+strconv.Itoa(B), DeptName)
- f.MergeCell(sheetName, "A"+strconv.Itoa(B), "A"+strconv.Itoa(B+7))
- tem = []interface{}{}
- temMap := make(map[string][]interface{}, 0)
- //sums := []interface{}{"设备指标(万元)",0,0,0,0,0,0,0,0}
- values, err := restful.MapStrList(sqls, s_params...)
- Bt := B
- if err == nil {
- for _, value := range values {
- tem = append(tem, value["ftype"])
- tem = append(tem, value["monthBudget"])
- tem = append(tem, value["monthLimit"])
- tem = append(tem, value["qmonthBudget"])
- tem = append(tem, value["sumPrice"])
- tem = append(tem, value["asave"])
- tem = append(tem, value["dac"])
- tem = append(tem, value["dacY"])
- tem = append(tem, value["cowNum"])
- tem = append(tem, value["saleNum"])
- tem = append(tem, value["cowprice"])
- tem = append(tem, value["milkprice"])
- temMap[value["ftype"]] = tem
- tem = []interface{}{}
- }
- } else {
- println(err.Error())
- }
- if m, ok := temMap["维修费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"维修费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["电费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"电费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["燃动费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"燃动费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["水费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"水费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["设备指标(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"设备指标(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["电量(度)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"电量(度)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["用水量(吨)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"用水量(吨)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- if m, ok := temMap["柴油用量(L)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
- println(err.Error())
- }
- Bt++
- } else {
- temw := []interface{}{"柴油用量(L)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
- println(err.Error())
- }
- Bt++
- }
- s_params = make([]interface{}, 0)
- if err1 == nil && len(valuesMap1) > 0 {
- sqls = valuesMap1["sqlstr"]
- parammaps := make(map[string]interface{}, 0)
- parammaps["month"] = date
- parammaps["pastureId"] = pastureId
- parammaps["departmentId"] = DeptId
- paramslist := strings.Split(valuesMap1["params"], ",")
- if len(paramslist) > 0 && valuesMap1["params"] != "" {
- for _, value := range paramslist {
- s_params = append(s_params, parammaps[strings.Trim(value, " ")])
- }
- }
- }
- values, err = restful.MapStrList(sqls, s_params...)
- tem = []interface{}{}
- tem2 := []interface{}{}
- if err == nil {
- for _, value := range values {
- //fmt.Printf("va============== %+v\n",value)
- tem2 = append(tem2, value["monthBudget"])
- tem2 = append(tem2, value["monthLimit"])
- tem2 = append(tem2, value["qmonthBudget"])
- tem2 = append(tem2, value["sumPrice"])
- tem2 = append(tem2, value["asave"])
- tem2 = append(tem2, value["dac"])
- tem2 = append(tem2, value["dacY"])
- num := 1
- if _, ok := value["num"]; ok {
- num, _ = strconv.Atoi(value["num"])
- }
- switch value["ftype"] {
- case "维修费(万元)":
- c[(num-1)*7] = tem2[0]
- c[(num-1)*7+1] = tem2[1]
- c[(num-1)*7+2] = tem2[2]
- c[(num-1)*7+3] = tem2[3]
- c[(num-1)*7+4] = tem2[4]
- c[(num-1)*7+5] = tem2[5]
- c[(num-1)*7+6] = tem2[6]
- case "电费(万元)":
- d[(num-1)*7] = tem2[0]
- d[(num-1)*7+1] = tem2[1]
- d[(num-1)*7+2] = tem2[2]
- d[(num-1)*7+3] = tem2[3]
- d[(num-1)*7+4] = tem2[4]
- d[(num-1)*7+5] = tem2[5]
- d[(num-1)*7+6] = tem2[6]
- case "燃动费(万元)":
- e[(num-1)*7] = tem2[0]
- e[(num-1)*7+1] = tem2[1]
- e[(num-1)*7+2] = tem2[2]
- e[(num-1)*7+3] = tem2[3]
- e[(num-1)*7+4] = tem2[4]
- e[(num-1)*7+5] = tem2[5]
- e[(num-1)*7+6] = tem2[6]
- case "水费(万元)":
- g[(num-1)*7] = tem2[0]
- g[(num-1)*7+1] = tem2[1]
- g[(num-1)*7+2] = tem2[2]
- g[(num-1)*7+3] = tem2[3]
- g[(num-1)*7+4] = tem2[4]
- g[(num-1)*7+5] = tem2[5]
- g[(num-1)*7+6] = tem2[6]
- case "电量(度)":
- h[(num-1)*7] = tem2[0]
- h[(num-1)*7+1] = tem2[1]
- h[(num-1)*7+2] = tem2[2]
- h[(num-1)*7+3] = tem2[3]
- h[(num-1)*7+4] = tem2[4]
- h[(num-1)*7+5] = tem2[5]
- h[(num-1)*7+6] = tem2[6]
- case "柴油用量(L)":
- o[(num-1)*7] = tem2[0]
- o[(num-1)*7+1] = tem2[1]
- o[(num-1)*7+2] = tem2[2]
- o[(num-1)*7+3] = tem2[3]
- o[(num-1)*7+4] = tem2[4]
- o[(num-1)*7+5] = tem2[5]
- o[(num-1)*7+6] = tem2[6]
- case "用水量(吨)":
- p[(num-1)*7] = tem2[0]
- p[(num-1)*7+1] = tem2[1]
- p[(num-1)*7+2] = tem2[2]
- p[(num-1)*7+3] = tem2[3]
- p[(num-1)*7+4] = tem2[4]
- p[(num-1)*7+5] = tem2[5]
- p[(num-1)*7+6] = tem2[6]
- case "设备指标(万元)":
- r[(num-1)*7] = tem2[0]
- r[(num-1)*7+1] = tem2[1]
- r[(num-1)*7+2] = tem2[2]
- r[(num-1)*7+3] = tem2[3]
- r[(num-1)*7+4] = tem2[4]
- r[(num-1)*7+5] = tem2[5]
- r[(num-1)*7+6] = tem2[6]
- }
- tem2 = []interface{}{}
- }
- } else {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(B), &c); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(B+1), &d); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(B+2), &e); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(B+3), &g); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(B+4), &r); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(B+5), &h); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(B+6), &p); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(B+7), &o); err != nil {
- println(err.Error())
- }
- }
- func GetPastureDeptData(sheetName string, pastureId interface{}, f *excelize.File) {
- f.NewSheet(sheetName)
- tem := make([]interface{}, 0)
- tem1 := make([]interface{}, 0)
- c := []interface{}{}
- d := []interface{}{}
- e := []interface{}{}
- g := []interface{}{}
- h := []interface{}{}
- o := []interface{}{}
- p := []interface{}{}
- r := []interface{}{}
- for i := 1; i <= 12; i++ {
- a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
- b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
- c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- tem = append(tem, a...)
- tem1 = append(tem1, b...)
- }
- //d := c
- //e := c
- //g := c
- //h := c
- //o := c
- //p := c
- if err := SetSheetRow(f, sheetName, "J1", &tem); err != nil {
- println(err.Error())
- }
- year := time.Now().Add(-24 * time.Hour).Format("2006")
- f.SetCellValue(sheetName, "A1", "时间")
- f.MergeCell(sheetName, "B1", "I1")
- f.MergeCell(sheetName, "J1", "P1")
- f.MergeCell(sheetName, "Q1", "W1")
- f.MergeCell(sheetName, "X1", "AD1")
- f.MergeCell(sheetName, "AE1", "AK1")
- f.MergeCell(sheetName, "AL1", "AR1")
- f.MergeCell(sheetName, "AS1", "AY1")
- f.MergeCell(sheetName, "AZ1", "BF1")
- f.MergeCell(sheetName, "BG1", "BM1")
- f.MergeCell(sheetName, "BN1", "BT1")
- f.MergeCell(sheetName, "BU1", "CA1")
- f.MergeCell(sheetName, "CB1", "CH1")
- f.MergeCell(sheetName, "CI1", "CO1")
- f.SetCellValue(sheetName, "H1", year+"年")
- SetSheetRow(f, sheetName, "A2", &[]interface{}{"部门", "成本项目", "预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "年度达成率"})
- if err := SetSheetRow(f, sheetName, "J2", &tem1); err != nil {
- println(err.Error())
- }
- //
- A := 3
- pastures, err := restful.MapStrList("select id,name from department where pastureId=? and isDel = 0 AND enable =1 and id <> ?", pastureId, pastureId)
- if err != nil {
- println("err sql", err.Error())
- } else {
- for _, value := range pastures {
- GetMailDataByDept(sheetName, value["name"], time.Now().Format("2006-01-02"), value["id"], pastureId, A, f)
- println(value["name"])
- A = A + 8
- }
- }
- valuesMap, err := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMY")
- valuesMap1, err1 := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMM")
- sqls := ""
- parammaps := make(map[string]interface{}, 0)
- parammaps["month"] = time.Now().Format("2006-01-02")
- parammaps["pastureId"] = pastureId
- s_params := make([]interface{}, 0)
- if err == nil && len(valuesMap) > 0 {
- sqls = valuesMap["sqlstr"]
- paramslist := strings.Split(valuesMap["params"], ",")
- if len(paramslist) > 0 && valuesMap["params"] != "" {
- for _, value := range paramslist {
- s_params = append(s_params, parammaps[strings.Trim(value, " ")])
- }
- }
- }
- tem = []interface{}{}
- //sums := []interface{}{"设备指标(万元)",0,0,0,0,0,0,0,0}
- values, err := restful.MapStrList(sqls, s_params...)
- B := A
- temMap := make(map[string][]interface{}, 0)
- if err == nil {
- for _, value := range values {
- tem = append(tem, value["ftype"])
- tem = append(tem, value["monthBudget"])
- tem = append(tem, value["monthLimit"])
- tem = append(tem, value["qmonthBudget"])
- tem = append(tem, value["sumPrice"])
- tem = append(tem, value["asave"])
- tem = append(tem, value["dac"])
- tem = append(tem, value["dacY"])
- temMap[value["ftype"]] = tem
- //if err := SetSheetRow(f,sheetName, "B"+strconv.Itoa(B),&tem); err != nil {
- // println(err.Error())
- //}
- tem = []interface{}{}
- //B++
- }
- } else {
- println(err.Error())
- }
- if m, ok := temMap["维修费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"维修费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["电费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"电费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["燃动费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"燃动费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["水费(万元)"]; ok {
- if err :=
- SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"水费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["设备指标(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"设备指标(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["电量(度)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"电量(度)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["用水量(吨)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"用水量(吨)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["柴油用量(L)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"柴油用量(L)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- s_params = make([]interface{}, 0)
- if err1 == nil && len(valuesMap1) > 0 {
- sqls = valuesMap1["sqlstr"]
- parammaps := make(map[string]interface{}, 0)
- parammaps["month"] = time.Now().Format("2006-01-02")
- parammaps["pastureId"] = pastureId
- paramslist := strings.Split(valuesMap1["params"], ",")
- if len(paramslist) > 0 && valuesMap1["params"] != "" {
- for _, value := range paramslist {
- s_params = append(s_params, parammaps[strings.Trim(value, " ")])
- }
- }
- }
- f.SetCellValue(sheetName, "A"+strconv.Itoa(A), sheetName)
- f.MergeCell(sheetName, "A"+strconv.Itoa(A), "A"+strconv.Itoa(A+7))
- values, err = restful.MapStrList(sqls, s_params...)
- tem = []interface{}{}
- //d := append(c,nil)
- //e := append(c,nil)
- //g := append(c,nil)
- //h := append(c,nil)
- //o := append(c,nil)
- //p := append(c,nil)
- tem2 := []interface{}{}
- if err == nil {
- for _, value := range values {
- tem2 = append(tem2, value["monthBudget"])
- tem2 = append(tem2, value["monthLimit"])
- tem2 = append(tem2, value["qmonthBudget"])
- tem2 = append(tem2, value["sumPrice"])
- tem2 = append(tem2, value["asave"])
- tem2 = append(tem2, value["dac"])
- tem2 = append(tem2, value["dacY"])
- num, _ := strconv.Atoi(value["num"])
- switch value["ftype"] {
- case "维修费(万元)":
- c[(num-1)*7] = tem2[0]
- c[(num-1)*7+1] = tem2[1]
- c[(num-1)*7+2] = tem2[2]
- c[(num-1)*7+3] = tem2[3]
- c[(num-1)*7+4] = tem2[4]
- c[(num-1)*7+5] = tem2[5]
- c[(num-1)*7+6] = tem2[6]
- case "电费(万元)":
- d[(num-1)*7] = tem2[0]
- d[(num-1)*7+1] = tem2[1]
- d[(num-1)*7+2] = tem2[2]
- d[(num-1)*7+3] = tem2[3]
- d[(num-1)*7+4] = tem2[4]
- d[(num-1)*7+5] = tem2[5]
- d[(num-1)*7+6] = tem2[6]
- case "燃动费(万元)":
- e[(num-1)*7] = tem2[0]
- e[(num-1)*7+1] = tem2[1]
- e[(num-1)*7+2] = tem2[2]
- e[(num-1)*7+3] = tem2[3]
- e[(num-1)*7+4] = tem2[4]
- e[(num-1)*7+5] = tem2[5]
- e[(num-1)*7+6] = tem2[6]
- case "水费(万元)":
- g[(num-1)*7] = tem2[0]
- g[(num-1)*7+1] = tem2[1]
- g[(num-1)*7+2] = tem2[2]
- g[(num-1)*7+3] = tem2[3]
- g[(num-1)*7+4] = tem2[4]
- g[(num-1)*7+5] = tem2[5]
- g[(num-1)*7+6] = tem2[6]
- case "电量(度)":
- h[(num-1)*7] = tem2[0]
- h[(num-1)*7+1] = tem2[1]
- h[(num-1)*7+2] = tem2[2]
- h[(num-1)*7+3] = tem2[3]
- h[(num-1)*7+4] = tem2[4]
- h[(num-1)*7+5] = tem2[5]
- h[(num-1)*7+6] = tem2[6]
- case "柴油用量(L)":
- o[(num-1)*7] = tem2[0]
- o[(num-1)*7+1] = tem2[1]
- o[(num-1)*7+2] = tem2[2]
- o[(num-1)*7+3] = tem2[3]
- o[(num-1)*7+4] = tem2[4]
- o[(num-1)*7+5] = tem2[5]
- o[(num-1)*7+6] = tem2[6]
- case "用水量(吨)":
- p[(num-1)*7] = tem2[0]
- p[(num-1)*7+1] = tem2[1]
- p[(num-1)*7+2] = tem2[2]
- p[(num-1)*7+3] = tem2[3]
- p[(num-1)*7+4] = tem2[4]
- p[(num-1)*7+5] = tem2[5]
- p[(num-1)*7+6] = tem2[6]
- case "设备指标(万元)":
- r[(num-1)*7] = tem2[0]
- r[(num-1)*7+1] = tem2[1]
- r[(num-1)*7+2] = tem2[2]
- r[(num-1)*7+3] = tem2[3]
- r[(num-1)*7+4] = tem2[4]
- r[(num-1)*7+5] = tem2[5]
- r[(num-1)*7+6] = tem2[6]
- }
- tem2 = []interface{}{}
- }
- } else {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A), &c); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+1), &d); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+2), &e); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+3), &g); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+4), &r); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+5), &h); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+6), &p); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+7), &o); err != nil {
- println(err.Error())
- }
- //sums[2] = sums[2].(int)+value["monthLimit"].(int)
- //sums[1] = sums[1].(int)+value["monthBudget"].(int)
- // 设置月份单元格字体
- monthStyle, err := f.NewStyle("{\"Alignment\":{\"Vertical\": \"center\", \"Horizontal\":\"center\"}}")
- if err != nil {
- println("monthStyle err", err.Error())
- }
- f.SetCellStyle(sheetName, "A1", "CS300", monthStyle)
- // 根据指定路径保存文件
- }
- func PathCheck(path string) (err error) {
- b, err := PathExists(path)
- if err != nil {
- println("exist err", err)
- }
- if !b {
- err = os.Mkdir(path, 0777)
- if err != nil {
- println("Mkdir err", err)
- }
- }
- return
- }
- func PathExists(path string) (bool, error) {
- _, err := os.Stat(path)
- if err == nil {
- return true, nil
- }
- if os.IsNotExist(err) {
- return false, nil
- }
- return false, err
- }
- func DownloadDataJT(date string) (string, error) {
- filename := setting.CurrentPath + "uploads/Downloadmailreport/" + date + "集团设备指标.xlsx"
- exist, _ := FileExists(filename)
- println(filename, exist)
- if exist {
- //return filename, nil
- }
- f := excelize.NewFile()
- f.SetSheetName("Sheet1", "集团设备指标")
- tem := make([]interface{}, 0)
- tem1 := make([]interface{}, 0)
- c := []interface{}{}
- d := []interface{}{}
- e := []interface{}{}
- g := []interface{}{}
- h := []interface{}{}
- o := []interface{}{}
- p := []interface{}{}
- r := []interface{}{}
- for i := 1; i <= 12; i++ {
- a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
- b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
- c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- tem = append(tem, a...)
- tem1 = append(tem1, b...)
- }
- if err := SetSheetRow(f, "集团设备指标", "N1", &tem); err != nil {
- println(err.Error())
- }
- //year :=time.Now().Add(-24*time.Hour).Format("2006")
- year := ""
- datetem, _ := strconv.Atoi(date[:4])
- if date > time.Now().Add(-24*time.Hour).Format("2006")+"-01-01" {
- year = strconv.Itoa(datetem)
- } else {
- year = strconv.Itoa(datetem - 1)
- }
- f.SetCellValue("集团设备指标", "A1", "时间")
- f.MergeCell("集团设备指标", "B1", "M1")
- f.MergeCell("集团设备指标", "N1", "T1")
- f.MergeCell("集团设备指标", "U1", "AA1")
- f.MergeCell("集团设备指标", "AB1", "AH1")
- f.MergeCell("集团设备指标", "AI1", "AO1")
- f.MergeCell("集团设备指标", "AP1", "AV1")
- f.MergeCell("集团设备指标", "AW1", "BC1")
- f.MergeCell("集团设备指标", "BD1", "BJ1")
- f.MergeCell("集团设备指标", "BK1", "BQ1")
- f.MergeCell("集团设备指标", "BR1", "BX1")
- f.MergeCell("集团设备指标", "BY1", "CE1")
- f.MergeCell("集团设备指标", "CF1", "CL1")
- f.MergeCell("集团设备指标", "CM1", "CS1")
- f.SetCellValue("集团设备指标", "H1", year+"年")
- SetSheetRow(f, "集团设备指标", "A2", &[]interface{}{"牧场", "成本项目", "预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "年度达成率", "迄今饲养头日", "迄今产量(公斤)", "迄今实际单头牛成本", "迄今实际公斤奶成本(元/公斤)"})
- if err := SetSheetRow(f, "集团设备指标", "N2", &tem1); err != nil {
- println(err.Error())
- }
- A := 3
- pastures, err := restful.MapStrList("select id,name from pasture where isdel = 0 AND id <> 18 order by sort")
- if err != nil {
- println("err sql", err.Error())
- } else {
- for _, value := range pastures {
- GetMailDataByPasture("集团设备指标", value["name"], date, value["id"], A, f)
- println(value["name"])
- A = A + 8
- }
- }
- valuesMap, err := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportJY")
- valuesMap1, err1 := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportJM")
- sqls := ""
- parammaps := make(map[string]interface{}, 0)
- parammaps["month"] = date
- s_params := make([]interface{}, 0)
- if err == nil && len(valuesMap) > 0 {
- sqls = valuesMap["sqlstr"]
- paramslist := strings.Split(valuesMap["params"], ",")
- if len(paramslist) > 0 && valuesMap["params"] != "" {
- for _, value := range paramslist {
- s_params = append(s_params, parammaps[strings.Trim(value, " ")])
- }
- }
- }
- tem = []interface{}{}
- values, err := restful.MapStrList(sqls, s_params...)
- B := A
- temMap := make(map[string][]interface{}, 0)
- if err == nil {
- for _, value := range values {
- tem = append(tem, value["ftype"])
- tem = append(tem, value["monthBudget"])
- tem = append(tem, value["monthLimit"])
- tem = append(tem, value["qmonthBudget"])
- tem = append(tem, value["sumPrice"])
- tem = append(tem, value["asave"])
- tem = append(tem, value["dac"])
- tem = append(tem, value["dacY"])
- tem = append(tem, value["cowNum"])
- tem = append(tem, value["saleNum"])
- tem = append(tem, value["cowprice"])
- tem = append(tem, value["milkprice"])
- temMap[value["ftype"]] = tem
- tem = []interface{}{}
- //B++
- }
- } else {
- println(err.Error())
- }
- if m, ok := temMap["维修费(万元)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"维修费(万元)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["电费(万元)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"电费(万元)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["燃动费(万元)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"燃动费(万元)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["水费(万元)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"水费(万元)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["设备指标(万元)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"设备指标(万元)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["电量(度)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"电量(度)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["用水量(吨)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"用水量(吨)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["柴油用量(L)"]; ok {
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"柴油用量(L)"}
- if err := SetSheetRow(f, "集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- s_params = make([]interface{}, 0)
- if err1 == nil && len(valuesMap1) > 0 {
- sqls = valuesMap1["sqlstr"]
- parammaps := make(map[string]interface{}, 0)
- parammaps["month"] = date
- paramslist := strings.Split(valuesMap1["params"], ",")
- if len(paramslist) > 0 && valuesMap1["params"] != "" {
- for _, value := range paramslist {
- s_params = append(s_params, parammaps[strings.Trim(value, " ")])
- }
- }
- }
- f.SetCellValue("集团设备指标", "A"+strconv.Itoa(A), "集团")
- f.MergeCell("集团设备指标", "A"+strconv.Itoa(A), "A"+strconv.Itoa(A+7))
- values, err = restful.MapStrList(sqls, s_params...)
- tem = []interface{}{}
- tem2 := []interface{}{}
- if err == nil {
- for _, value := range values {
- tem2 = append(tem2, value["monthBudget"])
- tem2 = append(tem2, value["monthLimit"])
- tem2 = append(tem2, value["qmonthBudget"])
- tem2 = append(tem2, value["sumPrice"])
- tem2 = append(tem2, value["asave"])
- tem2 = append(tem2, value["dac"])
- tem2 = append(tem2, value["dacY"])
- num, _ := strconv.Atoi(value["num"])
- switch value["ftype"] {
- case "维修费(万元)":
- c[(num-1)*7] = tem2[0]
- c[(num-1)*7+1] = tem2[1]
- c[(num-1)*7+2] = tem2[2]
- c[(num-1)*7+3] = tem2[3]
- c[(num-1)*7+4] = tem2[4]
- c[(num-1)*7+5] = tem2[5]
- c[(num-1)*7+6] = tem2[6]
- case "电费(万元)":
- d[(num-1)*7] = tem2[0]
- d[(num-1)*7+1] = tem2[1]
- d[(num-1)*7+2] = tem2[2]
- d[(num-1)*7+3] = tem2[3]
- d[(num-1)*7+4] = tem2[4]
- d[(num-1)*7+5] = tem2[5]
- d[(num-1)*7+6] = tem2[6]
- case "燃动费(万元)":
- e[(num-1)*7] = tem2[0]
- e[(num-1)*7+1] = tem2[1]
- e[(num-1)*7+2] = tem2[2]
- e[(num-1)*7+3] = tem2[3]
- e[(num-1)*7+4] = tem2[4]
- e[(num-1)*7+5] = tem2[5]
- e[(num-1)*7+6] = tem2[6]
- case "水费(万元)":
- g[(num-1)*7] = tem2[0]
- g[(num-1)*7+1] = tem2[1]
- g[(num-1)*7+2] = tem2[2]
- g[(num-1)*7+3] = tem2[3]
- g[(num-1)*7+4] = tem2[4]
- g[(num-1)*7+5] = tem2[5]
- g[(num-1)*7+6] = tem2[6]
- case "电量(度)":
- h[(num-1)*7] = tem2[0]
- h[(num-1)*7+1] = tem2[1]
- h[(num-1)*7+2] = tem2[2]
- h[(num-1)*7+3] = tem2[3]
- h[(num-1)*7+4] = tem2[4]
- h[(num-1)*7+5] = tem2[5]
- h[(num-1)*7+6] = tem2[6]
- case "柴油用量(L)":
- o[(num-1)*7] = tem2[0]
- o[(num-1)*7+1] = tem2[1]
- o[(num-1)*7+2] = tem2[2]
- o[(num-1)*7+3] = tem2[3]
- o[(num-1)*7+4] = tem2[4]
- o[(num-1)*7+5] = tem2[5]
- o[(num-1)*7+6] = tem2[6]
- case "用水量(吨)":
- p[(num-1)*7] = tem2[0]
- p[(num-1)*7+1] = tem2[1]
- p[(num-1)*7+2] = tem2[2]
- p[(num-1)*7+3] = tem2[3]
- p[(num-1)*7+4] = tem2[4]
- p[(num-1)*7+5] = tem2[5]
- p[(num-1)*7+6] = tem2[6]
- case "设备指标(万元)":
- r[(num-1)*7] = tem2[0]
- r[(num-1)*7+1] = tem2[1]
- r[(num-1)*7+2] = tem2[2]
- r[(num-1)*7+3] = tem2[3]
- r[(num-1)*7+4] = tem2[4]
- r[(num-1)*7+5] = tem2[5]
- r[(num-1)*7+6] = tem2[6]
- }
- tem2 = []interface{}{}
- }
- } else {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A), &c); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+1), &d); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+2), &e); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+3), &g); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+4), &r); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+5), &h); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+6), &p); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, "集团设备指标", "N"+strconv.Itoa(A+7), &o); err != nil {
- println(err.Error())
- }
- // 设置月份单元格字体
- monthStyle, err := f.NewStyle("{\"Alignment\":{\"Vertical\": \"center\", \"Horizontal\":\"center\"}}")
- if err != nil {
- println("monthStyle err", err.Error())
- }
- f.SetCellStyle("集团设备指标", "A1", "CS154", monthStyle)
- // 根据指定路径保存文件
- err = PathCheck("uploads/Downloadmailreport") //检查路径并创建
- //os.Remove(filename)
- if err != nil {
- println("PathCheck err", err)
- }
- if err := f.SaveAs(filename); err != nil {
- println(err.Error())
- return "", err
- }
- return filename, err
- }
- func DownloadDataMC(sheetName, date string, pastureId interface{}) (string, error) {
- filename := setting.CurrentPath + "uploads/Downloadmailreport/" + date + sheetName + "设备指标.xlsx"
- exist, _ := FileExists(filename)
- if exist {
- //return filename, nil
- }
- f := excelize.NewFile()
- f.SetSheetName("Sheet1", sheetName)
- tem := make([]interface{}, 0)
- tem1 := make([]interface{}, 0)
- c := []interface{}{}
- d := []interface{}{}
- e := []interface{}{}
- g := []interface{}{}
- h := []interface{}{}
- o := []interface{}{}
- p := []interface{}{}
- r := []interface{}{}
- for i := 1; i <= 12; i++ {
- a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
- b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
- c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
- tem = append(tem, a...)
- tem1 = append(tem1, b...)
- }
- if err := SetSheetRow(f, sheetName, "J1", &tem); err != nil {
- println(err.Error())
- }
- year := ""
- datetem, _ := strconv.Atoi(date[:4])
- if date > time.Now().Add(-24*time.Hour).Format("2006")+"-01-01" {
- year = strconv.Itoa(datetem)
- } else {
- year = strconv.Itoa(datetem - 1)
- }
- f.SetCellValue(sheetName, "A1", "时间")
- f.MergeCell(sheetName, "B1", "I1")
- f.MergeCell(sheetName, "J1", "P1")
- f.MergeCell(sheetName, "Q1", "W1")
- f.MergeCell(sheetName, "X1", "AD1")
- f.MergeCell(sheetName, "AE1", "AK1")
- f.MergeCell(sheetName, "AL1", "AR1")
- f.MergeCell(sheetName, "AS1", "AY1")
- f.MergeCell(sheetName, "AZ1", "BF1")
- f.MergeCell(sheetName, "BG1", "BM1")
- f.MergeCell(sheetName, "BN1", "BT1")
- f.MergeCell(sheetName, "BU1", "CA1")
- f.MergeCell(sheetName, "CB1", "CH1")
- f.MergeCell(sheetName, "CI1", "CO1")
- f.SetCellValue(sheetName, "H1", year+"年")
- SetSheetRow(f, sheetName, "A2", &[]interface{}{"部门", "成本项目", "预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "年度达成率"})
- if err := SetSheetRow(f, sheetName, "J2", &tem1); err != nil {
- println(err.Error())
- }
- A := 3
- pastures, err := restful.MapStrList("select id,name from department where pastureId=? and isDel = 0 AND enable =1 and id <> ?", pastureId, pastureId)
- if err != nil {
- println("err sql", err.Error())
- } else {
- for _, value := range pastures {
- GetMailDataByDept(sheetName, value["name"], date, value["id"], pastureId, A, f)
- println(value["name"])
- A = A + 8
- }
- }
- valuesMap, err := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMY")
- valuesMap1, err1 := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMM")
- sqls := ""
- parammaps := make(map[string]interface{}, 0)
- parammaps["month"] = date
- parammaps["pastureId"] = pastureId
- s_params := make([]interface{}, 0)
- if err == nil && len(valuesMap) > 0 {
- sqls = valuesMap["sqlstr"]
- paramslist := strings.Split(valuesMap["params"], ",")
- if len(paramslist) > 0 && valuesMap["params"] != "" {
- for _, value := range paramslist {
- s_params = append(s_params, parammaps[strings.Trim(value, " ")])
- }
- }
- }
- tem = []interface{}{}
- //sums := []interface{}{"设备指标(万元)",0,0,0,0,0,0,0,0}
- values, err := restful.MapStrList(sqls, s_params...)
- B := A
- temMap := make(map[string][]interface{}, 0)
- if err == nil {
- for _, value := range values {
- tem = append(tem, value["ftype"])
- tem = append(tem, value["monthBudget"])
- tem = append(tem, value["monthLimit"])
- tem = append(tem, value["qmonthBudget"])
- tem = append(tem, value["sumPrice"])
- tem = append(tem, value["asave"])
- tem = append(tem, value["dac"])
- tem = append(tem, value["dacY"])
- temMap[value["ftype"]] = tem
- //if err := SetSheetRow(f,sheetName, "B"+strconv.Itoa(B),&tem); err != nil {
- // println(err.Error())
- //}
- tem = []interface{}{}
- //B++
- }
- } else {
- println(err.Error())
- }
- if m, ok := temMap["维修费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"维修费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["电费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"电费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["燃动费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"燃动费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["水费(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"水费(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["设备指标(万元)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"设备指标(万元)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["电量(度)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"电量(度)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["用水量(吨)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"用水量(吨)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- if m, ok := temMap["柴油用量(L)"]; ok {
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &m); err != nil {
- println(err.Error())
- }
- B++
- } else {
- temw := []interface{}{"柴油用量(L)"}
- if err := SetSheetRow(f, sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
- println(err.Error())
- }
- B++
- }
- s_params = make([]interface{}, 0)
- if err1 == nil && len(valuesMap1) > 0 {
- sqls = valuesMap1["sqlstr"]
- parammaps := make(map[string]interface{}, 0)
- parammaps["month"] = date
- parammaps["pastureId"] = pastureId
- paramslist := strings.Split(valuesMap1["params"], ",")
- if len(paramslist) > 0 && valuesMap1["params"] != "" {
- for _, value := range paramslist {
- s_params = append(s_params, parammaps[strings.Trim(value, " ")])
- }
- }
- }
- f.SetCellValue(sheetName, "A"+strconv.Itoa(A), sheetName)
- f.MergeCell(sheetName, "A"+strconv.Itoa(A), "A"+strconv.Itoa(A+7))
- values, err = restful.MapStrList(sqls, s_params...)
- tem = []interface{}{}
- //d := append(c,nil)
- //e := append(c,nil)
- //g := append(c,nil)
- //h := append(c,nil)
- //o := append(c,nil)
- //p := append(c,nil)
- tem2 := []interface{}{}
- if err == nil {
- for _, value := range values {
- tem2 = append(tem2, value["monthBudget"])
- tem2 = append(tem2, value["monthLimit"])
- tem2 = append(tem2, value["qmonthBudget"])
- tem2 = append(tem2, value["sumPrice"])
- tem2 = append(tem2, value["asave"])
- tem2 = append(tem2, value["dac"])
- tem2 = append(tem2, value["dacY"])
- num, _ := strconv.Atoi(value["num"])
- switch value["ftype"] {
- case "维修费(万元)":
- c[(num-1)*7] = tem2[0]
- c[(num-1)*7+1] = tem2[1]
- c[(num-1)*7+2] = tem2[2]
- c[(num-1)*7+3] = tem2[3]
- c[(num-1)*7+4] = tem2[4]
- c[(num-1)*7+5] = tem2[5]
- c[(num-1)*7+6] = tem2[6]
- case "电费(万元)":
- d[(num-1)*7] = tem2[0]
- d[(num-1)*7+1] = tem2[1]
- d[(num-1)*7+2] = tem2[2]
- d[(num-1)*7+3] = tem2[3]
- d[(num-1)*7+4] = tem2[4]
- d[(num-1)*7+5] = tem2[5]
- d[(num-1)*7+6] = tem2[6]
- case "燃动费(万元)":
- e[(num-1)*7] = tem2[0]
- e[(num-1)*7+1] = tem2[1]
- e[(num-1)*7+2] = tem2[2]
- e[(num-1)*7+3] = tem2[3]
- e[(num-1)*7+4] = tem2[4]
- e[(num-1)*7+5] = tem2[5]
- e[(num-1)*7+6] = tem2[6]
- case "水费(万元)":
- g[(num-1)*7] = tem2[0]
- g[(num-1)*7+1] = tem2[1]
- g[(num-1)*7+2] = tem2[2]
- g[(num-1)*7+3] = tem2[3]
- g[(num-1)*7+4] = tem2[4]
- g[(num-1)*7+5] = tem2[5]
- g[(num-1)*7+6] = tem2[6]
- case "电量(度)":
- h[(num-1)*7] = tem2[0]
- h[(num-1)*7+1] = tem2[1]
- h[(num-1)*7+2] = tem2[2]
- h[(num-1)*7+3] = tem2[3]
- h[(num-1)*7+4] = tem2[4]
- h[(num-1)*7+5] = tem2[5]
- h[(num-1)*7+6] = tem2[6]
- case "柴油用量(L)":
- o[(num-1)*7] = tem2[0]
- o[(num-1)*7+1] = tem2[1]
- o[(num-1)*7+2] = tem2[2]
- o[(num-1)*7+3] = tem2[3]
- o[(num-1)*7+4] = tem2[4]
- o[(num-1)*7+5] = tem2[5]
- o[(num-1)*7+6] = tem2[6]
- case "用水量(吨)":
- p[(num-1)*7] = tem2[0]
- p[(num-1)*7+1] = tem2[1]
- p[(num-1)*7+2] = tem2[2]
- p[(num-1)*7+3] = tem2[3]
- p[(num-1)*7+4] = tem2[4]
- p[(num-1)*7+5] = tem2[5]
- p[(num-1)*7+6] = tem2[6]
- case "设备指标(万元)":
- r[(num-1)*7] = tem2[0]
- r[(num-1)*7+1] = tem2[1]
- r[(num-1)*7+2] = tem2[2]
- r[(num-1)*7+3] = tem2[3]
- r[(num-1)*7+4] = tem2[4]
- r[(num-1)*7+5] = tem2[5]
- r[(num-1)*7+6] = tem2[6]
- }
- tem2 = []interface{}{}
- }
- } else {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A), &c); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+1), &d); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+2), &e); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+3), &g); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+4), &r); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+5), &h); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+6), &p); err != nil {
- println(err.Error())
- }
- if err := SetSheetRow(f, sheetName, "J"+strconv.Itoa(A+7), &o); err != nil {
- println(err.Error())
- }
- //sums[2] = sums[2].(int)+value["monthLimit"].(int)
- //sums[1] = sums[1].(int)+value["monthBudget"].(int)
- // 设置月份单元格字体
- monthStyle, err := f.NewStyle("{\"Alignment\":{\"Vertical\": \"center\", \"Horizontal\":\"center\"}}")
- if err != nil {
- println("monthStyle err", err.Error())
- }
- f.SetCellStyle(sheetName, "A1", "CS300", monthStyle)
- // 根据指定路径保存文件
- //filename :="uploads/Downloadmailreport/" + date +sheetName+"设备指标.xlsx"
- err = PathCheck("uploads/Downloadmailreport") //检查路径并创建
- //os.Remove(filename)
- if err != nil {
- println("PathCheck err", err)
- }
- if err := f.SaveAs(filename); err != nil {
- println(err.Error())
- return "", err
- }
- return filename, err
- }
- func FileExists(path string) (bool, error) {
- _, err := os.Stat(path)
- if err == nil {
- return true, nil
- }
- if os.IsNotExist(err) {
- return false, nil
- }
- return false, err
- }
- // 测试用的
- func Sssss() {
- sqls := "SELECT bbd.`buyeCode`,p.`providerName`,bd.receiveAmount,bbd.`matchCode`,bd.`amount`,bd.`sumAmount`,bd.departmentName,pa.name pastureName," +
- "bd.note,c.id,c.bigId,c.pastureId,ps.id partId,ifnull(ps.name,c.partName) partName,ifnull(ps.partCode,c.partCode) partCode," +
- "ifnull(ps.specification,c.specification) specification,ifnull(brand.brandName,c.brand) brand,ifnull(ps.unit,c.unit) unit," +
- "ifnull(TRIM(TRAILING '.' FROM (TRIM(TRAILING '0' FROM bd.price))),TRIM(TRAILING '.' FROM (TRIM(TRAILING '0' FROM c.price))))" +
- "price,brand.id brandId,c.inventoryType,c.planAmount,c.remark,c.enable,c.isZeroStock,e.`empname`," +
- "DATE_FORMAT(bbd.buyerDate,'%Y-%m-%d')buyerDate,DATE_FORMAT(bbd.DoneDate, '%Y-%m-%d') DoneDate " +
- "FROM buydetail bd INNER JOIN bigbuydetail bbd ON bbd.id = bd.`bigId` LEFT JOIN provider p ON p.id = bbd.`providerId`" +
- "LEFT JOIN contract c ON c.id = bd.`contractId` LEFT JOIN emp e ON e.id = bbd.`buyerPerson` " +
- "LEFT JOIN bigpartdeal bpd ON bpd.`matchCode` = bbd.`matchCode` inner join pasture pa on pa.id = bbd.pastureId " +
- "LEFT JOIN parts ps ON ps.partCode =bd.partCode LEFT JOIN brand ON brand.id=bd.brandId " +
- "where bbd.`enable`=0 and bd.amount > 0 and bbd.buyerDate < ? and bbd.buyerDate > ? and pa.name='通辽牧场' "
- queryData, err := restful.MapStrList(sqls, "2021-08-27", "2021-06-30")
- //s_params := make([]interface{}, 0)
- //queryData, err := restful.QueryByListListT(sql, 0, 0, s_params, tx)
- if err != nil {
- fmt.Println(err)
- } else {
- f := excelize.NewFile()
- // 创建一个工作表
- //供应商 单价 申购数量 采购数量 入库数 申购部门 采购人 配单日期 入库时间
- index := f.NewSheet("采购明细")
- f.SetColWidth("采购明细", "A", "R", 20)
- columns := []string{"备件品牌", "计量单位", "供应商", "单价", "申购数量", "采购数量", "入库数", "申购部门", "采购人", "配单日期",
- "入库时间"}
- letters := []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
- for i, v := range columns {
- f.SetCellValue("采购明细", letters[i]+"1", v)
- }
- fmt.Println(len(queryData))
- for i, v := range queryData {
- // 设置单元格的值
- value := []interface{}{v["matchCode"], v["unit"], v["providerName"], v["price"], v["sumAmount"], v["amount"], v["receiveAmount"],
- v["departmentName"], v["empname"], v["buyerDate"], v["DoneDate"]}
- for a, b := range value {
- f.SetCellValue("采购明细", letters[a]+strconv.Itoa(i+2), b)
- }
- }
- // 设置工作簿的默认工作表
- f.SetActiveSheet(index)
- // 根据指定路径保存文件
- if err := f.SaveAs("D:/project/go/src/KPTcomm/test/采购明细.xlsx"); err != nil {
- fmt.Println(err)
- }
- }
- }
- // 测试
- func DownloadEquipment(parammaps string) (string, error) {
- //appG := app.Gin{C: context}
- data := make(map[string]interface{}, 0)
- filename := setting.CurrentPath + "uploads/Downloadmailreport/" + "设备指标.xlsx"
- exist, _ := FileExists(filename)
- if exist {
- //return filename, nil
- }
- f := excelize.NewFile()
- Style, err := f.NewStyle("{\"Alignment\":{\"Vertical\": \"center\", \"Horizontal\":\"center\"}}")
- //columns := []string{"设备指标", "维修费", "水费", "电费", "柴油费", "水量", "电量", "柴油用量", "燃动费", "生物质颗粒", "汽油用量", "煤炭用量"}
- columns := []string{"设备指标", "维修费", "水费", "电费", "柴油费", "水量", "电量", "柴油用量", "燃动费"}
- columnsMap := make(map[string]string, 0)
- columnsMap["设备指标"] = "万元"
- columnsMap["维修费"] = "万元"
- columnsMap["水费"] = "万元"
- columnsMap["电费"] = "万元"
- columnsMap["柴油费"] = "万元"
- columnsMap["水量"] = "吨"
- columnsMap["电量"] = "度"
- columnsMap["柴油用量"] = "L"
- //columnsMap["燃动费"]= "设备指标"
- columnsMap["生物质颗粒"] = "吨"
- columnsMap["汽油用量"] = "L"
- columnsMap["煤炭用量"] = "吨"
- //序号 牧场 部门 预算 内控 迄今内控 迄今实际 实际节约 实际达成率 单头牛预算 单头牛内控 单头牛迄今内控 单头牛迄今实际 单头牛实际节约
- //columns1 := []string{"序号", "牧场", "部门", "预算", "内控", "迄今内控", "迄今实际", "实际节约", "实际达成率", "单头牛预算",
- // "单头牛内控", "单头牛迄今内控", "单头牛迄今实际", "单头牛实际节约"}
- columns1 := []string{"序号", "牧场", "部门", "预算", "迄今实际", "实际节约", "实际达成率", "单头牛迄今实际"}
- letters := []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
- for i, v := range columns {
- f.NewSheet("Sheet" + strconv.Itoa(i+1))
- f.SetSheetName("Sheet"+strconv.Itoa(i+1), v)
- f.MergeCell(v, "A1", "C1")
- f.MergeCell(v, "D1", "G1")
- f.MergeCell(v, "H1", "H1")
- f.SetCellValue(v, "A1", "设备指标")
- f.SetCellValue(v, "D1", "设备指标")
- f.SetCellValue(v, "H1", "单头牛指标")
- f.SetCellStyle(v, "A1", "CS154", Style)
- f.SetCellStyle(v, "D1", "CS154", Style)
- f.SetCellStyle(v, "H1", "CS154", Style)
- f.SetColWidth(v, "A", "N", 20)
- for i1, v1 := range columns1 {
- f.SetCellValue(v, letters[i1]+"2", v1)
- }
- }
- parammap1 := make(map[string]interface{}, 0)
- json.Unmarshal([]byte(parammaps), ¶mmap1)
- pastureId := "现代牧业"
- if _, ok := parammap1["pastureId"]; ok {
- pastureId = parammap1["pastureId"].(string)
- }
- sqlnames := []string{}
- //if pastureId == "现代牧业" {
- // sqlnames = []string{"getChooseEqMonthBudgetListSumAll", "getChooseMonthWX", "getChooseWaterPrice", "getChooseElectricityPrice", "getChooseMonthiolPrice",
- // "getChooseMonthWater", "getChooseMonthElectricity", "getChooseMonthOilT", "getLgnitionChargePrice", "getChooseBiomassPrice", "getChooseGasolinePrice",
- // "getChooseCoalPrice"}
- //} else {
- // sqlnames = []string{"getChooseEqMonthBudgetListSumAllByPasture", "getChooseMonthWXByPasture", "getChooseWaterPriceByPasture", "getChooseElectricityPriceByPasture", "getChooseMonthiolPriceByPasture",
- // "getChooseMonthWaterByPasture", "getChooseMonthElectricityByPasture", "getChooseMonthOilTByPasture", "getLgnitionChargePriceByPasture", "getChooseBiomassPriceByPasture", "getChooseGasolinePriceByPasture",
- // "getChooseCoalPriceByPasture"}
- //}
- if pastureId == "现代牧业" {
- sqlnames = []string{"getChooseEqMonthBudgetListSumAll", "getChooseMonthWX", "getChooseWaterPrice", "getChooseElectricityPrice", "getChooseMonthiolPrice",
- "getChooseMonthWater", "getChooseMonthElectricity", "getChooseMonthOilT", "getLgnitionChargePrice"}
- } else {
- sqlnames = []string{"getChooseEqMonthBudgetListSumAllByPasture", "getChooseMonthWXByPasture", "getChooseWaterPriceByPasture", "getChooseElectricityPriceByPasture", "getChooseMonthiolPriceByPasture",
- "getChooseMonthWaterByPasture", "getChooseMonthElectricityByPasture", "getChooseMonthOilTByPasture", "getLgnitionChargePriceByPasture"}
- }
- xx := 0
- for z, sqlname := range sqlnames {
- valuesMap, err := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", sqlname)
- parammap := make(map[string]interface{}, 0)
- json.Unmarshal([]byte(parammaps), ¶mmap)
- s_params := make([]interface{}, 0)
- paramslist := strings.Split(valuesMap["params"], ",")
- if len(paramslist) > 0 && valuesMap["params"] != "" {
- for _, value := range paramslist {
- if value == "pastureId" && parammap["pastureId"] == "" {
- s_params = append(s_params, "现代牧业")
- continue
- }
- s_params = append(s_params, parammap[strings.Trim(value, " ")])
- }
- }
- values, err := restful.MapStrList(valuesMap["sqlstr"], s_params...)
- if err != nil {
- fmt.Println(err)
- } else {
- for i, v := range values {
- var columnName string
- if columns[z] == "燃动费" {
- columnName = columns[z]
- } else {
- columnName = fmt.Sprintf("%s(%s)", columns[z], columnsMap[columns[z]])
- }
- //value := []interface{}{columns[z], v["pastureName"], "全厂区", v["monthBudget"], v["monthLimit"], v["qmonthBudget"], v["sumPrice"],
- // v["asave"], v["realReason"], v["oneCowBudget"], v["oneCowLimit"], v["oneCowQmonthBudget"], v["oneCowSumPrice"], v["oneCowAsave"]}
- s := v["realReason"]
- if index := strings.Index(s, "."); index != -1 && len(s)-index-1 >= 2 {
- s = s[:index+3]
- }
- if s != "" {
- s = fmt.Sprintf("%s%%", s)
- }
- value := []interface{}{columnName, v["pastureName"], "全厂区", v["monthBudget"], v["sumPrice"],
- v["asave"], s, v["oneCowSumPrice"]}
- for a, b := range value {
- f.SetCellValue("设备指标", letters[a]+strconv.Itoa(i+xx+3), b)
- }
- }
- }
- xx += len(values)
- }
- //"维修费","水费","电费","柴油费","水量","电量","柴油用量"
- // 其他的表格
- sqlnamesDepartment := []string{}
- if pastureId == "现代牧业" {
- sqlnamesDepartment = []string{
- "getChooseMonthWX1",
- "getChooseWaterPrice",
- "getChooseElectricityPrice",
- "getChooseMonthiolPrice",
- "getChooseMonthWater1",
- "getChooseMonthElectricity1",
- "getChooseMonthOilT1",
- "getLgnitionChargePrice",
- //"getChooseMonthBiomass1",
- //"getChooseMonthGasoline1",
- //"getChooseMonthCoal1"
- }
- } else {
- sqlnamesDepartment = []string{
- "getChooseMonthWX1ByPasture",
- "getChooseWaterPriceByPasture",
- "getChooseElectricityPriceByPasture",
- "getChooseMonthiolPriceByPasture",
- "getChooseMonthWater1ByPasture",
- "getChooseMonthElectricity1ByPasture",
- "getChooseMonthOilT1ByPasture",
- "getLgnitionChargePriceByPasture",
- //"getChooseMonthBiomass1ByPasture",
- //"getChooseMonthGasoline1ByPasture",
- //"getChooseMonthCoal1ByPasture"
- }
- }
- // sqlnamesDepartment := []string{"getChooseMonthWXDepartment", "getChooseWaterPriceDepartment", "getChooseElectricityPriceDepartment", "getChooseMonthiolPriceDepartment",
- // "getChooseMonthWaterDepartment", "getChooseMonthElectricityDepartment", "getChooseMonthOilTDepartment"}
- //columnss := []string{"维修费", "水费", "电费", "柴油费", "水量", "电量", "柴油用量", "燃动费", "生物质颗粒", "汽油用量", "煤炭用量"}
- columnss := []string{"维修费", "水费", "电费", "柴油费", "水量", "电量", "柴油用量", "燃动费"}
- for z, sqlname := range sqlnamesDepartment {
- valuesMap, err := restful.MapStr("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", sqlname)
- parammap := make(map[string]interface{}, 0)
- json.Unmarshal([]byte(parammaps), ¶mmap)
- s_params := make([]interface{}, 0)
- paramslist := strings.Split(valuesMap["params"], ",")
- if len(paramslist) > 0 && valuesMap["params"] != "" {
- for _, value := range paramslist {
- if value == "pastureId" && parammap["pastureId"] == "" {
- s_params = append(s_params, "现代牧业")
- continue
- }
- s_params = append(s_params, parammap[strings.Trim(value, " ")])
- }
- }
- values, err := restful.MapStrList(valuesMap["sqlstr"], s_params...)
- if err != nil {
- fmt.Println(err)
- } else {
- for i, v := range values {
- //var pastureName string
- //if columns[z+1] == "燃动费" {
- // pastureName = v["pastureName"]
- //} else {
- // pastureName = fmt.Sprintf("%s(%s)", v["pastureName"], columnsMap[columns[z+1]])
- //}
- //value := []interface{}{v["sort"], v["pastureName"], v["deptname"], v["monthBudget"], v["monthLimit"], v["qmonthBudget"], v["sumPrice"],
- // v["asave"], v["realReason"], v["oneCowBudget"], v["oneCowLimit"], v["oneCowQmonthBudget"], v["oneCowSumPrice"], v["oneCowAsave"]}
- s := v["realReason"]
- if index := strings.Index(s, "."); index != -1 && len(s)-index-1 >= 2 {
- s = s[:index+3]
- }
- if s != "" {
- s = fmt.Sprintf("%s%%", s)
- }
- value := []interface{}{v["sort"], v["pastureName"], v["deptname"], v["monthBudget"], v["sumPrice"],
- v["asave"], s, v["oneCowSumPrice"]}
- for a, b := range value {
- f.SetCellValue(columnss[z], letters[a]+strconv.Itoa(i+3), b)
- }
- }
- }
- }
- if err != nil {
- data["err_count"] = err
- logging.Error("设备指标导出__error:", err)
- } else {
- err = PathCheck("uploads/Downloadmailreport") //检查路径并创建
- //os.Remove(filename)
- if err != nil {
- println("PathCheck err", err)
- }
- if err := f.SaveAs(filename); err != nil {
- println(err.Error())
- return "", err
- }
- //data["success"] = "ok"
- //context.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
- //context.Header("Content-Type","application/octet-stream")
- //context.Header("Content-Disposition", "attachment; filename="+"Workbook.xlsx")
- //context.Header("Content-Transfer-Encoding", "binary")
- //_ = f.Write(context.Writer)
- }
- return filename, err
- //appG.Response(http.StatusOK, e.SUCCESS, data)
- }
- func SetSheetRow(f *excelize.File, sheet, axis string, slice interface{}) error {
- SetSheetRow(f, sheet, axis, slice)
- return nil
- }
|