qryErmcp3Report.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  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. // QryAreaExpourseReport
  212. // @Summary 查询敞口报表
  213. // @Produce json
  214. // @Security ApiKeyAuth
  215. // @Param userid query int true "用户ID"
  216. // @Param tradedate query string false "交易日(YYYYMMDD)"
  217. // @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
  218. // @Param cycletime query string false "周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】"
  219. // @Success 200 {array} models.Ermcp3ReckonExpourse
  220. // @Failure 500 {object} app.Response
  221. // @Router /Ermcp3/QryAreaExpourseReport [get]
  222. // @Tags 企业风险管理v3(app)
  223. func QryAreaExpourseReport(c *gin.Context) {
  224. a := app.GinUtils{Gin: app.Gin{C: c}}
  225. req := struct {
  226. USERID int64 `form:"userid" binding:"required"` // 用户id
  227. TRADEDATE string `form:"tradedate"` // 交易日
  228. CYCLETIME string `form:"cycletime"` // 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】
  229. CYCLETYPE int32 `form:"cycletype"` // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
  230. }{}
  231. a.DoBindReq(&req)
  232. if len(req.TRADEDATE) > 0 {
  233. // 查日报表
  234. m := models.Ermcp3ReckonExpourse{AREAUSERID: req.USERID, RECKONDATE: req.TRADEDATE}
  235. a.DoGetDataI(&m)
  236. } else {
  237. // 查月报表
  238. p := CycleTypeCheck{CYCLETYPE: req.CYCLETYPE, CYCLETIME: req.CYCLETIME}
  239. a.CheckParam(&p)
  240. m := models.Ermcp3ReportExpourse{AREAUSERID: req.USERID,
  241. CYCLETYPE: req.CYCLETYPE, CYCLETIME: req.CYCLETIME}
  242. a.DoGetDataI(&m)
  243. }
  244. }
  245. // QryAreaExpourseContractDetail
  246. // @Summary 查询敞口合同明细(敞口报表/现货合同明细)
  247. // @Produce json
  248. // @Security ApiKeyAuth
  249. // @Param userid query int true "用户ID"
  250. // @Param middlegoodsid query int true "套保商品id"
  251. // @Param tradedate query string true "交易日(格式yyyymmdd)"
  252. // @Success 200 {array} models.Ermcp3ExposureContractDetail
  253. // @Failure 500 {object} app.Response
  254. // @Router /Ermcp3/QryAreaExpourseContractDetail [get]
  255. // @Tags 企业风险管理v3(app)
  256. func QryAreaExpourseContractDetail(c *gin.Context) {
  257. a := app.GinUtils{Gin: app.Gin{C: c}}
  258. req := struct {
  259. USERID int64 `form:"userid" binding:"required"` // 用户id
  260. MIDDLEGOODSID int32 `form:"middlegoodsid" binding:"required"` // 套保商品id
  261. TRADEDATE string `form:"tradedate" binding:"required"` // 交易日(格式yyyymmdd)
  262. }{}
  263. a.DoBindReq(&req)
  264. m := models.Ermcp3ExposureContractDetail{USERID: req.USERID,
  265. MIDDLEGOODSID: req.MIDDLEGOODSID, TRADEDATE: req.TRADEDATE}
  266. a.DoGetDataI(&m)
  267. }
  268. // QryAreaExpourseHedgeplanDetail
  269. // @Summary 查询敞口套保计划明细(敞口报表/套保计划明细)
  270. // @Produce json
  271. // @Security ApiKeyAuth
  272. // @Param userid query int true "用户ID"
  273. // @Param middlegoodsid query int true "套保商品id"
  274. // @Param tradedate query string true "交易日(格式yyyymmdd)"
  275. // @Success 200 {array} models.Ermcp3ExposureHedgeplanDetail
  276. // @Failure 500 {object} app.Response
  277. // @Router /Ermcp3/QryAreaExpourseHedgeplanDetail [get]
  278. // @Tags 企业风险管理v3(app)
  279. func QryAreaExpourseHedgeplanDetail(c *gin.Context) {
  280. a := app.GinUtils{Gin: app.Gin{C: c}}
  281. req := struct {
  282. USERID int64 `form:"userid" binding:"required"` // 用户id
  283. MIDDLEGOODSID int32 `form:"middlegoodsid" binding:"required"` // 套保商品id
  284. TRADEDATE string `form:"tradedate" binding:"required"` // 交易日(格式yyyymmdd)
  285. }{}
  286. a.DoBindReq(&req)
  287. m := models.Ermcp3ExposureHedgeplanDetail{USERID: req.USERID,
  288. MIDDLEGOODSID: req.MIDDLEGOODSID, TRADEDATE: req.TRADEDATE}
  289. a.DoGetDataI(&m)
  290. }
  291. // QryAreaSpotplReport
  292. // @Summary 查询现货报表
  293. // @Produce json
  294. // @Security ApiKeyAuth
  295. // @Param userid query int true "用户ID"
  296. // @Param tradedate query string false "交易日(格式yyyymmdd)"
  297. // @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
  298. // @Param cycletime query string false "周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】"
  299. // @Success 200 {array} models.Ermcp3ReckonAreaSpotPL
  300. // @Failure 500 {object} app.Response
  301. // @Router /Ermcp3/QryAreaSpotplReport [get]
  302. // @Tags 企业风险管理v3(app)
  303. func QryAreaSpotplReport(c *gin.Context) {
  304. a := app.GinUtils{Gin: app.Gin{C: c}}
  305. req := struct {
  306. USERID int64 `form:"userid" binding:"required"` // 用户id
  307. TRADEDATE string `form:"tradedate"` // 交易日
  308. CYCLETYPE int32 `form:"cycletype"` // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
  309. CYCLETIME string `form:"cycletime"` // 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】
  310. }{}
  311. a.DoBindReq(&req)
  312. if len(req.TRADEDATE) > 0 {
  313. m := models.Ermcp3ReckonAreaSpotPL{AREAUSERID: req.USERID, RECKONDATE: req.TRADEDATE}
  314. a.DoGetDataI(&m)
  315. } else {
  316. p := CycleTypeCheck{CYCLETYPE: req.CYCLETYPE, CYCLETIME: req.CYCLETIME}
  317. a.CheckParam(&p)
  318. m := models.Ermcp3ReportAreaSpotPL{AREAUSERID: req.USERID,
  319. CYCLETYPE: req.CYCLETYPE, CYCLETIME: req.CYCLETIME}
  320. a.DoGetDataI(&m)
  321. }
  322. }