SJA工艺
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.

174 lines
5.6 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. package task
  2. import (
  3. "LAPP_SJA_ME/db"
  4. "LAPP_SJA_ME/etcd"
  5. "LAPP_SJA_ME/utils"
  6. "LAPP_SJA_ME/web/middleware/glog"
  7. "LAPP_SJA_ME/web/models"
  8. "fmt"
  9. "time"
  10. )
  11. /*etl执行方法集合*/
  12. /*
  13. *方法:更新生产订单和客户订单
  14. *逻辑一个客户订单号对应多个生产订单号
  15. *情况1: 如果生产订单号是40状态那么生产订单号和客户订单号直接更新为40状态
  16. *情况2: 如果生产订单号是80状态如果客户订单号对应的生产订单有小于80的状态那么客户订单不更新只需要更新生产订单
  17. */
  18. func UpdatePlnWorkorder(finr int, workordernr string, status int, optime string) error {
  19. /* 获取锁 */
  20. LOOP:
  21. err := etcd.G_jobLock.TryLock("lock")
  22. if err != nil {
  23. fmt.Println("pln_workorder groutine lock fail!")
  24. time.Sleep(2 * time.Millisecond)
  25. goto LOOP
  26. }
  27. fmt.Println("pln_workorder groutine lock success!")
  28. engine := db.Eloquent.Master()
  29. session := engine.NewSession()
  30. if err = session.Begin(); err != nil {
  31. session.Close()
  32. etcd.G_jobLock.UnLock()
  33. return err
  34. }
  35. //判断传入状态
  36. switch status {
  37. case 40:
  38. glog.InfoExtln("UpdatePlnWorkorder", "workordernr:", workordernr, status, optime)
  39. //查询生产订单对应的客户订单是否有小于80状态的订单
  40. var pln models.Pln_workorder
  41. _, err = session.Table("pln_workorder").Where("finr = ? and workordernr = ?", finr, workordernr).Get(&pln)
  42. if err != nil {
  43. glog.InfoExtln("UpdatePlnWorkorder", "err:", err)
  44. session.Rollback()
  45. session.Close()
  46. etcd.G_jobLock.UnLock()
  47. return err
  48. }
  49. if pln.Status > 40 {
  50. glog.InfoExtln("UpdatePlnWorkorder", "err:", "订单状态大于40")
  51. session.Rollback()
  52. session.Close()
  53. etcd.G_jobLock.UnLock()
  54. return nil
  55. }
  56. //更新生产订单表
  57. _, err := session.Table("pln_workorder").Cols("status").Where("finr = ? and workordernr = ?", finr, workordernr).Update(&map[string]interface{}{"status": 40})
  58. if err != nil {
  59. glog.InfoExtln("UpdatePlnWorkorder", "err:", err)
  60. session.Rollback()
  61. session.Close()
  62. etcd.G_jobLock.UnLock()
  63. return err
  64. }
  65. //更新客户订单
  66. _, err = session.Table("pln_custorder").Cols("status").Where("finr = ? and custordernr = ? ", finr, pln.Custordernr).Update(&map[string]interface{}{"status": 40})
  67. if err != nil {
  68. glog.InfoExtln("UpdatePlnWorkorder", "err:", err)
  69. session.Rollback()
  70. session.Close()
  71. etcd.G_jobLock.UnLock()
  72. return err
  73. }
  74. case 80:
  75. glog.InfoExtln("UpdatePlnWorkorder", "workordernr:", workordernr, status, optime)
  76. //更新生产订单表
  77. _, err := session.Table("pln_workorder").Cols("status", "schedbegtime").Where("finr = ? and workordernr = ?", finr, workordernr).Update(&map[string]interface{}{"status": 80, "schedbegtime": optime})
  78. if err != nil {
  79. glog.InfoExtln("UpdatePlnWorkorder", "err:", err)
  80. session.Rollback()
  81. session.Close()
  82. etcd.G_jobLock.UnLock()
  83. return err
  84. }
  85. //查询生产订单对应的客户订单是否有小于80状态的订单
  86. var pln models.Pln_workorder
  87. _, err = session.Table("pln_workorder").Where("finr = ? and workordernr = ?", finr, workordernr).Get(&pln)
  88. if err != nil {
  89. glog.InfoExtln("UpdatePlnWorkorder", "err:", err)
  90. session.Rollback()
  91. session.Close()
  92. etcd.G_jobLock.UnLock()
  93. return err
  94. }
  95. var plc models.Pln_workorder
  96. ok, err := session.Table("pln_workorder").Where("finr = ? and custordernr = ? and status < ?", finr, pln.Custordernr, status).Get(&plc)
  97. if err != nil {
  98. glog.InfoExtln("UpdatePlnWorkorder", "err:", err)
  99. session.Rollback()
  100. session.Close()
  101. etcd.G_jobLock.UnLock()
  102. return err
  103. }
  104. if !ok {
  105. //生产订单不存在小于80的状态,更新生产订单
  106. _, err := session.Table("pln_custorder").Cols("status").Where("finr = ? and custordernr = ?", finr, pln.Custordernr).Update(&map[string]interface{}{"status": 80})
  107. if err != nil {
  108. glog.InfoExtln("UpdatePlnWorkorder", "err:", err)
  109. session.Rollback()
  110. session.Close()
  111. etcd.G_jobLock.UnLock()
  112. return err
  113. }
  114. }
  115. default:
  116. }
  117. session.Commit()
  118. session.Close()
  119. etcd.G_jobLock.UnLock()
  120. return nil
  121. }
  122. //更新批次订单表
  123. func UpdatePlnBatchorder(finr int, batchordernr string, status int, actqty int, optime string) error {
  124. engine := db.Eloquent.Master()
  125. //判断传入状态
  126. switch status {
  127. case 40:
  128. //更新批次订单表
  129. _, err := engine.Table("pln_batchorder").Cols("status", "actqty", "actbegtime").Where("finr = ? and batchordernr = ?", finr, batchordernr).Update(&map[string]interface{}{"status": 40, "actqty": actqty, "actbegtime": optime})
  130. if err != nil {
  131. return err
  132. }
  133. case 80:
  134. //更新生产订单表
  135. _, err := engine.Table("pln_batchorder").Cols("status", "actqty", "actendtime").Where("finr = ? and batchordernr = ?", finr, batchordernr).Update(&map[string]interface{}{"status": 80, "actqty": actqty, "actendtime": optime})
  136. if err != nil {
  137. return err
  138. }
  139. default:
  140. }
  141. return nil
  142. }
  143. //清空接口缓存表里,三天前并且releaseflag为1的数据
  144. func DelCacheData() {
  145. tick := time.Tick(24 * time.Hour)
  146. for {
  147. select {
  148. case <-tick:
  149. //获取三天前的字符串
  150. ThreeDay := time.Now().AddDate(0, 0, -3)
  151. ThreeDayStr := utils.TimeFormat(ThreeDay, "yyyyMMddHHmmss")
  152. engine := db.Eloquent.Master()
  153. //删除pln_workorder_intstatus
  154. _, err := engine.Table("pln_workorder_intstatus").Where("finr = ? and credatuz <= ? and releaseflag = 1", utils.Finr, ThreeDayStr).Delete(&models.Pln_workorder_intstatus{})
  155. if err != nil {
  156. return
  157. }
  158. //删除pln_batchorder_intstatus
  159. _, err = engine.Table("pln_batchorder_intstatus").Where("finr = ? and credatuz <= ? and releaseflag = 1", utils.Finr, ThreeDayStr).Delete(&models.Pln_batchorder_intstatus{})
  160. if err != nil {
  161. return
  162. }
  163. return
  164. }
  165. }
  166. }