Settle.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  1. <?php
  2. namespace app\admin\controller;
  3. use think\facade\Session;
  4. use app\admin\BaseController;
  5. use app\common\model\Agent as AgentModel;
  6. use app\common\model\SettleCate as SettleCateModel;
  7. use app\common\model\SettleAgent as SettleAgentModel;
  8. use PHPExcel_IOFactory;
  9. use PHPExcel;
  10. class Settle extends BaseController
  11. {
  12. // 结算名单
  13. public function agentList()
  14. {
  15. $cateid = input('cateid/d', 0);
  16. $catelist = SettleCateModel::order(['priority'=>'desc','id'=>'desc'])->select();
  17. $agentlist = AgentModel::order(['id'=>'desc'])->select();
  18. return view('settle/agentlist',[
  19. 'cateid' => $cateid,
  20. 'catelist' => $catelist,
  21. 'agentlist' => $agentlist
  22. ]);
  23. }
  24. public function agentForm()
  25. {
  26. $id = input('id/d, 0');
  27. $agent = SettleAgentModel::findOrEmpty($id);
  28. $catelist = SettleCateModel::order(['priority'=>'desc','id'=>'desc'])->select();
  29. $agentlist = AgentModel::order(['id'=>'desc'])->select();
  30. return view('settle/agentform',[
  31. 'catelist' => $catelist,
  32. 'agentlist' => $agentlist,
  33. 'agent' => $agent
  34. ]);
  35. }
  36. public function agentImport()
  37. {
  38. $catetitle = date("YmdHis");
  39. return view('settle/agentimport',[
  40. 'catetitle' => $catetitle
  41. ]);
  42. }
  43. public function importAgent()
  44. {
  45. $execlfile = input('execlfile/s', "");
  46. if (empty($execlfile)){
  47. exit(json_encode(array(
  48. 'code' => 1,
  49. 'msg' => "请上传导入文件。"
  50. )));
  51. }
  52. $filedata = read_excel( $execlfile );
  53. $agentlist = AgentModel::column('idnumber,id,title','idnumber');
  54. $catetitle = input('catetitle/s', "");
  55. $cate = SettleCateModel::where(['title'=>$catetitle])->findOrEmpty();
  56. if ($cate->isEmpty()){
  57. $cate = new SettleCateModel;
  58. $cate->save([
  59. 'title' => $catetitle,
  60. 'status' => 1,
  61. 'remark' => "",
  62. 'priority' => 0
  63. ]);
  64. }
  65. $cateid = $cate->id;
  66. $stype = input('stype/d', 1);
  67. $createtime = input('createtime/s', "");
  68. $sagent = new SettleAgentModel;
  69. $data = array();
  70. $sucnumber = 0;
  71. $errnumber = 0;
  72. foreach( $filedata as $k=>$v ){
  73. $idnumber = trim($v[0]);
  74. if (empty($idnumber) || empty($agentlist[$idnumber])){
  75. $errnumber++;
  76. continue;
  77. }else{
  78. $data[] = array(
  79. 'cateid' => $cateid,
  80. 'agentid' => $agentlist[$idnumber]['id'],
  81. 'yearmonth' => $v[1],
  82. 'pername' => $v[2],
  83. 'perid' => $v[3],
  84. 'permobile' => $v[4],
  85. 'pernumber' => $v[5],
  86. 'sdate' => $v[6],
  87. 'edate' => $v[7],
  88. 'factory' => $v[8],
  89. 'accountname' => $v[9],
  90. 'accountnumber' => $v[10],
  91. 'accountbank' => $v[11],
  92. 'accountstatus' => $v[12],
  93. 'remark' => $v[13],
  94. 'accountmoney' => floatval($v[14]),
  95. 'createtime' => $createtime,
  96. 'stype' => $stype,
  97. 'onefield1' => $stype==1 ? $v[15] : "",
  98. 'onefield2' => $stype==1 ? $v[16] : "",
  99. 'onefield3' => $stype==1 ? $v[17] : "",
  100. 'onefield4' => $stype==1 ? $v[18] : "",
  101. 'onefield5' => $stype==1 ? $v[19] : "",
  102. 'onefield6' => $stype==1 ? $v[20] : "",
  103. 'thrfield1' => $stype==3 ? $v[15] : "",
  104. 'thrfield2' => $stype==3 ? $v[16] : "",
  105. 'thrfield3' => $stype==3 ? $v[17] : ""
  106. );
  107. $sucnumber++;
  108. }
  109. }
  110. $sagent->saveAll($data);
  111. exit(json_encode(array(
  112. 'code' => 0,
  113. 'sucnumber' => $sucnumber,
  114. 'errnumber' => $errnumber
  115. )));
  116. }
  117. public function editAgent()
  118. {
  119. $id = input('id/d');
  120. $agent = SettleAgentModel::findOrEmpty($id);
  121. $stype = input('stype/d', 1);
  122. $data = array(
  123. 'cateid' => input('cateid/d', 0),
  124. 'agentid' => input('agentid/d', 0),
  125. 'yearmonth' => input('yearmonth/s', ""),
  126. 'pername' => input('pername/s', ""),
  127. 'perid' => input('perid/s', ""),
  128. 'permobile' => input('permobile/s', ""),
  129. 'pernumber' => input('pernumber/s', ""),
  130. 'sdate' => input('sdate/s', ""),
  131. 'edate' => input('edate/s', ""),
  132. 'factory' => input('factory/s', ""),
  133. 'accountname' => input('accountname/s', ""),
  134. 'accountnumber' => input('accountnumber/s', ""),
  135. 'accountbank' => input('accountbank/s', ""),
  136. 'accountstatus' => input('accountstatus/s', ""),
  137. 'remark' => input('remark/s', ""),
  138. 'accountmoney' => floatval(input('accountmoney/f', 0.00)),
  139. 'createtime' => input('createtime/s', ""),
  140. 'stype' => $stype,
  141. 'onefield1' => $stype==1 ? input('onefield1/s', "") : "",
  142. 'onefield2' => $stype==1 ? input('onefield2/s', "") : "",
  143. 'onefield3' => $stype==1 ? input('onefield3/s', "") : "",
  144. 'onefield4' => $stype==1 ? input('onefield4/s', "") : "",
  145. 'onefield5' => $stype==1 ? input('onefield5/s', "") : "",
  146. 'onefield6' => $stype==1 ? input('onefield6/s', "") : "",
  147. 'thrfield1' => $stype==3 ? input('thrfield1/s', "") : "",
  148. 'thrfield2' => $stype==3 ? input('thrfield2/s', "") : "",
  149. 'thrfield3' => $stype==3 ? input('thrfield3/s', "") : ""
  150. );
  151. if ($agent->isEmpty()){
  152. $agent = new SettleAgentModel;
  153. $agent->save($data);
  154. }else{
  155. $agent->save($data);
  156. }
  157. exit(json_encode(array(
  158. 'code' => 0
  159. )));
  160. }
  161. public function fieldAgent()
  162. {
  163. $id = input('id/d',0);
  164. $info = SettleAgentModel::findOrEmpty($id);
  165. if ($info->isEmpty()){
  166. exit(json_encode(array(
  167. 'code' => 1,
  168. 'msg' => "信息不存在"
  169. )));
  170. }else{
  171. $info->save([
  172. input('field/s') => input('value')
  173. ]);
  174. }
  175. exit(json_encode(array(
  176. 'code' => 0
  177. )));
  178. }
  179. public function delAgent()
  180. {
  181. $idarr = input('idarr/a');
  182. $info = SettleAgentModel::whereIn('id',$idarr)->select();
  183. $result = $info->delete();
  184. if ($result){
  185. exit(json_encode(array(
  186. 'code' => 0,
  187. 'msg' => ""
  188. )));
  189. }
  190. exit(json_encode(array(
  191. 'code' => 1,
  192. 'msg' => "删除失败,请稍后重试"
  193. )));
  194. }
  195. public function listAgent()
  196. {
  197. $limit = input('limit/d',20);
  198. $page = input('page/d',1);
  199. $map = array();
  200. $keywords = input('keywords/s');
  201. if (!empty($keywords)){
  202. $map[] =['factory|pername', 'like', '%'.$keywords.'%'];
  203. }
  204. $cateid = input('cateid/d', 0);
  205. if (!empty($cateid)){
  206. $map[] = ['cateid', '=', $cateid];
  207. }
  208. $agentid = input('agentid/d', 0);
  209. if (!empty($agentid)){
  210. $map[] = ['agentid', '=', $agentid];
  211. }
  212. $stype = input('stype/d', 0);
  213. if (!empty($stype)){
  214. $map[] = ['stype', '=', $stype];
  215. }
  216. $list = SettleAgentModel::with(['settleCate','agent'])->where($map)->order('id','DESC')->limit($limit)->page($page)->append(['stype_text'])->select();
  217. $count = SettleAgentModel::where($map)->count();
  218. if ($count==0){
  219. exit(json_encode(array(
  220. 'code' => 1,
  221. 'msg' => "未查询到数据"
  222. )));
  223. }
  224. exit(json_encode(array(
  225. 'code' => 0,
  226. 'msg' => "",
  227. 'count' => $count,
  228. 'data' => $list
  229. )));
  230. }
  231. public function exportAgent()
  232. {
  233. $map = array();
  234. $keywords = input('keywords/s');
  235. if (!empty($keywords)){
  236. $map[] =['factory|pername', 'like', '%'.$keywords.'%'];
  237. }
  238. $cateid = input('cateid/d', 0);
  239. if (!empty($cateid)){
  240. $map[] = ['cateid', '=', $cateid];
  241. }
  242. $agentid = input('agentid/d', 0);
  243. if (!empty($agentid)){
  244. $map[] = ['agentid', '=', $agentid];
  245. }
  246. $stype = input('stype/d', 0);
  247. if (!empty($stype)){
  248. $map[] = ['stype', '=', $stype];
  249. }
  250. $xlsData = SettleAgentModel::with(['settleCate','agent'])->where($map)->order('id','DESC')->append(['stype_text'])->select()->toArray();
  251. $xlsCell = array(
  252. array('id','表ID'),
  253. array('settle_cate.title','批次号'),
  254. array('agent.idnumber','代理编号'),
  255. array('agent.title','代理门店'),
  256. array('yearmonth', '年月'),
  257. array('pername', '员工姓名'),
  258. array('perid', '员工工号'),
  259. array('permobile', '员工手机号'),
  260. array('pernumber', '员工身份证号'),
  261. array('sdate', '入职日期'),
  262. array('edate', '离职日期'),
  263. array('factory', '入职企业'),
  264. array('accountname', '收款人姓名'),
  265. array('accountnumber', '收款人身份证号码'),
  266. array('accountbank', '收款人银行账号'),
  267. array('accountstatus', '结算状态'),
  268. array('remark', '备注'),
  269. array('accountmoney', '实结金额'),
  270. array('createtime', '添加时间'),
  271. array('stype', '类型'),
  272. array('onefield1', '小时工-出勤时数'),
  273. array('onefield2', '小时工-员工单价'),
  274. array('onefield3', '小时工-代理费基数'),
  275. array('onefield4', '小时工-结算单价'),
  276. array('onefield5', '小时工-应结费用'),
  277. array('onefield6', '小时工-税费'),
  278. array('thrfield1', '管理费-返费政策'),
  279. array('thrfield2', '管理费-核对情况'),
  280. array('thrfield3', '管理费-员工薪资')
  281. );
  282. export_excel("代理结算",$xlsCell,$xlsData);
  283. }
  284. // 分类
  285. public function cateList()
  286. {
  287. return view('settle/catelist');
  288. }
  289. public function cateForm()
  290. {
  291. $id = input('id/d, 0');
  292. $cate = SettleCateModel::findOrEmpty($id);
  293. return view('settle/cateform',[
  294. 'cate' => $cate
  295. ]);
  296. }
  297. public function listCate()
  298. {
  299. $limit = input('limit');
  300. $page = input('page');
  301. $list = SettleCateModel::withCount('settleAgent')->withSum('settleAgent','accountmoney')->order(['priority'=>'desc','id'=>'desc'])->limit($limit)->page($page)->append(['status_text'])->select();
  302. $count = SettleCateModel::count();
  303. if ($count==0){
  304. exit(json_encode(array(
  305. 'code' => 1,
  306. 'msg' => "未查询到数据"
  307. )));
  308. }
  309. exit(json_encode(array(
  310. 'code' => 0,
  311. 'msg' => "",
  312. 'count' => $count,
  313. 'data' => $list
  314. )));
  315. }
  316. public function fieldCate()
  317. {
  318. $id = input('id/d');
  319. $cate = SettleCateModel::find($id);
  320. if ($cate==null){
  321. exit(json_encode(array(
  322. 'code' => 1,
  323. 'msg' => "批次信息不存在"
  324. )));
  325. }else{
  326. $cate->save([
  327. input('field/s') => input('value/s', "")
  328. ]);
  329. }
  330. exit(json_encode(array(
  331. 'code' => 0
  332. )));
  333. }
  334. public function editCate()
  335. {
  336. $id = input('id/d');
  337. if (empty($id)){
  338. $cate = SettleCateModel::create([
  339. 'title' => input('title/s', ""),
  340. 'status' => input('status/d', 0)==1 ? 1 : 2,
  341. 'remark' => input('remark/s', ""),
  342. 'priority' => input('priority/d', 0)
  343. ]);
  344. }else{
  345. $cate = SettleCateModel::find($id);
  346. $cate->save([
  347. 'title' => input('title/s', ""),
  348. 'status' => input('status/d', 0)==1 ? 1 : 2,
  349. 'remark' => input('remark/s', ""),
  350. 'priority' => input('priority/d', 0)
  351. ]);
  352. }
  353. exit(json_encode(array(
  354. 'code' => 0
  355. )));
  356. }
  357. public function delCate()
  358. {
  359. $id = input('id/d');
  360. $cate = SettleCateModel::where('id',$id)->select();
  361. $result = $cate->delete();
  362. if ($result){
  363. exit(json_encode(array(
  364. 'code' => 0,
  365. 'msg' => ""
  366. )));
  367. }
  368. exit(json_encode(array(
  369. 'code' => 1,
  370. 'msg' => "删除失败,请稍后重试"
  371. )));
  372. }
  373. }