2b4fc8a5ba09f6aff1321afc0ac6fa06c5efc40b.svn-base 71 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350
  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 := "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 := "uploads/mailreport/" + time.Now().Format("2006-01-02") + "集团设备指标.xlsx"
  505. err = PathCheck("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 := "uploads/Downloadmailreport/" + date + "集团设备指标.xlsx"
  1482. exist, _ := FileExists(filename)
  1483. if exist {
  1484. return filename, nil
  1485. }
  1486. f := excelize.NewFile()
  1487. f.SetSheetName("Sheet1", "集团设备指标")
  1488. tem := make([]interface{}, 0)
  1489. tem1 := make([]interface{}, 0)
  1490. c := []interface{}{}
  1491. d := []interface{}{}
  1492. e := []interface{}{}
  1493. g := []interface{}{}
  1494. h := []interface{}{}
  1495. o := []interface{}{}
  1496. p := []interface{}{}
  1497. r := []interface{}{}
  1498. for i := 1; i <= 12; i++ {
  1499. a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
  1500. b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
  1501. c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1502. d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1503. e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1504. g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1505. h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1506. o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1507. p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1508. r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1509. tem = append(tem, a...)
  1510. tem1 = append(tem1, b...)
  1511. }
  1512. if err := f.SetSheetRow("集团设备指标", "N1", &tem); err != nil {
  1513. println(err.Error())
  1514. }
  1515. //year :=time.Now().Add(-24*time.Hour).Format("2006")
  1516. year := ""
  1517. datetem, _ := strconv.Atoi(date[:4])
  1518. if date > time.Now().Add(-24*time.Hour).Format("2006")+"-01-01" {
  1519. year = strconv.Itoa(datetem)
  1520. } else {
  1521. year = strconv.Itoa(datetem - 1)
  1522. }
  1523. f.SetCellValue("集团设备指标", "A1", "时间")
  1524. f.MergeCell("集团设备指标", "B1", "M1")
  1525. f.MergeCell("集团设备指标", "N1", "T1")
  1526. f.MergeCell("集团设备指标", "U1", "AA1")
  1527. f.MergeCell("集团设备指标", "AB1", "AH1")
  1528. f.MergeCell("集团设备指标", "AI1", "AO1")
  1529. f.MergeCell("集团设备指标", "AP1", "AV1")
  1530. f.MergeCell("集团设备指标", "AW1", "BC1")
  1531. f.MergeCell("集团设备指标", "BD1", "BJ1")
  1532. f.MergeCell("集团设备指标", "BK1", "BQ1")
  1533. f.MergeCell("集团设备指标", "BR1", "BX1")
  1534. f.MergeCell("集团设备指标", "BY1", "CE1")
  1535. f.MergeCell("集团设备指标", "CF1", "CL1")
  1536. f.MergeCell("集团设备指标", "CM1", "CS1")
  1537. f.SetCellValue("集团设备指标", "H1", year+"年")
  1538. f.SetSheetRow("集团设备指标", "A2", &[]interface{}{"牧场", "成本项目", "预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "年度达成率", "迄今饲养头日", "迄今产量(公斤)", "迄今实际单头牛成本", "迄今实际公斤奶成本(元/公斤)"})
  1539. if err := f.SetSheetRow("集团设备指标", "N2", &tem1); err != nil {
  1540. println(err.Error())
  1541. }
  1542. Engine := models.Engine
  1543. A := 3
  1544. pastures, err := Engine.SQL("select id,name from pasture where isdel = 0 AND id <> 18 order by sort").Query().List()
  1545. if err != nil {
  1546. println("err sql", err.Error())
  1547. } else {
  1548. for _, value := range pastures {
  1549. GetMailDataByPasture("集团设备指标", value["name"].(string), date, value["id"], A, f)
  1550. println(value["name"].(string))
  1551. A = A + 8
  1552. }
  1553. }
  1554. valuesMap, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportJY").QueryString()
  1555. valuesMap1, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportJM").QueryString()
  1556. sqls := ""
  1557. parammaps := make(map[string]interface{}, 0)
  1558. parammaps["month"] = date
  1559. s_params := make([]interface{}, 0)
  1560. if err == nil && len(valuesMap) > 0 {
  1561. sqls = valuesMap[0]["sqlstr"]
  1562. paramslist := strings.Split(valuesMap[0]["params"], ",")
  1563. if len(paramslist) > 0 && valuesMap[0]["params"] != "" {
  1564. for _, value := range paramslist {
  1565. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  1566. }
  1567. }
  1568. }
  1569. tem = []interface{}{}
  1570. values, err := Engine.SQL(sqls, s_params...).Query().List()
  1571. B := A
  1572. temMap := make(map[string][]interface{}, 0)
  1573. if err == nil {
  1574. for _, value := range values {
  1575. tem = append(tem, value["ftype"])
  1576. tem = append(tem, value["monthBudget"])
  1577. tem = append(tem, value["monthLimit"])
  1578. tem = append(tem, value["qmonthBudget"])
  1579. tem = append(tem, value["sumPrice"])
  1580. tem = append(tem, value["asave"])
  1581. tem = append(tem, value["dac"])
  1582. tem = append(tem, value["dacY"])
  1583. tem = append(tem, value["cowNum"])
  1584. tem = append(tem, value["saleNum"])
  1585. tem = append(tem, value["cowprice"])
  1586. tem = append(tem, value["milkprice"])
  1587. temMap[value["ftype"].(string)] = tem
  1588. tem = []interface{}{}
  1589. //B++
  1590. }
  1591. } else {
  1592. println(err.Error())
  1593. }
  1594. if m, ok := temMap["维修费(万元)"]; ok {
  1595. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1596. println(err.Error())
  1597. }
  1598. B++
  1599. } else {
  1600. temw := []interface{}{"维修费(万元)"}
  1601. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1602. println(err.Error())
  1603. }
  1604. B++
  1605. }
  1606. if m, ok := temMap["电费(万元)"]; ok {
  1607. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1608. println(err.Error())
  1609. }
  1610. B++
  1611. } else {
  1612. temw := []interface{}{"电费(万元)"}
  1613. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1614. println(err.Error())
  1615. }
  1616. B++
  1617. }
  1618. if m, ok := temMap["燃动费(万元)"]; ok {
  1619. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1620. println(err.Error())
  1621. }
  1622. B++
  1623. } else {
  1624. temw := []interface{}{"燃动费(万元)"}
  1625. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1626. println(err.Error())
  1627. }
  1628. B++
  1629. }
  1630. if m, ok := temMap["水费(万元)"]; ok {
  1631. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1632. println(err.Error())
  1633. }
  1634. B++
  1635. } else {
  1636. temw := []interface{}{"水费(万元)"}
  1637. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1638. println(err.Error())
  1639. }
  1640. B++
  1641. }
  1642. if m, ok := temMap["设备指标(万元)"]; ok {
  1643. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1644. println(err.Error())
  1645. }
  1646. B++
  1647. } else {
  1648. temw := []interface{}{"设备指标(万元)"}
  1649. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1650. println(err.Error())
  1651. }
  1652. B++
  1653. }
  1654. if m, ok := temMap["电量(度)"]; ok {
  1655. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1656. println(err.Error())
  1657. }
  1658. B++
  1659. } else {
  1660. temw := []interface{}{"电量(度)"}
  1661. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1662. println(err.Error())
  1663. }
  1664. B++
  1665. }
  1666. if m, ok := temMap["用水量(吨)"]; ok {
  1667. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1668. println(err.Error())
  1669. }
  1670. B++
  1671. } else {
  1672. temw := []interface{}{"用水量(吨)"}
  1673. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1674. println(err.Error())
  1675. }
  1676. B++
  1677. }
  1678. if m, ok := temMap["柴油用量(L)"]; ok {
  1679. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &m); err != nil {
  1680. println(err.Error())
  1681. }
  1682. B++
  1683. } else {
  1684. temw := []interface{}{"柴油用量(L)"}
  1685. if err := f.SetSheetRow("集团设备指标", "B"+strconv.Itoa(B), &temw); err != nil {
  1686. println(err.Error())
  1687. }
  1688. B++
  1689. }
  1690. s_params = make([]interface{}, 0)
  1691. if err == nil && len(valuesMap1) > 0 {
  1692. sqls = valuesMap1[0]["sqlstr"]
  1693. parammaps := make(map[string]interface{}, 0)
  1694. parammaps["month"] = date
  1695. paramslist := strings.Split(valuesMap1[0]["params"], ",")
  1696. if len(paramslist) > 0 && valuesMap1[0]["params"] != "" {
  1697. for _, value := range paramslist {
  1698. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  1699. }
  1700. }
  1701. }
  1702. f.SetCellValue("集团设备指标", "A"+strconv.Itoa(A), "集团")
  1703. f.MergeCell("集团设备指标", "A"+strconv.Itoa(A), "A"+strconv.Itoa(A+7))
  1704. values, err = Engine.SQL(sqls, s_params...).Query().List()
  1705. tem = []interface{}{}
  1706. tem2 := []interface{}{}
  1707. if err == nil {
  1708. for _, value := range values {
  1709. tem2 = append(tem2, value["monthBudget"])
  1710. tem2 = append(tem2, value["monthLimit"])
  1711. tem2 = append(tem2, value["qmonthBudget"])
  1712. tem2 = append(tem2, value["sumPrice"])
  1713. tem2 = append(tem2, value["asave"])
  1714. tem2 = append(tem2, value["dac"])
  1715. tem2 = append(tem2, value["dacY"])
  1716. num, _ := strconv.Atoi(value["num"].(string))
  1717. switch value["ftype"] {
  1718. case "维修费(万元)":
  1719. c[(num-1)*7] = tem2[0]
  1720. c[(num-1)*7+1] = tem2[1]
  1721. c[(num-1)*7+2] = tem2[2]
  1722. c[(num-1)*7+3] = tem2[3]
  1723. c[(num-1)*7+4] = tem2[4]
  1724. c[(num-1)*7+5] = tem2[5]
  1725. c[(num-1)*7+6] = tem2[6]
  1726. case "电费(万元)":
  1727. d[(num-1)*7] = tem2[0]
  1728. d[(num-1)*7+1] = tem2[1]
  1729. d[(num-1)*7+2] = tem2[2]
  1730. d[(num-1)*7+3] = tem2[3]
  1731. d[(num-1)*7+4] = tem2[4]
  1732. d[(num-1)*7+5] = tem2[5]
  1733. d[(num-1)*7+6] = tem2[6]
  1734. case "燃动费(万元)":
  1735. e[(num-1)*7] = tem2[0]
  1736. e[(num-1)*7+1] = tem2[1]
  1737. e[(num-1)*7+2] = tem2[2]
  1738. e[(num-1)*7+3] = tem2[3]
  1739. e[(num-1)*7+4] = tem2[4]
  1740. e[(num-1)*7+5] = tem2[5]
  1741. e[(num-1)*7+6] = tem2[6]
  1742. case "水费(万元)":
  1743. g[(num-1)*7] = tem2[0]
  1744. g[(num-1)*7+1] = tem2[1]
  1745. g[(num-1)*7+2] = tem2[2]
  1746. g[(num-1)*7+3] = tem2[3]
  1747. g[(num-1)*7+4] = tem2[4]
  1748. g[(num-1)*7+5] = tem2[5]
  1749. g[(num-1)*7+6] = tem2[6]
  1750. case "电量(度)":
  1751. h[(num-1)*7] = tem2[0]
  1752. h[(num-1)*7+1] = tem2[1]
  1753. h[(num-1)*7+2] = tem2[2]
  1754. h[(num-1)*7+3] = tem2[3]
  1755. h[(num-1)*7+4] = tem2[4]
  1756. h[(num-1)*7+5] = tem2[5]
  1757. h[(num-1)*7+6] = tem2[6]
  1758. case "柴油用量(L)":
  1759. o[(num-1)*7] = tem2[0]
  1760. o[(num-1)*7+1] = tem2[1]
  1761. o[(num-1)*7+2] = tem2[2]
  1762. o[(num-1)*7+3] = tem2[3]
  1763. o[(num-1)*7+4] = tem2[4]
  1764. o[(num-1)*7+5] = tem2[5]
  1765. o[(num-1)*7+6] = tem2[6]
  1766. case "用水量(吨)":
  1767. p[(num-1)*7] = tem2[0]
  1768. p[(num-1)*7+1] = tem2[1]
  1769. p[(num-1)*7+2] = tem2[2]
  1770. p[(num-1)*7+3] = tem2[3]
  1771. p[(num-1)*7+4] = tem2[4]
  1772. p[(num-1)*7+5] = tem2[5]
  1773. p[(num-1)*7+6] = tem2[6]
  1774. case "设备指标(万元)":
  1775. r[(num-1)*7] = tem2[0]
  1776. r[(num-1)*7+1] = tem2[1]
  1777. r[(num-1)*7+2] = tem2[2]
  1778. r[(num-1)*7+3] = tem2[3]
  1779. r[(num-1)*7+4] = tem2[4]
  1780. r[(num-1)*7+5] = tem2[5]
  1781. r[(num-1)*7+6] = tem2[6]
  1782. }
  1783. tem2 = []interface{}{}
  1784. }
  1785. } else {
  1786. println(err.Error())
  1787. }
  1788. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A), &c); err != nil {
  1789. println(err.Error())
  1790. }
  1791. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+1), &d); err != nil {
  1792. println(err.Error())
  1793. }
  1794. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+2), &e); err != nil {
  1795. println(err.Error())
  1796. }
  1797. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+3), &g); err != nil {
  1798. println(err.Error())
  1799. }
  1800. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+4), &r); err != nil {
  1801. println(err.Error())
  1802. }
  1803. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+5), &h); err != nil {
  1804. println(err.Error())
  1805. }
  1806. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+6), &p); err != nil {
  1807. println(err.Error())
  1808. }
  1809. if err := f.SetSheetRow("集团设备指标", "N"+strconv.Itoa(A+7), &o); err != nil {
  1810. println(err.Error())
  1811. }
  1812. // 设置月份单元格字体
  1813. monthStyle, err := f.NewStyle("{\"Alignment\":{\"Vertical\": \"center\", \"Horizontal\":\"center\"}}")
  1814. if err != nil {
  1815. println("monthStyle err", err.Error())
  1816. }
  1817. f.SetCellStyle("集团设备指标", "A1", "CS154", monthStyle)
  1818. // 根据指定路径保存文件
  1819. err = PathCheck("uploads/Downloadmailreport") //检查路径并创建
  1820. //os.Remove(filename)
  1821. if err != nil {
  1822. println("PathCheck err", err)
  1823. }
  1824. if err := f.SaveAs(filename); err != nil {
  1825. println(err.Error())
  1826. return "", err
  1827. }
  1828. return filename, err
  1829. }
  1830. func DownloadDataMC(sheetName, date string, pastureId interface{}) (string, error) {
  1831. filename := "uploads/Downloadmailreport/" + date + sheetName + "设备指标.xlsx"
  1832. exist, _ := FileExists(filename)
  1833. if exist {
  1834. return filename, nil
  1835. }
  1836. f := excelize.NewFile()
  1837. f.SetSheetName("Sheet1", sheetName)
  1838. tem := make([]interface{}, 0)
  1839. tem1 := make([]interface{}, 0)
  1840. c := []interface{}{}
  1841. d := []interface{}{}
  1842. e := []interface{}{}
  1843. g := []interface{}{}
  1844. h := []interface{}{}
  1845. o := []interface{}{}
  1846. p := []interface{}{}
  1847. r := []interface{}{}
  1848. for i := 1; i <= 12; i++ {
  1849. a := []interface{}{strconv.Itoa(i) + "月", nil, nil, nil, nil, nil, nil}
  1850. b := []interface{}{"预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "月度达成率"}
  1851. c = append(c, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1852. d = append(d, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1853. e = append(e, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1854. g = append(g, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1855. h = append(h, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1856. o = append(o, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1857. p = append(p, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1858. r = append(r, []interface{}{0, 0, 0, 0, 0, 0, 0}...)
  1859. tem = append(tem, a...)
  1860. tem1 = append(tem1, b...)
  1861. }
  1862. if err := f.SetSheetRow(sheetName, "J1", &tem); err != nil {
  1863. println(err.Error())
  1864. }
  1865. year := ""
  1866. datetem, _ := strconv.Atoi(date[:4])
  1867. if date > time.Now().Add(-24*time.Hour).Format("2006")+"-01-01" {
  1868. year = strconv.Itoa(datetem)
  1869. } else {
  1870. year = strconv.Itoa(datetem - 1)
  1871. }
  1872. f.SetCellValue(sheetName, "A1", "时间")
  1873. f.MergeCell(sheetName, "B1", "I1")
  1874. f.MergeCell(sheetName, "J1", "P1")
  1875. f.MergeCell(sheetName, "Q1", "W1")
  1876. f.MergeCell(sheetName, "X1", "AD1")
  1877. f.MergeCell(sheetName, "AE1", "AK1")
  1878. f.MergeCell(sheetName, "AL1", "AR1")
  1879. f.MergeCell(sheetName, "AS1", "AY1")
  1880. f.MergeCell(sheetName, "AZ1", "BF1")
  1881. f.MergeCell(sheetName, "BG1", "BM1")
  1882. f.MergeCell(sheetName, "BN1", "BT1")
  1883. f.MergeCell(sheetName, "BU1", "CA1")
  1884. f.MergeCell(sheetName, "CB1", "CH1")
  1885. f.MergeCell(sheetName, "CI1", "CO1")
  1886. f.SetCellValue(sheetName, "H1", year+"年")
  1887. f.SetSheetRow(sheetName, "A2", &[]interface{}{"部门", "成本项目", "预算", "内控", "迄今内控", "迄今实际", "实际节约", "迄今达成率", "年度达成率"})
  1888. if err := f.SetSheetRow(sheetName, "J2", &tem1); err != nil {
  1889. println(err.Error())
  1890. }
  1891. Engine := models.Engine
  1892. A := 3
  1893. pastures, err := Engine.SQL("select id,name from department where pastureId=? and isDel = 0 AND enable =1 and id <> ?", pastureId, pastureId).Query().List()
  1894. if err != nil {
  1895. println("err sql", err.Error())
  1896. } else {
  1897. for _, value := range pastures {
  1898. GetMailDataByDept(sheetName, value["name"].(string), date, value["id"], pastureId, A, f)
  1899. println(value["name"].(string))
  1900. A = A + 8
  1901. }
  1902. }
  1903. valuesMap, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMY").QueryString()
  1904. valuesMap1, err := Engine.SQL("SELECT sqlstr,params FROM apisql WHERE sqlname = ? AND ENABLE>0 ", "getMailReportMM").QueryString()
  1905. sqls := ""
  1906. parammaps := make(map[string]interface{}, 0)
  1907. parammaps["month"] = date
  1908. parammaps["pastureId"] = pastureId
  1909. s_params := make([]interface{}, 0)
  1910. if err == nil && len(valuesMap) > 0 {
  1911. sqls = valuesMap[0]["sqlstr"]
  1912. paramslist := strings.Split(valuesMap[0]["params"], ",")
  1913. if len(paramslist) > 0 && valuesMap[0]["params"] != "" {
  1914. for _, value := range paramslist {
  1915. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  1916. }
  1917. }
  1918. }
  1919. tem = []interface{}{}
  1920. //sums := []interface{}{"设备指标(万元)",0,0,0,0,0,0,0,0}
  1921. values, err := Engine.SQL(sqls, s_params...).Query().List()
  1922. B := A
  1923. temMap := make(map[string][]interface{}, 0)
  1924. if err == nil {
  1925. for _, value := range values {
  1926. tem = append(tem, value["ftype"])
  1927. tem = append(tem, value["monthBudget"])
  1928. tem = append(tem, value["monthLimit"])
  1929. tem = append(tem, value["qmonthBudget"])
  1930. tem = append(tem, value["sumPrice"])
  1931. tem = append(tem, value["asave"])
  1932. tem = append(tem, value["dac"])
  1933. tem = append(tem, value["dacY"])
  1934. temMap[value["ftype"].(string)] = tem
  1935. //if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B),&tem); err != nil {
  1936. // println(err.Error())
  1937. //}
  1938. tem = []interface{}{}
  1939. //B++
  1940. }
  1941. } else {
  1942. println(err.Error())
  1943. }
  1944. if m, ok := temMap["维修费(万元)"]; ok {
  1945. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1946. println(err.Error())
  1947. }
  1948. B++
  1949. } else {
  1950. temw := []interface{}{"维修费(万元)"}
  1951. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1952. println(err.Error())
  1953. }
  1954. B++
  1955. }
  1956. if m, ok := temMap["电费(万元)"]; ok {
  1957. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1958. println(err.Error())
  1959. }
  1960. B++
  1961. } else {
  1962. temw := []interface{}{"电费(万元)"}
  1963. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1964. println(err.Error())
  1965. }
  1966. B++
  1967. }
  1968. if m, ok := temMap["燃动费(万元)"]; ok {
  1969. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1970. println(err.Error())
  1971. }
  1972. B++
  1973. } else {
  1974. temw := []interface{}{"燃动费(万元)"}
  1975. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1976. println(err.Error())
  1977. }
  1978. B++
  1979. }
  1980. if m, ok := temMap["水费(万元)"]; ok {
  1981. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1982. println(err.Error())
  1983. }
  1984. B++
  1985. } else {
  1986. temw := []interface{}{"水费(万元)"}
  1987. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  1988. println(err.Error())
  1989. }
  1990. B++
  1991. }
  1992. if m, ok := temMap["设备指标(万元)"]; ok {
  1993. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  1994. println(err.Error())
  1995. }
  1996. B++
  1997. } else {
  1998. temw := []interface{}{"设备指标(万元)"}
  1999. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  2000. println(err.Error())
  2001. }
  2002. B++
  2003. }
  2004. if m, ok := temMap["电量(度)"]; ok {
  2005. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  2006. println(err.Error())
  2007. }
  2008. B++
  2009. } else {
  2010. temw := []interface{}{"电量(度)"}
  2011. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  2012. println(err.Error())
  2013. }
  2014. B++
  2015. }
  2016. if m, ok := temMap["用水量(吨)"]; ok {
  2017. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  2018. println(err.Error())
  2019. }
  2020. B++
  2021. } else {
  2022. temw := []interface{}{"用水量(吨)"}
  2023. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  2024. println(err.Error())
  2025. }
  2026. B++
  2027. }
  2028. if m, ok := temMap["柴油用量(L)"]; ok {
  2029. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &m); err != nil {
  2030. println(err.Error())
  2031. }
  2032. B++
  2033. } else {
  2034. temw := []interface{}{"柴油用量(L)"}
  2035. if err := f.SetSheetRow(sheetName, "B"+strconv.Itoa(B), &temw); err != nil {
  2036. println(err.Error())
  2037. }
  2038. B++
  2039. }
  2040. s_params = make([]interface{}, 0)
  2041. if err == nil && len(valuesMap1) > 0 {
  2042. sqls = valuesMap1[0]["sqlstr"]
  2043. parammaps := make(map[string]interface{}, 0)
  2044. parammaps["month"] = date
  2045. parammaps["pastureId"] = pastureId
  2046. paramslist := strings.Split(valuesMap1[0]["params"], ",")
  2047. if len(paramslist) > 0 && valuesMap1[0]["params"] != "" {
  2048. for _, value := range paramslist {
  2049. s_params = append(s_params, parammaps[strings.Trim(value, " ")])
  2050. }
  2051. }
  2052. }
  2053. f.SetCellValue(sheetName, "A"+strconv.Itoa(A), sheetName)
  2054. f.MergeCell(sheetName, "A"+strconv.Itoa(A), "A"+strconv.Itoa(A+7))
  2055. values, err = Engine.SQL(sqls, s_params...).Query().List()
  2056. tem = []interface{}{}
  2057. //d := append(c,nil)
  2058. //e := append(c,nil)
  2059. //g := append(c,nil)
  2060. //h := append(c,nil)
  2061. //o := append(c,nil)
  2062. //p := append(c,nil)
  2063. tem2 := []interface{}{}
  2064. if err == nil {
  2065. for _, value := range values {
  2066. tem2 = append(tem2, value["monthBudget"])
  2067. tem2 = append(tem2, value["monthLimit"])
  2068. tem2 = append(tem2, value["qmonthBudget"])
  2069. tem2 = append(tem2, value["sumPrice"])
  2070. tem2 = append(tem2, value["asave"])
  2071. tem2 = append(tem2, value["dac"])
  2072. tem2 = append(tem2, value["dacY"])
  2073. num, _ := strconv.Atoi(value["num"].(string))
  2074. switch value["ftype"] {
  2075. case "维修费(万元)":
  2076. c[(num-1)*7] = tem2[0]
  2077. c[(num-1)*7+1] = tem2[1]
  2078. c[(num-1)*7+2] = tem2[2]
  2079. c[(num-1)*7+3] = tem2[3]
  2080. c[(num-1)*7+4] = tem2[4]
  2081. c[(num-1)*7+5] = tem2[5]
  2082. c[(num-1)*7+6] = tem2[6]
  2083. case "电费(万元)":
  2084. d[(num-1)*7] = tem2[0]
  2085. d[(num-1)*7+1] = tem2[1]
  2086. d[(num-1)*7+2] = tem2[2]
  2087. d[(num-1)*7+3] = tem2[3]
  2088. d[(num-1)*7+4] = tem2[4]
  2089. d[(num-1)*7+5] = tem2[5]
  2090. d[(num-1)*7+6] = tem2[6]
  2091. case "燃动费(万元)":
  2092. e[(num-1)*7] = tem2[0]
  2093. e[(num-1)*7+1] = tem2[1]
  2094. e[(num-1)*7+2] = tem2[2]
  2095. e[(num-1)*7+3] = tem2[3]
  2096. e[(num-1)*7+4] = tem2[4]
  2097. e[(num-1)*7+5] = tem2[5]
  2098. e[(num-1)*7+6] = tem2[6]
  2099. case "水费(万元)":
  2100. g[(num-1)*7] = tem2[0]
  2101. g[(num-1)*7+1] = tem2[1]
  2102. g[(num-1)*7+2] = tem2[2]
  2103. g[(num-1)*7+3] = tem2[3]
  2104. g[(num-1)*7+4] = tem2[4]
  2105. g[(num-1)*7+5] = tem2[5]
  2106. g[(num-1)*7+6] = tem2[6]
  2107. case "电量(度)":
  2108. h[(num-1)*7] = tem2[0]
  2109. h[(num-1)*7+1] = tem2[1]
  2110. h[(num-1)*7+2] = tem2[2]
  2111. h[(num-1)*7+3] = tem2[3]
  2112. h[(num-1)*7+4] = tem2[4]
  2113. h[(num-1)*7+5] = tem2[5]
  2114. h[(num-1)*7+6] = tem2[6]
  2115. case "柴油用量(L)":
  2116. o[(num-1)*7] = tem2[0]
  2117. o[(num-1)*7+1] = tem2[1]
  2118. o[(num-1)*7+2] = tem2[2]
  2119. o[(num-1)*7+3] = tem2[3]
  2120. o[(num-1)*7+4] = tem2[4]
  2121. o[(num-1)*7+5] = tem2[5]
  2122. o[(num-1)*7+6] = tem2[6]
  2123. case "用水量(吨)":
  2124. p[(num-1)*7] = tem2[0]
  2125. p[(num-1)*7+1] = tem2[1]
  2126. p[(num-1)*7+2] = tem2[2]
  2127. p[(num-1)*7+3] = tem2[3]
  2128. p[(num-1)*7+4] = tem2[4]
  2129. p[(num-1)*7+5] = tem2[5]
  2130. p[(num-1)*7+6] = tem2[6]
  2131. case "设备指标(万元)":
  2132. r[(num-1)*7] = tem2[0]
  2133. r[(num-1)*7+1] = tem2[1]
  2134. r[(num-1)*7+2] = tem2[2]
  2135. r[(num-1)*7+3] = tem2[3]
  2136. r[(num-1)*7+4] = tem2[4]
  2137. r[(num-1)*7+5] = tem2[5]
  2138. r[(num-1)*7+6] = tem2[6]
  2139. }
  2140. tem2 = []interface{}{}
  2141. }
  2142. } else {
  2143. println(err.Error())
  2144. }
  2145. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A), &c); err != nil {
  2146. println(err.Error())
  2147. }
  2148. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+1), &d); err != nil {
  2149. println(err.Error())
  2150. }
  2151. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+2), &e); err != nil {
  2152. println(err.Error())
  2153. }
  2154. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+3), &g); err != nil {
  2155. println(err.Error())
  2156. }
  2157. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+4), &r); err != nil {
  2158. println(err.Error())
  2159. }
  2160. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+5), &h); err != nil {
  2161. println(err.Error())
  2162. }
  2163. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+6), &p); err != nil {
  2164. println(err.Error())
  2165. }
  2166. if err := f.SetSheetRow(sheetName, "J"+strconv.Itoa(A+7), &o); err != nil {
  2167. println(err.Error())
  2168. }
  2169. //sums[2] = sums[2].(int)+value["monthLimit"].(int)
  2170. //sums[1] = sums[1].(int)+value["monthBudget"].(int)
  2171. // 设置月份单元格字体
  2172. monthStyle, err := f.NewStyle("{\"Alignment\":{\"Vertical\": \"center\", \"Horizontal\":\"center\"}}")
  2173. if err != nil {
  2174. println("monthStyle err", err.Error())
  2175. }
  2176. f.SetCellStyle(sheetName, "A1", "CS300", monthStyle)
  2177. // 根据指定路径保存文件
  2178. //filename :="uploads/Downloadmailreport/" + date +sheetName+"设备指标.xlsx"
  2179. err = PathCheck("uploads/Downloadmailreport") //检查路径并创建
  2180. //os.Remove(filename)
  2181. if err != nil {
  2182. println("PathCheck err", err)
  2183. }
  2184. if err := f.SaveAs(filename); err != nil {
  2185. println(err.Error())
  2186. return "", err
  2187. }
  2188. return filename, err
  2189. }
  2190. func FileExists(path string) (bool, error) {
  2191. _, err := os.Stat(path)
  2192. if err == nil {
  2193. return true, nil
  2194. }
  2195. if os.IsNotExist(err) {
  2196. return false, nil
  2197. }
  2198. return false, err
  2199. }