ProcessWait.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. namespace app\admin\model;
  3. use app\abutment\model\SupplierRelationUser as SupplierRelationUserModel;
  4. use app\abutment\model\SupplierUser as SupplierUserModel;
  5. use think\facade\Db;
  6. use think\Model;
  7. //待办已办
  8. class ProcessWait extends Model
  9. {
  10. protected $table = 'wsm_process_wait';
  11. protected $pk = 'id';
  12. protected $autoWriteTimestamp = false;
  13. public static $status_wait_handle = 1;//状态,1待处理
  14. public static $status_handle_finish = 2;//状态,2待处理
  15. //添加待办记录
  16. public static function add(array $data = [], int $wait_id = 0, string $wait_name = '')
  17. {
  18. // $data数据格式实例
  19. // $data=[
  20. // "order_type"=>'',
  21. // "order_code"=>'',
  22. // "order_id"=>'',
  23. // "order_status"=>'',
  24. // "action_process"=>'',
  25. // "action_status"=>'',
  26. // "action_uid"=>'',
  27. // "action_name"=>'',
  28. // "addtime"=>'',
  29. // ];
  30. //把上一个节点改成已完成
  31. Db::name('process_wait')
  32. ->where(['order_type' => $data['order_type'], 'order_process' => $data['action_status'], 'order_code' => $data['order_code'], 'order_id' => $data['order_id'], 'status' => self::$status_wait_handle])
  33. ->update(['status' => self::$status_handle_finish, 'updatetime' => date('Y-m-d H:i:s')]);
  34. //查询流程下该节点值的id
  35. $id = Db::name('process')
  36. ->alias('a')
  37. ->join('action_process p', 'p.process_id=a.id AND p.order_process=' . $data['action_process'] . ' AND p.operation_type = ' . ActionProcess::$operation_type_approval)
  38. ->where(['a.process_type' => $data['order_type'], 'a.status' => Process::$status_normal, 'a.is_del' => Process::$is_del_normal])->value('p.id', 0);
  39. if ($id) {
  40. //如果是以下4个流程,还需要判断对应供应商是否开通账号,如果开通的话就不推送待办已办数据
  41. if (in_array($data['order_type'], ['CKD', 'RKD', 'CGD', 'SPCB'])) {
  42. switch ($data['order_type']) {
  43. //发货申请单流程
  44. case 'CKD':
  45. $supplierNo = Db::name('order_out')
  46. ->alias('a')
  47. ->leftJoin('order_num b', 'b.orderCode=a.orderCode')
  48. ->leftJoin('purchease_order c', 'c.cgdNo=b.cgdNo')
  49. ->where(['a.is_del' => 0, 'a.outCode' => $data['order_code']])
  50. ->value('c.supplierNo');
  51. break;
  52. //采购单入库流程
  53. case 'RKD':
  54. $supplierNo = Db::name('purchease_in')
  55. ->alias('a')
  56. ->leftJoin('purchease_order b', 'b.cgdNo=a.cgdNo')
  57. ->where(['a.is_del' => 0, 'a.wsm_in_code' => $data['order_code']])
  58. ->value('b.supplierNo');
  59. break;
  60. //采购单流程
  61. case 'CGD':
  62. $supplierNo = Db::name('purchease_order')
  63. ->where(['cgdNo' => $data['order_code'], 'is_del' => 0])
  64. ->value('supplierNo');
  65. break;
  66. //商品成本流程
  67. case 'SPCB':
  68. $supplierNo = Db::name('good_basic')
  69. ->where(['is_del' => 0, 'spuCode' => $data['order_code'],])
  70. ->value('supplierNo');
  71. break;
  72. default:
  73. $supplierNo = '';
  74. break;
  75. }
  76. if ($supplierNo) {
  77. //查询该供应商是否开通账号
  78. $res = SupplierRelationUserModel::field('id')
  79. ->where([
  80. 'is_del' => SupplierUserModel::$is_del_normal,
  81. 'supplierNo' => $supplierNo,
  82. 'status' => SupplierUserModel::$status_normal
  83. ])
  84. ->findOrEmpty()
  85. ->isEmpty();
  86. if (!$res) return true;
  87. }
  88. }
  89. $insert_data = [
  90. 'order_type' => $data['order_type'],
  91. 'order_code' => $data['order_code'],
  92. 'order_id' => $data['order_id'],
  93. 'action_uid' => $data['action_uid'],
  94. 'action_name' => $data['action_name'],
  95. 'status' => self::$status_wait_handle,
  96. 'order_process' => $data['action_process'],
  97. 'addtime' => date('Y-m-d H:i:s'),
  98. 'updatetime' => date('Y-m-d H:i:s'),
  99. ];
  100. if ($wait_id) {
  101. $insert_data['wait_id'] = $wait_id;
  102. $insert_data['wait_name'] = $wait_name;
  103. } else {
  104. //查询该节点值对应的角色id
  105. $roleid = Db::name('role_process')
  106. ->whereFindInSet('action_data', $id)
  107. ->where('is_del', 0)
  108. ->column('role_id');
  109. $insert_data['roleid'] = implode(',', $roleid);
  110. }
  111. //增加新的节点
  112. return self::create($insert_data)->save();
  113. }
  114. }
  115. }