DepartTips.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace app\admin\controller;
  3. use think\App;
  4. use think\Exception;
  5. use think\facade\Db;
  6. use think\facade\Validate;
  7. class DepartTips extends Base{
  8. public function __construct(App $app) {parent::__construct($app);}
  9. public function list(){
  10. $post = $this->request->only(["year"=>"","month"=>"","companyNo"=>"","page"=>1,"size"=>15],"post","trim");
  11. $where=[];
  12. if($post["year"]!=='') $where[]=["year","=",$post["year"]];
  13. if($post["month"]!=='') $where[]=["month","=",$post["month"]];
  14. if($post["companyNo"]!=='') $where[]=["companyNo","=",$post["companyNo"]];
  15. $count =Db::name("depart_tips")->where($where)->count();
  16. $total = ceil($count/$post['size']);
  17. $page = $total>=$post["page"]? intval($post['page']): intval($total);
  18. $list = Db::name("depart_tips")->where($where)->page($page,intval($post['size']))->order("id desc")->select();
  19. return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
  20. }
  21. public function create(){
  22. $post = $this->request->only(["tips"=>[],"companyNo"=>""],"post","trim");
  23. if($post['companyNo']=="") return error_show(1004,"业务公司编号不能为空");
  24. if(empty($post['tips'])) return error_show(1004,"指标数据不能为空");
  25. $rule =Validate::rule([
  26. "year|年份"=>"require|number",
  27. "month|月份"=>"require|number|between:1,12",
  28. "total_tips|业绩指标"=>"require|float"
  29. ]);
  30. $companyAr = UserHandle("getCodeAndName",["code"=>$post["companyNo"]]);
  31. if(!isset($companyAr['code'])|| $companyAr['code']!=0)return error_show(1004,"业务公司信息未找到");
  32. $companyName = $companyAr["data"][$post["companyNo"]]??"";
  33. $inst=[];
  34. Db::startTrans();
  35. try{
  36. foreach ($post["tips"] as $item){
  37. if($rule->check($item)==false) throw new Exception($rule->getError());
  38. $ist =Db::name("depart_tips")->where(["companyNo"=>$post["companyNo"],"month"=>$item["month"],
  39. "year"=>$item["year"]])->findOrEmpty();
  40. if(empty($ist))$inst[]=[
  41. "companyNo"=>$post["companyNo"],
  42. "companyName"=>$companyName,
  43. "year"=>$item["year"],
  44. "month"=>$item["month"],
  45. "total_tips"=>$item["total_tips"]
  46. ];
  47. else Db::name("depart_tips")->where($ist)->update(["total_tips"=>$item["total_tips"]]);
  48. }
  49. if(!empty($inst))Db::name("depart_tips")->insertAll($inst);
  50. Db::commit();
  51. return app_show(0,"数据操作成功");
  52. }catch (\Exception $e){
  53. Db::rollback();
  54. return error_show(1004,$e->getMessage());
  55. }
  56. }
  57. public function departlist(){
  58. $post = $this->request->only(["year"=>"","month"=>"","depart_id"=>"","page"=>1,"size"=>15],"post","trim");
  59. $where=[];
  60. if($post["year"]!=='') $where[]=["year","=",$post["year"]];
  61. if($post["month"]!=='') $where[]=["month","=",$post["month"]];
  62. if($post["depart_id"]!=='') $where[]=["depart_id","=",$post["depart_id"]];
  63. $count =Db::connect("mysql_wsm3.0")->name("depart_tips")->where($where)->count();
  64. $total = ceil($count/$post['size']);
  65. $page = $total>=$post["page"]? intval($post['page']): intval($total);
  66. $list = Db::connect("mysql_wsm3.0")->name("depart_tips")->where($where)->page($page,intval($post['size']))
  67. ->order("id desc")->select();
  68. return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
  69. }
  70. public function departcreate(){
  71. $post = $this->request->only(["tips"=>[],"depart_id"=>""],"post","trim");
  72. if($post['depart_id']=="") return error_show(1004,"业务部门不能为空");
  73. if(empty($post['tips'])) return error_show(1004,"指标数据不能为空");
  74. $rule =Validate::rule([
  75. "year|年份"=>"require|number",
  76. "month|月份"=>"require|number|between:1,12",
  77. "total_tips|业绩指标"=>"require|float"
  78. ]);
  79. $companyAr = UserHandle("get_part",["itemid"=>$post["depart_id"]]);
  80. if(!isset($companyAr['code'])|| $companyAr['code']!=0)return error_show(1004,"业务部门信息未找到");
  81. $companyName = $companyAr["data"][$post["depart_id"]]??"";
  82. $inst=[];
  83. Db::connect("mysql_wsm3.0")->startTrans();
  84. try{
  85. foreach ($post["tips"] as $item){
  86. if($rule->check($item)==false) throw new Exception($rule->getError());
  87. $ist =Db::connect("mysql_wsm3.0")->name("depart_tips")->where(["depart_id"=>$post["depart_id"],
  88. "month"=>$item["month"],"year"=>$item["year"]])->findOrEmpty();
  89. if(empty($ist))$inst[]=[
  90. "depart_id"=>$post["companyNo"],
  91. "depart_item"=>$companyName,
  92. "year"=>$item["year"],
  93. "month"=>$item["month"],
  94. "total_tips"=>$item["total_tips"]
  95. ];
  96. else Db::connect("mysql_wsm3.0")->name("depart_tips")->where($ist)->update(["total_tips"=>$item["total_tips"]]);
  97. }
  98. if(!empty($inst))Db::connect("mysql_wsm3.0")->name("depart_tips")->insertAll($inst);
  99. Db::connect("mysql_wsm3.0")->commit();
  100. return app_show(0,"数据操作成功");
  101. }catch (\Exception $e){
  102. Db::connect("mysql_wsm3.0")->rollback();
  103. return error_show(1004,$e->getMessage());
  104. }
  105. }
  106. }