DataChange.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\model\GoodZixun;
  4. use app\cxinv\model\CaixiaoData;
  5. use think\App;
  6. use think\facade\Validate;
  7. class DataChange extends Base{
  8. public function __construct(App $app) {
  9. parent::__construct($app);
  10. $this->model=new \app\admin\model\DataChange();
  11. }
  12. public function create(){
  13. $param =$this->request->only(["code"=>'',"source"=>"","remark"=>"","type"=>"",'oaCode'=>'',"change"=>"","apply_id"=>""],
  14. "post","trim");
  15. $valid =Validate::rule([
  16. "code|订单编号"=>"require",
  17. "source|修正类型"=>"require|number|in:1,2,3", # 1 数据修正 2 二次议价咨询单 3 数据同步结算
  18. "type|订单类型"=>"require|number|in:1,2,3",# 1 采购单 2 销售单 3 咨询商品
  19. "apply_id|申请人"=>"require|number",
  20. "change|修改字段内容"=>"require|array"
  21. ]);
  22. if($valid->check($param)==false) return error($valid->getError());
  23. $array_diff=[];
  24. if($param['type']==1){
  25. $purchOrder = \app\admin\model\PurcheaseOrder::where('cgdNo',$param['code'])->findOrEmpty();
  26. if($purchOrder->isEmpty()) return error('采购单不存在');
  27. if($param['source']!=3){
  28. $orderIsCheck = CaixiaoData::order_is_check($param['code'],1);
  29. if(!empty($orderIsCheck)){
  30. return error('采购单存在已对账数据',10005,$orderIsCheck);
  31. }
  32. if($purchOrder['order_source']!=2) return error('供应商非咨询单订单不可修改');
  33. }
  34. $array_diff=array_diff($param['change'],$purchOrder->toArray());
  35. if(array_key_exists('supplierNo',$array_diff)){
  36. $persion = \app\user\model\Supplier::where('code',$array_diff['supplierNo'])->findOrEmpty();
  37. $array_diff['cgder'] =$persion->person?:'';
  38. $array_diff['cgder_id'] =$persion->personid?:'';
  39. }
  40. array_map(function ($key)use($purchOrder,&$before){
  41. $before[$key]= $purchOrder[$key]??'';
  42. },array_keys($array_diff));
  43. }
  44. if($param['type']==2){
  45. $saleOrder = \app\admin\model\Sale::where('orderCode',$param['code'])->findOrEmpty();
  46. if($saleOrder->isEmpty()) return error('销售单不存在');
  47. if($param['source']!=3){
  48. $orderIsCheck = CaixiaoData::order_is_check($param['code']);
  49. if(!empty($orderIsCheck)){
  50. return error('销售单存在已对账数据',10005,$orderIsCheck);
  51. }
  52. }
  53. $array_diff=array_diff($param['change'],$saleOrder->toArray());
  54. array_map(function ($key)use($saleOrder,&$before){
  55. $before[$key]= $saleOrder[$key]??'';
  56. },array_keys($array_diff));
  57. }
  58. if($param['type']==3){
  59. $good = GoodZixun::where('spuCode',$param['code'])->findOrEmpty();
  60. if($good->isEmpty()) return error('咨询商品不存在');
  61. $array_diff=array_diff($param['change'],$good->toArray());
  62. array_map(function ($key)use($good,&$before){
  63. $before[$key]= $good[$key]??'';
  64. },array_keys($array_diff));
  65. }
  66. $isT= $this->model->where(["code"=>$param['code'],"status"=>1])->findOrEmpty();
  67. if($isT->isEmpty()==false)return error("订单修改存在未完成得流程");
  68. $data=[
  69. 'code'=>$param['code'],
  70. 'type'=>$param['type'],
  71. 'source'=>$param['source'],
  72. 'before'=>$before,
  73. 'after'=>$array_diff,
  74. 'oaCode'=>$param['oaCode'],
  75. 'apply_id'=>$param['apply_id'],
  76. 'apply_name'=>\app\user\model\User::where("account_id",$param['apply_id'])->value("nickname",""),
  77. 'creater_id'=>$this->uid,
  78. 'creater'=>$this->uname,
  79. 'remark'=>$param['remark'],
  80. 'status'=>$param['source']==3?2:1,
  81. ];
  82. $this->model->create($data);
  83. return success("新建成功");
  84. }
  85. public function list(){
  86. $param = $this->request->only(['code'=>'','oaCode'=>'','type'=>'','source'=>'','apply_name'=>'','status'=>'','page'=>1,
  87. 'size'=>15],'post','trim');
  88. $param['source']==''?: $where[]=['source','=',$param['source']];
  89. $param['code']==''?: $where[]=['code','like',"%{$param['code']}%"];
  90. $param['apply_name']==''?: $where[]=['apply_name','like',"%{$param['apply_name']}%"];
  91. $param['oaCode']==''?: $where[]=['oaCode','like',"%{$param['oaCode']}%"];
  92. $param['type']==''?: $where[]=['type','=',$param['type']];
  93. $param['status']==''?: $where[]=['status','=',$param['status']];
  94. $list = $this->model->where($where)->order('id','desc')->paginate(['page'=>$param['page'],
  95. 'list_rows'=>$param['size']]);
  96. return success('获取成功',['list'=>$list->items(),'count'=>$list->total()]);
  97. }
  98. public function info(){
  99. $param = $this->request->only(['id'],'post','trim');
  100. $info = $this->model->findOrEmpty($param['id']);
  101. return success('获取成功',$info);
  102. }
  103. public function status(){
  104. $param = $this->request->only(['id'=>"",'status'=>"",'remark'=>""],'post','trim');
  105. $Valid =Validate::rule(["id|申请id"=>"require","status|状态"=>"require|number|in:2,3"]);
  106. if($Valid->check($param)==false) return error($Valid->getError());
  107. $info = $this->model->findOrEmpty($param['id']);
  108. if($info->isEmpty())return error('未找到申请单数据');
  109. if($info->status!=1) return error("申请单数据已审核");
  110. $info->status=$param['status'];
  111. $info->remark=$param['remark'];
  112. if($param['status']==2){
  113. if($param['type']==1){
  114. $orderIsCheck = CaixiaoData::order_is_check($param['code'],1);
  115. if(!empty($orderIsCheck)){
  116. return error('采购单存在已对账数据',10005,$orderIsCheck);
  117. }
  118. }
  119. if($param['type']==2){
  120. $orderIsCheck = CaixiaoData::order_is_check($param['code']);
  121. if(!empty($orderIsCheck)){
  122. return error('销售单存在已对账数据',10005,$orderIsCheck);
  123. }
  124. }
  125. }
  126. $info->save();
  127. return success("操作成功");
  128. }
  129. }