SJA APS后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
4.0 KiB

3 years ago
  1. package etl
  2. import (
  3. "leit.com/leit_seat_aps/common"
  4. "leit.com/leit_seat_aps/db"
  5. "time"
  6. )
  7. /*etl执行方法集合*/
  8. /*
  9. *方法:更新生产订单和客户订单
  10. *逻辑一个客户订单号对应多个生产订单号
  11. *情况1: 如果生产订单号是40状态那么生产订单号和客户订单号直接更新为40状态
  12. *情况2: 如果生产订单号是80状态如果客户订单号对应的生产订单有小于80的状态那么客户订单不更新只需要更新生产订单
  13. */
  14. func UpdatePlnWorkorder(finr int, workordernr string, status int) error {
  15. engine := Eloquent.Master()
  16. //判断传入状态
  17. switch status {
  18. case 40:
  19. //更新生产订单表
  20. _, err := engine.Table("pln_workorder").Cols("status").Where("finr = ? and workordernr = ? and status <= ?", finr, workordernr, status).Update(&map[string]interface{}{"status": 40})
  21. if err != nil {
  22. return err
  23. }
  24. //查询生产订单对应的客户订单是否有小于80状态的订单
  25. var pln db.Pln_workorder
  26. _, err = engine.Table("pln_workorder").Where("finr = ? and workordernr = ?", finr, workordernr).Get(&pln)
  27. if err != nil {
  28. return err
  29. }
  30. //更新客户订单
  31. _, err = engine.Table("pln_custorder").Cols("status").Where("finr = ? and custordernr = ? and status <= ?", finr, pln.Custordernr, status).Update(&map[string]interface{}{"status": 40})
  32. if err != nil {
  33. return err
  34. }
  35. case 80:
  36. //更新生产订单表
  37. _, err := engine.Table("pln_workorder").Cols("status").Where("finr = ? and workordernr = ? and status <= ?", finr, workordernr, status).Update(&map[string]interface{}{"status": 80})
  38. if err != nil {
  39. return err
  40. }
  41. //查询生产订单对应的客户订单是否有小于80状态的订单
  42. var pln db.Pln_workorder
  43. _, err = engine.Table("pln_workorder").Where("finr = ? and workordernr = ?", finr, workordernr).Get(&pln)
  44. if err != nil {
  45. return err
  46. }
  47. var plc db.Pln_workorder
  48. ok, err := engine.Table("pln_workorder").Where("finr = ? and custordernr = ? and status < ?", finr, pln.Custordernr, status).Get(&plc)
  49. if err != nil {
  50. return err
  51. }
  52. if !ok {
  53. //生产订单不存在小于80的状态,更新生产订单
  54. _, err := engine.Table("pln_custorder").Cols("status").Where("finr = ? and custordernr = ?", finr, pln.Custordernr).Update(&map[string]interface{}{"status": 80})
  55. if err != nil {
  56. return err
  57. }
  58. }
  59. default:
  60. }
  61. return nil
  62. }
  63. //更新批次订单表
  64. func UpdatePlnBatchorder(finr int, batchordernr string, status int, actqty int, optime string) error {
  65. engine := Eloquent.Master()
  66. //判断传入状态
  67. switch status {
  68. case 40:
  69. //更新批次订单表
  70. _, err := engine.Table("pln_batchorder").Cols("status", "actqty", "actbegtime").Where("finr = ? and batchordernr = ? and status <= ?", finr, batchordernr, status).Update(&map[string]interface{}{"status": 40, "actqty": actqty, "actbegtime": optime})
  71. if err != nil {
  72. return err
  73. }
  74. case 80:
  75. //更新生产订单表
  76. _, err := engine.Table("pln_batchorder").Cols("status", "actqty", "actendtime").Where("finr = ? and batchordernr = ? and status <= ?", finr, batchordernr, status).Update(&map[string]interface{}{"status": 80, "actqty": actqty, "actendtime": optime})
  77. if err != nil {
  78. return err
  79. }
  80. default:
  81. }
  82. return nil
  83. }
  84. //清空接口缓存表里,三天前并且releaseflag为1的数据
  85. func DelCacheData() {
  86. tick := time.Tick(24 * time.Hour)
  87. for {
  88. select {
  89. case <-tick:
  90. //获取三天前的字符串
  91. ThreeDay := time.Now().AddDate(0,0,-3)
  92. ThreeDayStr := common.TimeFormat(ThreeDay,"yyyyMMddHHmmss")
  93. engine := Eloquent.Master()
  94. //删除pln_workorder_intstatus
  95. _, err := engine.Table("pln_workorder_intstatus").Where("finr = ? and credatuz <= ? and releaseflag = 1", db.G_DbEngine,ThreeDayStr).Delete(&db.Pln_workorder_intstatus{})
  96. if err != nil {
  97. return
  98. }
  99. //删除pln_batchorder_intstatus
  100. _, err = engine.Table("pln_batchorder_intstatus").Where("finr = ? and credatuz <= ? and releaseflag = 1", db.G_DbEngine, ThreeDayStr).Delete(&db.Pln_batchorder_intstatus{})
  101. if err != nil {
  102. return
  103. }
  104. return
  105. }
  106. }
  107. }