7ed24e7a360a4af67cf26ff3fb9f59b30900af16.svn-base 71 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351
  1. package util
  2. import (
  3. "../../models"
  4. "../../pkg/logging"
  5. "../../pkg/setting"
  6. "fmt"
  7. "github.com/360EntSecGroup-Skylar/excelize"
  8. "github.com/jordan-wright/email"
  9. "github.com/robfig/cron"
  10. "log"
  11. "net/smtp"
  12. "os"
  13. "strconv"
  14. "strings"
  15. "time"
  16. )
  17. func SendMail() {
  18. defer func(){ // 必须要先声明defer
  19. if err:=recover();err!=nil{
  20. logging.Error(" SendMail pnic err",err) // 这里的err其实就是panic传入的内容,55
  21. }
  22. }()
  23. log.Println("******** ******* *******", time.Now())
  24. e := email.NewEmail()
  25. // 发件人
  26. fromName := ""
  27. pas := ""
  28. mails := make([]string, 0)
  29. Engine := models.Engine
  30. subject := ""
  31. note := ""
  32. mailreport, err := Engine.SQL("select * from mailreport where enable = 1").Query().List()
  33. if err != nil {
  34. println("err sql", err.Error())
  35. } else {
  36. for _, value := range mailreport {
  37. //GetMailDataByPasture("集团设备指标",value["name"].(string),value["id"],A,f)
  38. //GetPastureDeptData(value["name"].(string),value["id"],f)
  39. if value["type"].(string) == "1" {
  40. fromName = value["addr"].(string)
  41. pas = value["pas"].(string)
  42. subject = value["title"].(string)
  43. note = value["note"].(string)
  44. } else {
  45. mails = append(mails, value["addr"].(string))
  46. }
  47. println(value["addr"].(string))
  48. }
  49. }
  50. // 发件人
  51. //e.From = "864919639@qq.com"
  52. e.From = fromName
  53. // 收件人(可以有多个)
  54. e.To = mails
  55. //e.To = []string{"18322596935@163.com","1406599862@qq.com"} //"1406599862@qq.com"
  56. // 邮件主题
  57. //e.Subject = "集团设备指标报表"
  58. e.Subject = subject
  59. // 解析html模板
  60. //t,err := template.ParseFiles("email-template.html")
  61. //body := new(bytes.Buffer)
  62. // Execute方法将解析好的模板应用到匿名结构体上,并将输出写入body中
  63. e.Text = []byte(note)
  64. // html形式的消息
  65. //body.Write([]byte("测试"))
  66. //// 从缓冲中将内容作为附件到邮件中
  67. //e.Attach(body, "email-template.html", "text/html")
  68. // 以路径将文件作为附件添加到邮件中
  69. //_,err := GetMailData()
  70. filename :=setting.CurrentPath+ "uploads/mailreport/" + time.Now().Format("2006-01-02") + "集团设备指标.xlsx"
  71. e.AttachFile(filename)
  72. // 发送邮件(如果使用QQ邮箱发送邮件的话,passwd不是邮箱密码而是授权码)
  73. err = e.Send("smtp.qq.com:587", smtp.PlainAuth("", fromName, pas, "smtp.qq.com"))
  74. if err != nil {
  75. println("sent err", err.Error())
  76. } else {
  77. println("发送成功")
  78. }
  79. }
  80. func CronMail() {
  81. log.Println("Starting Cron...")
  82. defer func() { // 必须要先声明defer
  83. if err := recover(); err != nil {
  84. fmt.Printf("CronTest pnic err%+v \n", err)
  85. logging.Error("panic recover err ", err)
  86. //println("pnic err",err.(error).Error()) // 这里的err其实就是panic传入的内容,55
  87. }
  88. }()
  89. c := cron.New()
  90. _, err := c.AddFunc(setting.ServerSetting.CronFormula, SendMail) //2 * * * * *, 2 表示每分钟的第2s执行一次
  91. if err != nil {
  92. println("cron1 err", err.Error())
  93. _, err = c.AddFunc("0 9 * * *", SendMail) //2 * * * * *, 2 表示每分钟的第2s执行一次
  94. if err != nil {
  95. println("cron2 err", err.Error())
  96. } else {
  97. println("开始启动定时任务发送邮件 0 9 * * *")
  98. }
  99. } else {
  100. println("开始启动定时任务发送邮件 ", setting.ServerSetting.CronFormula)
  101. }
  102. _, err = c.AddFunc("0 1 * * *", GetMailData) //2 * * * * *, 2 表示每分钟的第2s执行一次
  103. if err != nil {
  104. println("cron3 err", err.Error())
  105. }
  106. //_, err = c.AddFunc("30 * * * *", GetMailData) //2 * * * * *, 2 表示每分钟的第2s执行一次
  107. //if err != nil {
  108. // println("cron4 err", err.Error())
  109. //}
  110. c.Start()
  111. }
  112. func GetMailData() {
  113. defer func(){ // 必须要先声明defer
  114. if err:=recover();err!=nil{
  115. logging.Error("GetMailData pnic err",err) // 这里的err其实就是panic传入的内容,55
  116. }
  117. }()
  118. f := excelize.NewFile()
  119. f.SetSheetName("Sheet1", "集团设备指标")
  120. //f.GetSheetMap()
  121. //f.NewSheet("集团设备指标")
  122. //f.SetSheetVisible(,false)
  123. //隐藏名称为 Sheet1 的工作表中的 D 至 F 列:
  124. //f.SetColVisible("Sheet1", "D:F", false)
  125. //根据给定的工作表名称(大小写敏感)、列范围和宽度值设置单个或多个列的宽度。
  126. //例如设置名为 Sheet1 工作表上 A 到 D 列的宽度为 20:
  127. // 设置单元格的值
  128. //style, err := f.NewStyle(`{"fill":{"type":"center"}}`)
  129. //if err != nil {
  130. // fmt.Println(err)
  131. //}
  132. //f.SetCellStyle("集团设备指标", "B1", "M1", style)
  133. //
  134. //f.MergeCell("集团设备指标", "N1", "T1")
  135. //err := f.SetSheetRow("集团设备指标", "B1", &[]interface{}{"1月", nil,nil,nil,nil,nil,nil,"2月", nil,nil,nil,nil,nil,nil,
  136. // "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,
  137. // "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})
  138. tem := make([]interface{}, 0)
  139. tem1 := make([]interface{}, 0)
  140. c := []interface{}{}
  141. d := []interface{}{}
  142. e := []interface{}{}
  143. g := []interface{}{}
  144. h := []interface{}{}
  145. o := []interface{}{}
  146. p := []interface{}{}
  147. r := []interface{}{}
  148. for i := 1; i <= 12; i++ {
  149. a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
  150. b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
  151. c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  152. d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  153. e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  154. g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  155. h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  156. o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  157. p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  158. r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  159. tem = append(tem, a...)
  160. tem1 = append(tem1, b...)
  161. }
  162. //d := c
  163. //e := c
  164. //g := c
  165. //h := c
  166. //o := c
  167. //p := c
  168. if err := f.SetSheetRow("集团设备指标", "N1", &tem); err != nil {
  169. println(err.Error())
  170. }
  171. year := time.Now().Add(-24 * time.Hour).Format("2006")
  172. f.SetCellValue("集团设备指标", "A1", "时间")
  173. f.MergeCell("集团设备指标", "B1", "M1")
  174. f.MergeCell("集团设备指标", "N1", "T1")
  175. f.MergeCell("集团设备指标", "U1", "AA1")
  176. f.MergeCell("集团设备指标", "AB1", "AH1")
  177. f.MergeCell("集团设备指标", "AI1", "AO1")
  178. f.MergeCell("集团设备指标", "AP1", "AV1")
  179. f.MergeCell("集团设备指标", "AW1", "BC1")
  180. f.MergeCell("集团设备指标", "BD1", "BJ1")
  181. f.MergeCell("集团设备指标", "BK1", "BQ1")
  182. f.MergeCell("集团设备指标", "BR1", "BX1")
  183. f.MergeCell("集团设备指标", "BY1", "CE1")
  184. f.MergeCell("集团设备指标", "CF1", "CL1")
  185. f.MergeCell("集团设备指标", "CM1", "CS1")
  186. f.SetCellValue("集团设备指标", "H1", year+"年")
  187. f.SetSheetRow("集团设备指标", "A2", &[]interface{}{"牧场", "成本项目", "预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "年度达成率", "迄今饲养头日", "迄今产量(公斤)", "迄今实际单头牛成本", "迄今实际公斤奶成本(元/公斤)"})
  188. if err := f.SetSheetRow("集团设备指标", "N2", &tem1); err != nil {
  189. println(err.Error())
  190. }
  191. Engine := models.Engine
  192. A := 3
  193. pastures, err := Engine.SQL("select id,name from pasture where isdel = 0 AND id <> 18 order by sort").Query().List()
  194. if err != nil {
  195. println("err sql", err.Error())
  196. } else {
  197. for _, value := range pastures {
  198. GetMailDataByPasture("集团设备指标", value["name"].(string), time.Now().Format("2006-01-02"), value["id"], A, f)
  199. GetPastureDeptData(value["name"].(string), value["id"], f)
  200. println(value["name"].(string))
  201. A = A + 8
  202. }
  203. }
  204. valuesMap, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportJY").QueryString()
  205. valuesMap1, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportJM").QueryString()
  206. sqls := ""
  207. parammaps := make(map[string]interface{}, 0)
  208. parammaps["month"] = time.Now().Format("2006-01-02")
  209. s_params := make([]interface{}, 0)
  210. if err == nil && len(valuesMap) > 0 {
  211. sqls = valuesMap[0]["sqlstr"]
  212. paramslist := strings.Split(valuesMap[0]["params"], ",")
  213. if len(paramslist) > 0 && valuesMap[0]["params"] != "" {
  214. for _, value := range paramslist {
  215. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  216. }
  217. }
  218. }
  219. tem = []interface{}{}
  220. //sums := []interface{}{"设备指标(万元)",0,0,0,0,0,0,0,0}
  221. values, err := Engine.SQL(sqls, s_params...).Query().List()
  222. B := A
  223. //if err==nil {
  224. // for _, value := range values {
  225. // tem = append(tem,value["ftype"])
  226. // tem = append(tem,value["monthBudget"])
  227. // tem = append(tem,value["monthLimit"])
  228. // tem = append(tem,value["qmonthBudget"])
  229. // tem = append(tem,value["sumPrice"])
  230. // tem = append(tem,value["asave"])
  231. // tem = append(tem,value["dac"])
  232. // tem = append(tem,value["dacY"])
  233. // tem = append(tem,value["cowNum"])
  234. // tem = append(tem,value["saleNum"])
  235. // tem = append(tem,value["cowprice"])
  236. // tem = append(tem,value["milkprice"])
  237. // if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B),&tem); err != nil {
  238. // println(err.Error())
  239. // }
  240. // tem = []interface{}{}
  241. // B++
  242. // }
  243. //}else {
  244. // println(err.Error())
  245. //}
  246. temMap := make(map[string][]interface{}, 0)
  247. if err == nil {
  248. for _, value := range values {
  249. tem = append(tem, value["ftype"])
  250. tem = append(tem, value["monthBudget"])
  251. tem = append(tem, value["monthLimit"])
  252. tem = append(tem, value["qmonthBudget"])
  253. tem = append(tem, value["sumPrice"])
  254. tem = append(tem, value["asave"])
  255. tem = append(tem, value["dac"])
  256. tem = append(tem, value["dacY"])
  257. tem = append(tem, value["cowNum"])
  258. tem = append(tem, value["saleNum"])
  259. tem = append(tem, value["cowprice"])
  260. tem = append(tem, value["milkprice"])
  261. temMap[value["ftype"].(string)] = tem
  262. //if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B),&tem); err != nil {
  263. // println(err.Error())
  264. //}
  265. tem = []interface{}{}
  266. //B++
  267. }
  268. } else {
  269. println(err.Error())
  270. }
  271. if m, ok := temMap["维修费(万元)"]; ok {
  272. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  273. println(err.Error())
  274. }
  275. B++
  276. } else {
  277. temw := []interface{}{"维修费(万元)"}
  278. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  279. println(err.Error())
  280. }
  281. B++
  282. }
  283. if m, ok := temMap["电费(万元)"]; ok {
  284. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  285. println(err.Error())
  286. }
  287. B++
  288. } else {
  289. temw := []interface{}{"电费(万元)"}
  290. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  291. println(err.Error())
  292. }
  293. B++
  294. }
  295. if m, ok := temMap["燃动费(万元)"]; ok {
  296. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  297. println(err.Error())
  298. }
  299. B++
  300. } else {
  301. temw := []interface{}{"燃动费(万元)"}
  302. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  303. println(err.Error())
  304. }
  305. B++
  306. }
  307. if m, ok := temMap["水费(万元)"]; ok {
  308. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  309. println(err.Error())
  310. }
  311. B++
  312. } else {
  313. temw := []interface{}{"水费(万元)"}
  314. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  315. println(err.Error())
  316. }
  317. B++
  318. }
  319. if m, ok := temMap["设备指标(万元)"]; ok {
  320. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  321. println(err.Error())
  322. }
  323. B++
  324. } else {
  325. temw := []interface{}{"设备指标(万元)"}
  326. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  327. println(err.Error())
  328. }
  329. B++
  330. }
  331. if m, ok := temMap["电量(度)"]; ok {
  332. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  333. println(err.Error())
  334. }
  335. B++
  336. } else {
  337. temw := []interface{}{"电量(度)"}
  338. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  339. println(err.Error())
  340. }
  341. B++
  342. }
  343. if m, ok := temMap["用水量(吨)"]; ok {
  344. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  345. println(err.Error())
  346. }
  347. B++
  348. } else {
  349. temw := []interface{}{"用水量(吨)"}
  350. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  351. println(err.Error())
  352. }
  353. B++
  354. }
  355. if m, ok := temMap["柴油用量(L)"]; ok {
  356. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  357. println(err.Error())
  358. }
  359. B++
  360. } else {
  361. temw := []interface{}{"柴油用量(L)"}
  362. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  363. println(err.Error())
  364. }
  365. B++
  366. }
  367. s_params = make([]interface{}, 0)
  368. if err == nil && len(valuesMap1) > 0 {
  369. sqls = valuesMap1[0]["sqlstr"]
  370. parammaps := make(map[string]interface{}, 0)
  371. parammaps["month"] = time.Now().Format("2006-01-02")
  372. paramslist := strings.Split(valuesMap1[0]["params"], ",")
  373. if len(paramslist) > 0 && valuesMap1[0]["params"] != "" {
  374. for _, value := range paramslist {
  375. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  376. }
  377. }
  378. }
  379. f.SetCellValue("集团设备指标", "A"+strconv.Itoa(A), "集团")
  380. f.MergeCell("集团设备指标", "A"+strconv.Itoa(A), "A"+strconv.Itoa(A+7))
  381. values, err = Engine.SQL(sqls, s_params...).Query().List()
  382. tem = []interface{}{}
  383. //d := append(c,nil)
  384. //e := append(c,nil)
  385. //g := append(c,nil)
  386. //h := append(c,nil)
  387. //o := append(c,nil)
  388. //p := append(c,nil)
  389. tem2 := []interface{}{}
  390. if err == nil {
  391. for _, value := range values {
  392. tem2 = append(tem2, value["monthBudget"])
  393. tem2 = append(tem2, value["monthLimit"])
  394. tem2 = append(tem2, value["qmonthBudget"])
  395. tem2 = append(tem2, value["sumPrice"])
  396. tem2 = append(tem2, value["asave"])
  397. tem2 = append(tem2, value["dac"])
  398. tem2 = append(tem2, value["dacY"])
  399. num, _ := strconv.Atoi(value["num"].(string))
  400. switch value["ftype"] {
  401. case "维修费(万元)":
  402. c[(num-1)*7] = tem2[0]
  403. c[(num-1)*7+1] = tem2[1]
  404. c[(num-1)*7+2] = tem2[2]
  405. c[(num-1)*7+3] = tem2[3]
  406. c[(num-1)*7+4] = tem2[4]
  407. c[(num-1)*7+5] = tem2[5]
  408. c[(num-1)*7+6] = tem2[6]
  409. case "电费(万元)":
  410. d[(num-1)*7] = tem2[0]
  411. d[(num-1)*7+1] = tem2[1]
  412. d[(num-1)*7+2] = tem2[2]
  413. d[(num-1)*7+3] = tem2[3]
  414. d[(num-1)*7+4] = tem2[4]
  415. d[(num-1)*7+5] = tem2[5]
  416. d[(num-1)*7+6] = tem2[6]
  417. case "燃动费(万元)":
  418. e[(num-1)*7] = tem2[0]
  419. e[(num-1)*7+1] = tem2[1]
  420. e[(num-1)*7+2] = tem2[2]
  421. e[(num-1)*7+3] = tem2[3]
  422. e[(num-1)*7+4] = tem2[4]
  423. e[(num-1)*7+5] = tem2[5]
  424. e[(num-1)*7+6] = tem2[6]
  425. case "水费(万元)":
  426. g[(num-1)*7] = tem2[0]
  427. g[(num-1)*7+1] = tem2[1]
  428. g[(num-1)*7+2] = tem2[2]
  429. g[(num-1)*7+3] = tem2[3]
  430. g[(num-1)*7+4] = tem2[4]
  431. g[(num-1)*7+5] = tem2[5]
  432. g[(num-1)*7+6] = tem2[6]
  433. case "电量(度)":
  434. h[(num-1)*7] = tem2[0]
  435. h[(num-1)*7+1] = tem2[1]
  436. h[(num-1)*7+2] = tem2[2]
  437. h[(num-1)*7+3] = tem2[3]
  438. h[(num-1)*7+4] = tem2[4]
  439. h[(num-1)*7+5] = tem2[5]
  440. h[(num-1)*7+6] = tem2[6]
  441. case "柴油用量(L)":
  442. o[(num-1)*7] = tem2[0]
  443. o[(num-1)*7+1] = tem2[1]
  444. o[(num-1)*7+2] = tem2[2]
  445. o[(num-1)*7+3] = tem2[3]
  446. o[(num-1)*7+4] = tem2[4]
  447. o[(num-1)*7+5] = tem2[5]
  448. o[(num-1)*7+6] = tem2[6]
  449. case "用水量(吨)":
  450. p[(num-1)*7] = tem2[0]
  451. p[(num-1)*7+1] = tem2[1]
  452. p[(num-1)*7+2] = tem2[2]
  453. p[(num-1)*7+3] = tem2[3]
  454. p[(num-1)*7+4] = tem2[4]
  455. p[(num-1)*7+5] = tem2[5]
  456. p[(num-1)*7+6] = tem2[6]
  457. case "设备指标(万元)":
  458. r[(num-1)*7] = tem2[0]
  459. r[(num-1)*7+1] = tem2[1]
  460. r[(num-1)*7+2] = tem2[2]
  461. r[(num-1)*7+3] = tem2[3]
  462. r[(num-1)*7+4] = tem2[4]
  463. r[(num-1)*7+5] = tem2[5]
  464. r[(num-1)*7+6] = tem2[6]
  465. }
  466. tem2 = []interface{}{}
  467. }
  468. } else {
  469. println(err.Error())
  470. }
  471. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A), &c); err != nil {
  472. println(err.Error())
  473. }
  474. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+1), &d); err != nil {
  475. println(err.Error())
  476. }
  477. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+2), &e); err != nil {
  478. println(err.Error())
  479. }
  480. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+3), &g); err != nil {
  481. println(err.Error())
  482. }
  483. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+4), &r); err != nil {
  484. println(err.Error())
  485. }
  486. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+5), &h); err != nil {
  487. println(err.Error())
  488. }
  489. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+6), &p); err != nil {
  490. println(err.Error())
  491. }
  492. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+7), &o); err != nil {
  493. println(err.Error())
  494. }
  495. //sums[2] = sums[2].(int)+value["monthLimit"].(int)
  496. //sums[1] = sums[1].(int)+value["monthBudget"].(int)
  497. // 设置月份单元格字体
  498. monthStyle, err := f.NewStyle("{\"Alignment\":{\"Vertical\": \"center\", \"Horizontal\":\"center\"}}")
  499. if err != nil {
  500. println("monthStyle err", err.Error())
  501. }
  502. f.SetCellStyle("集团设备指标", "A1", "CS154", monthStyle)
  503. // 根据指定路径保存文件
  504. filename := setting.CurrentPath+ "uploads/mailreport/" + time.Now().Format("2006-01-02") + "集团设备指标.xlsx"
  505. err = PathCheck(setting.CurrentPath+ "uploads/mailreport") //检查路径并创建
  506. os.Remove(filename)
  507. if err != nil {
  508. println("PathCheck err", err)
  509. }
  510. if err := f.SaveAs(filename); err != nil {
  511. println(err.Error())
  512. }
  513. }
  514. func GetMailDataByPasture(sheetName, pastureName, date string, pastureId interface{}, B int, f *excelize.File) {
  515. tem := make([]interface{}, 0)
  516. tem1 := make([]interface{}, 0)
  517. c := []interface{}{}
  518. d := []interface{}{}
  519. e := []interface{}{}
  520. g := []interface{}{}
  521. h := []interface{}{}
  522. o := []interface{}{}
  523. p := []interface{}{}
  524. r := []interface{}{}
  525. for i := 1; i <= 12; i++ {
  526. a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
  527. b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
  528. c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  529. d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  530. e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  531. g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  532. h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  533. o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  534. p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  535. r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  536. tem = append(tem, a...)
  537. tem1 = append(tem1, b...)
  538. }
  539. Engine := models.Engine
  540. valuesMap, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMY").QueryString()
  541. valuesMap1, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMM").QueryString()
  542. sqls := ""
  543. parammaps := make(map[string]interface{}, 0)
  544. parammaps["month"] = date
  545. parammaps["pastureId"] = pastureId
  546. s_params := make([]interface{}, 0)
  547. if err == nil && len(valuesMap) > 0 {
  548. sqls = valuesMap[0]["sqlstr"]
  549. paramslist := strings.Split(valuesMap[0]["params"], ",")
  550. if len(paramslist) > 0 && valuesMap[0]["params"] != "" {
  551. for _, value := range paramslist {
  552. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  553. }
  554. }
  555. }
  556. f.SetCellValue(sheetName, "A"+strconv.Itoa(B), pastureName)
  557. f.MergeCell(sheetName, "A"+strconv.Itoa(B), "A"+strconv.Itoa(B+7))
  558. tem = []interface{}{}
  559. temMap := make(map[string][]interface{}, 0)
  560. //sums := []interface{}{"设备指标(万元)",0,0,0,0,0,0,0,0}
  561. values, err := Engine.SQL(sqls, s_params...).Query().List()
  562. Bt := B
  563. if err == nil {
  564. for _, value := range values {
  565. tem = append(tem, value["ftype"])
  566. tem = append(tem, value["monthBudget"])
  567. tem = append(tem, value["monthLimit"])
  568. tem = append(tem, value["qmonthBudget"])
  569. tem = append(tem, value["sumPrice"])
  570. tem = append(tem, value["asave"])
  571. tem = append(tem, value["dac"])
  572. tem = append(tem, value["dacY"])
  573. tem = append(tem, value["cowNum"])
  574. tem = append(tem, value["saleNum"])
  575. tem = append(tem, value["cowprice"])
  576. tem = append(tem, value["milkprice"])
  577. temMap[value["ftype"].(string)] = tem
  578. //if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt),&tem); err != nil {
  579. // println(err.Error())
  580. //}
  581. tem = []interface{}{}
  582. //Bt++
  583. }
  584. } else {
  585. println(err.Error())
  586. }
  587. if m, ok := temMap["维修费(万元)"]; ok {
  588. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  589. println(err.Error())
  590. }
  591. Bt++
  592. } else {
  593. temw := []interface{}{"维修费(万元)"}
  594. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  595. println(err.Error())
  596. }
  597. Bt++
  598. }
  599. if m, ok := temMap["电费(万元)"]; ok {
  600. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  601. println(err.Error())
  602. }
  603. Bt++
  604. } else {
  605. temw := []interface{}{"电费(万元)"}
  606. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  607. println(err.Error())
  608. }
  609. Bt++
  610. }
  611. if m, ok := temMap["燃动费(万元)"]; ok {
  612. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  613. println(err.Error())
  614. }
  615. Bt++
  616. } else {
  617. temw := []interface{}{"燃动费(万元)"}
  618. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  619. println(err.Error())
  620. }
  621. Bt++
  622. }
  623. if m, ok := temMap["水费(万元)"]; ok {
  624. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  625. println(err.Error())
  626. }
  627. Bt++
  628. } else {
  629. temw := []interface{}{"水费(万元)"}
  630. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  631. println(err.Error())
  632. }
  633. Bt++
  634. }
  635. if m, ok := temMap["设备指标(万元)"]; ok {
  636. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  637. println(err.Error())
  638. }
  639. Bt++
  640. } else {
  641. temw := []interface{}{"设备指标(万元)"}
  642. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  643. println(err.Error())
  644. }
  645. Bt++
  646. }
  647. if m, ok := temMap["电量(度)"]; ok {
  648. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  649. println(err.Error())
  650. }
  651. Bt++
  652. } else {
  653. temw := []interface{}{"电量(度)"}
  654. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  655. println(err.Error())
  656. }
  657. Bt++
  658. }
  659. if m, ok := temMap["用水量(吨)"]; ok {
  660. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  661. println(err.Error())
  662. }
  663. Bt++
  664. } else {
  665. temw := []interface{}{"用水量(吨)"}
  666. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  667. println(err.Error())
  668. }
  669. Bt++
  670. }
  671. if m, ok := temMap["柴油用量(L)"]; ok {
  672. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  673. println(err.Error())
  674. }
  675. Bt++
  676. } else {
  677. temw := []interface{}{"柴油用量(L)"}
  678. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  679. println(err.Error())
  680. }
  681. Bt++
  682. }
  683. s_params = make([]interface{}, 0)
  684. if err == nil && len(valuesMap1) > 0 {
  685. sqls = valuesMap1[0]["sqlstr"]
  686. parammaps := make(map[string]interface{}, 0)
  687. parammaps["month"] = date
  688. parammaps["pastureId"] = pastureId
  689. paramslist := strings.Split(valuesMap1[0]["params"], ",")
  690. if len(paramslist) > 0 && valuesMap1[0]["params"] != "" {
  691. for _, value := range paramslist {
  692. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  693. }
  694. }
  695. }
  696. values, err = Engine.SQL(sqls, s_params...).Query().List()
  697. tem = []interface{}{}
  698. //d := append(c,nil)
  699. //e := append(c,nil)
  700. //g := append(c,nil)
  701. //h := append(c,nil)
  702. //o := append(c,nil)
  703. //p := append(c,nil)
  704. tem2 := []interface{}{}
  705. if err == nil {
  706. for _, value := range values {
  707. tem2 = append(tem2, value["monthBudget"])
  708. tem2 = append(tem2, value["monthLimit"])
  709. tem2 = append(tem2, value["qmonthBudget"])
  710. tem2 = append(tem2, value["sumPrice"])
  711. tem2 = append(tem2, value["asave"])
  712. tem2 = append(tem2, value["dac"])
  713. tem2 = append(tem2, value["dacY"])
  714. num, _ := strconv.Atoi(value["num"].(string))
  715. switch value["ftype"] {
  716. case "维修费(万元)":
  717. c[(num-1)*7] = tem2[0]
  718. c[(num-1)*7+1] = tem2[1]
  719. c[(num-1)*7+2] = tem2[2]
  720. c[(num-1)*7+3] = tem2[3]
  721. c[(num-1)*7+4] = tem2[4]
  722. c[(num-1)*7+5] = tem2[5]
  723. c[(num-1)*7+6] = tem2[6]
  724. case "电费(万元)":
  725. d[(num-1)*7] = tem2[0]
  726. d[(num-1)*7+1] = tem2[1]
  727. d[(num-1)*7+2] = tem2[2]
  728. d[(num-1)*7+3] = tem2[3]
  729. d[(num-1)*7+4] = tem2[4]
  730. d[(num-1)*7+5] = tem2[5]
  731. d[(num-1)*7+6] = tem2[6]
  732. case "燃动费(万元)":
  733. e[(num-1)*7] = tem2[0]
  734. e[(num-1)*7+1] = tem2[1]
  735. e[(num-1)*7+2] = tem2[2]
  736. e[(num-1)*7+3] = tem2[3]
  737. e[(num-1)*7+4] = tem2[4]
  738. e[(num-1)*7+5] = tem2[5]
  739. e[(num-1)*7+6] = tem2[6]
  740. case "水费(万元)":
  741. g[(num-1)*7] = tem2[0]
  742. g[(num-1)*7+1] = tem2[1]
  743. g[(num-1)*7+2] = tem2[2]
  744. g[(num-1)*7+3] = tem2[3]
  745. g[(num-1)*7+4] = tem2[4]
  746. g[(num-1)*7+5] = tem2[5]
  747. g[(num-1)*7+6] = tem2[6]
  748. case "电量(度)":
  749. h[(num-1)*7] = tem2[0]
  750. h[(num-1)*7+1] = tem2[1]
  751. h[(num-1)*7+2] = tem2[2]
  752. h[(num-1)*7+3] = tem2[3]
  753. h[(num-1)*7+4] = tem2[4]
  754. h[(num-1)*7+5] = tem2[5]
  755. h[(num-1)*7+6] = tem2[6]
  756. case "柴油用量(L)":
  757. o[(num-1)*7] = tem2[0]
  758. o[(num-1)*7+1] = tem2[1]
  759. o[(num-1)*7+2] = tem2[2]
  760. o[(num-1)*7+3] = tem2[3]
  761. o[(num-1)*7+4] = tem2[4]
  762. o[(num-1)*7+5] = tem2[5]
  763. o[(num-1)*7+6] = tem2[6]
  764. case "用水量(吨)":
  765. p[(num-1)*7] = tem2[0]
  766. p[(num-1)*7+1] = tem2[1]
  767. p[(num-1)*7+2] = tem2[2]
  768. p[(num-1)*7+3] = tem2[3]
  769. p[(num-1)*7+4] = tem2[4]
  770. p[(num-1)*7+5] = tem2[5]
  771. p[(num-1)*7+6] = tem2[6]
  772. case "设备指标(万元)":
  773. r[(num-1)*7] = tem2[0]
  774. r[(num-1)*7+1] = tem2[1]
  775. r[(num-1)*7+2] = tem2[2]
  776. r[(num-1)*7+3] = tem2[3]
  777. r[(num-1)*7+4] = tem2[4]
  778. r[(num-1)*7+5] = tem2[5]
  779. r[(num-1)*7+6] = tem2[6]
  780. }
  781. tem2 = []interface{}{}
  782. }
  783. } else {
  784. println(err.Error())
  785. }
  786. if err := f.SetSheetRow(sheetName, "N"+strconv.Itoa(B), &c); err != nil {
  787. println(err.Error())
  788. }
  789. if err := f.SetSheetRow(sheetName, "N"+strconv.Itoa(B+1), &d); err != nil {
  790. println(err.Error())
  791. }
  792. if err := f.SetSheetRow(sheetName, "N"+strconv.Itoa(B+2), &e); err != nil {
  793. println(err.Error())
  794. }
  795. if err := f.SetSheetRow(sheetName, "N"+strconv.Itoa(B+3), &g); err != nil {
  796. println(err.Error())
  797. }
  798. if err := f.SetSheetRow(sheetName, "N"+strconv.Itoa(B+4), &r); err != nil {
  799. println(err.Error())
  800. }
  801. if err := f.SetSheetRow(sheetName, "N"+strconv.Itoa(B+5), &h); err != nil {
  802. println(err.Error())
  803. }
  804. if err := f.SetSheetRow(sheetName, "N"+strconv.Itoa(B+6), &p); err != nil {
  805. println(err.Error())
  806. }
  807. if err := f.SetSheetRow(sheetName, "N"+strconv.Itoa(B+7), &o); err != nil {
  808. println(err.Error())
  809. }
  810. }
  811. func GetMailDataByDept(sheetName, DeptName, date string, DeptId, pastureId interface{}, B int, f *excelize.File) {
  812. tem := make([]interface{}, 0)
  813. tem1 := make([]interface{}, 0)
  814. c := []interface{}{}
  815. d := []interface{}{}
  816. e := []interface{}{}
  817. g := []interface{}{}
  818. h := []interface{}{}
  819. o := []interface{}{}
  820. p := []interface{}{}
  821. r := []interface{}{}
  822. for i := 1; i <= 12; i++ {
  823. a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
  824. b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
  825. c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  826. d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  827. e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  828. g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  829. h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  830. o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  831. p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  832. r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  833. tem = append(tem, a...)
  834. tem1 = append(tem1, b...)
  835. }
  836. Engine := models.Engine
  837. valuesMap, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportBY").QueryString()
  838. valuesMap1, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportBM").QueryString()
  839. sqls := ""
  840. parammaps := make(map[string]interface{}, 0)
  841. parammaps["month"] = date
  842. parammaps["pastureId"] = pastureId
  843. parammaps["departmentId"] = DeptId
  844. s_params := make([]interface{}, 0)
  845. if err == nil && len(valuesMap) > 0 {
  846. sqls = valuesMap[0]["sqlstr"]
  847. paramslist := strings.Split(valuesMap[0]["params"], ",")
  848. if len(paramslist) > 0 && valuesMap[0]["params"] != "" {
  849. for _, value := range paramslist {
  850. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  851. }
  852. }
  853. }
  854. f.SetCellValue(sheetName, "A"+strconv.Itoa(B), DeptName)
  855. f.MergeCell(sheetName, "A"+strconv.Itoa(B), "A"+strconv.Itoa(B+7))
  856. tem = []interface{}{}
  857. temMap := make(map[string][]interface{}, 0)
  858. //sums := []interface{}{"设备指标(万元)",0,0,0,0,0,0,0,0}
  859. values, err := Engine.SQL(sqls, s_params...).Query().List()
  860. Bt := B
  861. if err == nil {
  862. for _, value := range values {
  863. tem = append(tem, value["ftype"])
  864. tem = append(tem, value["monthBudget"])
  865. tem = append(tem, value["monthLimit"])
  866. tem = append(tem, value["qmonthBudget"])
  867. tem = append(tem, value["sumPrice"])
  868. tem = append(tem, value["asave"])
  869. tem = append(tem, value["dac"])
  870. tem = append(tem, value["dacY"])
  871. tem = append(tem, value["cowNum"])
  872. tem = append(tem, value["saleNum"])
  873. tem = append(tem, value["cowprice"])
  874. tem = append(tem, value["milkprice"])
  875. temMap[value["ftype"].(string)] = tem
  876. //if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt),&tem); err != nil {
  877. // println(err.Error())
  878. //}
  879. tem = []interface{}{}
  880. //Bt++
  881. }
  882. } else {
  883. println(err.Error())
  884. }
  885. if m, ok := temMap["维修费(万元)"]; ok {
  886. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  887. println(err.Error())
  888. }
  889. Bt++
  890. } else {
  891. temw := []interface{}{"维修费(万元)"}
  892. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  893. println(err.Error())
  894. }
  895. Bt++
  896. }
  897. if m, ok := temMap["电费(万元)"]; ok {
  898. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  899. println(err.Error())
  900. }
  901. Bt++
  902. } else {
  903. temw := []interface{}{"电费(万元)"}
  904. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  905. println(err.Error())
  906. }
  907. Bt++
  908. }
  909. if m, ok := temMap["燃动费(万元)"]; ok {
  910. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  911. println(err.Error())
  912. }
  913. Bt++
  914. } else {
  915. temw := []interface{}{"燃动费(万元)"}
  916. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  917. println(err.Error())
  918. }
  919. Bt++
  920. }
  921. if m, ok := temMap["水费(万元)"]; ok {
  922. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  923. println(err.Error())
  924. }
  925. Bt++
  926. } else {
  927. temw := []interface{}{"水费(万元)"}
  928. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  929. println(err.Error())
  930. }
  931. Bt++
  932. }
  933. if m, ok := temMap["设备指标(万元)"]; ok {
  934. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  935. println(err.Error())
  936. }
  937. Bt++
  938. } else {
  939. temw := []interface{}{"设备指标(万元)"}
  940. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  941. println(err.Error())
  942. }
  943. Bt++
  944. }
  945. if m, ok := temMap["电量(度)"]; ok {
  946. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  947. println(err.Error())
  948. }
  949. Bt++
  950. } else {
  951. temw := []interface{}{"电量(度)"}
  952. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  953. println(err.Error())
  954. }
  955. Bt++
  956. }
  957. if m, ok := temMap["用水量(吨)"]; ok {
  958. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  959. println(err.Error())
  960. }
  961. Bt++
  962. } else {
  963. temw := []interface{}{"用水量(吨)"}
  964. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  965. println(err.Error())
  966. }
  967. Bt++
  968. }
  969. if m, ok := temMap["柴油用量(L)"]; ok {
  970. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &m); err != nil {
  971. println(err.Error())
  972. }
  973. Bt++
  974. } else {
  975. temw := []interface{}{"柴油用量(L)"}
  976. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(Bt), &temw); err != nil {
  977. println(err.Error())
  978. }
  979. Bt++
  980. }
  981. s_params = make([]interface{}, 0)
  982. if err == nil && len(valuesMap1) > 0 {
  983. sqls = valuesMap1[0]["sqlstr"]
  984. parammaps := make(map[string]interface{}, 0)
  985. parammaps["month"] = date
  986. parammaps["pastureId"] = pastureId
  987. parammaps["departmentId"] = DeptId
  988. paramslist := strings.Split(valuesMap1[0]["params"], ",")
  989. if len(paramslist) > 0 && valuesMap1[0]["params"] != "" {
  990. for _, value := range paramslist {
  991. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  992. }
  993. }
  994. }
  995. values, err = Engine.SQL(sqls, s_params...).Query().List()
  996. tem = []interface{}{}
  997. //d := append(c,nil)
  998. //e := append(c,nil)
  999. //g := append(c,nil)
  1000. //h := append(c,nil)
  1001. //o := append(c,nil)
  1002. //p := append(c,nil)
  1003. tem2 := []interface{}{}
  1004. if err == nil {
  1005. for _, value := range values {
  1006. //fmt.Printf("va============== %+v\n",value)
  1007. tem2 = append(tem2, value["monthBudget"])
  1008. tem2 = append(tem2, value["monthLimit"])
  1009. tem2 = append(tem2, value["qmonthBudget"])
  1010. tem2 = append(tem2, value["sumPrice"])
  1011. tem2 = append(tem2, value["asave"])
  1012. tem2 = append(tem2, value["dac"])
  1013. tem2 = append(tem2, value["dacY"])
  1014. num := 1
  1015. if _, ok := value["num"]; ok {
  1016. num, _ = strconv.Atoi(value["num"].(string))
  1017. }
  1018. switch value["ftype"] {
  1019. case "维修费(万元)":
  1020. c[(num-1)*7] = tem2[0]
  1021. c[(num-1)*7+1] = tem2[1]
  1022. c[(num-1)*7+2] = tem2[2]
  1023. c[(num-1)*7+3] = tem2[3]
  1024. c[(num-1)*7+4] = tem2[4]
  1025. c[(num-1)*7+5] = tem2[5]
  1026. c[(num-1)*7+6] = tem2[6]
  1027. case "电费(万元)":
  1028. d[(num-1)*7] = tem2[0]
  1029. d[(num-1)*7+1] = tem2[1]
  1030. d[(num-1)*7+2] = tem2[2]
  1031. d[(num-1)*7+3] = tem2[3]
  1032. d[(num-1)*7+4] = tem2[4]
  1033. d[(num-1)*7+5] = tem2[5]
  1034. d[(num-1)*7+6] = tem2[6]
  1035. case "燃动费(万元)":
  1036. e[(num-1)*7] = tem2[0]
  1037. e[(num-1)*7+1] = tem2[1]
  1038. e[(num-1)*7+2] = tem2[2]
  1039. e[(num-1)*7+3] = tem2[3]
  1040. e[(num-1)*7+4] = tem2[4]
  1041. e[(num-1)*7+5] = tem2[5]
  1042. e[(num-1)*7+6] = tem2[6]
  1043. case "水费(万元)":
  1044. g[(num-1)*7] = tem2[0]
  1045. g[(num-1)*7+1] = tem2[1]
  1046. g[(num-1)*7+2] = tem2[2]
  1047. g[(num-1)*7+3] = tem2[3]
  1048. g[(num-1)*7+4] = tem2[4]
  1049. g[(num-1)*7+5] = tem2[5]
  1050. g[(num-1)*7+6] = tem2[6]
  1051. case "电量(度)":
  1052. h[(num-1)*7] = tem2[0]
  1053. h[(num-1)*7+1] = tem2[1]
  1054. h[(num-1)*7+2] = tem2[2]
  1055. h[(num-1)*7+3] = tem2[3]
  1056. h[(num-1)*7+4] = tem2[4]
  1057. h[(num-1)*7+5] = tem2[5]
  1058. h[(num-1)*7+6] = tem2[6]
  1059. case "柴油用量(L)":
  1060. o[(num-1)*7] = tem2[0]
  1061. o[(num-1)*7+1] = tem2[1]
  1062. o[(num-1)*7+2] = tem2[2]
  1063. o[(num-1)*7+3] = tem2[3]
  1064. o[(num-1)*7+4] = tem2[4]
  1065. o[(num-1)*7+5] = tem2[5]
  1066. o[(num-1)*7+6] = tem2[6]
  1067. case "用水量(吨)":
  1068. p[(num-1)*7] = tem2[0]
  1069. p[(num-1)*7+1] = tem2[1]
  1070. p[(num-1)*7+2] = tem2[2]
  1071. p[(num-1)*7+3] = tem2[3]
  1072. p[(num-1)*7+4] = tem2[4]
  1073. p[(num-1)*7+5] = tem2[5]
  1074. p[(num-1)*7+6] = tem2[6]
  1075. case "设备指标(万元)":
  1076. r[(num-1)*7] = tem2[0]
  1077. r[(num-1)*7+1] = tem2[1]
  1078. r[(num-1)*7+2] = tem2[2]
  1079. r[(num-1)*7+3] = tem2[3]
  1080. r[(num-1)*7+4] = tem2[4]
  1081. r[(num-1)*7+5] = tem2[5]
  1082. r[(num-1)*7+6] = tem2[6]
  1083. }
  1084. tem2 = []interface{}{}
  1085. }
  1086. } else {
  1087. println(err.Error())
  1088. }
  1089. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(B), &c); err != nil {
  1090. println(err.Error())
  1091. }
  1092. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(B+1), &d); err != nil {
  1093. println(err.Error())
  1094. }
  1095. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(B+2), &e); err != nil {
  1096. println(err.Error())
  1097. }
  1098. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(B+3), &g); err != nil {
  1099. println(err.Error())
  1100. }
  1101. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(B+4), &r); err != nil {
  1102. println(err.Error())
  1103. }
  1104. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(B+5), &h); err != nil {
  1105. println(err.Error())
  1106. }
  1107. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(B+6), &p); err != nil {
  1108. println(err.Error())
  1109. }
  1110. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(B+7), &o); err != nil {
  1111. println(err.Error())
  1112. }
  1113. }
  1114. func GetPastureDeptData(sheetName string, pastureId interface{}, f *excelize.File) {
  1115. f.NewSheet(sheetName)
  1116. tem := make([]interface{}, 0)
  1117. tem1 := make([]interface{}, 0)
  1118. c := []interface{}{}
  1119. d := []interface{}{}
  1120. e := []interface{}{}
  1121. g := []interface{}{}
  1122. h := []interface{}{}
  1123. o := []interface{}{}
  1124. p := []interface{}{}
  1125. r := []interface{}{}
  1126. for i := 1; i <= 12; i++ {
  1127. a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
  1128. b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
  1129. c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1130. d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1131. e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1132. g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1133. h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1134. o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1135. p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1136. r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1137. tem = append(tem, a...)
  1138. tem1 = append(tem1, b...)
  1139. }
  1140. //d := c
  1141. //e := c
  1142. //g := c
  1143. //h := c
  1144. //o := c
  1145. //p := c
  1146. if err := f.SetSheetRow(sheetName, "J1", &tem); err != nil {
  1147. println(err.Error())
  1148. }
  1149. year := time.Now().Add(-24 * time.Hour).Format("2006")
  1150. f.SetCellValue(sheetName, "A1", "时间")
  1151. f.MergeCell(sheetName, "B1", "I1")
  1152. f.MergeCell(sheetName, "J1", "P1")
  1153. f.MergeCell(sheetName, "Q1", "W1")
  1154. f.MergeCell(sheetName, "X1", "AD1")
  1155. f.MergeCell(sheetName, "AE1", "AK1")
  1156. f.MergeCell(sheetName, "AL1", "AR1")
  1157. f.MergeCell(sheetName, "AS1", "AY1")
  1158. f.MergeCell(sheetName, "AZ1", "BF1")
  1159. f.MergeCell(sheetName, "BG1", "BM1")
  1160. f.MergeCell(sheetName, "BN1", "BT1")
  1161. f.MergeCell(sheetName, "BU1", "CA1")
  1162. f.MergeCell(sheetName, "CB1", "CH1")
  1163. f.MergeCell(sheetName, "CI1", "CO1")
  1164. f.SetCellValue(sheetName, "H1", year+"年")
  1165. f.SetSheetRow(sheetName, "A2", &[]interface{}{"部门", "成本项目", "预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "年度达成率"})
  1166. if err := f.SetSheetRow(sheetName, "J2", &tem1); err != nil {
  1167. println(err.Error())
  1168. }
  1169. Engine := models.Engine
  1170. A := 3
  1171. pastures, err := Engine.SQL("select id,name from department where pastureId=? and isDel = 0 AND enable =1 and id <> ?", pastureId, pastureId).Query().List()
  1172. if err != nil {
  1173. println("err sql", err.Error())
  1174. } else {
  1175. for _, value := range pastures {
  1176. GetMailDataByDept(sheetName, value["name"].(string), time.Now().Format("2006-01-02"), value["id"], pastureId, A, f)
  1177. println(value["name"].(string))
  1178. A = A + 8
  1179. }
  1180. }
  1181. valuesMap, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMY").QueryString()
  1182. valuesMap1, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMM").QueryString()
  1183. sqls := ""
  1184. parammaps := make(map[string]interface{}, 0)
  1185. parammaps["month"] = time.Now().Format("2006-01-02")
  1186. parammaps["pastureId"] = pastureId
  1187. s_params := make([]interface{}, 0)
  1188. if err == nil && len(valuesMap) > 0 {
  1189. sqls = valuesMap[0]["sqlstr"]
  1190. paramslist := strings.Split(valuesMap[0]["params"], ",")
  1191. if len(paramslist) > 0 && valuesMap[0]["params"] != "" {
  1192. for _, value := range paramslist {
  1193. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  1194. }
  1195. }
  1196. }
  1197. tem = []interface{}{}
  1198. //sums := []interface{}{"设备指标(万元)",0,0,0,0,0,0,0,0}
  1199. values, err := Engine.SQL(sqls, s_params...).Query().List()
  1200. B := A
  1201. temMap := make(map[string][]interface{}, 0)
  1202. if err == nil {
  1203. for _, value := range values {
  1204. tem = append(tem, value["ftype"])
  1205. tem = append(tem, value["monthBudget"])
  1206. tem = append(tem, value["monthLimit"])
  1207. tem = append(tem, value["qmonthBudget"])
  1208. tem = append(tem, value["sumPrice"])
  1209. tem = append(tem, value["asave"])
  1210. tem = append(tem, value["dac"])
  1211. tem = append(tem, value["dacY"])
  1212. temMap[value["ftype"].(string)] = tem
  1213. //if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B),&tem); err != nil {
  1214. // println(err.Error())
  1215. //}
  1216. tem = []interface{}{}
  1217. //B++
  1218. }
  1219. } else {
  1220. println(err.Error())
  1221. }
  1222. if m, ok := temMap["维修费(万元)"]; ok {
  1223. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1224. println(err.Error())
  1225. }
  1226. B++
  1227. } else {
  1228. temw := []interface{}{"维修费(万元)"}
  1229. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1230. println(err.Error())
  1231. }
  1232. B++
  1233. }
  1234. if m, ok := temMap["电费(万元)"]; ok {
  1235. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1236. println(err.Error())
  1237. }
  1238. B++
  1239. } else {
  1240. temw := []interface{}{"电费(万元)"}
  1241. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1242. println(err.Error())
  1243. }
  1244. B++
  1245. }
  1246. if m, ok := temMap["燃动费(万元)"]; ok {
  1247. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1248. println(err.Error())
  1249. }
  1250. B++
  1251. } else {
  1252. temw := []interface{}{"燃动费(万元)"}
  1253. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1254. println(err.Error())
  1255. }
  1256. B++
  1257. }
  1258. if m, ok := temMap["水费(万元)"]; ok {
  1259. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1260. println(err.Error())
  1261. }
  1262. B++
  1263. } else {
  1264. temw := []interface{}{"水费(万元)"}
  1265. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1266. println(err.Error())
  1267. }
  1268. B++
  1269. }
  1270. if m, ok := temMap["设备指标(万元)"]; ok {
  1271. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1272. println(err.Error())
  1273. }
  1274. B++
  1275. } else {
  1276. temw := []interface{}{"设备指标(万元)"}
  1277. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1278. println(err.Error())
  1279. }
  1280. B++
  1281. }
  1282. if m, ok := temMap["电量(度)"]; ok {
  1283. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1284. println(err.Error())
  1285. }
  1286. B++
  1287. } else {
  1288. temw := []interface{}{"电量(度)"}
  1289. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1290. println(err.Error())
  1291. }
  1292. B++
  1293. }
  1294. if m, ok := temMap["用水量(吨)"]; ok {
  1295. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1296. println(err.Error())
  1297. }
  1298. B++
  1299. } else {
  1300. temw := []interface{}{"用水量(吨)"}
  1301. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1302. println(err.Error())
  1303. }
  1304. B++
  1305. }
  1306. if m, ok := temMap["柴油用量(L)"]; ok {
  1307. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1308. println(err.Error())
  1309. }
  1310. B++
  1311. } else {
  1312. temw := []interface{}{"柴油用量(L)"}
  1313. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1314. println(err.Error())
  1315. }
  1316. B++
  1317. }
  1318. s_params = make([]interface{}, 0)
  1319. if err == nil && len(valuesMap1) > 0 {
  1320. sqls = valuesMap1[0]["sqlstr"]
  1321. parammaps := make(map[string]interface{}, 0)
  1322. parammaps["month"] = time.Now().Format("2006-01-02")
  1323. parammaps["pastureId"] = pastureId
  1324. paramslist := strings.Split(valuesMap1[0]["params"], ",")
  1325. if len(paramslist) > 0 && valuesMap1[0]["params"] != "" {
  1326. for _, value := range paramslist {
  1327. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  1328. }
  1329. }
  1330. }
  1331. f.SetCellValue(sheetName, "A"+strconv.Itoa(A), sheetName)
  1332. f.MergeCell(sheetName, "A"+strconv.Itoa(A), "A"+strconv.Itoa(A+7))
  1333. values, err = Engine.SQL(sqls, s_params...).Query().List()
  1334. tem = []interface{}{}
  1335. //d := append(c,nil)
  1336. //e := append(c,nil)
  1337. //g := append(c,nil)
  1338. //h := append(c,nil)
  1339. //o := append(c,nil)
  1340. //p := append(c,nil)
  1341. tem2 := []interface{}{}
  1342. if err == nil {
  1343. for _, value := range values {
  1344. tem2 = append(tem2, value["monthBudget"])
  1345. tem2 = append(tem2, value["monthLimit"])
  1346. tem2 = append(tem2, value["qmonthBudget"])
  1347. tem2 = append(tem2, value["sumPrice"])
  1348. tem2 = append(tem2, value["asave"])
  1349. tem2 = append(tem2, value["dac"])
  1350. tem2 = append(tem2, value["dacY"])
  1351. num, _ := strconv.Atoi(value["num"].(string))
  1352. switch value["ftype"] {
  1353. case "维修费(万元)":
  1354. c[(num-1)*7] = tem2[0]
  1355. c[(num-1)*7+1] = tem2[1]
  1356. c[(num-1)*7+2] = tem2[2]
  1357. c[(num-1)*7+3] = tem2[3]
  1358. c[(num-1)*7+4] = tem2[4]
  1359. c[(num-1)*7+5] = tem2[5]
  1360. c[(num-1)*7+6] = tem2[6]
  1361. case "电费(万元)":
  1362. d[(num-1)*7] = tem2[0]
  1363. d[(num-1)*7+1] = tem2[1]
  1364. d[(num-1)*7+2] = tem2[2]
  1365. d[(num-1)*7+3] = tem2[3]
  1366. d[(num-1)*7+4] = tem2[4]
  1367. d[(num-1)*7+5] = tem2[5]
  1368. d[(num-1)*7+6] = tem2[6]
  1369. case "燃动费(万元)":
  1370. e[(num-1)*7] = tem2[0]
  1371. e[(num-1)*7+1] = tem2[1]
  1372. e[(num-1)*7+2] = tem2[2]
  1373. e[(num-1)*7+3] = tem2[3]
  1374. e[(num-1)*7+4] = tem2[4]
  1375. e[(num-1)*7+5] = tem2[5]
  1376. e[(num-1)*7+6] = tem2[6]
  1377. case "水费(万元)":
  1378. g[(num-1)*7] = tem2[0]
  1379. g[(num-1)*7+1] = tem2[1]
  1380. g[(num-1)*7+2] = tem2[2]
  1381. g[(num-1)*7+3] = tem2[3]
  1382. g[(num-1)*7+4] = tem2[4]
  1383. g[(num-1)*7+5] = tem2[5]
  1384. g[(num-1)*7+6] = tem2[6]
  1385. case "电量(度)":
  1386. h[(num-1)*7] = tem2[0]
  1387. h[(num-1)*7+1] = tem2[1]
  1388. h[(num-1)*7+2] = tem2[2]
  1389. h[(num-1)*7+3] = tem2[3]
  1390. h[(num-1)*7+4] = tem2[4]
  1391. h[(num-1)*7+5] = tem2[5]
  1392. h[(num-1)*7+6] = tem2[6]
  1393. case "柴油用量(L)":
  1394. o[(num-1)*7] = tem2[0]
  1395. o[(num-1)*7+1] = tem2[1]
  1396. o[(num-1)*7+2] = tem2[2]
  1397. o[(num-1)*7+3] = tem2[3]
  1398. o[(num-1)*7+4] = tem2[4]
  1399. o[(num-1)*7+5] = tem2[5]
  1400. o[(num-1)*7+6] = tem2[6]
  1401. case "用水量(吨)":
  1402. p[(num-1)*7] = tem2[0]
  1403. p[(num-1)*7+1] = tem2[1]
  1404. p[(num-1)*7+2] = tem2[2]
  1405. p[(num-1)*7+3] = tem2[3]
  1406. p[(num-1)*7+4] = tem2[4]
  1407. p[(num-1)*7+5] = tem2[5]
  1408. p[(num-1)*7+6] = tem2[6]
  1409. case "设备指标(万元)":
  1410. r[(num-1)*7] = tem2[0]
  1411. r[(num-1)*7+1] = tem2[1]
  1412. r[(num-1)*7+2] = tem2[2]
  1413. r[(num-1)*7+3] = tem2[3]
  1414. r[(num-1)*7+4] = tem2[4]
  1415. r[(num-1)*7+5] = tem2[5]
  1416. r[(num-1)*7+6] = tem2[6]
  1417. }
  1418. tem2 = []interface{}{}
  1419. }
  1420. } else {
  1421. println(err.Error())
  1422. }
  1423. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A), &c); err != nil {
  1424. println(err.Error())
  1425. }
  1426. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+1), &d); err != nil {
  1427. println(err.Error())
  1428. }
  1429. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+2), &e); err != nil {
  1430. println(err.Error())
  1431. }
  1432. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+3), &g); err != nil {
  1433. println(err.Error())
  1434. }
  1435. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+4), &r); err != nil {
  1436. println(err.Error())
  1437. }
  1438. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+5), &h); err != nil {
  1439. println(err.Error())
  1440. }
  1441. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+6), &p); err != nil {
  1442. println(err.Error())
  1443. }
  1444. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+7), &o); err != nil {
  1445. println(err.Error())
  1446. }
  1447. //sums[2] = sums[2].(int)+value["monthLimit"].(int)
  1448. //sums[1] = sums[1].(int)+value["monthBudget"].(int)
  1449. // 设置月份单元格字体
  1450. monthStyle, err := f.NewStyle("{\"Alignment\":{\"Vertical\": \"center\", \"Horizontal\":\"center\"}}")
  1451. if err != nil {
  1452. println("monthStyle err", err.Error())
  1453. }
  1454. f.SetCellStyle(sheetName, "A1", "CS300", monthStyle)
  1455. // 根据指定路径保存文件
  1456. }
  1457. func PathCheck(path string) (err error) {
  1458. b, err := PathExists(path)
  1459. if err != nil {
  1460. println("exist err", err)
  1461. }
  1462. if !b {
  1463. err = os.Mkdir(path, 0777)
  1464. if err != nil {
  1465. println("Mkdir err", err)
  1466. }
  1467. }
  1468. return
  1469. }
  1470. func PathExists(path string) (bool, error) {
  1471. _, err := os.Stat(path)
  1472. if err == nil {
  1473. return true, nil
  1474. }
  1475. if os.IsNotExist(err) {
  1476. return false, nil
  1477. }
  1478. return false, err
  1479. }
  1480. func DownloadDataJT(date string) (string, error) {
  1481. filename := setting.CurrentPath+"uploads/Downloadmailreport/" + date + "集团设备指标.xlsx"
  1482. exist, _ := FileExists(filename)
  1483. println(filename,exist)
  1484. if exist {
  1485. //return filename, nil
  1486. }
  1487. f := excelize.NewFile()
  1488. f.SetSheetName("Sheet1", "集团设备指标")
  1489. tem := make([]interface{}, 0)
  1490. tem1 := make([]interface{}, 0)
  1491. c := []interface{}{}
  1492. d := []interface{}{}
  1493. e := []interface{}{}
  1494. g := []interface{}{}
  1495. h := []interface{}{}
  1496. o := []interface{}{}
  1497. p := []interface{}{}
  1498. r := []interface{}{}
  1499. for i := 1; i <= 12; i++ {
  1500. a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
  1501. b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
  1502. c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1503. d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1504. e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1505. g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1506. h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1507. o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1508. p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1509. r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1510. tem = append(tem, a...)
  1511. tem1 = append(tem1, b...)
  1512. }
  1513. if err := f.SetSheetRow("集团设备指标", "N1", &tem); err != nil {
  1514. println(err.Error())
  1515. }
  1516. //year :=time.Now().Add(-24*time.Hour).Format("2006")
  1517. year := ""
  1518. datetem, _ := strconv.Atoi(date[:4])
  1519. if date > time.Now().Add(-24*time.Hour).Format("2006")+"-01-01" {
  1520. year = strconv.Itoa(datetem)
  1521. } else {
  1522. year = strconv.Itoa(datetem - 1)
  1523. }
  1524. f.SetCellValue("集团设备指标", "A1", "时间")
  1525. f.MergeCell("集团设备指标", "B1", "M1")
  1526. f.MergeCell("集团设备指标", "N1", "T1")
  1527. f.MergeCell("集团设备指标", "U1", "AA1")
  1528. f.MergeCell("集团设备指标", "AB1", "AH1")
  1529. f.MergeCell("集团设备指标", "AI1", "AO1")
  1530. f.MergeCell("集团设备指标", "AP1", "AV1")
  1531. f.MergeCell("集团设备指标", "AW1", "BC1")
  1532. f.MergeCell("集团设备指标", "BD1", "BJ1")
  1533. f.MergeCell("集团设备指标", "BK1", "BQ1")
  1534. f.MergeCell("集团设备指标", "BR1", "BX1")
  1535. f.MergeCell("集团设备指标", "BY1", "CE1")
  1536. f.MergeCell("集团设备指标", "CF1", "CL1")
  1537. f.MergeCell("集团设备指标", "CM1", "CS1")
  1538. f.SetCellValue("集团设备指标", "H1", year+"年")
  1539. f.SetSheetRow("集团设备指标", "A2", &[]interface{}{"牧场", "成本项目", "预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "年度达成率", "迄今饲养头日", "迄今产量(公斤)", "迄今实际单头牛成本", "迄今实际公斤奶成本(元/公斤)"})
  1540. if err := f.SetSheetRow("集团设备指标", "N2", &tem1); err != nil {
  1541. println(err.Error())
  1542. }
  1543. Engine := models.Engine
  1544. A := 3
  1545. pastures, err := Engine.SQL("select id,name from pasture where isdel = 0 AND id <> 18 order by sort").Query().List()
  1546. if err != nil {
  1547. println("err sql", err.Error())
  1548. } else {
  1549. for _, value := range pastures {
  1550. GetMailDataByPasture("集团设备指标", value["name"].(string), date, value["id"], A, f)
  1551. println(value["name"].(string))
  1552. A = A + 8
  1553. }
  1554. }
  1555. valuesMap, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportJY").QueryString()
  1556. valuesMap1, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportJM").QueryString()
  1557. sqls := ""
  1558. parammaps := make(map[string]interface{}, 0)
  1559. parammaps["month"] = date
  1560. s_params := make([]interface{}, 0)
  1561. if err == nil && len(valuesMap) > 0 {
  1562. sqls = valuesMap[0]["sqlstr"]
  1563. paramslist := strings.Split(valuesMap[0]["params"], ",")
  1564. if len(paramslist) > 0 && valuesMap[0]["params"] != "" {
  1565. for _, value := range paramslist {
  1566. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  1567. }
  1568. }
  1569. }
  1570. tem = []interface{}{}
  1571. values, err := Engine.SQL(sqls, s_params...).Query().List()
  1572. B := A
  1573. temMap := make(map[string][]interface{}, 0)
  1574. if err == nil {
  1575. for _, value := range values {
  1576. tem = append(tem, value["ftype"])
  1577. tem = append(tem, value["monthBudget"])
  1578. tem = append(tem, value["monthLimit"])
  1579. tem = append(tem, value["qmonthBudget"])
  1580. tem = append(tem, value["sumPrice"])
  1581. tem = append(tem, value["asave"])
  1582. tem = append(tem, value["dac"])
  1583. tem = append(tem, value["dacY"])
  1584. tem = append(tem, value["cowNum"])
  1585. tem = append(tem, value["saleNum"])
  1586. tem = append(tem, value["cowprice"])
  1587. tem = append(tem, value["milkprice"])
  1588. temMap[value["ftype"].(string)] = tem
  1589. tem = []interface{}{}
  1590. //B++
  1591. }
  1592. } else {
  1593. println(err.Error())
  1594. }
  1595. if m, ok := temMap["维修费(万元)"]; ok {
  1596. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1597. println(err.Error())
  1598. }
  1599. B++
  1600. } else {
  1601. temw := []interface{}{"维修费(万元)"}
  1602. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1603. println(err.Error())
  1604. }
  1605. B++
  1606. }
  1607. if m, ok := temMap["电费(万元)"]; ok {
  1608. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1609. println(err.Error())
  1610. }
  1611. B++
  1612. } else {
  1613. temw := []interface{}{"电费(万元)"}
  1614. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1615. println(err.Error())
  1616. }
  1617. B++
  1618. }
  1619. if m, ok := temMap["燃动费(万元)"]; ok {
  1620. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1621. println(err.Error())
  1622. }
  1623. B++
  1624. } else {
  1625. temw := []interface{}{"燃动费(万元)"}
  1626. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1627. println(err.Error())
  1628. }
  1629. B++
  1630. }
  1631. if m, ok := temMap["水费(万元)"]; ok {
  1632. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1633. println(err.Error())
  1634. }
  1635. B++
  1636. } else {
  1637. temw := []interface{}{"水费(万元)"}
  1638. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1639. println(err.Error())
  1640. }
  1641. B++
  1642. }
  1643. if m, ok := temMap["设备指标(万元)"]; ok {
  1644. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1645. println(err.Error())
  1646. }
  1647. B++
  1648. } else {
  1649. temw := []interface{}{"设备指标(万元)"}
  1650. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1651. println(err.Error())
  1652. }
  1653. B++
  1654. }
  1655. if m, ok := temMap["电量(度)"]; ok {
  1656. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1657. println(err.Error())
  1658. }
  1659. B++
  1660. } else {
  1661. temw := []interface{}{"电量(度)"}
  1662. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1663. println(err.Error())
  1664. }
  1665. B++
  1666. }
  1667. if m, ok := temMap["用水量(吨)"]; ok {
  1668. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1669. println(err.Error())
  1670. }
  1671. B++
  1672. } else {
  1673. temw := []interface{}{"用水量(吨)"}
  1674. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1675. println(err.Error())
  1676. }
  1677. B++
  1678. }
  1679. if m, ok := temMap["柴油用量(L)"]; ok {
  1680. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1681. println(err.Error())
  1682. }
  1683. B++
  1684. } else {
  1685. temw := []interface{}{"柴油用量(L)"}
  1686. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1687. println(err.Error())
  1688. }
  1689. B++
  1690. }
  1691. s_params = make([]interface{}, 0)
  1692. if err == nil && len(valuesMap1) > 0 {
  1693. sqls = valuesMap1[0]["sqlstr"]
  1694. parammaps := make(map[string]interface{}, 0)
  1695. parammaps["month"] = date
  1696. paramslist := strings.Split(valuesMap1[0]["params"], ",")
  1697. if len(paramslist) > 0 && valuesMap1[0]["params"] != "" {
  1698. for _, value := range paramslist {
  1699. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  1700. }
  1701. }
  1702. }
  1703. f.SetCellValue("集团设备指标", "A"+strconv.Itoa(A), "集团")
  1704. f.MergeCell("集团设备指标", "A"+strconv.Itoa(A), "A"+strconv.Itoa(A+7))
  1705. values, err = Engine.SQL(sqls, s_params...).Query().List()
  1706. tem = []interface{}{}
  1707. tem2 := []interface{}{}
  1708. if err == nil {
  1709. for _, value := range values {
  1710. tem2 = append(tem2, value["monthBudget"])
  1711. tem2 = append(tem2, value["monthLimit"])
  1712. tem2 = append(tem2, value["qmonthBudget"])
  1713. tem2 = append(tem2, value["sumPrice"])
  1714. tem2 = append(tem2, value["asave"])
  1715. tem2 = append(tem2, value["dac"])
  1716. tem2 = append(tem2, value["dacY"])
  1717. num, _ := strconv.Atoi(value["num"].(string))
  1718. switch value["ftype"] {
  1719. case "维修费(万元)":
  1720. c[(num-1)*7] = tem2[0]
  1721. c[(num-1)*7+1] = tem2[1]
  1722. c[(num-1)*7+2] = tem2[2]
  1723. c[(num-1)*7+3] = tem2[3]
  1724. c[(num-1)*7+4] = tem2[4]
  1725. c[(num-1)*7+5] = tem2[5]
  1726. c[(num-1)*7+6] = tem2[6]
  1727. case "电费(万元)":
  1728. d[(num-1)*7] = tem2[0]
  1729. d[(num-1)*7+1] = tem2[1]
  1730. d[(num-1)*7+2] = tem2[2]
  1731. d[(num-1)*7+3] = tem2[3]
  1732. d[(num-1)*7+4] = tem2[4]
  1733. d[(num-1)*7+5] = tem2[5]
  1734. d[(num-1)*7+6] = tem2[6]
  1735. case "燃动费(万元)":
  1736. e[(num-1)*7] = tem2[0]
  1737. e[(num-1)*7+1] = tem2[1]
  1738. e[(num-1)*7+2] = tem2[2]
  1739. e[(num-1)*7+3] = tem2[3]
  1740. e[(num-1)*7+4] = tem2[4]
  1741. e[(num-1)*7+5] = tem2[5]
  1742. e[(num-1)*7+6] = tem2[6]
  1743. case "水费(万元)":
  1744. g[(num-1)*7] = tem2[0]
  1745. g[(num-1)*7+1] = tem2[1]
  1746. g[(num-1)*7+2] = tem2[2]
  1747. g[(num-1)*7+3] = tem2[3]
  1748. g[(num-1)*7+4] = tem2[4]
  1749. g[(num-1)*7+5] = tem2[5]
  1750. g[(num-1)*7+6] = tem2[6]
  1751. case "电量(度)":
  1752. h[(num-1)*7] = tem2[0]
  1753. h[(num-1)*7+1] = tem2[1]
  1754. h[(num-1)*7+2] = tem2[2]
  1755. h[(num-1)*7+3] = tem2[3]
  1756. h[(num-1)*7+4] = tem2[4]
  1757. h[(num-1)*7+5] = tem2[5]
  1758. h[(num-1)*7+6] = tem2[6]
  1759. case "柴油用量(L)":
  1760. o[(num-1)*7] = tem2[0]
  1761. o[(num-1)*7+1] = tem2[1]
  1762. o[(num-1)*7+2] = tem2[2]
  1763. o[(num-1)*7+3] = tem2[3]
  1764. o[(num-1)*7+4] = tem2[4]
  1765. o[(num-1)*7+5] = tem2[5]
  1766. o[(num-1)*7+6] = tem2[6]
  1767. case "用水量(吨)":
  1768. p[(num-1)*7] = tem2[0]
  1769. p[(num-1)*7+1] = tem2[1]
  1770. p[(num-1)*7+2] = tem2[2]
  1771. p[(num-1)*7+3] = tem2[3]
  1772. p[(num-1)*7+4] = tem2[4]
  1773. p[(num-1)*7+5] = tem2[5]
  1774. p[(num-1)*7+6] = tem2[6]
  1775. case "设备指标(万元)":
  1776. r[(num-1)*7] = tem2[0]
  1777. r[(num-1)*7+1] = tem2[1]
  1778. r[(num-1)*7+2] = tem2[2]
  1779. r[(num-1)*7+3] = tem2[3]
  1780. r[(num-1)*7+4] = tem2[4]
  1781. r[(num-1)*7+5] = tem2[5]
  1782. r[(num-1)*7+6] = tem2[6]
  1783. }
  1784. tem2 = []interface{}{}
  1785. }
  1786. } else {
  1787. println(err.Error())
  1788. }
  1789. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A), &c); err != nil {
  1790. println(err.Error())
  1791. }
  1792. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+1), &d); err != nil {
  1793. println(err.Error())
  1794. }
  1795. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+2), &e); err != nil {
  1796. println(err.Error())
  1797. }
  1798. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+3), &g); err != nil {
  1799. println(err.Error())
  1800. }
  1801. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+4), &r); err != nil {
  1802. println(err.Error())
  1803. }
  1804. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+5), &h); err != nil {
  1805. println(err.Error())
  1806. }
  1807. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+6), &p); err != nil {
  1808. println(err.Error())
  1809. }
  1810. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+7), &o); err != nil {
  1811. println(err.Error())
  1812. }
  1813. // 设置月份单元格字体
  1814. monthStyle, err := f.NewStyle("{\"Alignment\":{\"Vertical\": \"center\", \"Horizontal\":\"center\"}}")
  1815. if err != nil {
  1816. println("monthStyle err", err.Error())
  1817. }
  1818. f.SetCellStyle("集团设备指标", "A1", "CS154", monthStyle)
  1819. // 根据指定路径保存文件
  1820. err = PathCheck("uploads/Downloadmailreport") //检查路径并创建
  1821. //os.Remove(filename)
  1822. if err != nil {
  1823. println("PathCheck err", err)
  1824. }
  1825. if err := f.SaveAs(filename); err != nil {
  1826. println(err.Error())
  1827. return "", err
  1828. }
  1829. return filename, err
  1830. }
  1831. func DownloadDataMC(sheetName, date string, pastureId interface{}) (string, error) {
  1832. filename := setting.CurrentPath+ "uploads/Downloadmailreport/" + date + sheetName + "设备指标.xlsx"
  1833. exist, _ := FileExists(filename)
  1834. if exist {
  1835. //return filename, nil
  1836. }
  1837. f := excelize.NewFile()
  1838. f.SetSheetName("Sheet1", sheetName)
  1839. tem := make([]interface{}, 0)
  1840. tem1 := make([]interface{}, 0)
  1841. c := []interface{}{}
  1842. d := []interface{}{}
  1843. e := []interface{}{}
  1844. g := []interface{}{}
  1845. h := []interface{}{}
  1846. o := []interface{}{}
  1847. p := []interface{}{}
  1848. r := []interface{}{}
  1849. for i := 1; i <= 12; i++ {
  1850. a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
  1851. b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
  1852. c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1853. d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1854. e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1855. g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1856. h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1857. o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1858. p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1859. r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1860. tem = append(tem, a...)
  1861. tem1 = append(tem1, b...)
  1862. }
  1863. if err := f.SetSheetRow(sheetName, "J1", &tem); err != nil {
  1864. println(err.Error())
  1865. }
  1866. year := ""
  1867. datetem, _ := strconv.Atoi(date[:4])
  1868. if date > time.Now().Add(-24*time.Hour).Format("2006")+"-01-01" {
  1869. year = strconv.Itoa(datetem)
  1870. } else {
  1871. year = strconv.Itoa(datetem - 1)
  1872. }
  1873. f.SetCellValue(sheetName, "A1", "时间")
  1874. f.MergeCell(sheetName, "B1", "I1")
  1875. f.MergeCell(sheetName, "J1", "P1")
  1876. f.MergeCell(sheetName, "Q1", "W1")
  1877. f.MergeCell(sheetName, "X1", "AD1")
  1878. f.MergeCell(sheetName, "AE1", "AK1")
  1879. f.MergeCell(sheetName, "AL1", "AR1")
  1880. f.MergeCell(sheetName, "AS1", "AY1")
  1881. f.MergeCell(sheetName, "AZ1", "BF1")
  1882. f.MergeCell(sheetName, "BG1", "BM1")
  1883. f.MergeCell(sheetName, "BN1", "BT1")
  1884. f.MergeCell(sheetName, "BU1", "CA1")
  1885. f.MergeCell(sheetName, "CB1", "CH1")
  1886. f.MergeCell(sheetName, "CI1", "CO1")
  1887. f.SetCellValue(sheetName, "H1", year+"年")
  1888. f.SetSheetRow(sheetName, "A2", &[]interface{}{"部门", "成本项目", "预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "年度达成率"})
  1889. if err := f.SetSheetRow(sheetName, "J2", &tem1); err != nil {
  1890. println(err.Error())
  1891. }
  1892. Engine := models.Engine
  1893. A := 3
  1894. pastures, err := Engine.SQL("select id,name from department where pastureId=? and isDel = 0 AND enable =1 and id <> ?", pastureId, pastureId).Query().List()
  1895. if err != nil {
  1896. println("err sql", err.Error())
  1897. } else {
  1898. for _, value := range pastures {
  1899. GetMailDataByDept(sheetName, value["name"].(string), date, value["id"], pastureId, A, f)
  1900. println(value["name"].(string))
  1901. A = A + 8
  1902. }
  1903. }
  1904. valuesMap, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMY").QueryString()
  1905. valuesMap1, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMM").QueryString()
  1906. sqls := ""
  1907. parammaps := make(map[string]interface{}, 0)
  1908. parammaps["month"] = date
  1909. parammaps["pastureId"] = pastureId
  1910. s_params := make([]interface{}, 0)
  1911. if err == nil && len(valuesMap) > 0 {
  1912. sqls = valuesMap[0]["sqlstr"]
  1913. paramslist := strings.Split(valuesMap[0]["params"], ",")
  1914. if len(paramslist) > 0 && valuesMap[0]["params"] != "" {
  1915. for _, value := range paramslist {
  1916. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  1917. }
  1918. }
  1919. }
  1920. tem = []interface{}{}
  1921. //sums := []interface{}{"设备指标(万元)",0,0,0,0,0,0,0,0}
  1922. values, err := Engine.SQL(sqls, s_params...).Query().List()
  1923. B := A
  1924. temMap := make(map[string][]interface{}, 0)
  1925. if err == nil {
  1926. for _, value := range values {
  1927. tem = append(tem, value["ftype"])
  1928. tem = append(tem, value["monthBudget"])
  1929. tem = append(tem, value["monthLimit"])
  1930. tem = append(tem, value["qmonthBudget"])
  1931. tem = append(tem, value["sumPrice"])
  1932. tem = append(tem, value["asave"])
  1933. tem = append(tem, value["dac"])
  1934. tem = append(tem, value["dacY"])
  1935. temMap[value["ftype"].(string)] = tem
  1936. //if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B),&tem); err != nil {
  1937. // println(err.Error())
  1938. //}
  1939. tem = []interface{}{}
  1940. //B++
  1941. }
  1942. } else {
  1943. println(err.Error())
  1944. }
  1945. if m, ok := temMap["维修费(万元)"]; ok {
  1946. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1947. println(err.Error())
  1948. }
  1949. B++
  1950. } else {
  1951. temw := []interface{}{"维修费(万元)"}
  1952. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1953. println(err.Error())
  1954. }
  1955. B++
  1956. }
  1957. if m, ok := temMap["电费(万元)"]; ok {
  1958. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1959. println(err.Error())
  1960. }
  1961. B++
  1962. } else {
  1963. temw := []interface{}{"电费(万元)"}
  1964. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1965. println(err.Error())
  1966. }
  1967. B++
  1968. }
  1969. if m, ok := temMap["燃动费(万元)"]; ok {
  1970. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1971. println(err.Error())
  1972. }
  1973. B++
  1974. } else {
  1975. temw := []interface{}{"燃动费(万元)"}
  1976. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1977. println(err.Error())
  1978. }
  1979. B++
  1980. }
  1981. if m, ok := temMap["水费(万元)"]; ok {
  1982. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1983. println(err.Error())
  1984. }
  1985. B++
  1986. } else {
  1987. temw := []interface{}{"水费(万元)"}
  1988. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1989. println(err.Error())
  1990. }
  1991. B++
  1992. }
  1993. if m, ok := temMap["设备指标(万元)"]; ok {
  1994. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1995. println(err.Error())
  1996. }
  1997. B++
  1998. } else {
  1999. temw := []interface{}{"设备指标(万元)"}
  2000. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  2001. println(err.Error())
  2002. }
  2003. B++
  2004. }
  2005. if m, ok := temMap["电量(度)"]; ok {
  2006. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  2007. println(err.Error())
  2008. }
  2009. B++
  2010. } else {
  2011. temw := []interface{}{"电量(度)"}
  2012. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  2013. println(err.Error())
  2014. }
  2015. B++
  2016. }
  2017. if m, ok := temMap["用水量(吨)"]; ok {
  2018. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  2019. println(err.Error())
  2020. }
  2021. B++
  2022. } else {
  2023. temw := []interface{}{"用水量(吨)"}
  2024. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  2025. println(err.Error())
  2026. }
  2027. B++
  2028. }
  2029. if m, ok := temMap["柴油用量(L)"]; ok {
  2030. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  2031. println(err.Error())
  2032. }
  2033. B++
  2034. } else {
  2035. temw := []interface{}{"柴油用量(L)"}
  2036. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  2037. println(err.Error())
  2038. }
  2039. B++
  2040. }
  2041. s_params = make([]interface{}, 0)
  2042. if err == nil && len(valuesMap1) > 0 {
  2043. sqls = valuesMap1[0]["sqlstr"]
  2044. parammaps := make(map[string]interface{}, 0)
  2045. parammaps["month"] = date
  2046. parammaps["pastureId"] = pastureId
  2047. paramslist := strings.Split(valuesMap1[0]["params"], ",")
  2048. if len(paramslist) > 0 && valuesMap1[0]["params"] != "" {
  2049. for _, value := range paramslist {
  2050. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  2051. }
  2052. }
  2053. }
  2054. f.SetCellValue(sheetName, "A"+strconv.Itoa(A), sheetName)
  2055. f.MergeCell(sheetName, "A"+strconv.Itoa(A), "A"+strconv.Itoa(A+7))
  2056. values, err = Engine.SQL(sqls, s_params...).Query().List()
  2057. tem = []interface{}{}
  2058. //d := append(c,nil)
  2059. //e := append(c,nil)
  2060. //g := append(c,nil)
  2061. //h := append(c,nil)
  2062. //o := append(c,nil)
  2063. //p := append(c,nil)
  2064. tem2 := []interface{}{}
  2065. if err == nil {
  2066. for _, value := range values {
  2067. tem2 = append(tem2, value["monthBudget"])
  2068. tem2 = append(tem2, value["monthLimit"])
  2069. tem2 = append(tem2, value["qmonthBudget"])
  2070. tem2 = append(tem2, value["sumPrice"])
  2071. tem2 = append(tem2, value["asave"])
  2072. tem2 = append(tem2, value["dac"])
  2073. tem2 = append(tem2, value["dacY"])
  2074. num, _ := strconv.Atoi(value["num"].(string))
  2075. switch value["ftype"] {
  2076. case "维修费(万元)":
  2077. c[(num-1)*7] = tem2[0]
  2078. c[(num-1)*7+1] = tem2[1]
  2079. c[(num-1)*7+2] = tem2[2]
  2080. c[(num-1)*7+3] = tem2[3]
  2081. c[(num-1)*7+4] = tem2[4]
  2082. c[(num-1)*7+5] = tem2[5]
  2083. c[(num-1)*7+6] = tem2[6]
  2084. case "电费(万元)":
  2085. d[(num-1)*7] = tem2[0]
  2086. d[(num-1)*7+1] = tem2[1]
  2087. d[(num-1)*7+2] = tem2[2]
  2088. d[(num-1)*7+3] = tem2[3]
  2089. d[(num-1)*7+4] = tem2[4]
  2090. d[(num-1)*7+5] = tem2[5]
  2091. d[(num-1)*7+6] = tem2[6]
  2092. case "燃动费(万元)":
  2093. e[(num-1)*7] = tem2[0]
  2094. e[(num-1)*7+1] = tem2[1]
  2095. e[(num-1)*7+2] = tem2[2]
  2096. e[(num-1)*7+3] = tem2[3]
  2097. e[(num-1)*7+4] = tem2[4]
  2098. e[(num-1)*7+5] = tem2[5]
  2099. e[(num-1)*7+6] = tem2[6]
  2100. case "水费(万元)":
  2101. g[(num-1)*7] = tem2[0]
  2102. g[(num-1)*7+1] = tem2[1]
  2103. g[(num-1)*7+2] = tem2[2]
  2104. g[(num-1)*7+3] = tem2[3]
  2105. g[(num-1)*7+4] = tem2[4]
  2106. g[(num-1)*7+5] = tem2[5]
  2107. g[(num-1)*7+6] = tem2[6]
  2108. case "电量(度)":
  2109. h[(num-1)*7] = tem2[0]
  2110. h[(num-1)*7+1] = tem2[1]
  2111. h[(num-1)*7+2] = tem2[2]
  2112. h[(num-1)*7+3] = tem2[3]
  2113. h[(num-1)*7+4] = tem2[4]
  2114. h[(num-1)*7+5] = tem2[5]
  2115. h[(num-1)*7+6] = tem2[6]
  2116. case "柴油用量(L)":
  2117. o[(num-1)*7] = tem2[0]
  2118. o[(num-1)*7+1] = tem2[1]
  2119. o[(num-1)*7+2] = tem2[2]
  2120. o[(num-1)*7+3] = tem2[3]
  2121. o[(num-1)*7+4] = tem2[4]
  2122. o[(num-1)*7+5] = tem2[5]
  2123. o[(num-1)*7+6] = tem2[6]
  2124. case "用水量(吨)":
  2125. p[(num-1)*7] = tem2[0]
  2126. p[(num-1)*7+1] = tem2[1]
  2127. p[(num-1)*7+2] = tem2[2]
  2128. p[(num-1)*7+3] = tem2[3]
  2129. p[(num-1)*7+4] = tem2[4]
  2130. p[(num-1)*7+5] = tem2[5]
  2131. p[(num-1)*7+6] = tem2[6]
  2132. case "设备指标(万元)":
  2133. r[(num-1)*7] = tem2[0]
  2134. r[(num-1)*7+1] = tem2[1]
  2135. r[(num-1)*7+2] = tem2[2]
  2136. r[(num-1)*7+3] = tem2[3]
  2137. r[(num-1)*7+4] = tem2[4]
  2138. r[(num-1)*7+5] = tem2[5]
  2139. r[(num-1)*7+6] = tem2[6]
  2140. }
  2141. tem2 = []interface{}{}
  2142. }
  2143. } else {
  2144. println(err.Error())
  2145. }
  2146. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A), &c); err != nil {
  2147. println(err.Error())
  2148. }
  2149. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+1), &d); err != nil {
  2150. println(err.Error())
  2151. }
  2152. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+2), &e); err != nil {
  2153. println(err.Error())
  2154. }
  2155. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+3), &g); err != nil {
  2156. println(err.Error())
  2157. }
  2158. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+4), &r); err != nil {
  2159. println(err.Error())
  2160. }
  2161. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+5), &h); err != nil {
  2162. println(err.Error())
  2163. }
  2164. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+6), &p); err != nil {
  2165. println(err.Error())
  2166. }
  2167. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+7), &o); err != nil {
  2168. println(err.Error())
  2169. }
  2170. //sums[2] = sums[2].(int)+value["monthLimit"].(int)
  2171. //sums[1] = sums[1].(int)+value["monthBudget"].(int)
  2172. // 设置月份单元格字体
  2173. monthStyle, err := f.NewStyle("{\"Alignment\":{\"Vertical\": \"center\", \"Horizontal\":\"center\"}}")
  2174. if err != nil {
  2175. println("monthStyle err", err.Error())
  2176. }
  2177. f.SetCellStyle(sheetName, "A1", "CS300", monthStyle)
  2178. // 根据指定路径保存文件
  2179. //filename :="uploads/Downloadmailreport/" + date +sheetName+"设备指标.xlsx"
  2180. err = PathCheck("uploads/Downloadmailreport") //检查路径并创建
  2181. //os.Remove(filename)
  2182. if err != nil {
  2183. println("PathCheck err", err)
  2184. }
  2185. if err := f.SaveAs(filename); err != nil {
  2186. println(err.Error())
  2187. return "", err
  2188. }
  2189. return filename, err
  2190. }
  2191. func FileExists(path string) (bool, error) {
  2192. _, err := os.Stat(path)
  2193. if err == nil {
  2194. return true, nil
  2195. }
  2196. if os.IsNotExist(err) {
  2197. return false, nil
  2198. }
  2199. return false, err
  2200. }