qryErmcp3Report.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. /**
  2. * @Author: zou.yingbin
  3. * @Create : 2021/4/16 18:40
  4. * @Modify : 2021/4/16 18:40
  5. */
  6. package ermcp3
  7. import (
  8. "github.com/gin-gonic/gin"
  9. "mtp2_if/global/app"
  10. "mtp2_if/global/e"
  11. "mtp2_if/models"
  12. "net/http"
  13. "strconv"
  14. )
  15. // 查询日期
  16. type QueryDate string
  17. // IsNumberic 判断是否为数字,
  18. func (v QueryDate) IsNumberic(queryType int32) bool {
  19. if queryType == 1 {
  20. // 日报表 日期长度YYYYMMDD
  21. if len(v) != 8 {
  22. return false
  23. }
  24. } else if queryType == 2 {
  25. // 月报表 日期长度YYYYMM
  26. if len(v) != 6 {
  27. return false
  28. }
  29. }
  30. // 判断是否为数字
  31. if _, err := strconv.ParseInt(string(v), 10, 32); err != nil {
  32. return false
  33. }
  34. return true
  35. }
  36. // 检查周期类型、周期时间
  37. type CycleTypeCheck struct {
  38. CYCLETYPE int32 `json:"cycletype" xorm:"'cycletype'"` // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
  39. CYCLETIME string `json:"cycletime" xorm:"'cycletime'"` // 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】
  40. }
  41. func (r *CycleTypeCheck) Check() bool {
  42. if r.CYCLETYPE < 1 || r.CYCLETYPE > 5 {
  43. return false
  44. }
  45. nLen := len(r.CYCLETIME)
  46. // 判断是否为数字
  47. if _, err := strconv.ParseInt(r.CYCLETIME, 10, 32); err != nil {
  48. return false
  49. }
  50. // 判断长度
  51. switch r.CYCLETYPE {
  52. case 1:
  53. if nLen != 6 {
  54. return false
  55. }
  56. case 2:
  57. if nLen != 5 {
  58. return false
  59. }
  60. case 3:
  61. if nLen != 4 {
  62. return false
  63. }
  64. case 4:
  65. if nLen != 6 {
  66. return false
  67. }
  68. case 5:
  69. if r.CYCLETIME != "0" {
  70. return false
  71. }
  72. }
  73. return true
  74. }
  75. // @Summary 查询现货日报表详情(菜单:报表查询/现货报表/现货日报表详情)
  76. // @Produce json
  77. // @Security ApiKeyAuth
  78. // @Param userid query int true "用户ID"
  79. // @Param deliverygoodsid query int true "现货商品id"
  80. // @Param tradedate query string true "交易日(格式:yyyyMMdd)"
  81. // @Param wrstandardid query int false "品类ID"
  82. // @Param spotgoodsbrandid query int false "现货品牌ID"
  83. // @Success 200 {array} models.Ermcp3ReportOPLog
  84. // @Failure 500 {object} app.Response
  85. // @Router /Ermcp3/QryReportDaySpotDetail [get]
  86. // @Tags 企业风险管理v3(app)
  87. func QryReportDaySpotDetail(c *gin.Context) {
  88. a := app.GinUtils{Gin: app.Gin{C: c}}
  89. req := struct {
  90. USERID int64 `form:"userid" binding:"required"` // 用户id
  91. TRADEDATE string `form:"tradedate" binding:"required"` // 交易日
  92. DELIVERYGOODSID int32 `form:"deliverygoodsid" binding:"required"` // 现货商品id
  93. SPOTGOODSBRANDID int32 `form:"spotgoodsbrandid"` // 品牌id
  94. WRSTANDARDID int32 `form:"wrstandardid"` // 品类id
  95. }{}
  96. a.DoBindReq(&req)
  97. m := models.Ermcp3ReportOPLog{USERID: req.USERID, DELIVERYGOODSID: req.DELIVERYGOODSID,
  98. TRADEDATE: req.TRADEDATE, SPOTGOODSBRANDID: req.SPOTGOODSBRANDID, WRSTANDARDID: req.WRSTANDARDID,
  99. LogTypeFilter: "2,3,24,25,26,27"}
  100. a.DoGetDataI(&m)
  101. }
  102. // @Summary 查询财务日报表款项(菜单:报表查询/财务报表/日报表/款项)
  103. // @Produce json
  104. // @Security ApiKeyAuth
  105. // @Param userid query int true "用户ID"
  106. // @Param tradedate query string true "交易日(格式:yyyyMMdd)"
  107. // @Success 200 {array} models.Ermcp3ReportOPLog
  108. // @Failure 500 {object} app.Response
  109. // @Router /Ermcp3/QryReportDayFinanceKx [get]
  110. // @Tags 企业风险管理v3(app)
  111. func QryReportDayFinanceKx(c *gin.Context) {
  112. a := app.GinUtils{Gin: app.Gin{C: c}}
  113. req := struct {
  114. USERID int64 `form:"userid" binding:"required"` // 用户id
  115. TRADEDATE string `form:"tradedate" binding:"required"` // 交易日
  116. }{}
  117. a.DoBindReq(&req)
  118. m := models.Ermcp3ReportOPLog{USERID: req.USERID, TRADEDATE: req.TRADEDATE, LogTypeFilter: "8,9,10"}
  119. a.DoGetDataI(&m)
  120. }
  121. // @Summary 查询财务日报表发票(菜单:报表查询/财务报表/日报表/发票)
  122. // @Produce json
  123. // @Security ApiKeyAuth
  124. // @Param userid query int true "用户ID"
  125. // @Param tradedate query string true "交易日(格式:yyyyMMdd)"
  126. // @Success 200 {array} models.Ermcp3ReportOPLog
  127. // @Failure 500 {object} app.Response
  128. // @Router /Ermcp3/QryReportDayFinanceFp [get]
  129. // @Tags 企业风险管理v3(app)
  130. func QryReportDayFinanceFp(c *gin.Context) {
  131. a := app.GinUtils{Gin: app.Gin{C: c}}
  132. req := struct {
  133. USERID int64 `form:"userid" binding:"required"` // 用户id
  134. TRADEDATE string `form:"tradedate" binding:"required"` // 交易日
  135. }{}
  136. a.DoBindReq(&req)
  137. m := models.Ermcp3ReportOPLog{USERID: req.USERID, TRADEDATE: req.TRADEDATE, LogTypeFilter: "11, 12"}
  138. a.DoGetDataI(&m)
  139. }
  140. // @Summary 查询现货日报表(菜单:报表查询/现货报表/现货日报表)
  141. // @Produce json
  142. // @Security ApiKeyAuth
  143. // @Param userid query int true "用户id"
  144. // @Param reckondate query string true "交易日(格式:yyyyMMdd)"
  145. // @Param accountid query int false "期货账户ID"
  146. // @Param deliverygoodsid query int false "现货品种ID"
  147. // @Param wrstandardid query int false "品类ID"
  148. // @Param spotgoodsbrandid query int false "现货品牌ID"
  149. // @Success 200 {array} models.Ermcp3ReckonAreaSpotSub
  150. // @Failure 500 {object} app.Response
  151. // @Router /Ermcp3/QryReportDaySpot [get]
  152. // @Tags 企业风险管理v3(app)
  153. func QryReportDaySpot(c *gin.Context) {
  154. a := app.GinUtils{Gin: app.Gin{C: c}}
  155. m := models.Ermcp3ReckonAreaSpotSub{}
  156. a.DoBindReq(&m)
  157. a.DoGetDataI(&m)
  158. }
  159. // QryReportMonthSpot
  160. // @Summary 查询现货月报表(菜单:报表查询/现货报表/现货月报表)
  161. // @Produce json
  162. // @Security ApiKeyAuth
  163. // @Param userid query int true "用户id"
  164. // @Param cycletype query int true "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
  165. // @Param cycletime query string true "周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】"
  166. // @Param accountid query int false "期货账户ID"
  167. // @Param deliverygoodsid query int false "现货品种ID"
  168. // @Param wrstandardid query int false "品类ID"
  169. // @Param spotgoodsbrandid query int false "现货品牌ID"
  170. // @Success 200 {array} models.Ermcp3ReportAreaSpotSub
  171. // @Failure 500 {object} app.Response
  172. // @Router /Ermcp3/QryReportMonthSpot [get]
  173. // @Tags 企业风险管理v3(app)
  174. func QryReportMonthSpot(c *gin.Context) {
  175. a := app.GinUtils{Gin: app.Gin{C: c}}
  176. m := models.Ermcp3ReportAreaSpotSub{}
  177. a.DoBindReq(&m)
  178. a.DoGetDataI(&m)
  179. }
  180. // @Summary 查询现货月报表详情(菜单:报表查询/现货月报表/现货月报表详情)
  181. // @Produce json
  182. // @Security ApiKeyAuth
  183. // @Param userid query int true "用户id"
  184. // @Param cycletype query int true "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
  185. // @Param cycletime query string true "周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】"
  186. // @Param accountid query int false "期货账户ID"
  187. // @Param deliverygoodsid query int false "现货品种ID"
  188. // @Param wrstandardid query int false "品类ID"
  189. // @Param spotgoodsbrandid query int false "现货品牌ID"
  190. // @Success 200 {array} models.Ermcp3ReportAreaSpotSub
  191. // @Failure 500 {object} app.Response
  192. // @Router /Ermcp3/QryReportMonthSpotDetail [get]
  193. // @Tags 企业风险管理v3(app)
  194. func QryReportMonthSpotDetail(c *gin.Context) {
  195. a := app.GinUtils{Gin: app.Gin{C: c}}
  196. req := models.Ermcp3ReportAreaSpotSub{}
  197. a.DoBindReq(&req)
  198. if req.CYCLETYPE != 1 || len(req.CYCLETIME) != 6 {
  199. // 目前仅支持月报表明细, 月报表的日期应是6位,如 202101
  200. a.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  201. return
  202. }
  203. t1 := req.CYCLETIME + "01"
  204. t2 := req.CYCLETIME + "31"
  205. // 月报表明细 = 01~31 日报表
  206. m := models.Ermcp3ReckonAreaSpotSub{
  207. AREAUSERID: req.AREAUSERID, DELIVERYGOODSID: req.DELIVERYGOODSID, ACCOUNTID: req.ACCOUNTID,
  208. WRSTANDARDID: req.WRSTANDARDID, SPOTGOODSBRANDID: req.SPOTGOODSBRANDID, BeginDate: t1, EndDate: t2}
  209. a.DoGetDataI(&m)
  210. }
  211. // QryReportAreaSpotPL
  212. // @Summary 查询现货损益报表(现货损益报表)
  213. // @Produce json
  214. // @Security ApiKeyAuth
  215. // @Param userid query int true "用户ID"
  216. // @Param querytype query int true "查询类型 1-日报表 2-月报表"
  217. // @Param querydate query string true "查询日期(格式 日报表YYYYMMDD, 月报表YYYYMM)"
  218. // @Param deliverygoodsid query int false "现货商品ID"
  219. // @Param spotgoodsbrandid query int false "品牌ID"
  220. // @Param wrstandardid query int false "品类ID"
  221. // @Success 200 {array} models.Ermcp3ReportAreaSpotPL
  222. // @Failure 500 {object} app.Response
  223. // @Router /Ermcp3/QryReportAreaSpotPL [get]
  224. // @Tags 企业风险管理v3(app)
  225. func QryReportAreaSpotPL(c *gin.Context) {
  226. a := app.GinUtils{Gin: app.Gin{C: c}}
  227. req := struct {
  228. USERID int64 `form:"userid" binding:"required"` // 用户id
  229. QUERYTYPE int32 `form:"querytype" binding:"required"` // 查询类型
  230. QUERYDATE string `form:"querydate" binding:"required"` // 交易日
  231. DELIVERYGOODSID int32 `form:"deliverygoodsid"` // 现货商品id
  232. SPOTGOODSBRANDID int32 `form:"spotgoodsbrandid"` // 现货品牌id
  233. WRSTANDARDID int64 `form:"wrstandardid"` // 品类id
  234. }{}
  235. a.DoBindReq(&req)
  236. if QueryDate(req.QUERYDATE).IsNumberic(req.QUERYTYPE) {
  237. m := models.Ermcp3ReportAreaSpotPL{AREAUSERID: req.USERID, WRSTANDARDID: req.WRSTANDARDID,
  238. SPOTGOODSBRANDID: req.SPOTGOODSBRANDID, DELIVERYGOODSID: req.DELIVERYGOODSID,
  239. ReportDate: req.QUERYDATE, ReportType: req.QUERYTYPE}
  240. a.DoGetDataI(&m)
  241. } else {
  242. a.Gin.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  243. }
  244. }
  245. // QryReckonAreaExpourse
  246. // @Summary 查询敞口日报表(报表/敞口报表/日报表)
  247. // @Produce json
  248. // @Security ApiKeyAuth
  249. // @Param userid query int true "用户ID"
  250. // @Param tradedate query string true "交易日(YYYYMMDD)"
  251. // @Success 200 {array} models.Ermcp3ReckonExpourse
  252. // @Failure 500 {object} app.Response
  253. // @Router /Ermcp3/QryReckonAreaExpourse [get]
  254. // @Tags 企业风险管理v3(app)
  255. func QryReckonAreaExpourse(c *gin.Context) {
  256. a := app.GinUtils{Gin: app.Gin{C: c}}
  257. req := struct {
  258. USERID int64 `form:"userid"` // 用户id
  259. TRADEDATE string `form:"tradedate" binding:"required"` // 交易日
  260. }{}
  261. a.DoBindReq(&req)
  262. m := models.Ermcp3ReckonExpourse{AREAUSERID: req.USERID, RECKONDATE: req.TRADEDATE}
  263. a.DoGetDataI(&m)
  264. }
  265. // QryReportAreaExpourse
  266. // @Summary 查询敞口周期报表(报表/敞口报表/周(月、季、年)报表)
  267. // @Produce json
  268. // @Security ApiKeyAuth
  269. // @Param userid query int true "用户ID"
  270. // @Param cycletype query int true "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
  271. // @Param cycletime query string true "周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】"
  272. // @Success 200 {array} models.Ermcp3ReportExpourse
  273. // @Failure 500 {object} app.Response
  274. // @Router /Ermcp3/QryReportAreaExpourse [get]
  275. // @Tags 企业风险管理v3(app)
  276. func QryReportAreaExpourse(c *gin.Context) {
  277. a := app.GinUtils{Gin: app.Gin{C: c}}
  278. req := struct {
  279. USERID int64 `form:"userid" binding:"required"` // 用户id
  280. CYCLETIME string `form:"cycletime" binding:"required"` // 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】
  281. CYCLETYPE int32 `form:"cycletype" binding:"required"` // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
  282. }{}
  283. a.DoBindReq(&req)
  284. p := CycleTypeCheck{CYCLETYPE: req.CYCLETYPE, CYCLETIME: req.CYCLETIME}
  285. a.CheckParam(&p)
  286. m := models.Ermcp3ReportExpourse{AREAUSERID: req.USERID,
  287. CYCLETYPE: req.CYCLETYPE, CYCLETIME: req.CYCLETIME}
  288. a.DoGetDataI(&m)
  289. }