qryErmcp3Report.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  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/logger"
  12. "mtp2_if/models"
  13. "mtp2_if/mtpcache"
  14. "net/http"
  15. "strconv"
  16. )
  17. // 查询日期
  18. type QueryDate string
  19. // IsNumberic 判断是否为数字, queryType 1:8位日期 2:6位日期
  20. func (v QueryDate) IsNumberic(queryType int32) bool {
  21. if queryType == 1 {
  22. // 日报表 日期长度YYYYMMDD
  23. if len(v) != 8 {
  24. return false
  25. }
  26. } else if queryType == 2 {
  27. // 月报表 日期长度YYYYMM
  28. if len(v) != 6 {
  29. return false
  30. }
  31. }
  32. // 判断是否为数字
  33. if _, err := strconv.ParseInt(string(v), 10, 32); err != nil {
  34. return false
  35. }
  36. return true
  37. }
  38. // 检查周期类型、周期时间
  39. type CycleTypeCheck struct {
  40. CYCLETYPE int32 `json:"cycletype" xorm:"'cycletype'"` // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
  41. CYCLETIME string `json:"cycletime" xorm:"'cycletime'"` // 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】
  42. }
  43. func (r *CycleTypeCheck) Check() bool {
  44. if r.CYCLETYPE < 1 || r.CYCLETYPE > 5 {
  45. return false
  46. }
  47. nLen := len(r.CYCLETIME)
  48. // 判断是否为数字
  49. if _, err := strconv.ParseInt(r.CYCLETIME, 10, 32); err != nil {
  50. return false
  51. }
  52. // 判断长度
  53. switch r.CYCLETYPE {
  54. case 1:
  55. if nLen != 6 {
  56. return false
  57. }
  58. case 2:
  59. if nLen != 5 {
  60. return false
  61. }
  62. case 3:
  63. if nLen != 4 {
  64. return false
  65. }
  66. case 4:
  67. if nLen != 6 {
  68. return false
  69. }
  70. case 5:
  71. if r.CYCLETIME != "0" {
  72. return false
  73. }
  74. }
  75. return true
  76. }
  77. // QryReportReq 查报表请求
  78. // @Param userid query int true "用户ID"
  79. // @Param querytype query int true "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)"
  80. // @Param tradedate query string false "交易日(格式yyyymmdd)"
  81. // @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
  82. // @Param cycletime query string false "周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
  83. // @Param begindate query string false "开始交易日(格式yyyymmdd)"
  84. // @Param enddate query string false "结束交易日(格式yyyymmdd)"
  85. type QryReportReq struct {
  86. USERID int64 `form:"userid" binding:"required"` // 用户id
  87. QUERYTYPE int32 `form:"querytype" binding:"required"` // 查询类型
  88. TRADEDATE string `form:"tradedate"` // 交易日
  89. CYCLETYPE int32 `form:"cycletype"` // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
  90. CYCLETIME string `form:"cycletime"` // 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】
  91. BEGINDATE string `form:"begindate"` // 开始交易日
  92. ENDDATE string `form:"enddate"` // 结束交易日
  93. }
  94. // Check 参数检查
  95. func (r *QryReportReq) Check() bool {
  96. // 参数检查
  97. switch r.QUERYTYPE {
  98. case 1, 4:
  99. return QueryDate(r.TRADEDATE).IsNumberic(1)
  100. case 2:
  101. switch r.CYCLETYPE {
  102. case 1, 2, 3, 5:
  103. p := CycleTypeCheck{CYCLETYPE: r.CYCLETYPE, CYCLETIME: r.CYCLETIME}
  104. return p.Check()
  105. case 4:
  106. return QueryDate(r.CYCLETIME).IsNumberic(1)
  107. default:
  108. return false
  109. }
  110. case 3:
  111. return QueryDate(r.BEGINDATE).IsNumberic(1) && QueryDate(r.ENDDATE).IsNumberic(1)
  112. }
  113. return true
  114. }
  115. // getDateScope 获取日期范围
  116. func getDateScope(cycletype int32, cycletime string) (beginDate, endDate string) {
  117. switch cycletype {
  118. case 1: // 月
  119. beginDate = cycletime + "01"
  120. endDate = cycletime + "31"
  121. case 2: // 季, 暂不实现
  122. case 3: // 年, 暂不实现
  123. case 4: // 周
  124. if w, ok := mtpcache.GetWeekInfo(cycletime); ok {
  125. beginDate = w.BeginDate
  126. endDate = w.EndDate
  127. } else {
  128. // 转换失败 : 一般来说不会转换失败
  129. logger.GetLogger().Errorf("covert cycletime to week fail:%v", cycletime)
  130. }
  131. }
  132. return
  133. }
  134. // CovertRequest 转换查询请求, 日期格式等
  135. func (r *QryReportReq) CovertRequest() {
  136. // 周期报表明细(查日报表)
  137. if r.QUERYTYPE == 5 {
  138. r.QUERYTYPE = 3
  139. r.BEGINDATE, r.ENDDATE = getDateScope(r.CYCLETYPE, r.CYCLETIME)
  140. } else if r.QUERYTYPE == 6 {
  141. // 周期报表明细(查日报表明细)
  142. r.QUERYTYPE = 4
  143. r.BEGINDATE, r.ENDDATE = getDateScope(r.CYCLETYPE, r.CYCLETIME)
  144. } else {
  145. // 周报表查询, 转换时间格式
  146. if r.CYCLETYPE == 4 {
  147. r.CYCLETIME = mtpcache.GetWeekIW(r.CYCLETIME)
  148. }
  149. }
  150. }
  151. // QryReportDaySpotDetail 查询现货日报表详情(菜单:报表查询/现货报表/现货日报表详情) - 作废
  152. func QryReportDaySpotDetail(c *gin.Context) {
  153. a := app.GinUtils{Gin: app.Gin{C: c}}
  154. req := struct {
  155. USERID int64 `form:"userid" binding:"required"` // 用户id
  156. TRADEDATE string `form:"tradedate" binding:"required"` // 交易日
  157. DELIVERYGOODSID int32 `form:"deliverygoodsid" binding:"required"` // 现货商品id
  158. SPOTGOODSBRANDID int32 `form:"spotgoodsbrandid"` // 品牌id
  159. WRSTANDARDID int32 `form:"wrstandardid"` // 品类id
  160. }{}
  161. a.DoBindReq(&req)
  162. m := models.Ermcp3ReportOPLog{USERID: req.USERID, DELIVERYGOODSID: req.DELIVERYGOODSID,
  163. TRADEDATE: req.TRADEDATE, SPOTGOODSBRANDID: req.SPOTGOODSBRANDID, WRSTANDARDID: req.WRSTANDARDID,
  164. LogTypeFilter: "2,3,24,25,26,27"}
  165. a.DoGetDataI(&m)
  166. }
  167. // QryReportDayFinanceKx 查询财务日报表款项(菜单:报表查询/财务报表/日报表/款项) - 作废
  168. func QryReportDayFinanceKx(c *gin.Context) {
  169. a := app.GinUtils{Gin: app.Gin{C: c}}
  170. req := struct {
  171. USERID int64 `form:"userid" binding:"required"` // 用户id
  172. TRADEDATE string `form:"tradedate" binding:"required"` // 交易日
  173. }{}
  174. a.DoBindReq(&req)
  175. m := models.Ermcp3ReportOPLog{USERID: req.USERID, TRADEDATE: req.TRADEDATE, LogTypeFilter: "8,9,10"}
  176. a.DoGetDataI(&m)
  177. }
  178. // QryReportDayFinanceFp 查询财务日报表发票(菜单:报表查询/财务报表/日报表/发票) - 作废
  179. func QryReportDayFinanceFp(c *gin.Context) {
  180. a := app.GinUtils{Gin: app.Gin{C: c}}
  181. req := struct {
  182. USERID int64 `form:"userid" binding:"required"` // 用户id
  183. TRADEDATE string `form:"tradedate" binding:"required"` // 交易日
  184. }{}
  185. a.DoBindReq(&req)
  186. m := models.Ermcp3ReportOPLog{USERID: req.USERID, TRADEDATE: req.TRADEDATE, LogTypeFilter: "11, 12"}
  187. a.DoGetDataI(&m)
  188. }
  189. // QryReportDaySpot 查询现货日报表(菜单:报表查询/现货报表/现货日报表) - 作废
  190. func QryReportDaySpot(c *gin.Context) {
  191. a := app.GinUtils{Gin: app.Gin{C: c}}
  192. m := models.Ermcp3ReckonAreaSpotSub{}
  193. a.DoBindReq(&m)
  194. a.DoGetDataI(&m)
  195. }
  196. // QryReportMonthSpot 查询现货月报表(菜单:报表查询/现货报表/现货月报表) - 作废
  197. func QryReportMonthSpot(c *gin.Context) {
  198. a := app.GinUtils{Gin: app.Gin{C: c}}
  199. m := models.Ermcp3ReportAreaSpotSub{}
  200. a.DoBindReq(&m)
  201. a.DoGetDataI(&m)
  202. }
  203. // QryReportMonthSpotDetail 查询现货月报表详情(菜单:报表查询/现货月报表/现货月报表详情) - 作废
  204. func QryReportMonthSpotDetail(c *gin.Context) {
  205. a := app.GinUtils{Gin: app.Gin{C: c}}
  206. req := models.Ermcp3ReportAreaSpotSub{}
  207. a.DoBindReq(&req)
  208. if req.CYCLETYPE != 1 || len(req.CYCLETIME) != 6 {
  209. // 目前仅支持月报表明细, 月报表的日期应是6位,如 202101
  210. a.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  211. return
  212. }
  213. t1 := req.CYCLETIME + "01"
  214. t2 := req.CYCLETIME + "31"
  215. // 月报表明细 = 01~31 日报表
  216. m := models.Ermcp3ReckonAreaSpotSub{
  217. AREAUSERID: req.AREAUSERID, DELIVERYGOODSID: req.DELIVERYGOODSID, ACCOUNTID: req.ACCOUNTID,
  218. WRSTANDARDID: req.WRSTANDARDID, SPOTGOODSBRANDID: req.SPOTGOODSBRANDID, BeginDate: t1, EndDate: t2}
  219. a.DoGetDataI(&m)
  220. }
  221. // QryAreaExpourseReport
  222. // @Summary 查询敞口报表
  223. // @Produce json
  224. // @Security ApiKeyAuth
  225. // @Param userid query int true "用户ID"
  226. // @Param querytype query int true "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 5-周期报表明细(查日报表)"
  227. // @Param tradedate query string false "交易日(格式yyyymmdd)"
  228. // @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
  229. // @Param cycletime query string false "周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
  230. // @Param begindate query string false "开始交易日(格式yyyymmdd)"
  231. // @Param enddate query string false "结束交易日(格式yyyymmdd)"
  232. // @Success 200 {array} models.Ermcp3ExpourseReport
  233. // @Failure 500 {object} app.Response
  234. // @Router /Ermcp3/QryAreaExpourseReport [get]
  235. // @Tags 企业风险管理v3(app)
  236. func QryAreaExpourseReport(c *gin.Context) {
  237. a := app.GinUtils{Gin: app.Gin{C: c}}
  238. req := QryReportReq{}
  239. a.DoBindReq(&req)
  240. a.CheckParam(&req)
  241. req.CovertRequest()
  242. m := models.Ermcp3ExpourseReport{AREAUSERID: req.USERID, QueryType: req.QUERYTYPE,
  243. CYCLETYPE: req.CYCLETYPE, CYCLETIME: req.CYCLETIME, RECKONDATE: req.TRADEDATE,
  244. BeginDate: req.BEGINDATE, EndDate: req.ENDDATE}
  245. a.DoGetDataI(&m)
  246. }
  247. // QryAreaExpourseContractDetail
  248. // @Summary 查询敞口合同明细(敞口报表/现货合同明细)
  249. // @Produce json
  250. // @Security ApiKeyAuth
  251. // @Param userid query int true "用户ID"
  252. // @Param middlegoodsid query int true "套保商品id"
  253. // @Param tradedate query string false "日报表明细, 交易日(格式yyyymmdd)"
  254. // @Param cycletype query int false "周期报表明细, 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
  255. // @Param cycletime query string false "周期报表明细, 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
  256. // @Success 200 {array} models.Ermcp3ExposureContractDetail
  257. // @Failure 500 {object} app.Response
  258. // @Router /Ermcp3/QryAreaExpourseContractDetail [get]
  259. // @Tags 企业风险管理v3(app)
  260. func QryAreaExpourseContractDetail(c *gin.Context) {
  261. a := app.GinUtils{Gin: app.Gin{C: c}}
  262. req := struct {
  263. USERID int64 `form:"userid" binding:"required"` // 用户id
  264. MIDDLEGOODSID int32 `form:"middlegoodsid" binding:"required"` // 套保商品id
  265. TRADEDATE string `form:"tradedate"` // 交易日(格式yyyymmdd)
  266. CYCLETYPE int32 `form:"cycletype"`
  267. CYCLETIME string `form:"cycletime"`
  268. }{}
  269. a.DoBindReq(&req)
  270. m := models.Ermcp3ExposureContractDetail{USERID: req.USERID,
  271. MIDDLEGOODSID: req.MIDDLEGOODSID, TRADEDATE: req.TRADEDATE}
  272. if req.CYCLETYPE > 0 {
  273. m.BeginDate, m.EndDate = getDateScope(req.CYCLETYPE, req.CYCLETIME)
  274. }
  275. a.DoGetDataI(&m)
  276. }
  277. // QryAreaExpourseHedgeplanDetail
  278. // @Summary 查询敞口套保计划明细(敞口报表/套保计划明细)
  279. // @Produce json
  280. // @Security ApiKeyAuth
  281. // @Param userid query int true "用户ID"
  282. // @Param middlegoodsid query int true "套保商品id"
  283. // @Param tradedate query string false "交易日(格式yyyymmdd)-日报表明细"
  284. // @Param cycletype query int false "周期报表明细, 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
  285. // @Param cycletime query string false "周期报表明细, 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
  286. // @Success 200 {array} models.Ermcp3ExposureHedgeplanDetail
  287. // @Failure 500 {object} app.Response
  288. // @Router /Ermcp3/QryAreaExpourseHedgeplanDetail [get]
  289. // @Tags 企业风险管理v3(app)
  290. func QryAreaExpourseHedgeplanDetail(c *gin.Context) {
  291. a := app.GinUtils{Gin: app.Gin{C: c}}
  292. req := struct {
  293. USERID int64 `form:"userid" binding:"required"` // 用户id
  294. MIDDLEGOODSID int32 `form:"middlegoodsid" binding:"required"` // 套保商品id
  295. TRADEDATE string `form:"tradedate"` // 交易日(格式yyyymmdd)
  296. CYCLETYPE int32 `form:"cycletype"`
  297. CYCLETIME string `form:"cycletime"`
  298. }{}
  299. a.DoBindReq(&req)
  300. m := models.Ermcp3ExposureHedgeplanDetail{USERID: req.USERID,
  301. MIDDLEGOODSID: req.MIDDLEGOODSID, TRADEDATE: req.TRADEDATE}
  302. if req.CYCLETYPE > 0 {
  303. m.BeginDate, m.EndDate = getDateScope(req.CYCLETYPE, req.CYCLETIME)
  304. }
  305. a.DoGetDataI(&m)
  306. }
  307. // QryAreaSpotplReport
  308. // @Summary 查询现货报表
  309. // @Produce json
  310. // @Security ApiKeyAuth
  311. // @Param userid query int true "用户ID"
  312. // @Param querytype query int true "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)"
  313. // @Param tradedate query string false "交易日(格式yyyymmdd)"
  314. // @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
  315. // @Param cycletime query string false "周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
  316. // @Param begindate query string false "开始交易日(格式yyyymmdd)"
  317. // @Param enddate query string false "结束交易日(格式yyyymmdd)"
  318. // @Param deliverygoodsid query int false "现货品种id"
  319. // @Param wrstandardid query int false "品类id"
  320. // @Param currencyid query int false "币种id"
  321. // @Success 200 {array} models.Ermcp3AreaSpotPLReport
  322. // @Failure 500 {object} app.Response
  323. // @Router /Ermcp3/QryAreaSpotplReport [get]
  324. // @Tags 企业风险管理v3(app)
  325. func QryAreaSpotplReport(c *gin.Context) {
  326. a := app.GinUtils{Gin: app.Gin{C: c}}
  327. req := QryReportReq{}
  328. a.DoBindReq(&req)
  329. a.CheckParam(&req)
  330. req2 := struct {
  331. DELIVERYGOODSID int64 `form:"deliverygoodsid"` // 品种
  332. WRSTANDARDID int64 `form:"wrstandardid"` // 品类
  333. CURRENCYID int32 `form:"currencyid"` // 币种
  334. }{}
  335. if req.QUERYTYPE == 4 {
  336. a.DoBindReq(&req2)
  337. a.CheckParamF(func() bool {
  338. if req2.DELIVERYGOODSID <= 0 || req2.WRSTANDARDID <= 0 || req2.CURRENCYID <= 0 {
  339. return false
  340. }
  341. return true
  342. })
  343. }
  344. req.CovertRequest()
  345. m := models.Ermcp3AreaSpotPLReport{AREAUSERID: req.USERID, QueryType: req.QUERYTYPE, RECKONDATE: req.TRADEDATE,
  346. CYCLETYPE: req.CYCLETYPE, CYCLETIME: req.CYCLETIME, BeginDate: req.BEGINDATE, EndDate: req.ENDDATE,
  347. DELIVERYGOODSID: req2.DELIVERYGOODSID, WRSTANDARDID: req2.WRSTANDARDID, CURRENCYID: req2.CURRENCYID}
  348. a.DoGetDataI(&m)
  349. }
  350. // QryFinanceReport
  351. // @Summary 查询财务报表
  352. // @Produce json
  353. // @Security ApiKeyAuth
  354. // @Param userid query int true "用户ID"
  355. // @Param querytype query int true "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)"
  356. // @Param tradedate query string false "交易日(格式yyyymmdd)"
  357. // @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
  358. // @Param cycletime query string false "周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
  359. // @Param begindate query string false "开始交易日(格式yyyymmdd)"
  360. // @Param enddate query string false "结束交易日(格式yyyymmdd)"
  361. // @Param currencyid query int false "币种id(日报表明细)"
  362. // @Success 200 {array} models.Ermcp3FinanceReport
  363. // @Failure 500 {object} app.Response
  364. // @Router /Ermcp3/QryFinanceReport [get]
  365. // @Tags 企业风险管理v3(app)
  366. func QryFinanceReport(c *gin.Context) {
  367. a := app.GinUtils{Gin: app.Gin{C: c}}
  368. req := QryReportReq{}
  369. a.DoBindReq(&req)
  370. a.CheckParam(&req)
  371. req2 := struct {
  372. CURRENCYID int32 `form:"currencyid"` // 币种id
  373. }{}
  374. a.DoBindReq(&req2)
  375. a.CheckParamF(func() bool {
  376. if req.QUERYTYPE == 4 {
  377. return req2.CURRENCYID > 0
  378. }
  379. return true
  380. })
  381. req.CovertRequest()
  382. m := models.Ermcp3FinanceReport{AREAUSERID: req.USERID, QueryType: req.QUERYTYPE, RECKONDATE: req.TRADEDATE,
  383. CYCLETYPE: req.CYCLETYPE, CYCLETIME: req.CYCLETIME, BeginDate: req.BEGINDATE, EndDate: req.ENDDATE, CURRENCYID: req2.CURRENCYID}
  384. a.DoGetDataI(&m)
  385. }
  386. // QryAreaStockReport
  387. // @Summary 查询库存报表
  388. // @Produce json
  389. // @Security ApiKeyAuth
  390. // @Param userid query int true "用户ID"
  391. // @Param querytype query int true "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)"
  392. // @Param tradedate query string false "交易日(格式yyyymmdd)"
  393. // @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
  394. // @Param cycletime query string false "周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
  395. // @Param begindate query string false "开始交易日(格式yyyymmdd)"
  396. // @Param enddate query string false "结束交易日(格式yyyymmdd)"
  397. // @Param deliverygoodsid query int false "现货商品ID"
  398. // @Param wrstandardid query int false "品类ID"
  399. // @Param spotgoodsbrandid query int false "品牌ID"
  400. // @Success 200 {array} models.Ermcp3AreaStockReport
  401. // @Failure 500 {object} app.Response
  402. // @Router /Ermcp3/QryAreaStockReport [get]
  403. // @Tags 企业风险管理v3(app)
  404. func QryAreaStockReport(c *gin.Context) {
  405. a := app.GinUtils{Gin: app.Gin{C: c}}
  406. req := QryReportReq{}
  407. req2 := struct {
  408. DELIVERYGOODSID int32 `form:"deliverygoodsid"` // 现货品种id
  409. WRSTANDARDID int32 `form:"wrstandardid"` // 品类ID
  410. SPOTGOODSBRANDID int32 `form:"spotgoodsbrandid"` // 品牌id
  411. }{}
  412. a.DoBindReq(&req)
  413. a.CheckParam(&req)
  414. a.DoBindReq(&req2)
  415. if req.QUERYTYPE == 4 {
  416. a.CheckParamF(func() bool {
  417. if req2.DELIVERYGOODSID <= 0 || req2.WRSTANDARDID <= 0 || req2.SPOTGOODSBRANDID <= 0 {
  418. return false
  419. }
  420. return true
  421. })
  422. }
  423. req.CovertRequest()
  424. m := models.Ermcp3AreaStockReport{USERID: req.USERID, QueryType: req.QUERYTYPE, RECKONDATE: req.TRADEDATE,
  425. CYCLETYPE: req.CYCLETYPE, CYCLETIME: req.CYCLETIME, BeginDate: req.BEGINDATE, EndDate: req.ENDDATE,
  426. DELIVERYGOODSID: req2.DELIVERYGOODSID, WRSTANDARDID: req2.WRSTANDARDID, SPOTGOODSBRANDID: req2.SPOTGOODSBRANDID}
  427. a.DoGetDataI(&m)
  428. }
  429. // QueryAreaStockReportDetail
  430. // 查询库存报表明细 - 作废
  431. func QueryAreaStockReportDetail(c *gin.Context) {
  432. a := app.GinUtils{Gin: app.Gin{C: c}}
  433. req := struct {
  434. USERID int64 `form:"userid" binding:"required"` // 机构ID
  435. DELIVERYGOODSID int32 `form:"deliverygoodsid"` // 现货品种id
  436. WRSTANDARDID int32 `form:"wrstandardid"` // 品类ID
  437. SPOTGOODSBRANDID int32 `form:"spotgoodsbrandid"` // 品牌id
  438. WAREHOUSEINFOID string `form:"warehouseinfoid"` // 现货仓库ID
  439. QUERYTYPE int32 `form:"querytype" binding:"required"` // 查询类型
  440. QUERYDATE string `form:"querydate" binding:"required"` // 查询日期
  441. DETAILTYPE int32 `form:"detailtype" binding:"required"` // 明细类型
  442. }{}
  443. a.DoBindReq(&req)
  444. if QueryDate(req.QUERYDATE).IsNumberic(req.QUERYTYPE) {
  445. var beginDate, endDate string
  446. if req.QUERYTYPE == 1 {
  447. beginDate = req.QUERYDATE
  448. endDate = beginDate
  449. } else if req.QUERYTYPE == 2 {
  450. beginDate = req.QUERYDATE + "01"
  451. endDate = req.QUERYDATE + "31"
  452. }
  453. m := models.Ermcp3AreaStockApply{USERID: req.USERID, WRSTANDARDID: req.WRSTANDARDID,
  454. SPOTGOODSBRANDID: req.SPOTGOODSBRANDID, DELIVERYGOODSID: req.DELIVERYGOODSID,
  455. WAREHOUSEINFOID: req.WAREHOUSEINFOID, BeginDate: beginDate, EndDate: endDate, APPLYSTATUS: 2}
  456. // 出入库类型(可多项,逗号隔开) 1:采购入库 2:销售出库 3:生产入库 4:生产出库"
  457. if req.DETAILTYPE == 1 {
  458. m.FilterType = "1,3"
  459. } else if req.DETAILTYPE == 2 {
  460. m.FilterType = "2,4"
  461. }
  462. a.DoGetDataI(&m)
  463. } else {
  464. a.Gin.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  465. }
  466. }
  467. // QryAreaSumPL
  468. // @Summary 查询汇总损益表
  469. // @Produce json
  470. // @Security ApiKeyAuth
  471. // @Param userid query int true "用户ID"
  472. // @Param querytype query int true "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)"
  473. // @Param tradedate query string false "交易日(格式yyyymmdd)"
  474. // @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
  475. // @Param cycletime query string false "周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
  476. // @Param begindate query string false "开始交易日(格式yyyymmdd)"
  477. // @Param enddate query string false "结束交易日(格式yyyymmdd)"
  478. // @Param currencyid query int false "币种id(日报表明细)"
  479. // @Success 200 {array} models.Ermcp3ArealSumPL
  480. // @Failure 500 {object} app.Response
  481. // @Router /Ermcp3/QryAreaSumPL [get]
  482. // @Tags 企业风险管理v3(app)
  483. func QryAreaSumPL(c *gin.Context) {
  484. a := app.GinUtils{Gin: app.Gin{C: c}}
  485. req := QryReportReq{}
  486. a.DoBindReq(&req)
  487. a.CheckParam(&req)
  488. req2 := struct {
  489. CURRENCYID int32 `form:"currencyid"` // 币种id
  490. }{}
  491. a.DoBindReq(&req2)
  492. a.CheckParamF(func() bool {
  493. if req.QUERYTYPE == 4 {
  494. return req2.CURRENCYID > 0
  495. }
  496. return true
  497. })
  498. req.CovertRequest()
  499. m := models.Ermcp3ArealSumPL{AREAUSERID: req.USERID, QueryType: req.QUERYTYPE, RECKONDATE: req.TRADEDATE,
  500. CYCLETYPE: req.CYCLETYPE, CYCLETIME: req.CYCLETIME, BeginDate: req.BEGINDATE, EndDate: req.ENDDATE, CURRENCYID: req2.CURRENCYID}
  501. a.DoGetDataI(&m)
  502. }