home.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511
  1. package service
  2. import (
  3. "fmt"
  4. "kpt.xdmy/apiserver/model"
  5. "kpt.xdmy/apiserver/model/home"
  6. "kpt.xdmy/pkg/util"
  7. "time"
  8. )
  9. func (s *Service) OverallIndex() (*home.OverallIndexResp, error) {
  10. resp := new(home.OverallIndexResp)
  11. monthBudgetList := make([]*home.MonthBudget, 0)
  12. err := s.d.DB.Raw(`SELECT
  13. (
  14. sum( monthBudget )*(
  15. DATEDIFF(
  16. NOW(),
  17. CONCAT( YEAR ( NOW()), '-01-01' )) / DATEDIFF(
  18. CONCAT( YEAR ( NOW()), '-12-31' ),
  19. CONCAT( YEAR ( NOW()), '-01-01' ))
  20. )) monthBudget,
  21. feeType
  22. FROM
  23. month_budget
  24. WHERE
  25. budgetMonth LIKE concat( '%', date_format( now(), '%Y' ), '%' )
  26. GROUP BY
  27. feeType `).Find(&monthBudgetList).Error
  28. if err != nil {
  29. return resp, err
  30. }
  31. thisYearActualList := make([]*home.ThisYearActual, 0)
  32. err = s.d.DB.Raw(`select FYLX feeType,sum(HSL) sumPrice from feequery where Date like concat( '%',YEAR(NOW()),'%') and FYLX in ('水费','燃动费','电费') group by FYLX
  33. UNION ALL
  34. SELECT
  35. '维修费' feeType ,IFNULL(SUM( pu.sumPrice - pu.quitNumber * pu.price),0) sumPrice
  36. FROM
  37. partuse pu
  38. INNER JOIN bigpartuse bpu
  39. ON pu.bigId = bpu.id
  40. WHERE bpu.useType <> 3
  41. AND (
  42. pu.useTypeV = '维修'
  43. OR pu.useTypeV = '保养'
  44. ) AND (SELECT iscal FROM department d WHERE d.id=bpu.departmentId)= 0 AND bpu.receiveTime BETWEEN CONCAT(YEAR(NOW()),'-01-01') AND CONCAT(YEAR(NOW()),'-12-31')
  45. AND (bpu.pastureid = (SELECT id FROM pasture WHERE name = '现代牧业') OR '现代牧业' = '现代牧业') and bpu.sterilisation = 0`).Find(&thisYearActualList).Error
  46. if err != nil {
  47. return resp, err
  48. }
  49. lastYearActualList := make([]*home.ThisYearActual, 0)
  50. err = s.d.DB.Raw(`select FYLX feeType,sum(HSL) sumPrice from feequery where Date like concat( '%',YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR)),'%')
  51. and FYLX in ('水费','燃动费','电费') group by FYLX
  52. UNION ALL
  53. SELECT
  54. '维修费' feeType ,IFNULL(SUM( pu.sumPrice - pu.quitNumber * pu.price),0) sumPrice
  55. FROM
  56. partuse pu
  57. INNER JOIN bigpartuse bpu
  58. ON pu.bigId = bpu.id
  59. WHERE bpu.useType <> 3
  60. AND (
  61. pu.useTypeV = '维修'
  62. OR pu.useTypeV = '保养'
  63. ) AND (SELECT iscal FROM department d WHERE d.id=bpu.departmentId)= 0 AND bpu.receiveTime BETWEEN CONCAT(YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR)),'-01-01') AND CONCAT(YEAR(NOW()),'-12-31')
  64. AND (bpu.pastureid = (SELECT id FROM pasture WHERE name = '现代牧业') OR '现代牧业' = '现代牧业') and bpu.sterilisation = 0`).Find(&lastYearActualList).Error
  65. if err != nil {
  66. return resp, err
  67. }
  68. feedSum := new(model.FeedSum)
  69. err = s.d.DB.Raw(` select sum(cowNum) cowNum from feed_sum `).First(feedSum).Error
  70. if err != nil {
  71. return resp, err
  72. }
  73. var repair = new(home.Overall)
  74. var water = new(home.Overall)
  75. var electricity = new(home.Overall)
  76. var ignition = new(home.Overall)
  77. for _, monthBudget := range monthBudgetList {
  78. if monthBudget.FeeType == "维修费" {
  79. repair.Budget = util.Round(monthBudget.MonthBudget/1000000, 2)
  80. } else if monthBudget.FeeType == "电费" {
  81. electricity.Budget = util.Round(monthBudget.MonthBudget/1000000, 2)
  82. } else if monthBudget.FeeType == "水费" {
  83. water.Budget = util.Round(monthBudget.MonthBudget/1000000, 2)
  84. } else if monthBudget.FeeType == "燃动费" {
  85. ignition.Budget = util.Round(monthBudget.MonthBudget/1000000, 2)
  86. }
  87. }
  88. cowNum := float64(feedSum.CowNum)
  89. for _, item := range thisYearActualList {
  90. if item.FeeType == "维修费" {
  91. repair.Actual = util.Round(item.SumPrice/1000000, 2)
  92. repair.SingleCow = util.Round(item.SumPrice/cowNum, 2)
  93. } else if item.FeeType == "电费" {
  94. electricity.Actual = util.Round(item.SumPrice/1000000, 2)
  95. electricity.SingleCow = util.Round(item.SumPrice/cowNum, 2)
  96. } else if item.FeeType == "水费" {
  97. water.Actual = util.Round(item.SumPrice/1000000, 2)
  98. water.SingleCow = util.Round(item.SumPrice/cowNum, 2)
  99. } else if item.FeeType == "燃动费" {
  100. ignition.Actual = util.Round(item.SumPrice/1000000, 2)
  101. ignition.SingleCow = util.Round(item.SumPrice/cowNum, 2)
  102. }
  103. }
  104. for _, item := range lastYearActualList {
  105. if item.FeeType == "维修费" {
  106. repair.LastActual = util.Round(item.SumPrice/1000000, 2)
  107. } else if item.FeeType == "电费" {
  108. electricity.LastActual = util.Round(item.SumPrice/1000000, 2)
  109. } else if item.FeeType == "水费" {
  110. water.LastActual = util.Round(item.SumPrice/1000000, 2)
  111. } else if item.FeeType == "燃动费" {
  112. ignition.LastActual = util.Round(item.SumPrice/1000000, 2)
  113. }
  114. }
  115. resp.Repair = repair
  116. resp.Electricity = electricity
  117. resp.Water = water
  118. resp.Ignition = ignition
  119. return resp, nil
  120. }
  121. func (s *Service) CentralIndex() (*home.CentralIndexResp, error) {
  122. resp := new(home.CentralIndexResp)
  123. pastureList := make([]*model.Pasture, 0)
  124. err := s.d.DB.Select("center").Where(" center is not null or center != '' ").Group("center").Order("center_id").Find(&pastureList).Error
  125. if err != nil {
  126. return resp, err
  127. }
  128. centralIndexList := make([]*home.CentralIndex, 0)
  129. for _, pasture := range pastureList {
  130. centralIndexList = append(centralIndexList, &home.CentralIndex{
  131. Central: pasture.Center,
  132. })
  133. }
  134. monthBudgetList := make([]*home.MonthBudget, 0)
  135. err = s.d.DB.Raw(`SELECT
  136. (
  137. sum( monthBudget )*(
  138. DATEDIFF(
  139. NOW(),
  140. CONCAT( YEAR ( NOW()), '-01-01' )) / DATEDIFF(
  141. CONCAT( YEAR ( NOW()), '-12-31' ),
  142. CONCAT( YEAR ( NOW()), '-01-01' ))
  143. )) monthBudget,
  144. p.center
  145. FROM
  146. month_budget mb
  147. JOIN pasture p ON p.id = mb.pastureId
  148. WHERE
  149. budgetMonth LIKE concat( '%', date_format( now(), '%Y' ), '%' )
  150. AND feeType IN ( '维修费', '电费', '水费', '燃动费', '柴油费', '生物质颗粒', '汽油用量', '煤炭用量' )
  151. GROUP BY
  152. center `).Find(&monthBudgetList).Error
  153. if err != nil {
  154. return resp, err
  155. }
  156. thisYearActualList := make([]*home.ThisYearActual, 0)
  157. err = s.d.DB.Raw(`select sum(t.sumPrice) sumPrice,p.center from (
  158. select pastureid,FYLX feeType,sum(HSL) sumPrice from feequery where Date like concat( '%',YEAR(NOW()),'%') and FYLX in ('水费','燃动费','电费','柴油费') group by FYLX,pastureid
  159. UNION ALL
  160. SELECT
  161. bpu.pastureid,'维修费' feeType ,IFNULL(SUM( pu.sumPrice - pu.quitNumber * pu.price),0) sumPrice
  162. FROM
  163. partuse pu
  164. INNER JOIN bigpartuse bpu
  165. ON pu.bigId = bpu.id
  166. WHERE bpu.useType <> 3
  167. AND (
  168. pu.useTypeV = '维修'
  169. OR pu.useTypeV = '保养'
  170. ) AND (SELECT iscal FROM department d WHERE d.id=bpu.departmentId)= 0 AND bpu.receiveTime BETWEEN CONCAT(YEAR(NOW()),'-01-01') AND CONCAT(YEAR(NOW()),'-12-31')
  171. AND (bpu.pastureid = (SELECT id FROM pasture WHERE name = '现代牧业') OR '现代牧业' = '现代牧业') and bpu.sterilisation = 0 group by bpu.pastureId) t
  172. join pasture p on p.id = t.pastureId GROUP BY p.center`).Find(&thisYearActualList).Error
  173. if err != nil {
  174. return resp, err
  175. }
  176. nowStr := time.Now().Format("2006-01-02")
  177. now, _ := time.Parse("2006-01-02", nowStr)
  178. // 获取当年的一月一号
  179. year := now.Year()
  180. start := time.Date(year, 1, 1, 0, 0, 0, 0, time.UTC)
  181. fmt.Println(start)
  182. end := time.Date(year, 12, 31, 0, 0, 0, 0, time.UTC)
  183. fmt.Println(end)
  184. real := now.Sub(start)
  185. sum := end.Sub(start)
  186. sumDay := sum.Hours() / 24
  187. realDay := real.Hours() / 24
  188. fmt.Println(realDay, sumDay)
  189. for _, central := range centralIndexList {
  190. for _, monthBudget := range monthBudgetList {
  191. if monthBudget.Center == central.Central {
  192. central.Budget = util.Round(monthBudget.MonthBudget, 2)
  193. break
  194. }
  195. }
  196. for _, item := range thisYearActualList {
  197. if item.Center == central.Central {
  198. central.Actual = util.Round(item.SumPrice, 2)
  199. break
  200. }
  201. }
  202. if central.Budget > 0 && central.Actual > 0 {
  203. central.Complete = util.Round(1+(central.Budget/sumDay*realDay-(central.Actual))/central.Budget*100, 2)
  204. central.Budget = util.Round(central.Budget/1000000, 2)
  205. central.Actual = util.Round(central.Actual/1000000, 2)
  206. }
  207. }
  208. resp.Central = append(resp.Central, centralIndexList...)
  209. return resp, nil
  210. }
  211. func (s *Service) GetExpense(pastureName string) (*home.GetExpenseResp, error) {
  212. resp := new(home.GetExpenseResp)
  213. pasture := new(model.Pasture)
  214. if pastureName != "现代牧业" && pastureName != "" {
  215. err := s.d.DB.Where(" name = ? ", pastureName).First(&pasture).Error
  216. if err != nil {
  217. return resp, err
  218. }
  219. }
  220. monthBudgetList := make([]*home.MonthBudget, 0)
  221. err := s.d.DB.Debug().Raw(`SELECT
  222. (
  223. sum( monthBudget )*(
  224. DATEDIFF(
  225. NOW(),
  226. CONCAT( YEAR ( NOW()), '-01-01' )) / DATEDIFF(
  227. CONCAT( YEAR ( NOW()), '-12-31' ),
  228. CONCAT( YEAR ( NOW()), '-01-01' ))
  229. )) monthBudget,
  230. feeType ,p.center
  231. FROM
  232. month_budget mb join pasture p on p.id = mb.pastureId
  233. WHERE
  234. budgetMonth LIKE concat( '%', date_format( now(), '%Y' ), '%' ) and ( ? = 0 or pastureId = ?)
  235. GROUP BY
  236. feeType,p.center `, pasture.ID, pasture.ID).Find(&monthBudgetList).Error
  237. if err != nil {
  238. return resp, err
  239. }
  240. thisYearActualList := make([]*home.ThisYearActual, 0)
  241. err = s.d.DB.Debug().Raw(`select FYLX feeType,sum(HSL) sumPrice,p.center from feequery fq join pasture p on p.id = fq.pastureId
  242. where Date like concat( '%',YEAR(NOW()),'%') and ( ? = 0 or pastureId = ?)
  243. and FYLX in ('水费','燃动费','电费') group by FYLX,p.center
  244. UNION ALL
  245. SELECT
  246. '维修费' feeType ,IFNULL(SUM( pu.sumPrice - pu.quitNumber * pu.price),0) sumPrice,p.center
  247. FROM
  248. partuse pu
  249. INNER JOIN bigpartuse bpu
  250. ON pu.bigId = bpu.id
  251. join pasture p on p.id = bpu.pastureId
  252. WHERE bpu.useType <> 3
  253. AND (
  254. pu.useTypeV = '维修'
  255. OR pu.useTypeV = '保养'
  256. ) AND (SELECT iscal FROM department d WHERE d.id=bpu.departmentId)= 0 AND bpu.receiveTime BETWEEN CONCAT(YEAR(NOW()),'-01-01')
  257. AND CONCAT(YEAR(NOW()),'-12-31')
  258. AND ( ? = 0 or pastureId = ?) and bpu.sterilisation = 0 group by p.center`, pasture.ID, pasture.ID, pasture.ID, pasture.ID).Find(&thisYearActualList).Error
  259. if err != nil {
  260. return resp, err
  261. }
  262. lastYearActualList := make([]*home.ThisYearActual, 0)
  263. err = s.d.DB.Debug().Raw(`select FYLX feeType,sum(HSL) sumPrice,p.center from feequery fq join pasture p on p.id = fq.pastureId where Date like concat( '%',YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR)),'%')
  264. and FYLX in ('水费','燃动费','电费') and ( ? = 0 or pastureId = ?) group by FYLX,p.center
  265. UNION ALL
  266. SELECT
  267. '维修费' feeType ,IFNULL(SUM( pu.sumPrice - pu.quitNumber * pu.price),0) sumPrice,p.center
  268. FROM
  269. partuse pu
  270. INNER JOIN bigpartuse bpu
  271. ON pu.bigId = bpu.id
  272. join pasture p on p.id = bpu.pastureId
  273. WHERE bpu.useType <> 3
  274. AND (
  275. pu.useTypeV = '维修'
  276. OR pu.useTypeV = '保养'
  277. ) AND (SELECT iscal FROM department d WHERE d.id=bpu.departmentId)= 0 AND bpu.receiveTime BETWEEN CONCAT(YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR)),'-01-01') AND CONCAT(YEAR(NOW()),'-12-31')
  278. AND ( ? = 0 or pastureId = ?) and bpu.sterilisation = 0 group by p.center`, pasture.ID, pasture.ID, pasture.ID, pasture.ID).Find(&lastYearActualList).Error
  279. if err != nil {
  280. return resp, err
  281. }
  282. feedSum := new(model.FeedSum)
  283. err = s.d.DB.Raw(` select sum(cowNum) cowNum from feed_sum `).First(feedSum).Error
  284. if err != nil {
  285. return resp, err
  286. }
  287. pastureList := make([]*model.Pasture, 0)
  288. err = s.d.DB.Select("center").Where(" center is not null or center != '' ").Group("center").Order("center_id").Find(&pastureList).Error
  289. if err != nil {
  290. return resp, err
  291. }
  292. var repairList = make([]*home.Overall, 0)
  293. var waterList = make([]*home.Overall, 0)
  294. var electricityList = make([]*home.Overall, 0)
  295. var ignitionList = make([]*home.Overall, 0)
  296. for _, item := range pastureList {
  297. repairList = append(repairList, &home.Overall{Center: item.Center})
  298. waterList = append(waterList, &home.Overall{Center: item.Center})
  299. electricityList = append(electricityList, &home.Overall{Center: item.Center})
  300. ignitionList = append(ignitionList, &home.Overall{Center: item.Center})
  301. }
  302. for _, monthBudget := range monthBudgetList {
  303. if monthBudget.FeeType == "维修费" {
  304. for _, repair := range repairList {
  305. if repair.Center == monthBudget.Center {
  306. repair.Budget = util.Round(monthBudget.MonthBudget/1000000, 2)
  307. break
  308. }
  309. }
  310. } else if monthBudget.FeeType == "电费" {
  311. for _, electricity := range electricityList {
  312. if electricity.Center == monthBudget.Center {
  313. electricity.Budget = util.Round(monthBudget.MonthBudget/1000000, 2)
  314. break
  315. }
  316. }
  317. } else if monthBudget.FeeType == "水费" {
  318. for _, water := range waterList {
  319. if water.Center == monthBudget.Center {
  320. water.Budget = util.Round(monthBudget.MonthBudget/1000000, 2)
  321. break
  322. }
  323. }
  324. } else if monthBudget.FeeType == "燃动费" {
  325. for _, ignition := range ignitionList {
  326. if ignition.Center == monthBudget.Center {
  327. ignition.Budget = util.Round(monthBudget.MonthBudget/1000000, 2)
  328. break
  329. }
  330. }
  331. }
  332. }
  333. cowNum := float64(feedSum.CowNum)
  334. for _, item := range thisYearActualList {
  335. if item.FeeType == "维修费" {
  336. for _, repair := range repairList {
  337. if repair.Center == item.Center {
  338. repair.Actual = util.Round(item.SumPrice/1000000, 2)
  339. repair.SingleCow = util.Round(item.SumPrice/cowNum, 2)
  340. break
  341. }
  342. }
  343. } else if item.FeeType == "电费" {
  344. //electricity.Actual = util.Round(item.SumPrice, 2)
  345. //electricity.Actual = util.Round(electricity.Actual/cowNum, 2)
  346. for _, electricity := range electricityList {
  347. if electricity.Center == item.Center {
  348. electricity.Actual = util.Round(item.SumPrice/1000000, 2)
  349. electricity.SingleCow = util.Round(item.SumPrice/cowNum, 2)
  350. break
  351. }
  352. }
  353. } else if item.FeeType == "水费" {
  354. //water.Actual = util.Round(item.SumPrice, 2)
  355. //water.Actual = util.Round(water.Actual/cowNum, 2)
  356. for _, water := range waterList {
  357. if water.Center == item.Center {
  358. water.Actual = util.Round(item.SumPrice/1000000, 2)
  359. water.SingleCow = util.Round(item.SumPrice/cowNum, 2)
  360. break
  361. }
  362. }
  363. } else if item.FeeType == "燃动费" {
  364. //ignition.Actual = util.Round(item.SumPrice, 2)
  365. //ignition.Actual = util.Round(ignition.Actual/cowNum, 2)
  366. for _, ignition := range ignitionList {
  367. if ignition.Center == item.Center {
  368. //ignition.Actual = util.Round(item.SumPrice, 2)
  369. ignition.SingleCow = util.Round(item.SumPrice/cowNum, 2)
  370. ignition.Actual = util.Round(item.SumPrice/1000000, 2)
  371. break
  372. }
  373. }
  374. }
  375. }
  376. for _, item := range lastYearActualList {
  377. if item.FeeType == "维修费" {
  378. for _, repair := range repairList {
  379. if repair.Center == item.Center {
  380. repair.LastActual = util.Round(item.SumPrice/1000000, 2)
  381. break
  382. }
  383. }
  384. //repair.LastActual = util.Round(item.SumPrice, 2)
  385. } else if item.FeeType == "电费" {
  386. //electricity.LastActual = util.Round(item.SumPrice, 2)
  387. for _, electricity := range electricityList {
  388. if electricity.Center == item.Center {
  389. electricity.LastActual = util.Round(item.SumPrice/1000000, 2)
  390. break
  391. }
  392. }
  393. } else if item.FeeType == "水费" {
  394. //water.LastActual = util.Round(item.SumPrice, 2)
  395. for _, water := range waterList {
  396. if water.Center == item.Center {
  397. water.LastActual = util.Round(item.SumPrice/1000000, 2)
  398. break
  399. }
  400. }
  401. } else if item.FeeType == "燃动费" {
  402. //ignition.LastActual = util.Round(item.SumPrice, 2)
  403. for _, ignition := range ignitionList {
  404. if ignition.Center == item.Center {
  405. ignition.LastActual = util.Round(item.SumPrice/1000000, 2)
  406. break
  407. }
  408. }
  409. }
  410. }
  411. resp.Repair = append(resp.Repair, repairList...)
  412. resp.Electricity = append(resp.Electricity, electricityList...)
  413. resp.Water = append(resp.Water, waterList...)
  414. resp.Ignition = append(resp.Ignition, ignitionList...)
  415. return resp, nil
  416. }
  417. func (s *Service) GetPastureIndex(pastureName string) (*home.GetPastureIndexResp, error) {
  418. resp := new(home.GetPastureIndexResp)
  419. monthBudget := new(home.MonthBudget)
  420. err := s.d.DB.Raw(`SELECT
  421. sum( monthBudget ) monthBudget
  422. FROM
  423. month_budget mb
  424. JOIN pasture p ON p.id = mb.pastureId
  425. WHERE
  426. budgetMonth LIKE concat( '%', date_format( now(), '%Y' ), '%' )
  427. AND feeType IN ( '维修费', '电费', '水费', '燃动费', '柴油费', '生物质颗粒', '汽油用量', '煤炭用量' ) and p.name = ? `, pastureName).Find(&monthBudget).Error
  428. if err != nil {
  429. return resp, err
  430. }
  431. thisYearActual := new(home.ThisYearActual)
  432. err = s.d.DB.Raw(`select sum(t.sumPrice) sumPrice from (
  433. select pastureid,FYLX feeType,sum(HSL) sumPrice from feequery fq join pasture p on p.id = fq.pastureId where Date like concat( '%',YEAR(NOW()),'%')
  434. and FYLX in ('水费','燃动费','电费','柴油费') and p.name = ?
  435. UNION ALL
  436. SELECT
  437. bpu.pastureid,'维修费' feeType ,IFNULL(SUM( pu.sumPrice - pu.quitNumber * pu.price),0) sumPrice
  438. FROM
  439. partuse pu
  440. INNER JOIN bigpartuse bpu
  441. ON pu.bigId = bpu.id
  442. join pasture p on p.id = bpu.pastureId
  443. WHERE bpu.useType <> 3
  444. AND (
  445. pu.useTypeV = '维修'
  446. OR pu.useTypeV = '保养'
  447. ) AND (SELECT iscal FROM department d WHERE d.id=bpu.departmentId)= 0 AND bpu.receiveTime BETWEEN CONCAT(YEAR(NOW()),'-01-01') AND CONCAT(YEAR(NOW()),'-12-31')
  448. AND p.name = ? and bpu.sterilisation = 0 group by bpu.pastureId) t
  449. join pasture p on p.id = t.pastureId GROUP BY p.center`, pastureName, pastureName).Find(&thisYearActual).Error
  450. if err != nil {
  451. return resp, err
  452. }
  453. nowStr := time.Now().Format("2006-01-02")
  454. now, _ := time.Parse("2006-01-02", nowStr)
  455. // 获取当年的一月一号
  456. year := now.Year()
  457. start := time.Date(year, 1, 1, 0, 0, 0, 0, time.UTC)
  458. fmt.Println(start)
  459. end := time.Date(year, 12, 31, 0, 0, 0, 0, time.UTC)
  460. fmt.Println(end)
  461. real := now.Sub(start)
  462. sum := end.Sub(start)
  463. sumDay := sum.Hours() / 24
  464. realDay := real.Hours() / 24
  465. fmt.Println(realDay, sumDay)
  466. resp.Budget = monthBudget.MonthBudget
  467. resp.Actual = thisYearActual.SumPrice
  468. resp.Complete = util.Round((1+(resp.Budget/sumDay*realDay-(resp.Actual))/resp.Budget)*100, 2)
  469. resp.Budget = util.Round(resp.Budget/1000000, 2)
  470. resp.Actual = util.Round(resp.Actual/1000000, 2)
  471. //resp.Complete = util.Round(1+(resp.Budget/sumDay*realDay-(resp.Actual/10000))/(resp.Budget/sumDay*realDay), 2)
  472. return resp, nil
  473. }