소스 검색

first commit

wang jun 3 달 전
커밋
6e5d79e085
100개의 변경된 파일10330개의 추가작업 그리고 0개의 파일을 삭제
  1. 5 0
      .gitignore
  2. 42 0
      .travis.yml
  3. 32 0
      LICENSE.txt
  4. 129 0
      README.md
  5. 1 0
      application/.htaccess
  6. 353 0
      application/app/contronller/Headcheck.php
  7. 12 0
      application/command.php
  8. 12 0
      application/common.php
  9. 240 0
      application/config.php
  10. 53 0
      application/database.php
  11. 53 0
      application/database_use.php
  12. 14 0
      application/extra/queue.php
  13. 910 0
      application/index/controller/Checkinfo.php
  14. 114 0
      application/index/controller/Checkopr.php
  15. 96 0
      application/index/controller/Enterprise.php
  16. 215 0
      application/index/controller/Fileoper.php
  17. 76 0
      application/index/controller/Gmember.php
  18. 630 0
      application/index/controller/Headcheck.php
  19. 196 0
      application/index/controller/Index.php
  20. 31 0
      application/index/controller/Logmanger.php
  21. 100 0
      application/index/controller/Me.php
  22. 528 0
      application/index/controller/Project.php
  23. 108 0
      application/index/controller/Recuit.php
  24. 56 0
      application/index/controller/Settle.php
  25. 439 0
      application/index/controller/Test.php
  26. 37 0
      application/index/controller/Weblogin.php
  27. 786 0
      application/index/controller/Worker.php
  28. 277 0
      application/index/logic/checkmanger.php
  29. 300 0
      application/index/logic/contactlogic.php
  30. 23 0
      application/index/logic/errorCode.php
  31. 51 0
      application/index/logic/gmemberlogic.php
  32. 29 0
      application/index/logic/headmanger.php
  33. 89 0
      application/index/logic/paylogic.php
  34. 337 0
      application/index/logic/prjmanger.php
  35. 247 0
      application/index/logic/recuitlogic.php
  36. 35 0
      application/index/logic/settlelogic.php
  37. 19 0
      application/index/logic/webmanger.php
  38. 780 0
      application/index/logic/workercheck.php
  39. 636 0
      application/index/logic/workermanger.php
  40. 73 0
      application/index/logic/wxBizDataCrypt.php
  41. 45 0
      application/index/model/checkinfomodel.php
  42. 82 0
      application/index/model/checkoprmodel.php
  43. 35 0
      application/index/model/complainmodel.php
  44. 60 0
      application/index/model/contactmodel.php
  45. 361 0
      application/index/model/daycheckinfo.php
  46. 33 0
      application/index/model/daypricerecodemodel.php
  47. 42 0
      application/index/model/gcmodel.php
  48. 60 0
      application/index/model/ginfomodel.php
  49. 46 0
      application/index/model/gmembermodel.php
  50. 244 0
      application/index/model/gworkermodel.php
  51. 22 0
      application/index/model/indatarec.php
  52. 51 0
      application/index/model/inventrecmodel.php
  53. 17 0
      application/index/model/logmodel.php
  54. 37 0
      application/index/model/memodel.php
  55. 65 0
      application/index/model/noticemodel.php
  56. 31 0
      application/index/model/noticereadmodel.php
  57. 52 0
      application/index/model/paydetailmodel.php
  58. 41 0
      application/index/model/pinfomodel.php
  59. 55 0
      application/index/model/prjlocationmodel.php
  60. 108 0
      application/index/model/pwrelationmodel.php
  61. 61 0
      application/index/model/recuitawardmodel.php
  62. 71 0
      application/index/model/recuitmodel.php
  63. 45 0
      application/index/model/transfermodel.php
  64. 55 0
      application/index/model/uplogmodel.php
  65. 41 0
      application/index/model/userlocationhismodel.php
  66. 95 0
      application/index/model/userlocationmodel.php
  67. 22 0
      application/index/model/webusermodel.php
  68. 61 0
      application/index/model/wheadmodel.php
  69. 47 0
      application/index/model/workerindaymodel.php
  70. 29 0
      application/index/model/workersignmodel.php
  71. 37 0
      application/index/model/yearsettlemodel.php
  72. 21 0
      application/route.php
  73. 28 0
      application/tags.php
  74. 25 0
      build.php
  75. 39 0
      composer.json
  76. 2 0
      extend/.gitignore
  77. 0 0
      public/.htaccess
  78. BIN
      public/Uploads/20210506/46ff549e83095fe6f1b890d729ec4291.xlsx
  79. BIN
      public/Uploads/20210506/51183b6ed83dfa3e8655aaf2f282355b.xlsx
  80. BIN
      public/Uploads/20210506/eef3ef3579abee3eb6b88b7406281ef6.xlsx
  81. BIN
      public/Uploads/20210507/7780fbdaf329b2a43f030dec81f75309.xlsx
  82. BIN
      public/Uploads/20210507/a181f0077213f75e205b03d55c3d9b04.xlsx
  83. BIN
      public/Uploads/20210507/d8a5e2178f09f8916d4a705e1416e3ad.xlsx
  84. BIN
      public/Uploads/20210509/3bb0896c52822c45b7d146c1a53f8fe9.xlsx
  85. BIN
      public/Uploads/20210509/6228dc22d847a1ba05aade08efd91cf2.xlsx
  86. BIN
      public/Uploads/20210509/b1bb9da4f821623c0dfba3e6031be52b.xlsx
  87. BIN
      public/Uploads/20211030/555c2156f2c9fb449f105793e27330b1.xlsx
  88. BIN
      public/Uploads/20211030/af7f88db29b2135a0dfb959743abc674.xlsx
  89. BIN
      public/Uploads/20211030/cf9ae623a341baac8abfb1178cdc4a5f.xlsx
  90. BIN
      public/Uploads/20211102/fa31afb9924264515552c6658e2b65e0.xlsx
  91. BIN
      public/Uploads/20211124/ba9311bd0c70f3d838964b2ae16215b4.xlsx
  92. BIN
      public/Uploads/20211124/f9c082eb66a93767a645fd2b8200907d.xlsx
  93. BIN
      public/Uploads/20211222/5c65f1238974e7d3057deab9106fbf06.xlsx
  94. BIN
      public/Uploads/20220127/016755c42f11fcdafe790944fad1e8e9.xlsx
  95. BIN
      public/Uploads/20220127/835934b9f2ff1571300d75d9571aa244.xlsx
  96. BIN
      public/Uploads/20220128/316b0648010766498b6d7eaa8c6ae2e1.xlsx
  97. BIN
      public/Uploads/20220128/69d72912451bdd616a01d46d39277fbd.xlsx
  98. BIN
      public/Uploads/20220209/464625624dd1721879259020aa52d082.xlsx
  99. BIN
      public/Uploads/20220209/e311748a5bd2dec2ea8870d113ca95ef.xlsx
  100. BIN
      public/Uploads/20220211/7e2215a5dcbc335557295b3c197c95d6.xlsx

+ 5 - 0
.gitignore

@@ -0,0 +1,5 @@
+.idea
+composer.lock
+*.log
+thinkphp
+runtime

+ 42 - 0
.travis.yml

@@ -0,0 +1,42 @@
+sudo: false
+
+language: php
+
+branches:
+  only:
+    - stable
+
+cache:
+  directories:
+    - $HOME/.composer/cache
+
+before_install:
+  - composer self-update
+
+install:
+  - composer install --no-dev --no-interaction --ignore-platform-reqs
+  - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Core.zip .
+  - composer require --update-no-dev --no-interaction "topthink/think-image:^1.0"
+  - composer require --update-no-dev --no-interaction "topthink/think-migration:^1.0"
+  - composer require --update-no-dev --no-interaction "topthink/think-captcha:^1.0"
+  - composer require --update-no-dev --no-interaction "topthink/think-mongo:^1.0"
+  - composer require --update-no-dev --no-interaction "topthink/think-worker:^1.0"
+  - composer require --update-no-dev --no-interaction "topthink/think-helper:^1.0"
+  - composer require --update-no-dev --no-interaction "topthink/think-queue:^1.0"
+  - composer require --update-no-dev --no-interaction "topthink/think-angular:^1.0"
+  - composer require --dev --update-no-dev --no-interaction "topthink/think-testing:^1.0"
+  - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Full.zip .
+
+script:
+  - php think unit
+
+deploy:
+  provider: releases
+  api_key:
+    secure: TSF6bnl2JYN72UQOORAJYL+CqIryP2gHVKt6grfveQ7d9rleAEoxlq6PWxbvTI4jZ5nrPpUcBUpWIJHNgVcs+bzLFtyh5THaLqm39uCgBbrW7M8rI26L8sBh/6nsdtGgdeQrO/cLu31QoTzbwuz1WfAVoCdCkOSZeXyT/CclH99qV6RYyQYqaD2wpRjrhA5O4fSsEkiPVuk0GaOogFlrQHx+C+lHnf6pa1KxEoN1A0UxxVfGX6K4y5g4WQDO5zT4bLeubkWOXK0G51XSvACDOZVIyLdjApaOFTwamPcD3S1tfvuxRWWvsCD5ljFvb2kSmx5BIBNwN80MzuBmrGIC27XLGOxyMerwKxB6DskNUO9PflKHDPI61DRq0FTy1fv70SFMSiAtUv9aJRT41NQh9iJJ0vC8dl+xcxrWIjU1GG6+l/ZcRqVx9V1VuGQsLKndGhja7SQ+X1slHl76fRq223sMOql7MFCd0vvvxVQ2V39CcFKao/LB1aPH3VhODDEyxwx6aXoTznvC/QPepgWsHOWQzKj9ftsgDbsNiyFlXL4cu8DWUty6rQy8zT2b4O8b1xjcwSUCsy+auEjBamzQkMJFNlZAIUrukL/NbUhQU37TAbwsFyz7X0E/u/VMle/nBCNAzgkMwAUjiHM6FqrKKBRWFbPrSIixjfjkCnrMEPw=
+  file:
+    - ThinkPHP_Core.zip
+    - ThinkPHP_Full.zip
+  skip_cleanup: true
+  on:
+    tags: true

+ 32 - 0
LICENSE.txt

@@ -0,0 +1,32 @@
+
+ThinkPHP遵循Apache2开源协议发布,并提供免费使用。
+版权所有Copyright © 2006-2017 by ThinkPHP (http://thinkphp.cn)
+All rights reserved。
+ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
+
+Apache Licence是著名的非盈利开源组织Apache采用的协议。
+该协议和BSD类似,鼓励代码共享和尊重原作者的著作权,
+允许代码修改,再作为开源或商业软件发布。需要满足
+的条件: 
+1. 需要给代码的用户一份Apache Licence ;
+2. 如果你修改了代码,需要在被修改的文件中说明;
+3. 在延伸的代码中(修改和有源代码衍生的代码中)需要
+带有原来代码中的协议,商标,专利声明和其他原来作者规
+定需要包含的说明;
+4. 如果再发布的产品中包含一个Notice文件,则在Notice文
+件中需要带有本协议内容。你可以在Notice中增加自己的
+许可,但不可以表现为对Apache Licence构成更改。 
+具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.

+ 129 - 0
README.md

@@ -0,0 +1,129 @@
+ThinkPHP 5.0
+===============
+
+[![Total Downloads](https://poser.pugx.org/topthink/think/downloads)](https://packagist.org/packages/topthink/think)
+[![Latest Stable Version](https://poser.pugx.org/topthink/think/v/stable)](https://packagist.org/packages/topthink/think)
+[![Latest Unstable Version](https://poser.pugx.org/topthink/think/v/unstable)](https://packagist.org/packages/topthink/think)
+[![License](https://poser.pugx.org/topthink/think/license)](https://packagist.org/packages/topthink/think)
+
+ThinkPHP5在保持快速开发和大道至简的核心理念不变的同时,PHP版本要求提升到5.4,对已有的CBD模式做了更深的强化,优化核心,减少依赖,基于全新的架构思想和命名空间实现,是ThinkPHP突破原有框架思路的颠覆之作,其主要特性包括:
+
+ + 基于命名空间和众多PHP新特性
+ + 核心功能组件化
+ + 强化路由功能
+ + 更灵活的控制器
+ + 重构的模型和数据库类
+ + 配置文件可分离
+ + 重写的自动验证和完成
+ + 简化扩展机制
+ + API支持完善
+ + 改进的Log类
+ + 命令行访问支持
+ + REST支持
+ + 引导文件支持
+ + 方便的自动生成定义
+ + 真正惰性加载
+ + 分布式环境支持
+ + 更多的社交类库
+
+> ThinkPHP5的运行环境要求PHP5.4以上。
+
+详细开发文档参考 [ThinkPHP5完全开发手册](http://www.kancloud.cn/manual/thinkphp5)
+
+## 目录结构
+
+初始的目录结构如下:
+
+~~~
+www  WEB部署目录(或者子目录)
+├─application           应用目录
+│  ├─common             公共模块目录(可以更改)
+│  ├─module_name        模块目录
+│  │  ├─config.php      模块配置文件
+│  │  ├─common.php      模块函数文件
+│  │  ├─controller      控制器目录
+│  │  ├─model           模型目录
+│  │  ├─view            视图目录
+│  │  └─ ...            更多类库目录
+│  │
+│  ├─command.php        命令行工具配置文件
+│  ├─common.php         公共函数文件
+│  ├─config.php         公共配置文件
+│  ├─route.php          路由配置文件
+│  ├─tags.php           应用行为扩展定义文件
+│  └─database.php       数据库配置文件
+│
+├─public                WEB目录(对外访问目录)
+│  ├─index.php          入口文件
+│  ├─router.php         快速测试文件
+│  └─.htaccess          用于apache的重写
+│
+├─thinkphp              框架系统目录
+│  ├─lang               语言文件目录
+│  ├─library            框架类库目录
+│  │  ├─think           Think类库包目录
+│  │  └─traits          系统Trait目录
+│  │
+│  ├─tpl                系统模板目录
+│  ├─base.php           基础定义文件
+│  ├─console.php        控制台入口文件
+│  ├─convention.php     框架惯例配置文件
+│  ├─helper.php         助手函数文件
+│  ├─phpunit.xml        phpunit配置文件
+│  └─start.php          框架入口文件
+│
+├─extend                扩展类库目录
+├─runtime               应用的运行时目录(可写,可定制)
+├─vendor                第三方类库目录(Composer依赖库)
+├─build.php             自动生成定义文件(参考)
+├─composer.json         composer 定义文件
+├─LICENSE.txt           授权说明文件
+├─README.md             README 文件
+├─think                 命令行入口文件
+~~~
+
+> router.php用于php自带webserver支持,可用于快速测试
+> 切换到public目录后,启动命令:php -S localhost:8888  router.php
+> 上面的目录结构和名称是可以改变的,这取决于你的入口文件和配置参数。
+
+## 命名规范
+
+`ThinkPHP5`遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范:
+
+### 目录和文件
+
+*   目录不强制规范,驼峰和小写+下划线模式均支持;
+*   类库、函数文件统一以`.php`为后缀;
+*   类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;
+*   类名和类文件名保持一致,统一采用驼峰法命名(首字母大写);
+
+### 函数和类、属性命名
+*   类的命名采用驼峰法,并且首字母大写,例如 `User`、`UserType`,默认不需要添加后缀,例如`UserController`应该直接命名为`User`;
+*   函数的命名使用小写字母和下划线(小写字母开头)的方式,例如 `get_client_ip`;
+*   方法的命名使用驼峰法,并且首字母小写,例如 `getUserName`;
+*   属性的命名使用驼峰法,并且首字母小写,例如 `tableName`、`instance`;
+*   以双下划线“__”打头的函数或方法作为魔法方法,例如 `__call` 和 `__autoload`;
+
+### 常量和配置
+*   常量以大写字母和下划线命名,例如 `APP_PATH`和 `THINK_PATH`;
+*   配置参数以小写字母和下划线命名,例如 `url_route_on` 和`url_convert`;
+
+### 数据表和字段
+*   数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 `think_user` 表和 `user_name`字段,不建议使用驼峰和中文作为数据表字段命名。
+
+## 参与开发
+请参阅 [ThinkPHP5 核心框架包](https://github.com/top-think/framework)。
+
+## 版权信息
+
+ThinkPHP遵循Apache2开源协议发布,并提供免费使用。
+
+本项目包含的第三方源码和二进制文件之版权信息另行标注。
+
+版权所有Copyright © 2006-2017 by ThinkPHP (http://thinkphp.cn)
+
+All rights reserved。
+
+ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
+
+更多细节参阅 [LICENSE.txt](LICENSE.txt)

+ 1 - 0
application/.htaccess

@@ -0,0 +1 @@
+deny from all

+ 353 - 0
application/app/contronller/Headcheck.php

@@ -0,0 +1,353 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/14
+ * Time: 14:45
+ */
+
+namespace app\app\controller;
+use app\index\logic\checkmanger;
+use app\index\logic\workercheck;
+use think\Controller;
+
+class Headcheck extends Controller{
+    /*
+     * 20200304
+     * edit
+     * 返回cprojectid,作为pid
+     */
+    public function getgid(){
+        $userinfo = request() -> param();
+
+        $logicworker=new workercheck();
+        $res=$logicworker->isheaderbytel($userinfo['tel']);
+        $res_r['msg']="成功";
+        if ($res['r_code']===0){
+            $res_r['msg']='非员工';
+        }
+        if ($res['r_code']===9902){
+            $res_r['msg']='非班组长';
+        }
+
+        $res_r['code']=200;
+        $res_r['data']=$res;
+
+        return json_encode($res_r,320);
+    }
+
+    public function getshift(){
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+       $res=$logicworker->getshiftbywid($userinfo['wid']);
+
+        $res_r['code']=200;
+        $res_r['resultData']=$res;
+        return json_encode($res_r);
+    }
+/*
+ * 20200729
+ */
+    public function getshiftwithcount(){
+
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+       $res=$logicworker->getshiftandcountbywid($userinfo['wid'],$userinfo['gid']);
+
+        $res_r['code']=200;
+        $res_r['resultData']=$res;
+        return json_encode($res_r);
+    }
+
+    /*
+     * 获取七天的日期
+     */
+    public function getshiftdate(){
+        //$userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $res=$logicworker->getcheckdate();
+       // $res=$logicworker->getshiftbywid($userinfo['wid']);
+        $res_r['code']=200;
+        $res_r['resultData']=$res;
+        return json_encode($res_r);
+    }
+
+    /*20210504
+ * 获取七天的日期,以及相应的数据
+ */
+    public function getshiftdatecheckinfo(){
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $res=$logicworker->getcheckdate();
+        // $res=$logicworker->getshiftbywid($userinfo['wid']);
+        $l_opr=new checkmanger();
+        foreach($res as &$date){
+            $recordinfo=$l_opr->getheadcheckoprwithdate($userinfo['wid'],$date['date']);
+            if(!empty($recordinfo)){
+                $date['checkoprlist']=$recordinfo;
+            }else{
+                $date['checkoprlist']=array();
+            }
+
+        }
+        $res_r['code']=200;
+        $res_r['resultData']=$res;
+        return json_encode($res_r,320);
+    }
+/*
+ * 20200304
+ * 增加了一个wid参数,
+ * @todo 因为前端未上线,所以后端的新参数先进行判断,并给默认值,待前端上线后再修改
+ */
+    public function getworkerlist(){
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $shift=$userinfo['shift'];
+        $checkdate=$userinfo['checkdate'];
+        $gid=$userinfo['gid'];
+        //todo 前端上线后取消判断和默认值
+        if (array_key_exists('wid',$userinfo)){
+            $wid=$userinfo['wid'];
+        }else{
+            $wid=0;
+        }
+        $res=$logicworker->getworkerlistbyhead($gid,$checkdate,$shift,$wid);
+        $res_r['code']=200;
+        $res_r['resultData']=$res;
+        return json_encode($res_r,320);
+    }
+
+    public function savechecklist(){
+        //
+        $userinfo = request() -> param();
+    //   var_dump($userinfo);
+       // $checklist=json_decode($userinfo['checklist'],true);
+       // $checklist=json_decode($userinfo['checklist']);
+       // $checklist=array();
+        $userinfo['checklist']=htmlspecialchars_decode($userinfo['checklist']);
+        $checklist=json_decode($userinfo['checklist'],true);
+//        var_dump($checklist1);
+//        $checklist=$userinfo['checklist'];
+       // var_dump($checklist);
+        $checkoprinfo['checkdate']=$userinfo['checkdate'];
+        $checkoprinfo['checkorder']=$userinfo['checkorder'];
+        $checkoprinfo['headid']=$userinfo['headid'];
+        if (array_key_exists('gid',$userinfo)){
+            $checkoprinfo['gid']=$userinfo['gid'];
+        }else{
+            $checkoprinfo['gid']=0;
+        }
+        $checkoprinfo['isopr']=1;
+
+        for($i=0;$i<count($checklist);$i++){
+            $checklist[$i]['oprtime']=date('Y:m:d H:i:s');
+        }
+
+        $logicworker=new workercheck();
+//        $scount=$logicworker->oprcheckinfo($checklist,$checkoprinfo);
+//        $res_r['code']=200;
+//        $res_r['resultData']=$scount;
+
+        $scount=$logicworker->savedaycheckinfo($checklist,$checkoprinfo);
+        $res_r['code']=200;
+        $res_r['resultData']=$scount;
+        return json_encode($res_r);
+
+    }
+
+    /*
+     * 2020215 此方法待修改,增加月参数,按月获取,不改此接口,但增加一个,封闭开放原则
+     */
+    public function getusercheckrecord(){
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $wid=$userinfo['wid'];
+        $r_list=$logicworker->getworkercheckinfobyid($wid);
+        $res_r['code']=200;
+        $res_r['resultData']=$r_list;
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+ * 2020215 按封闭开放原则,增加一个按月获取工人记工详情的控制,原控制逻辑暂停
+ */
+    public function getusercheckrecordwihtmonth(){
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $wid=$userinfo['wid'];
+        $strmonth=$userinfo['strmonth'];
+        $r_list=$logicworker->getworkercheckinfobyidwithmonth($wid,$strmonth);
+        $res_r['code']=200;
+        $res_r['resultData']=$r_list;
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200208
+     * steelxu
+     * 取消考勤记录
+     */
+    public function revokecheck(){
+        $userinfo = request() -> param();
+        $logiccheck=new checkmanger();
+
+        $result=$logiccheck->invokecheckbywid($userinfo);
+        if (!$result){
+            $res_r['code']=0;
+            $res_r['resultData']=$result;
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$result;
+        }
+
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200208
+     * steelxu
+     * 获取某班工长记工的记录
+     */
+
+    public function getlistbyheadwithshift(){
+        $userinfo = request() -> param();
+        $logiccheck=new checkmanger();
+
+        $result=$logiccheck->getheadoprwithshift($userinfo);
+        if (!$result){
+            $res_r['code']=0;
+            $res_r['resultData']=$result;
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$result;
+        }
+
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200215
+     * steelxu
+     * 获取按月汇总的记录,应用于工人用APP查看自己的记录
+     */
+
+    public function getchecktotallistbymonth(){
+        $queryinfo=request()->param();
+        $logicworker=new workercheck();
+        $wid=$queryinfo['wid'];
+        $r_list=$logicworker->gettotallistbywid($wid);
+        $res_r['code']=200;
+        $res_r['resultData']=$r_list;
+
+        return json_encode($res_r,320);
+
+
+    }
+
+    /*
+     * 20200317
+     * 响应分班组数据
+     */
+
+    public function queryscoredetailbyidwithmonth(){
+        $queryinfo=request()->param();
+        $l_wcheck=new workercheck();
+        $rlist=$l_wcheck->getScoreGroupbyWidWithMonth($queryinfo);
+
+        if (!$rlist){
+            $res_r['code']=0;
+            $res_r['resultData']=$rlist;
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$rlist;
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200531
+     * WEB端根据项目,请求员工
+     */
+    public function queryuncheckworklist(){
+        $queryinfo=request()->param();
+        $logicworker=new workercheck();
+        $wlist=$logicworker->getunchecklist($queryinfo);
+        if (!$wlist){
+            $res_r['code']=0;
+            $res_r['resultData']='';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$wlist;
+        }
+
+        return json_encode($res_r,320);
+
+    }
+
+
+    /*
+     * 20210421
+     * 提交投诉
+     */
+    public function subcomplain(){
+        $queryinfo=request()->param();
+        $l_wcheck=new workercheck();
+        $rid=$l_wcheck->savecomplaininf($queryinfo);
+
+        if (!$rid){
+            $res_r['code']=0;
+            $res_r['resultData']='提交失败';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$rid;
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20210421
+     */
+    public function querycomplainlist(){
+
+        $l_wcheck=new workercheck();
+        $list=$l_wcheck->getcomplainlist();
+
+        if (!$list){
+            $res_r['code']=0;
+            $res_r['resultData']='提交失败';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$list;
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230215
+     * 只能获取本公司的投诉
+     * getcomplainlistbycid
+     */
+    public function querycomplainlistbycid(){
+        $queryinfo=request()->param();
+        $l_wcheck=new workercheck();
+        $list=$l_wcheck->getcomplainlistbycid($queryinfo);
+
+        if (!$list){
+            $res_r['code']=0;
+            $res_r['resultData']='无数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$list;
+        }
+
+        return json_encode($res_r,320);
+    }
+
+}

+ 12 - 0
application/command.php

@@ -0,0 +1,12 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: yunwuxin <448901948@qq.com>
+// +----------------------------------------------------------------------
+
+return [];

+ 12 - 0
application/common.php

@@ -0,0 +1,12 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: 流年 <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+// 应用公共文件

+ 240 - 0
application/config.php

@@ -0,0 +1,240 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+return [
+    // +----------------------------------------------------------------------
+    // | 应用设置
+    // +----------------------------------------------------------------------
+
+    // 应用调试模式
+    'app_debug' => true,
+    // 应用Trace
+    'app_trace' => false,
+    // 应用模式状态
+    'app_status' => '',
+    // 是否支持多模块
+    'app_multi_module' => true,
+    // 入口自动绑定模块
+    'auto_bind_module' => false,
+    // 注册的根命名空间
+    'root_namespace' => [],
+    // 扩展函数文件
+    'extra_file_list' => [THINK_PATH . 'helper' . EXT],
+    // 默认输出类型
+    'default_return_type' => 'html',
+    // 默认AJAX 数据返回格式,可选json xml ...
+    'default_ajax_return' => 'json',
+    // 默认JSONP格式返回的处理方法
+    'default_jsonp_handler' => 'jsonpReturn',
+    // 默认JSONP处理方法
+    'var_jsonp_handler' => 'callback',
+    // 默认时区
+    'default_timezone' => 'PRC',
+    // 是否开启多语言
+    'lang_switch_on' => false,
+    // 默认全局过滤方法 用逗号分隔多个
+    'default_filter' => 'htmlspecialchars,addslashes,strip_tags',
+    // 默认语言
+    'default_lang' => 'zh-cn',
+    // 应用类库后缀
+    'class_suffix' => false,
+    // 控制器类后缀
+    'controller_suffix' => false,
+
+    // +----------------------------------------------------------------------
+    // | 模块设置
+    // +----------------------------------------------------------------------
+
+    // 默认模块名
+    'default_module' => 'index',
+    // 禁止访问模块
+    'deny_module_list' => ['common'],
+    // 默认控制器名
+    'default_controller' => 'Index',
+    // 默认操作名
+    'default_action' => 'index',
+    // 默认验证器
+    'default_validate' => '',
+    // 默认的空控制器名
+    'empty_controller' => 'Error',
+    // 操作方法后缀
+    'action_suffix' => '',
+    // 自动搜索控制器
+    'controller_auto_search' => false,
+
+    // +----------------------------------------------------------------------
+    // | URL设置
+    // +----------------------------------------------------------------------
+
+    // PATHINFO变量名 用于兼容模式
+    'var_pathinfo' => 's',
+    // 兼容PATH_INFO获取
+    'pathinfo_fetch' => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'],
+    // pathinfo分隔符
+    'pathinfo_depr' => '/',
+    // URL伪静态后缀
+    'url_html_suffix' => 'html',
+    // URL普通方式参数 用于自动生成
+    'url_common_param' => false,
+    // URL参数方式 0 按名称成对解析 1 按顺序解析
+    'url_param_type' => 0,
+    // 是否开启路由
+    'url_route_on' => true,
+    // 路由使用完整匹配
+    'route_complete_match' => false,
+    // 路由配置文件(支持配置多个)
+    'route_config_file' => ['route'],
+    // 是否强制使用路由
+    'url_route_must' => false,
+    // 域名部署
+    'url_domain_deploy' => false,
+    // 域名根,如thinkphp.cn
+    'url_domain_root' => '',
+    // 是否自动转换URL中的控制器和操作名
+    'url_convert' => true,
+    // 默认的访问控制器层
+    'url_controller_layer' => 'controller',
+    // 表单请求类型伪装变量
+    'var_method' => '_method',
+    // 表单ajax伪装变量
+    'var_ajax' => '_ajax',
+    // 表单pjax伪装变量
+    'var_pjax' => '_pjax',
+    // 是否开启请求缓存 true自动缓存 支持设置请求缓存规则
+    'request_cache' => false,
+    // 请求缓存有效期
+    'request_cache_expire' => null,
+    // 全局请求缓存排除规则
+    'request_cache_except' => [],
+
+    // +----------------------------------------------------------------------
+    // | 模板设置
+    // +----------------------------------------------------------------------
+
+    'template' => [
+        // 模板引擎类型 支持 php think 支持扩展
+        'type' => 'Think',
+        // 模板路径
+        'view_path' => '',
+        // 模板后缀
+        'view_suffix' => 'html',
+        // 模板文件名分隔符
+        'view_depr' => DS,
+        // 模板引擎普通标签开始标记
+        'tpl_begin' => '{',
+        // 模板引擎普通标签结束标记
+        'tpl_end' => '}',
+        // 标签库标签开始标记
+        'taglib_begin' => '{',
+        // 标签库标签结束标记
+        'taglib_end' => '}',
+    ],
+
+    // 视图输出字符串内容替换
+    'view_replace_str' => [],
+    // 默认跳转页面对应的模板文件
+    'dispatch_success_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
+    'dispatch_error_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
+
+    // +----------------------------------------------------------------------
+    // | 异常及错误设置
+    // +----------------------------------------------------------------------
+
+    // 异常页面的模板文件
+    'exception_tmpl' => THINK_PATH . 'tpl' . DS . 'think_exception.tpl',
+
+    // 错误显示信息,非调试模式有效
+    'error_message' => '页面错误!请稍后再试~',
+    // 显示错误信息
+    'show_error_msg' => false,
+    // 异常处理handle类 留空使用 \think\exception\Handle
+    'exception_handle' => '',
+
+    // +----------------------------------------------------------------------
+    // | 日志设置
+    // +----------------------------------------------------------------------
+
+    'log' => [
+        // 日志记录方式,内置 file socket 支持扩展
+        'type' => 'File',
+        // 日志保存目录
+        'path' => LOG_PATH,
+        // 日志记录级别
+        'level' => [],
+    ],
+
+    // +----------------------------------------------------------------------
+    // | Trace设置 开启 app_trace 后 有效
+    // +----------------------------------------------------------------------
+    'trace' => [
+        // 内置Html Console 支持扩展
+        'type' => 'Html',
+    ],
+
+    // +----------------------------------------------------------------------
+    // | 缓存设置
+    // +----------------------------------------------------------------------
+
+    'cache' => [
+        // 驱动方式
+        'type' => 'File',
+        // 缓存保存目录
+        'path' => CACHE_PATH,
+        // 缓存前缀
+        'prefix' => '',
+        // 缓存有效期 0表示永久缓存
+        'expire' => 0,
+    ],
+
+    // +----------------------------------------------------------------------
+    // | 会话设置
+    // +----------------------------------------------------------------------
+
+    'session' => [
+        'id' => '',
+        // SESSION_ID的提交变量,解决flash上传跨域
+        'var_session_id' => '',
+        // SESSION 前缀
+        'prefix' => 'think',
+        // 驱动方式 支持redis memcache memcached
+        'type' => '',
+        // 是否自动开启 SESSION
+        'auto_start' => true,
+    ],
+
+    // +----------------------------------------------------------------------
+    // | Cookie设置
+    // +----------------------------------------------------------------------
+    'cookie' => [
+        // cookie 名称前缀
+        'prefix' => '',
+        // cookie 保存时间
+        'expire' => 0,
+        // cookie 保存路径
+        'path' => '/',
+        // cookie 有效域名
+        'domain' => '',
+        //  cookie 启用安全传输
+        'secure' => false,
+        // httponly设置
+        'httponly' => '',
+        // 是否使用 setcookie
+        'setcookie' => true,
+    ],
+
+    //分页配置
+    'paginate' => [
+        'type' => 'bootstrap',
+        'var_page' => 'page',
+        'list_rows' => 15,
+    ],
+
+];

+ 53 - 0
application/database.php

@@ -0,0 +1,53 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+return [
+    // 数据库类型
+    'type' => 'mysql',
+    // 服务器地址
+    'hostname' => '', //'127.0.0.1',//
+    // 数据库名
+    'database' => '',
+    // 用户名
+    'username' => '', //root
+    // 密码
+    'password' => '', // 'root',
+    // 端口
+    'hostport' => '3306',
+    // 连接dsn
+    'dsn' => '',
+    // 数据库连接参数
+    'params' => [],
+    // 数据库编码默认采用utf8
+    'charset' => 'utf8',
+    // 数据库表前缀
+    'prefix' => '',
+    // 数据库调试模式
+    'debug' => true,
+    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
+    'deploy' => 0,
+    // 数据库读写是否分离 主从式有效
+    'rw_separate' => false,
+    // 读写分离后 主服务器数量
+    'master_num' => 1,
+    // 指定从服务器序号
+    'slave_no' => '',
+    // 是否严格检查字段是否存在
+    'fields_strict' => true,
+    // 数据集返回类型
+    'resultset_type' => 'array',
+    // 自动写入时间戳字段
+    'auto_timestamp' => false,
+    // 时间字段取出后的默认时间格式
+    'datetime_format' => 'Y-m-d H:i:s',
+    // 是否需要进行SQL性能分析
+    'sql_explain' => false,
+];

+ 53 - 0
application/database_use.php

@@ -0,0 +1,53 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+return [
+    // 数据库类型
+    'type'            => 'mysql',
+    // 服务器地址
+    'hostname'        =>'42.193.106.113',//'127.0.0.1',//
+    // 数据库名
+    'database'        => 'workercheck',
+    // 用户名
+    'username'        => 'workercheck',//root
+    // 密码
+    'password'        =>'Sy^checker!1234',// 'root',
+    // 端口
+    'hostport'        => '3306',
+    // 连接dsn
+    'dsn'             => '',
+    // 数据库连接参数
+    'params'          => [],
+    // 数据库编码默认采用utf8
+    'charset'         => 'utf8',
+    // 数据库表前缀
+    'prefix'          => '',
+    // 数据库调试模式
+    'debug'           => true,
+    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
+    'deploy'          => 0,
+    // 数据库读写是否分离 主从式有效
+    'rw_separate'     => false,
+    // 读写分离后 主服务器数量
+    'master_num'      => 1,
+    // 指定从服务器序号
+    'slave_no'        => '',
+    // 是否严格检查字段是否存在
+    'fields_strict'   => true,
+    // 数据集返回类型
+    'resultset_type'  => 'array',
+    // 自动写入时间戳字段
+    'auto_timestamp'  => false,
+    // 时间字段取出后的默认时间格式
+    'datetime_format' => 'Y-m-d H:i:s',
+    // 是否需要进行SQL性能分析
+    'sql_explain'     => false,
+];

+ 14 - 0
application/extra/queue.php

@@ -0,0 +1,14 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: yunwuxin <448901948@qq.com>
+// +----------------------------------------------------------------------
+
+return [
+    'connector' => 'Sync'
+];

+ 910 - 0
application/index/controller/Checkinfo.php

@@ -0,0 +1,910 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/2/6
+ * Time: 23:29
+ */
+
+namespace app\index\controller;
+use app\index\logic\checkmanger;
+use app\index\logic\contactlogic;
+use app\index\logic\recuitlogic;
+use think\Controller;
+
+class Checkinfo extends Controller{
+    /*
+* 20200302
+* steelxu
+* 标准输出检查找包
+* 测试成功后,再看是做到扩展的基础类,还是
+*/
+    public function stdout($arr){
+        $res_r=array();
+        if (empty($arr)){
+            $res_r['code']=0;
+            $res_r['msg']='无数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$arr;
+        }
+
+        return $res_r;
+    }
+    /*
+     * web端获取按月按人统计出勤天数,出勤总分的接口
+     * 20200206
+     * steelxu
+     */
+    public function summonthcheckinfo(){
+        $queryinfo=request() -> param();
+        //预处理奖励数据
+        $l_r=new recuitlogic();
+        $l_r->oprrecuitaward();
+        $l_check=new checkmanger();
+        $r_list=$l_check->getsumcheckinfo($queryinfo);
+
+        if (empty($r_list)){
+            $res_r['code']=0;
+            $res_r['errmsg']='无汇总数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$r_list;
+        }
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230215
+     * 统计本公司考勤
+     */
+    public function sumcompanymonthcheckinfo(){
+        $queryinfo=request() -> param();
+        //预处理奖励数据
+        $l_r=new recuitlogic();
+        $l_r->oprrecuitaward();
+        $l_check=new checkmanger();
+        $r_list=$l_check->getsumcompanycheckinfo($queryinfo);
+
+        if (empty($r_list)){
+            $res_r['code']=0;
+            $res_r['errmsg']='无汇总数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$r_list;
+        }
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 考勤汇总信息导出execl
+     * 20200210
+     * steelxu
+     * 20203005
+     * 加身份证号
+     */
+
+    //
+    public function outtoexecl(){
+        //获取传入参数
+
+        $queryinfo=$queryinfo=request() -> param();
+        //预处理奖励数据
+        $l_r=new recuitlogic();
+        $l_r->oprrecuitaward();
+        $month=$queryinfo['monthinfo'];
+        $year=$queryinfo['yearinfo'];
+        //获取数据
+        $l_check=new checkmanger();
+        $r_list=$l_check->getsumcheckinfo($queryinfo);
+       //获取当用天数
+       $daysofm=date('t', strtotime($year.'-'.$month.'-1'));
+
+        //加载类库
+        vendor('PHPExcel.PHPExcel');
+        $objPHPExcel = new \PHPExcel();
+        //4.激活当前的sheet表
+        $objPHPExcel->setActiveSheetIndex(0);
+        //5.设置表格头(即excel表格的第一行)
+        $objPHPExcel->setActiveSheetIndex(0)
+            ->setCellValue('A1', 'ID')
+            ->setCellValue('B1', '姓名')
+            ->setCellValue('C1', '记工天数')
+            ->setCellValue('D1','当月计分')
+            ->setCellValue('E1','身份证号');
+        for ($j=1; $j<=$daysofm;$j++){
+            $columnname=strval($j);
+            if (strlen($columnname)<2){
+                $columnname='0'.$columnname;
+            }
+            $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+4);
+            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1',$columnname);
+        }
+        $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($daysofm+5);
+        $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1','推荐奖励');
+
+        //设置A列水平居中
+        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        //设置单元格宽度
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(8);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(12);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(12);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(12);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
+        //6.循环刚取出来的数组,将数据逐一添加到excel表格。
+        for($i=0;$i<count($r_list);$i++){
+            $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$r_list[$i]['wid']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$r_list[$i]['wname']);//名称
+            $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$r_list[$i]['daycount']);//说明
+            $objPHPExcel->getActiveSheet()->setCellValue('D'.($i+2),$r_list[$i]['monthsum']);//说明
+            $objPHPExcel->getActiveSheet()->setCellValue('E'.($i+2),"'".$r_list[$i]['sfz']);//说明
+            for ($j=1; $j<=$daysofm;$j++){
+                $fname=strval($j);
+                if (strlen($fname)<2){
+                    $fname='0'.$fname;
+                }
+                //$eecll=new \PHPExcel_Cell()
+                $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+4);
+                $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($i+2),(array_key_exists($fname,$r_list[$i])?$r_list[$i][$fname]:'-'));//说明
+            }
+            $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($daysofm+5);
+            $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($i+2),$r_list[$i]['sumaward']);//说明
+
+        }
+        //7.设置保存的Excel表格名称
+        $filename = $year.'年'.$month.'月考勤统计表'.date('ymd',time()).'.xls';
+        //8.设置当前激活的sheet表格名称;
+        $objPHPExcel->getActiveSheet()->setTitle('考勤信息'.$year.'年'.$month.'月');
+        //9.设置浏览器窗口下载表格
+        header("Content-Type: application/force-download");
+        header("Content-Type: application/octet-stream");
+        header("Content-Type: application/download");
+        header('Content-Disposition:inline;filename="'.$filename.'"');
+        //生成excel文件
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        //下载文件在浏览器窗口
+        $objWriter->save('php://output');
+        //原代码没有返回
+        $res_r['code']=200;
+        $res_r['resultData']=$filename;
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230215
+     */
+    public function outcompanytoexecl(){
+        //获取传入参数
+
+        $queryinfo=$queryinfo=request() -> param();
+        //预处理奖励数据
+        $l_r=new recuitlogic();
+        $l_r->oprrecuitaward();
+        $month=$queryinfo['monthinfo'];
+        $year=$queryinfo['yearinfo'];
+        $cid=$queryinfo['companyid'];
+        //获取数据
+        $l_check=new checkmanger();
+        $r_list=$l_check->getsumcompanycheckinfo($queryinfo);
+        //获取当用天数
+        $daysofm=date('t', strtotime($year.'-'.$month.'-1'));
+
+        //加载类库
+        vendor('PHPExcel.PHPExcel');
+        $objPHPExcel = new \PHPExcel();
+        //4.激活当前的sheet表
+        $objPHPExcel->setActiveSheetIndex(0);
+        //5.设置表格头(即excel表格的第一行)
+        $objPHPExcel->setActiveSheetIndex(0)
+            ->setCellValue('A1', 'ID')
+            ->setCellValue('B1', '姓名')
+            ->setCellValue('C1', '记工天数')
+            ->setCellValue('D1','当月计分')
+            ->setCellValue('E1','身份证号');
+        for ($j=1; $j<=$daysofm;$j++){
+            $columnname=strval($j);
+            if (strlen($columnname)<2){
+                $columnname='0'.$columnname;
+            }
+            $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+4);
+            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1',$columnname);
+        }
+        $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($daysofm+5);
+        $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1','推荐奖励');
+
+        //设置A列水平居中
+        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        //设置单元格宽度
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(8);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(12);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(12);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(12);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
+        //6.循环刚取出来的数组,将数据逐一添加到excel表格。
+        for($i=0;$i<count($r_list);$i++){
+            $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$r_list[$i]['wid']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$r_list[$i]['wname']);//名称
+            $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$r_list[$i]['daycount']);//说明
+            $objPHPExcel->getActiveSheet()->setCellValue('D'.($i+2),$r_list[$i]['monthsum']);//说明
+            if(array_key_exists('sfz',$r_list[$i])){
+                $objPHPExcel->getActiveSheet()->setCellValue('E'.($i+2),"'".$r_list[$i]['sfz']);//说明
+            }
+
+            for ($j=1; $j<=$daysofm;$j++){
+                $fname=strval($j);
+                if (strlen($fname)<2){
+                    $fname='0'.$fname;
+                }
+                //$eecll=new \PHPExcel_Cell()
+                $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+4);
+                $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($i+2),(array_key_exists($fname,$r_list[$i])?$r_list[$i][$fname]:'-'));//说明
+            }
+            $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($daysofm+5);
+            $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($i+2),$r_list[$i]['sumaward']);//说明
+
+        }
+        //7.设置保存的Excel表格名称
+        $filename = $year.'年'.$month.'月考勤统计表'.date('ymd',time()).'.xls';
+        //8.设置当前激活的sheet表格名称;
+        $objPHPExcel->getActiveSheet()->setTitle('考勤信息'.$year.'年'.$month.'月');
+        //9.设置浏览器窗口下载表格
+        header("Content-Type: application/force-download");
+        header("Content-Type: application/octet-stream");
+        header("Content-Type: application/download");
+        header('Content-Disposition:inline;filename="'.$filename.'"');
+        //生成excel文件
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        //下载文件在浏览器窗口
+        $objWriter->save('php://output');
+        //原代码没有返回
+        $res_r['code']=200;
+        $res_r['resultData']=$filename;
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200307
+     * 做一个加班请求
+     */
+
+    public function queryworkovertime(){
+        $queryinfo=request() -> param();
+
+        $pagenum=$queryinfo['pageNum'];
+        $pagesize=$queryinfo['pageSize'];
+        $l_check=new checkmanger();
+        $rlist=$l_check->getworkovertime($pagenum,$pagesize);
+
+        return json_encode($this->stdout($rlist),320);
+    }
+
+    /*
+     *
+     * 20230215
+     * 修改请求加班记录的功能
+     * 只能请求本公司的数据
+     */
+    public function querycompanyworkovertime(){
+        $queryinfo=request() -> param();
+
+        $pagenum=$queryinfo['pageNum'];
+        $pagesize=$queryinfo['pageSize'];
+        $cid=$queryinfo['companyid'];
+        $l_check=new checkmanger();
+        $rlist=$l_check->getworkovertimebycid($pagenum,$pagesize,$cid);
+
+        return json_encode($this->stdout($rlist),320);
+    }
+    /*
+     * 20200310
+     * 请求各合同下各班组的月度统计
+     */
+    public function queryglistmonthsum(){
+        $queryinfo=request() -> param();
+        $l_contact=new contactlogic();
+        $gsumlist=$l_contact->getgroupsumbycid($queryinfo);
+       // print_r($gsumlist);
+//        var_dump($gsumlist);
+//       if (array_key_exists('0',$gsumlist)){
+//           $r_list=$gsumlist[0]->data;
+//       }else{
+//           $r_list=$gsumlist;
+//       }
+//        var_dump($r_list);
+        return json_encode($this->stdout($gsumlist),320);
+    }
+
+    /*
+     * 20200316
+     * w合同下班组统计,到个人
+     * getworkersumbycid
+     */
+    public function querywlistsummonth(){
+        $queryinfo=request() -> param();
+        $l_contact=new contactlogic();
+        $gsumlist=$l_contact->getworkersumbycid($queryinfo);
+        return json_encode($this->stdout($gsumlist),320);
+    }
+
+    /*
+     * 20200318
+     * 导出按合同汇总考勤数据
+     */
+
+    public function workersumtoexecl(){
+        //获取数据
+         $queryinfo=request() -> param();
+        $yearinfo=$queryinfo['yearinfo'];
+        $monthinfo=$queryinfo['monthinfo'];
+        $cname=$queryinfo['cname'];
+        $l_contact=new contactlogic();
+        //获取当用天数
+        $daysofm=date('t', strtotime( $yearinfo.'-'.$monthinfo.'-1'));
+        $gsumlist=$l_contact->getworkersumbycid($queryinfo);
+
+        //加载类库
+        vendor('PHPExcel.PHPExcel');
+        $objPHPExcel = new \PHPExcel();
+        //4.激活当前的sheet表
+        $objPHPExcel->setActiveSheetIndex(0);
+        //5.设置表格头(即excel表格的第一行)
+        $objPHPExcel->setActiveSheetIndex(0)
+            ->setCellValue('A1', '班组/工人')
+            ->setCellValue('B1', '当月总记分');
+        for ($j=1; $j<=$daysofm;$j++){
+            $columnname=strval($j);
+            if (strlen($columnname)<2){
+                $columnname='0'.$columnname;
+            }
+            $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+2);
+            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1',$columnname);
+        }
+        //设置A列水平居中
+        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        //设置单元格宽度
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(15);
+        //6.循环刚取出来的数组,将数据逐一添加到excel表格。
+        $rowindex=0;
+        for($i=0;$i<count($gsumlist);$i++){
+            //班组汇总信息
+            $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['gname']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['summonth']);//名称
+            for ($j=1; $j<=$daysofm;$j++){
+          //  for ($j=13; $j<=16;$j++){//测试临时
+                $daystr=strval($j);
+                if (strlen($daystr)<2){
+                    $daystr='0'.$daystr;
+                }
+                $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
+                //$eecll=new \PHPExcel_Cell()
+                $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+2);
+                $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i])?$gsumlist[$i][$fname]:'-'));//说明
+              //  $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),$gsumlist[$i][$fname]);//说明
+            }
+            $rowindex++;//行控制
+            //员工数据
+            for($workerindex=0;$workerindex<count($gsumlist[$i]['detail']);$workerindex++){
+                $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['gname']);//
+                $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['summonth']);//
+                for ($j=1; $j<=$daysofm;$j++){
+                    $daystr=strval($j);
+                    if (strlen($daystr)<2){
+                        $daystr='0'.$daystr;
+                    }
+                    $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
+                    //$eecll=new \PHPExcel_Cell()
+                    $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+2);
+                    $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex][$fname]:'-'));//说明
+                }
+                $rowindex++;//行控制
+            }
+        }
+        //7.设置保存的Excel表格名称
+        $filename =$cname.'考勤汇总'.date('ymd',time()).'.xls';
+        //8.设置当前激活的sheet表格名称;
+        $objPHPExcel->getActiveSheet()->setTitle($cname .'考勤汇总');
+        //9.设置浏览器窗口下载表格
+        header("Content-Type: application/force-download");
+        header("Content-Type: application/octet-stream");
+        header("Content-Type: application/download");
+        header('Content-Disposition:inline;filename="'.$filename.'"');
+        //生成excel文件
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        //下载文件在浏览器窗口
+        $objWriter->save('php://output');
+        //原代码没有返回
+        $res_r['code']=200;
+        $res_r['resultData']=$filename;
+        return json_encode($res_r,320);
+    }
+
+    /*
+    * 20200320
+    * 自动导出所有的项目合同考勤,分页
+     *
+    */
+
+    public function allworkersumtoexecl(){
+        /*
+         * 准备
+         */
+        //获取数据
+        $queryinfo=request() -> param();
+        $yearinfo=$queryinfo['yearinfo'];
+        $monthinfo=$queryinfo['monthinfo'];
+        //获取所有导出的合同
+        $l_contact=new contactlogic();
+        $list_contact=$l_contact->getclist();
+        //获取当用天数
+        $daysofm=date('t', strtotime( $yearinfo.'-'.$monthinfo.'-1'));
+        //加载类库
+        vendor('PHPExcel.PHPExcel');
+        $objPHPExcel = new \PHPExcel();
+        $pageindex=0;//初始化页数
+ /*
+  * 循环处理所有合同
+  */
+        foreach($list_contact as $contact){
+            $queryinfo['cid']=$contact['id'];
+            $cname=$contact['contactname'];
+            //获取合同的数据
+            $gsumlist=$l_contact->getworkersumbycid($queryinfo);
+
+            //4.激活当前的sheet表
+            if($pageindex>0){
+                $objPHPExcel->createSheet();
+            }
+            $objPHPExcel->setActiveSheetIndex($pageindex);
+            //5.设置表格头(即excel表格的第一行)
+            $objPHPExcel->setActiveSheetIndex($pageindex)
+                ->setCellValue('A1', '班组')
+                ->setCellValue('B1', '总分')
+                ->setCellValue('C1', '班组')
+                ->setCellValue('D1', '工人')
+                ->setCellValue('E1', '当月总记分');
+            for ($j=1; $j<=$daysofm;$j++){
+                $columnname=strval($j);
+                if (strlen($columnname)<2){
+                    $columnname='0'.$columnname;
+                }
+                $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+4);
+                $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar.'1',$columnname);
+
+//                $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle($fcolumnchar)->getAlignment()
+//                    ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+//                $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension($fcolumnchar)->setWidth(6);
+            }
+
+            $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($daysofm+5);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar.'1','招工成本');
+            //设置A列水平居中
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('A')->getAlignment()
+                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('B')->getAlignment()
+                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('C')->getAlignment()
+                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('D')->getAlignment()
+                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('E')->getAlignment()
+                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            //设置单元格宽度
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('A')->setWidth(20);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('B')->setWidth(11);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('C')->setWidth(20);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('D')->setWidth(10);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('E')->setWidth(13);
+
+            //6.循环刚取出来的数组,将数据逐一添加到excel表格。
+            $rowindex=0;
+            for($i=0;$i<count($gsumlist);$i++){
+//                //班组汇总信息
+//               // var_dump($gsumlist[$i]);
+//                $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['gname']);//ID
+//                $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['summonth']);//名称
+//                for ($j=1; $j<=$daysofm;$j++){
+//                    //  for ($j=13; $j<=16;$j++){//测试临时
+//                    $daystr=strval($j);
+//                    if (strlen($daystr)<2){
+//                        $daystr='0'.$daystr;
+//                    }
+//                    $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
+//                    //$eecll=new \PHPExcel_Cell()
+//                    $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+2);
+//                    $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i])?$gsumlist[$i][$fname]:'-'));//说明
+//                    //  $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),$gsumlist[$i][$fname]);//说明
+//                }
+//                $rowindex++;//行控制
+                //员工数据
+                $firstworker=$rowindex+2;
+                $workercounts=count($gsumlist[$i]['detail']);
+                for($workerindex=0;$workerindex<$workercounts;$workerindex++){
+                    $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['gname']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('C'.($rowindex+2),$gsumlist[$i]['gname']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('D'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['gname']);//
+                    $objPHPExcel->getActiveSheet()->setCellValue('E'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['summonth']);//
+                    for ($j=1; $j<=$daysofm;$j++){
+                        $daystr=strval($j);
+                        if (strlen($daystr)<2){
+                            $daystr='0'.$daystr;
+                        }
+                        $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
+                        //$eecll=new \PHPExcel_Cell()
+                        $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+4);
+                        $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex][$fname]:'-'));//说明
+                    }
+                    //招工成本处理
+                    $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($daysofm+5);
+                    $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists('recuitcost',$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex]['recuitcost']:'-'));
+
+                    $rowindex++;//行控制
+                }
+                if ($workercounts>0){
+                    $endworker=$rowindex+1;//最后一行
+                    $objPHPExcel->getActiveSheet()->mergeCells('A'.$firstworker.':A'.$endworker);
+                    $objPHPExcel->getActiveSheet()->getstyle('A'.$firstworker.':A'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+                    $objPHPExcel->getActiveSheet()->mergeCells('B'.$firstworker.':B'.$endworker);
+                    $objPHPExcel->getActiveSheet()->getstyle('B'.$firstworker.':B'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+                    $objPHPExcel->getActiveSheet()->setCellValue('B'.$firstworker,$gsumlist[$i]['summonth']);
+                }else{
+                    $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['gname']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),0);
+                    $rowindex++;
+                }
+
+            }
+            //8.设置当前激活的sheet表格名称;
+            $objPHPExcel->getActiveSheet()->setTitle($cname .'考勤汇总');
+            $pageindex++;
+
+        }
+
+
+
+
+        //7.设置保存的Excel表格名称
+        $filename ='考勤汇总'.date('ymd',time()).'.xls';
+
+        //9.设置浏览器窗口下载表格
+        header("Content-Type: application/force-download");
+        header("Content-Type: application/octet-stream");
+        header("Content-Type: application/download");
+        header('Content-Disposition:inline;filename="'.$filename.'"');
+        //生成excel文件
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        //下载文件在浏览器窗口
+        $objWriter->save('php://output');
+        //原代码没有返回
+        $res_r['code']=200;
+        $res_r['resultData']=$filename;
+        return json_encode($res_r,320);
+    }
+
+    /*
+* 20201029
+* 自动导出所有的项目合同考勤,分页
+     * 并且合并成一个表
+     * 在allworkersumtoexecl()方法基础上修改
+     *
+ *
+*/
+
+    public function allworkersumuniontoexecl(){
+        /*
+         * 准备
+         */
+        //获取数据
+        $queryinfo=request() -> param();
+        $yearinfo=$queryinfo['yearinfo'];
+        $monthinfo=$queryinfo['monthinfo'];
+        $strmonth=$yearinfo.'-'.$monthinfo;
+        //获取所有导出的合同
+        $l_contact=new contactlogic();
+        $list_contact=$l_contact->getclist();
+        //获取当用天数
+        $daysofm=date('t', strtotime( $yearinfo.'-'.$monthinfo.'-1'));
+        //加载类库
+        vendor('PHPExcel.PHPExcel');
+        $objPHPExcel = new \PHPExcel();
+        $pageindex=0;//初始化页数,后面不再循环  todo 去掉此变理
+        /*
+         * 循环处理所有合同
+         */
+        $rowindex=0;
+
+
+            //4.激活当前的sheet表
+
+            $objPHPExcel->setActiveSheetIndex($pageindex);
+            //5.设置表格头(即excel表格的第一行)
+            $objPHPExcel->setActiveSheetIndex($pageindex)
+                ->setCellValue('A1', '合同')
+                ->setCellValue('B1', '班组')
+                ->setCellValue('C1', '总分')
+                ->setCellValue('D1', '月度')
+                ->setCellValue('E1', '工人')
+                ->setCellValue('F1', '身份证')
+                ->setCellValue('G1', '当月总记分');
+            for ($j=1; $j<=$daysofm;$j++){
+                $columnname=strval($j);
+                if (strlen($columnname)<2){
+                    $columnname='0'.$columnname;
+                }
+                $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+6);
+                $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar.'1',$columnname);
+
+
+            }
+
+            $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($daysofm+7);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar.'1','招工成本');
+            //设置A列水平居中
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('A')->getAlignment()
+                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('B')->getAlignment()
+                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('C')->getAlignment()
+                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('D')->getAlignment()
+                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('E')->getAlignment()
+                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('F')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        //设置F列为文本列
+            $objPHPExcel->getActiveSheet()->getStyle('F')->getNumberFormat()
+            ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);//
+             $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('G')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            //设置单元格宽度
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('A')->setWidth(20);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('B')->setWidth(20);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('C')->setWidth(11);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('D')->setWidth(20);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('E')->setWidth(10);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('F')->setWidth(18);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('G')->setWidth(13);
+            //6.循环刚取出来的数组,将数据逐一添加到excel表格。
+        foreach($list_contact as $contact){
+            $queryinfo['cid']=$contact['id'];
+            $cname=$contact['contactname'];
+            //获取合同的数据
+            $gsumlist=$l_contact->getworkersumbycid($queryinfo);
+
+            for($i=0;$i<count($gsumlist);$i++){
+
+                $firstworker=$rowindex+2;
+                $workercounts=count($gsumlist[$i]['detail']);
+                for($workerindex=0;$workerindex<$workercounts;$workerindex++){
+                    $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$cname);
+                    $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['gname']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('D'.($rowindex+2),$strmonth);
+                    $objPHPExcel->getActiveSheet()->setCellValue('E'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['gname']);//
+                    $objPHPExcel->getActiveSheet()->setCellValue('F'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['sfz']);//
+                    $objPHPExcel->getActiveSheet()->setCellValue('G'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['summonth']);//
+                    for ($j=1; $j<=$daysofm;$j++){
+                        $daystr=strval($j);
+                        if (strlen($daystr)<2){
+                            $daystr='0'.$daystr;
+                        }
+                        $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
+                        //$eecll=new \PHPExcel_Cell()
+                        $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+6);
+                        $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex][$fname]:'-'));//说明
+                    }
+                    //招工成本处理
+                    $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($daysofm+7);
+                    $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists('recuitcost',$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex]['recuitcost']:'-'));
+
+                    $rowindex++;//行控制
+                }
+                if ($workercounts>0){
+                    $endworker=$rowindex+1;//最后一行
+                    //根据客户要求,不再分隔,20201106
+//                    $objPHPExcel->getActiveSheet()->mergeCells('A'.$firstworker.':A'.$endworker);
+//                    $objPHPExcel->getActiveSheet()->getstyle('A'.$firstworker.':A'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+//                    $objPHPExcel->getActiveSheet()->mergeCells('B'.$firstworker.':B'.$endworker);
+//                    $objPHPExcel->getActiveSheet()->getstyle('B'.$firstworker.':B'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+                    $objPHPExcel->getActiveSheet()->mergeCells('C'.$firstworker.':C'.$endworker);
+                    $objPHPExcel->getActiveSheet()->getstyle('C'.$firstworker.':C'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+                    $objPHPExcel->getActiveSheet()->setCellValue('C'.$firstworker,$gsumlist[$i]['summonth']);
+
+                }else{
+                    $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$cname);
+                    $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['gname']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('C'.($rowindex+2),0);
+                    $rowindex++;
+                }
+
+            }
+            //8.设置当前激活的sheet表格名称;
+          //  $objPHPExcel->getActiveSheet()->setTitle($cname .'考勤汇总');
+          //  $pageindex++;
+
+        }
+
+
+        $objPHPExcel->getActiveSheet()->setTitle($strmonth .'考勤汇总');
+
+        //7.设置保存的Excel表格名称
+        $filename ='考勤汇总'.date('ymd',time()).'.xls';
+
+        //9.设置浏览器窗口下载表格
+        header("Content-Type: application/force-download");
+        header("Content-Type: application/octet-stream");
+        header("Content-Type: application/download");
+        header('Content-Disposition:inline;filename="'.$filename.'"');
+        //生成excel文件
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        //下载文件在浏览器窗口
+        $objWriter->save('php://output');
+        //原代码没有返回
+        $res_r['code']=200;
+        $res_r['resultData']=$filename;
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230215
+     *  获取本公司的项目合同汇总
+     */
+    public function companyworkersumuniontoexecl(){
+        /*
+         * 准备
+         */
+        //获取数据
+        $queryinfo=request() -> param();
+        $yearinfo=$queryinfo['yearinfo'];
+        $monthinfo=$queryinfo['monthinfo'];
+        $cid=$queryinfo['companyid'];//公司id
+        $strmonth=$yearinfo.'-'.$monthinfo;
+        //获取所有导出的合同
+        $l_contact=new contactlogic();
+        $list_contact=$l_contact->getcompanyclist($cid);
+        //获取当用天数
+        $daysofm=date('t', strtotime( $yearinfo.'-'.$monthinfo.'-1'));
+        //加载类库
+        vendor('PHPExcel.PHPExcel');
+        $objPHPExcel = new \PHPExcel();
+        $pageindex=0;//初始化页数,后面不再循环  todo 去掉此变理
+        /*
+         * 循环处理所有合同
+         */
+        $rowindex=0;
+
+
+        //4.激活当前的sheet表
+
+        $objPHPExcel->setActiveSheetIndex($pageindex);
+        //5.设置表格头(即excel表格的第一行)
+        $objPHPExcel->setActiveSheetIndex($pageindex)
+            ->setCellValue('A1', '合同')
+            ->setCellValue('B1', '班组')
+            ->setCellValue('C1', '总分')
+            ->setCellValue('D1', '月度')
+            ->setCellValue('E1', '工人')
+            ->setCellValue('F1', '身份证')
+            ->setCellValue('G1', '当月总记分');
+        for ($j=1; $j<=$daysofm;$j++){
+            $columnname=strval($j);
+            if (strlen($columnname)<2){
+                $columnname='0'.$columnname;
+            }
+            $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+6);
+            $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar.'1',$columnname);
+
+
+        }
+
+        $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($daysofm+7);
+        $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar.'1','招工成本');
+        //设置A列水平居中
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('A')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('B')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('C')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('D')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('E')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('F')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        //设置F列为文本列
+        $objPHPExcel->getActiveSheet()->getStyle('F')->getNumberFormat()
+            ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);//
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('G')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        //设置单元格宽度
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('A')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('B')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('C')->setWidth(11);
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('D')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('E')->setWidth(10);
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('F')->setWidth(18);
+        $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('G')->setWidth(13);
+        //6.循环刚取出来的数组,将数据逐一添加到excel表格。
+        foreach($list_contact as $contact){
+            $queryinfo['cid']=$contact['id'];
+            $cname=$contact['contactname'];
+            //获取合同的数据
+            $gsumlist=$l_contact->getworkersumbycid($queryinfo);
+
+            for($i=0;$i<count($gsumlist);$i++){
+
+                $firstworker=$rowindex+2;
+                $workercounts=count($gsumlist[$i]['detail']);
+                for($workerindex=0;$workerindex<$workercounts;$workerindex++){
+                    $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$cname);
+                    $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['gname']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('D'.($rowindex+2),$strmonth);
+                    $objPHPExcel->getActiveSheet()->setCellValue('E'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['gname']);//
+                    $objPHPExcel->getActiveSheet()->setCellValue('F'.($rowindex+2),"'".$gsumlist[$i]['detail'][$workerindex]['sfz']);//
+                    $objPHPExcel->getActiveSheet()->setCellValue('G'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['summonth']);//
+                    for ($j=1; $j<=$daysofm;$j++){
+                        $daystr=strval($j);
+                        if (strlen($daystr)<2){
+                            $daystr='0'.$daystr;
+                        }
+                        $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
+                        //$eecll=new \PHPExcel_Cell()
+                        $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+6);
+                        $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex][$fname]:'-'));//说明
+                    }
+                    //招工成本处理
+                    $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($daysofm+7);
+                    $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists('recuitcost',$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex]['recuitcost']:'-'));
+
+                    $rowindex++;//行控制
+                }
+                if ($workercounts>0){
+                    $endworker=$rowindex+1;//最后一行
+                    //根据客户要求,不再分隔,20201106
+//                    $objPHPExcel->getActiveSheet()->mergeCells('A'.$firstworker.':A'.$endworker);
+//                    $objPHPExcel->getActiveSheet()->getstyle('A'.$firstworker.':A'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+//                    $objPHPExcel->getActiveSheet()->mergeCells('B'.$firstworker.':B'.$endworker);
+//                    $objPHPExcel->getActiveSheet()->getstyle('B'.$firstworker.':B'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+                    $objPHPExcel->getActiveSheet()->mergeCells('C'.$firstworker.':C'.$endworker);
+                    $objPHPExcel->getActiveSheet()->getstyle('C'.$firstworker.':C'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+                    $objPHPExcel->getActiveSheet()->setCellValue('C'.$firstworker,$gsumlist[$i]['summonth']);
+
+                }else{
+                    $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$cname);
+                    $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['gname']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('C'.($rowindex+2),0);
+                    $rowindex++;
+                }
+
+            }
+            //8.设置当前激活的sheet表格名称;
+            //  $objPHPExcel->getActiveSheet()->setTitle($cname .'考勤汇总');
+            //  $pageindex++;
+
+        }
+
+
+        $objPHPExcel->getActiveSheet()->setTitle($strmonth .'考勤汇总');
+
+        //7.设置保存的Excel表格名称
+        $filename ='考勤汇总'.date('ymd',time()).'.xls';
+
+        //9.设置浏览器窗口下载表格
+        header("Content-Type: application/force-download");
+        header("Content-Type: application/octet-stream");
+        header("Content-Type: application/download");
+        header('Content-Disposition:inline;filename="'.$filename.'"');
+        //生成excel文件
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        //下载文件在浏览器窗口
+        $objWriter->save('php://output');
+        //原代码没有返回
+        $res_r['code']=200;
+        $res_r['resultData']=$filename;
+        return json_encode($res_r,320);
+    }
+}

+ 114 - 0
application/index/controller/Checkopr.php

@@ -0,0 +1,114 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/30
+ * Time: 12:43
+ */
+
+namespace app\index\controller;
+use app\index\logic\checkmanger;
+use think\Controller;
+
+class Checkopr extends Controller{
+    public function getoprinfo(){
+        $queryinfo=request() -> param();
+
+        $opr_l=new checkmanger();
+        //20200203修改,不分班次
+       // $recordinfo=$opr_l->getprjcheckoprbywid($queryinfo['wid'],$queryinfo['checkdate'],$queryinfo['checkshift']);
+        $recordinfo=$opr_l->getheadcheckoprwithdate($queryinfo['wid'],$queryinfo['checkdate']);
+        if (empty($recordinfo)){
+            $res_r['code']=0;
+            $res_r['msg']='无考勤数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$recordinfo;
+        }
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230222
+     */
+    public function getoprinfoforapp(){
+        $queryinfo=request() -> param();
+
+        $opr_l=new checkmanger();
+        //20200203修改,不分班次
+        // $recordinfo=$opr_l->getprjcheckoprbywid($queryinfo['wid'],$queryinfo['checkdate'],$queryinfo['checkshift']);
+        $recordinfo=$opr_l->getheadcheckoprwithdate($queryinfo['wid'],$queryinfo['checkdate']);
+        if (empty($recordinfo)){
+            $res_r['code']=0;
+            $res_r['msg']='无考勤数据';
+            $res_r['data']=$recordinfo;
+        }else{
+            $res_r['code']=200;
+            $res_r['msg']='请求居功';
+            $res_r['data']=$recordinfo;
+        }
+        return json_encode($res_r,320);
+    }
+
+    public function getoprdetailbyhead(){
+        $queryinfo=request() -> param();
+
+        $opr_l=new checkmanger();
+        //20200203日修改为从日记录表中查询
+        //$recordlist=$opr_l->getchecklistbyhead($queryinfo['headid'],$queryinfo['checkdate'],$queryinfo['checkshift']);
+        $recordlist=$opr_l->getchecklistbyheadwithdate($queryinfo['headid'],$queryinfo['checkdate']);
+
+        if (empty($recordlist)){
+            $res_r['code']=0;
+            $res_r['msg']='无考勤数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$recordlist;
+        }
+        return json_encode($res_r,320);
+    }
+
+    /*
+     *
+     */
+    public function getoprdetailbyheadforapp(){
+        $queryinfo=request() -> param();
+
+        $opr_l=new checkmanger();
+        //20200203日修改为从日记录表中查询
+        //$recordlist=$opr_l->getchecklistbyhead($queryinfo['headid'],$queryinfo['checkdate'],$queryinfo['checkshift']);
+        $recordlist=$opr_l->getchecklistbyheadwithdate($queryinfo['headid'],$queryinfo['checkdate']);
+
+        if (empty($recordlist)){
+            $res_r['code']=0;
+            $res_r['msg']='无考勤数据';
+            $res_r['data']=$recordlist;
+        }else{
+            $res_r['code']=200;
+            $res_r['msg']='请求成功';
+            $res_r['data']=$recordlist;
+        }
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200403
+     * 请求某位项目经理的所有记录
+     */
+    public function queryoprlistbyhid(){
+        $queryinfo=request() -> param();
+
+      $l_opr=new checkmanger();
+       $rlist=$l_opr->getoprinfobyhid($queryinfo);
+        if (empty($rlist)){
+            $res_r['code']=0;
+            $res_r['msg']='无考勤数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$rlist;
+        }
+        return json_encode($res_r,320);
+
+    }
+}
+

+ 96 - 0
application/index/controller/Enterprise.php

@@ -0,0 +1,96 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/5/10
+ * Time: 20:32
+ */
+
+namespace app\index\controller;
+use app\index\model\indatarec;
+use app\index\model\gworkermodel;
+
+use think\Controller;
+
+class Enterprise extends Controller{
+    /*
+ * 20200423 来自网上文档
+ */
+    protected function curlPost($url,$data)
+    {
+        $ch = curl_init();
+        $params[CURLOPT_URL] = $url;    //请求url地址
+        $params[CURLOPT_HEADER] = FALSE; //是否返回响应头信息
+        $params[CURLOPT_SSL_VERIFYPEER] = false;
+        $params[CURLOPT_SSL_VERIFYHOST] = false;
+        $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
+        $params[CURLOPT_POST] = true;
+        $params[CURLOPT_POSTFIELDS] = $data;
+        curl_setopt_array($ch, $params); //传入curl参数
+        $content = curl_exec($ch); //执行
+        curl_close($ch); //关闭连接
+        return $content;
+    }
+
+    private function queryworkerbyeid($cid){
+        $url="https://iws.4bpoc.com/wapsenyi/wap/getPersonnelList";
+        $pdata=array();
+        $pdata['conid']=$cid;
+        $wliststr=$this->curlPost($url,$pdata);
+
+        $wlist=json_decode($wliststr,true);
+        return $wlist;
+    }
+
+    public function oprallworker(){
+        ini_set('max_execution_time','0');
+        //初始化员工表
+        $t_w=new gworkermodel();
+        //获取当前的数据
+        $t_indata=new indatarec();
+        $rlist=$t_indata->all();
+        $rlist=collection($rlist)->toArray();
+
+        //每个公司读取
+        foreach($rlist as &$kv){
+            $cid=$kv['contractid'];
+            $maxid=$kv['workrecid'];
+            $workerlist=$this->queryworkerbyeid($cid);
+           $wlist=$workerlist['Rows'];
+            foreach($wlist as $worker){
+                //先比较ID,只有大于才处理
+                if ($worker['id']>$kv['workrecid']){
+                    if ($worker['id']>$maxid){
+                        //更换id
+                        $maxid=$worker['id'];
+                    }
+
+                    //比较身份证
+                    $sfz=$worker['card'];
+                    $rec=$t_w->selinfobysfz($sfz);
+                    if (!$rec){
+                        //todo 去存储此数据
+                        //
+                        $arr['wname']=$worker['name'];
+                        $arr['telno']=$worker['Mobile'];
+                        $arr['shengfengid']=$sfz;
+                        $arr['cprojectid']=3;
+                        $arr['workclass']=$worker['TypeOfWork'];
+                        $arr['wage']=$worker['age'];
+                        $arr['cardno']=$worker['EMP_BANK_CARD'];
+
+                        $t_w->saveworkerinfo($arr);
+                    }
+
+
+                }
+            }
+            //更新最大的id
+            $t_indata->updrecbycid($cid,$maxid);
+
+        }
+
+
+
+    }
+}

+ 215 - 0
application/index/controller/Fileoper.php

@@ -0,0 +1,215 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/5
+ * Time: 9:49
+ */
+namespace app\index\controller;
+use think\Controller;
+use think\Request;
+use app\index\logic\paylogic;
+use think\Log;
+
+class Fileoper extends Controller{
+    public function upQuestionsWrite()
+    {
+        // 获取表单上传文件
+        $file = request()->file('file');
+        $domainpath='https://app.tjzhxx.com/index.php/Uploads/';
+
+
+        if(empty($file)) {
+            $this->error('请选择上传文件');
+        }
+        // 移动到框架应用根目录/public/uploads/ 目录下
+        $info = $file->move(ROOT_PATH.'public'.DS.'Uploads');
+
+        //如果不清楚文件上传的具体键名,可以直接打印$info来查看
+        //获取文件(文件名),$info->getFilename()  ***********不同之处,笔记笔记哦
+        //获取文件(日期/文件名),$info->getSaveName()  **********不同之处,笔记笔记哦
+        $filename = $info->getSaveName();  //在测试的时候也可以直接打印文件名称来查看
+        log::info($filename);
+        if($filename){
+            //$this->success('文件上传成功!');
+            $imageUrl=$domainpath.$filename;
+            $r_upload['code']='200';
+            $r_upload['resultData']=$imageUrl;
+            //不转义反斜杠
+            return json_encode($r_upload,320);
+        }else{
+            // 上传失败获取错误信息
+            $this->error($file->getError());
+        }
+    }
+
+    /*
+     * 20210502
+     * 导入支侍文件
+     * 20210509edit
+     * 存入日志
+     * 20210509 再次修改,应将uplog主表存入放在子过程中
+     * @todo 上传前获取文件名,以防止重复导入
+     */
+
+    public function uploadexcelinputdata()
+    {
+        // 获取表单上传文件
+        $file = request()->file('file');
+        $companyinfo=request()->post();
+        $cid=$companyinfo['companyid'];
+
+        //log::info($cid);
+        $domainpath='https://app.tjzhxx.com/index.php/Uploads/';
+
+        //echo $file['name'];
+       // echo $file->getFilename();
+        $inputfilename=$_FILES['file']['name'];
+
+       // $upinfo['upfilename']=$file['name'];
+
+        if(empty($file)) {
+            $this->error('请选择上传文件');
+        }
+
+        //验证重复上传
+        $l_p=new paylogic();
+        $upfile['upfilename']=$inputfilename;
+        $isfile=$l_p->getinfobyfname($upfile);
+        if(!empty($isfile)){
+         //   $this->error('文件已上传过');
+            $r_upload['code']=0;
+            $r_upload['errmsg']='文件已上传过';
+            return json_encode($r_upload,320);
+
+
+        }
+        // 移动到框架应用根目录/public/uploads/ 目录下
+        $info = $file->move(ROOT_PATH.'public'.DS.'Uploads');
+
+        //如果不清楚文件上传的具体键名,可以直接打印$info来查看
+        //获取文件(文件名),$info->getFilename()  ***********不同之处,笔记笔记哦
+        //获取文件(日期/文件名),$info->getSaveName()  **********不同之处,笔记笔记哦
+        $filename = $info->getSaveName();  //在测试的时候也可以直接打印文件名称来查看
+        //log::info($filename);
+        if($filename){
+            //$this->success('文件上传成功!');
+            $icount=$this->testexcelinputdb($filename,$inputfilename,$cid);
+            $imageUrl=$domainpath.$filename;
+            $r_upload['code']='200';
+            $r_upload['resultData']['url']=$imageUrl;
+            $r_upload['resultData']['inputcount']=$icount;
+
+            return json_encode($r_upload,320);
+        }else{
+            // 上传失败获取错误信息
+            $this->error($file->getError());
+        }
+    }
+
+    /*
+     * 202100502
+     * edit
+     * 20210509
+     * 增加返回总金额
+     */
+    private  function testexcelinputdb($infilename,$inputfilename,$cid){
+        vendor('PHPExcel.PHPExcel');
+        //$phpExcel = new \PHPExcel();
+        $objRender = \PHPExcel_IOFactory::createReader('Excel2007');
+        $filename = '.'.'/'.'Uploads'.'/'.$infilename;
+        $ExcelObj = $objRender->load($filename);
+        $ExcelObj->setActiveSheetIndex(0);
+
+        $l_p=new paylogic();
+        $plist=array();
+
+        $i=2;
+        $input_arr=array();
+        $sum_input=0;
+        $sum_record=0;
+        $upinfo=array();
+        $upinfo['upfilename']=$inputfilename;
+        $upinfo['updatetime']=date('Y-m-d H:i:s');
+        $upinfo['companyid']=$cid;
+        //log::info($upinfo);
+       // $inputmoney=$ExcelObj->getActiveSheet()->getCell("H".$i)->getValue();
+        $inputsfzid=$ExcelObj->getActiveSheet()->getCell("F".$i)->getValue();
+       // log::info($inputsfzid);
+        while($inputsfzid>''){
+            $paydetail=array();
+
+            $paydetail['paymoney']=$ExcelObj->getActiveSheet()->getCell("H".$i)->getValue();
+            $paydetail['sfzid']=$ExcelObj->getActiveSheet()->getCell("F".$i)->getValue();
+            $paydetail['wname']=$ExcelObj->getActiveSheet()->getCell("G".$i)->getValue();
+            $paydetail['payclass']=$ExcelObj->getActiveSheet()->getCell("E".$i)->getValue();
+            $daynumber=$ExcelObj->getActiveSheet()->getCell("D".$i)->getValue();
+            $paydetail['paydate']=gmdate('Y-m-d',($daynumber-25569)*1440*60);
+            $paydetail['indate']=date('Y-m-d');
+            //$l_p->savepaydetail($paydetail);
+            $sum_input+=$paydetail['paymoney'];
+            $sum_record+=1;
+            array_push($plist,$paydetail);
+
+            $i++;
+           // $inputmoney=$ExcelObj->getActiveSheet()->getCell("H".$i)->getValue();
+            $inputsfzid=$ExcelObj->getActiveSheet()->getCell("F".$i)->getValue();
+            //log::info($paydetail);
+        };
+        $upinfo['upcount']=$sum_record;
+        $upinfo['upsummoney']=$sum_input;
+        $rid=$l_p->savenewuplog($upinfo);
+        foreach($plist as &$row){
+            $row['uplogid']=$rid;
+        }
+        $icount=$l_p->savepayredetaillist($plist);
+        return $icount;
+       // echo count($plist);
+       // var_dump($plist);
+    }
+
+
+    /*
+     * 20210509
+     * 请求所有的导入记录
+     */
+    public function queryalluplog(){
+
+        //预处理奖励数据
+        $l_p=new paylogic();
+
+        $r_list=$l_p->getalluplog();
+
+        if (empty($r_list)){
+            $res_r['code']=0;
+            $res_r['errmsg']='无导入数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$r_list;
+        }
+        return json_encode($res_r,320);
+    }
+
+    /*
+ * 20230214
+ * 请求公司的所有的导入记录
+ */
+    public function queryalluplogbycid(){
+        $queryinfo = request() -> param();
+        //预处理奖励数据
+        $l_p=new paylogic();
+
+        $r_list=$l_p->getuplogbycid($queryinfo);
+
+        if (empty($r_list)){
+            $res_r['code']=0;
+            $res_r['errmsg']='无导入数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$r_list;
+        }
+        return json_encode($res_r,320);
+    }
+
+
+}

+ 76 - 0
application/index/controller/Gmember.php

@@ -0,0 +1,76 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/3/3
+ * Time: 13:43
+ */
+
+namespace app\index\controller;
+use app\index\logic\gmemberlogic;
+use think\Controller;
+
+class Gmember extends Controller{
+    /*
+ * 20200302
+ * steelxu
+ * 标准输出检查找包
+ * 测试成功后,再看是做到扩展的基础类,还是
+ */
+    public function stdout($arr){
+        $res_r=array();
+        if (empty($arr)){
+            $res_r['code']=0;
+            $res_r['errmsg']='无数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$arr;
+        }
+
+        return $res_r;
+    }
+
+
+    /*
+     * 20200303
+     * 请求获取班组成员列表
+     */
+    public function querymemberbyid(){
+        $queryinfo = request() -> param();
+
+        $l_gmember=new gmemberlogic();
+        $mlist=$l_gmember->getmlistbygid($queryinfo);
+
+        return  json_encode($this->stdout($mlist),320);
+
+    }
+
+    /*
+ * 20200303
+ * 提交班组成员信息
+ */
+    public function submitmember(){
+        $submitinfo = request() -> param();
+
+        $l_gmember=new gmemberlogic();
+        $mid=$l_gmember->savemember($submitinfo);
+
+        return json_encode($this->stdout($mid),320);
+
+    }
+
+    /*
+* 20200303
+* 批量提交班组成员信息
+*/
+    public function submitmemberlist(){
+        $submitlist = request() -> param();
+
+        $l_gmember=new gmemberlogic();
+        $mids=$l_gmember->savememberlist($submitlist);
+
+        return json_encode($this->stdout($mids),320);
+
+    }
+
+}

+ 630 - 0
application/index/controller/Headcheck.php

@@ -0,0 +1,630 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/14
+ * Time: 14:45
+ */
+
+namespace app\index\controller;
+use app\index\logic\checkmanger;
+use app\index\logic\workercheck;
+use think\Controller;
+
+class Headcheck extends Controller{
+    /*
+     * 20200304
+     * edit
+     * 返回cprojectid,作为pid
+     */
+    public function getgid(){
+        $userinfo = request() -> param();
+
+        $logicworker=new workercheck();
+        $res=$logicworker->isheaderbytel($userinfo['tel']);
+        if ($res['r_code']===0){
+            $res['errmsg']='非员工';
+        }
+        if ($res['r_code']===9902){
+            $res['errmsg']='非班组长';
+        }
+
+        $res_r['code']=200;
+        $res_r['resultData']=$res;
+
+        return json_encode($res_r,320);
+    }
+
+    public function getgidV2(){
+        $userinfo = request() -> param();
+
+        $logicworker=new workercheck();
+        $res=$logicworker->isheaderbytelV2($userinfo);
+        if ($res['r_code']===0){
+            $res['errmsg']='非员工';
+        }
+        if ($res['r_code']===9902){
+            $res['errmsg']='非班组长';
+        }
+
+        $res_r['code']=200;
+        $res_r['resultData']=$res;
+
+        return json_encode($res_r,320);
+    }
+
+    public function getgidforapp(){
+        $userinfo = request() -> param();
+
+        $logicworker=new workercheck();
+        $res=$logicworker->isheaderbytel($userinfo['tel']);
+        $res_r['msg']="班组长";
+        if ($res['r_code']===0){
+            $res_r['msg']='非员工';
+        }
+        if ($res['r_code']===9902){
+            $res_r['msg']='非班组长';
+        }
+
+        $res_r['code']=200;
+        $res_r['data']=$res;
+
+        return json_encode($res_r,320);
+    }
+
+
+    public function getgidforappV2(){
+        $userinfo = request() -> param();
+
+        $logicworker=new workercheck();
+        $res=$logicworker->isheaderbytelV2($userinfo);
+        $res_r['msg']="班组长";
+        if ($res['r_code']===0){
+            $res_r['msg']='非员工';
+        }
+        if ($res['r_code']===9902){
+            $res_r['msg']='非班组长';
+        }
+
+        $res_r['code']=200;
+        $res_r['data']=$res;
+
+        return json_encode($res_r,320);
+    }
+
+    public function getshift(){
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+       $res=$logicworker->getshiftbywid($userinfo['wid']);
+
+        $res_r['code']=200;
+        $res_r['resultData']=$res;
+        return json_encode($res_r);
+    }
+/*
+ * 20200729
+ */
+    public function getshiftwithcount(){
+
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+       $res=$logicworker->getshiftandcountbywid($userinfo['wid'],$userinfo['gid']);
+
+        $res_r['code']=200;
+        $res_r['resultData']=$res;
+        return json_encode($res_r);
+    }
+
+    /*
+     * 20230218
+     */
+    public function getshiftwithcountforapp(){
+
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $res=$logicworker->getshiftandcountbywid($userinfo['wid'],$userinfo['gid']);
+
+        $res_r['code']=200;
+        $res_r['msg']='查询成功';
+        $res_r['data']=$res;
+        return json_encode($res_r);
+    }
+
+    /*
+     * 获取七天的日期
+     */
+    public function getshiftdate(){
+        //$userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $res=$logicworker->getcheckdate();
+       // $res=$logicworker->getshiftbywid($userinfo['wid']);
+        $res_r['code']=200;
+        $res_r['resultData']=$res;
+        return json_encode($res_r);
+    }
+
+    /*20210504
+ * 获取七天的日期,以及相应的数据
+ */
+    public function getshiftdatecheckinfo(){
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $res=$logicworker->getcheckdate();
+        // $res=$logicworker->getshiftbywid($userinfo['wid']);
+        $l_opr=new checkmanger();
+        foreach($res as &$date){
+            $recordinfo=$l_opr->getheadcheckoprwithdate($userinfo['wid'],$date['date']);
+            if(!empty($recordinfo)){
+                $date['checkoprlist']=$recordinfo;
+            }else{
+                $date['checkoprlist']=array();
+            }
+
+        }
+        $res_r['code']=200;
+        $res_r['resultData']=$res;
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230222
+     */
+    public function getshiftdatecheckinfoforapp(){
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $res=$logicworker->getcheckdate();
+        // $res=$logicworker->getshiftbywid($userinfo['wid']);
+        $l_opr=new checkmanger();
+        foreach($res as &$date){
+            $recordinfo=$l_opr->getheadcheckoprwithdate($userinfo['wid'],$date['date']);
+            if(!empty($recordinfo)){
+                $date['checkoprlist']=$recordinfo;
+            }else{
+                $date['checkoprlist']=array();
+            }
+
+        }
+        $res_r['code']=200;
+        $res_r['msg']="请求成功";
+        $res_r['data']=$res;
+        return json_encode($res_r,320);
+    }
+/*
+ * 20200304
+ * 增加了一个wid参数,
+ * @todo 因为前端未上线,所以后端的新参数先进行判断,并给默认值,待前端上线后再修改
+ */
+    public function getworkerlist(){
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $shift=$userinfo['shift'];
+        $checkdate=$userinfo['checkdate'];
+        $gid=$userinfo['gid'];
+        //todo 前端上线后取消判断和默认值
+        if (array_key_exists('wid',$userinfo)){
+            $wid=$userinfo['wid'];
+        }else{
+            $wid=0;
+        }
+        $res=$logicworker->getworkerlistbyhead($gid,$checkdate,$shift,$wid);
+        $res_r['code']=200;
+        $res_r['resultData']=$res;
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230218
+     * 考勤
+     */
+    public function getworkerlistforapp(){
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $shift=$userinfo['shift'];
+        $checkdate=$userinfo['checkdate'];
+        $gid=$userinfo['gid'];
+        //todo 前端上线后取消判断和默认值
+        if (array_key_exists('wid',$userinfo)){
+            $wid=$userinfo['wid'];
+        }else{
+            $wid=0;
+        }
+        $res=$logicworker->getworkerlistbyhead($gid,$checkdate,$shift,$wid);
+        $res_r['code']=200;
+        $res_r['msg']="查询成功";
+        $res_r['data']=$res;
+        return json_encode($res_r,320);
+    }
+
+    public function savechecklist(){
+        //
+        $userinfo = request() -> param();
+    //   var_dump($userinfo);
+       // $checklist=json_decode($userinfo['checklist'],true);
+       // $checklist=json_decode($userinfo['checklist']);
+       // $checklist=array();
+        $userinfo['checklist']=htmlspecialchars_decode($userinfo['checklist']);
+        $checklist=json_decode($userinfo['checklist'],true);
+//        var_dump($checklist1);
+//        $checklist=$userinfo['checklist'];
+       // var_dump($checklist);
+        $checkoprinfo['checkdate']=$userinfo['checkdate'];
+        $checkoprinfo['checkorder']=$userinfo['checkorder'];
+        $checkoprinfo['headid']=$userinfo['headid'];
+        if (array_key_exists('gid',$userinfo)){
+            $checkoprinfo['gid']=$userinfo['gid'];
+        }else{
+            $checkoprinfo['gid']=0;
+        }
+        $checkoprinfo['isopr']=1;
+
+        for($i=0;$i<count($checklist);$i++){
+            $checklist[$i]['oprtime']=date('Y:m:d H:i:s');
+        }
+
+        $logicworker=new workercheck();
+//        $scount=$logicworker->oprcheckinfo($checklist,$checkoprinfo);
+//        $res_r['code']=200;
+//        $res_r['resultData']=$scount;
+
+        $scount=$logicworker->savedaycheckinfo($checklist,$checkoprinfo);
+        $res_r['code']=200;
+        $res_r['resultData']=$scount;
+        return json_encode($res_r);
+
+    }
+
+    /*
+     * 20230218
+     * forapp
+     */
+    public function savechecklistforapp(){
+        //
+        $userinfo = request() -> param();
+        //   var_dump($userinfo);
+        // $checklist=json_decode($userinfo['checklist'],true);
+        // $checklist=json_decode($userinfo['checklist']);
+        // $checklist=array();
+        $userinfo['checklist']=htmlspecialchars_decode($userinfo['checklist']);
+        $checklist=json_decode($userinfo['checklist'],true);
+//        var_dump($checklist1);
+//        $checklist=$userinfo['checklist'];
+        // var_dump($checklist);
+        $checkoprinfo['checkdate']=$userinfo['checkdate'];
+        $checkoprinfo['checkorder']=$userinfo['checkorder'];
+        $checkoprinfo['headid']=$userinfo['headid'];
+        if (array_key_exists('gid',$userinfo)){
+            $checkoprinfo['gid']=$userinfo['gid'];
+        }else{
+            $checkoprinfo['gid']=0;
+        }
+        $checkoprinfo['isopr']=1;
+
+        for($i=0;$i<count($checklist);$i++){
+            $checklist[$i]['oprtime']=date('Y:m:d H:i:s');
+        }
+
+        $logicworker=new workercheck();
+//        $scount=$logicworker->oprcheckinfo($checklist,$checkoprinfo);
+//        $res_r['code']=200;
+//        $res_r['resultData']=$scount;
+
+        $scount=$logicworker->savedaycheckinfo($checklist,$checkoprinfo);
+        $res_r['code']=200;
+        $res_r['msg']="提交成功";
+        $res_r['data']=$scount;
+        return json_encode($res_r);
+
+    }
+    /*
+     * 2020215 此方法待修改,增加月参数,按月获取,不改此接口,但增加一个,封闭开放原则
+     */
+    public function getusercheckrecord(){
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $wid=$userinfo['wid'];
+        $r_list=$logicworker->getworkercheckinfobyid($wid);
+        $res_r['code']=200;
+        $res_r['resultData']=$r_list;
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+ * 2020215 按封闭开放原则,增加一个按月获取工人记工详情的控制,原控制逻辑暂停
+ */
+    public function getusercheckrecordwihtmonth(){
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $wid=$userinfo['wid'];
+        $strmonth=$userinfo['strmonth'];
+        $r_list=$logicworker->getworkercheckinfobyidwithmonth($wid,$strmonth);
+        $res_r['code']=200;
+        $res_r['resultData']=$r_list;
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230222
+     */
+    public function getusercheckrecordwihtmonthforapp(){
+        $userinfo = request() -> param();
+        $logicworker=new workercheck();
+        $wid=$userinfo['wid'];
+        $strmonth=$userinfo['strmonth'];
+        $r_list=$logicworker->getworkercheckinfobyidwithmonth($wid,$strmonth);
+        $res_r['code']=200;
+        $res_r['msg']="请求成功";
+        $res_r['data']=$r_list;
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200208
+     * steelxu
+     * 取消考勤记录
+     */
+    public function revokecheck(){
+        $userinfo = request() -> param();
+        $logiccheck=new checkmanger();
+
+        $result=$logiccheck->invokecheckbywid($userinfo);
+        if (!$result){
+            $res_r['code']=0;
+            $res_r['resultData']=$result;
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$result;
+        }
+
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230218
+     */
+    public function revokecheckforapp(){
+        $userinfo = request() -> param();
+        $logiccheck=new checkmanger();
+
+        $result=$logiccheck->invokecheckbywid($userinfo);
+        if (!$result){
+            $res_r['code']=0;
+            $res_r['msg']="撤销失败";
+            $res_r['data']=$result;
+        }else{
+            $res_r['code']=200;
+            $res_r['msg']="撤销成功";
+            $res_r['data']=$result;
+        }
+
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200208
+     * steelxu
+     * 获取某班工长记工的记录
+     */
+
+    public function getlistbyheadwithshift(){
+        $userinfo = request() -> param();
+        $logiccheck=new checkmanger();
+
+        $result=$logiccheck->getheadoprwithshift($userinfo);
+        if (!$result){
+            $res_r['code']=0;
+            $res_r['resultData']=$result;
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$result;
+        }
+
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230218
+     */
+    public function getlistbyheadwithshiftforapp(){
+        $userinfo = request() -> param();
+        $logiccheck=new checkmanger();
+
+        $result=$logiccheck->getheadoprwithshift($userinfo);
+        if (!$result){
+            $res_r['code']=0;
+            $res_r['msg']="本班次未记工";
+            $res_r['data']=$result;
+        }else{
+            $res_r['code']=200;
+            $res_r['msg']="已记工人员";
+            $res_r['data']=$result;
+        }
+
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200215
+     * steelxu
+     * 获取按月汇总的记录,应用于工人用APP查看自己的记录
+     */
+
+    public function getchecktotallistbymonth(){
+        $queryinfo=request()->param();
+        $logicworker=new workercheck();
+        $wid=$queryinfo['wid'];
+        $r_list=$logicworker->gettotallistbywid($wid);
+        $res_r['code']=200;
+        $res_r['resultData']=$r_list;
+
+        return json_encode($res_r,320);
+
+
+    }
+
+
+    /*
+     * 20230222
+     */
+    public function getchecktotallistbymonthforapp(){
+        $queryinfo=request()->param();
+        $logicworker=new workercheck();
+        $wid=$queryinfo['wid'];
+        $r_list=$logicworker->gettotallistbywid($wid);
+        $res_r['code']=200;
+        $res_r['msg']="请求成功";
+        $res_r['data']=$r_list;
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200317
+     * 响应分班组数据
+     */
+
+    public function queryscoredetailbyidwithmonth(){
+        $queryinfo=request()->param();
+        $l_wcheck=new workercheck();
+        $rlist=$l_wcheck->getScoreGroupbyWidWithMonth($queryinfo);
+
+        if (!$rlist){
+            $res_r['code']=0;
+            $res_r['resultData']=$rlist;
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$rlist;
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230222
+     */
+    public function queryscoredetailbyidwithmonthforapp(){
+        $queryinfo=request()->param();
+        $l_wcheck=new workercheck();
+        $rlist=$l_wcheck->getScoreGroupbyWidWithMonth($queryinfo);
+
+        if (!$rlist){
+            $res_r['code']=0;
+            $res_r['msg']="请求失败";
+            $res_r['data']=$rlist;
+        }else{
+            $res_r['code']=200;
+            $res_r['msg']="请求成功";
+            $res_r['data']=$rlist;
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200531
+     * WEB端根据项目,请求员工
+     */
+    public function queryuncheckworklist(){
+        $queryinfo=request()->param();
+        $logicworker=new workercheck();
+        $wlist=$logicworker->getunchecklist($queryinfo);
+        if (!$wlist){
+            $res_r['code']=0;
+            $res_r['resultData']='';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$wlist;
+        }
+
+        return json_encode($res_r,320);
+
+    }
+
+
+    /*
+     * 20210421
+     * 提交投诉
+     */
+    public function subcomplain(){
+        $queryinfo=request()->param();
+        $l_wcheck=new workercheck();
+        $rid=$l_wcheck->savecomplaininf($queryinfo);
+
+        if (!$rid){
+            $res_r['code']=0;
+            $res_r['resultData']='提交失败';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$rid;
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230222
+     */
+    public function subcomplainforapp(){
+        $queryinfo=request()->param();
+        $l_wcheck=new workercheck();
+        $rid=$l_wcheck->savecomplaininf($queryinfo);
+
+        if (!$rid){
+            $res_r['code']=0;
+            $res_r['msg']="提交投诉失败";
+            $res_r['data']=array();
+        }else{
+            $res_r['code']=200;
+            $res_r['msg']="提交投诉成功";
+            $res_r['data']=$rid;
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20210421
+     */
+    public function querycomplainlist(){
+
+        $l_wcheck=new workercheck();
+        $list=$l_wcheck->getcomplainlist();
+
+        if (!$list){
+            $res_r['code']=0;
+            $res_r['resultData']='提交失败';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$list;
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230215
+     * 只能获取本公司的投诉
+     * getcomplainlistbycid
+     */
+    public function querycomplainlistbycid(){
+        $queryinfo=request()->param();
+        $l_wcheck=new workercheck();
+        $list=$l_wcheck->getcomplainlistbycid($queryinfo);
+
+        if (!$list){
+            $res_r['code']=0;
+            $res_r['resultData']='无数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$list;
+        }
+
+        return json_encode($res_r,320);
+    }
+
+}

+ 196 - 0
application/index/controller/Index.php

@@ -0,0 +1,196 @@
+<?php
+namespace app\index\controller;
+use app\index\logic\wxBizDataCrypt;
+
+class Index
+{
+    public function index()
+    {
+        return '<style type="text/css">*{ padding: 0; margin: 0; } .think_default_text{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }</style><div style="padding: 24px 48px;"> <h1>:)</h1><p> ThinkPHP V5<br/><span style="font-size:30px">这是8095</span></p><span style="font-size:22px;">[ V5.0 版本由 <a href="http://www.qiniu.com" target="qiniu">七牛云</a> 独家赞助发布 ]</span></div><script type="text/javascript" src="https://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script><script type="text/javascript" src="https://e.topthink.com/Public/static/client.js"></script><think id="ad_bd568ce7058a1091"></think>';
+    }
+
+    public function testurl(){
+        echo 'urlok';
+    }
+
+    public function getOpenid()
+    {
+        $code=$_GET['code'];
+        $appid='wxa4a7e04c78524a73';
+        $appSecret='375c071b8a8edfc14d53b269a0b734eb';
+        $wxUrl='https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code';
+        $getUrl=sprintf($wxUrl,$appid,$appSecret,$code);
+
+//        echo $getUrl;
+
+        $result=$this->curl_get($getUrl);
+        //  echo $result;
+        $wxResult=json_decode($result,true);
+        if (empty($wxResult)){
+            echo '错误';
+        }else{
+            $logfail=array_key_exists('errcode',$wxResult);
+            if ($logfail){
+                var_dump($wxResult);
+            }else{
+                $openid=$wxResult['openid'];
+                echo "openid:",$openid;
+//                   return json($wxResult);
+            }
+        }
+    }
+
+    function curl_get($url, &$httpCode = 0) {
+        $ch = curl_init();
+        curl_setopt($ch, CURLOPT_URL, $url);
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+
+        //不做证书校验,部署在linux环境下请改为true
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
+        $file_contents = curl_exec($ch);
+        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+        curl_close($ch);
+        return $file_contents;
+    }
+
+    public function getAccessToken(){
+        $appid='wxa4a7e04c78524a73';
+        $appSecret='375c071b8a8edfc14d53b269a0b734eb';
+        $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appSecret;
+        //echo $url;
+        $result=$this->curl_get($url);
+        //echo $result;
+        $wxResult=json_decode($result,true);
+        //echo $wxResult['access_token'];
+        return $wxResult;
+    }
+
+    //获得二维码
+    public function create_qrcode(){
+
+        $sharepage = request() -> param();
+
+        $qr_path = "./Uploads/";
+        if(!file_exists($qr_path.'user/')){
+            mkdir($qr_path.'user/', 0700,true);//判断保存目录是否存在,不存在自动生成文件目录
+        }
+        $filename = 'user/'.time().'.png';
+        $file = $qr_path.$filename;
+
+        $access =$this->getAccessToken(); //json_decode($this->getAccessToken(),true);
+        $access_token= $access['access_token'];
+        $url = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='.$access_token;
+
+        $qrcode = array(
+            'scene'			=> $sharepage['scene'],//二维码所带参数
+            'width'			=> 200,
+            'page'			=>  $sharepage['page'],//二维码跳转路径(要已发布小程序)
+            'auto_color'	=> true
+        );
+
+        $result = $this->sendCmd($url,json_encode($qrcode));//请求微信接口
+
+        $errcode = json_decode($result,true)['errcode'];
+        $errmsg = json_decode($result,true)['errmsg'];
+        if($errcode) {
+            echo $errcode;
+            echo $errmsg;
+            //$this->render(0,$errmsg);
+        }
+
+        $res = file_put_contents($file,$result);//将微信返回的图片数据流写入文件
+
+        if($res===false){
+            echo '生成二维码失败';
+            // $this->render(0,'生成二维码失败');
+        }else{
+            $result_qrcode['resultData']='127.0.0.1:8094/Uploads/'.$filename;
+            $result_qrcode['code']='200';
+            return json_encode($result_qrcode);
+            //$this->return['data'] = $this->config->item('base_url').'/Uploads/'.$filename;//返回图片地址链接给前端
+        }
+    }
+    //开启curl post请求
+    public  function sendCmd($url,$data)
+    {
+        $curl = curl_init(); // 启动一个CURL会话
+        curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
+        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测
+        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在
+        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:')); //解决数据包大不能提交
+        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
+        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
+        curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
+        curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
+        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循
+        curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
+        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
+
+        $tmpInfo = curl_exec($curl); // 执行操作
+        if (curl_errno($curl)) {
+            echo 'Errno'.curl_error($curl);
+        }
+        curl_close($curl); // 关键CURL会话
+        return $tmpInfo; // 返回数据
+    }
+//网上代骊,待修改
+    public function WxDecode()
+    {
+
+        // 接收参数
+        $data = request() -> param();
+
+        // 引入解密文件 在微信小程序开发文档下载
+        // vendor('wx.WXBizDataCrypt');
+        //vendor('wx.ErrorCode');
+//
+//        $appid = config('APPID');
+//        $appsecret = config('APPSECREET');
+        $appid='wxa4a7e04c78524a73';
+        $appsecret='375c071b8a8edfc14d53b269a0b734eb';
+
+        $grant_type = "authorization_code"; //授权(必填)
+
+        $code = $data['code'];        //有效期5分钟 登录会话
+
+        $encryptedData=$data['encryptedData'];
+        $iv = $data['iv'];
+//        $signature = $data['signature'];
+//        $rawData = $data['rawData'];
+
+        // 拼接url
+        $url = "https://api.weixin.qq.com/sns/jscode2session?"."appid=".$appid."&secret=".$appsecret."&js_code=".$code."&grant_type=".$grant_type;
+        $res = json_decode($this->curl_get($url),true);
+        // var_dump($res);
+
+        $sessionKey = $res['session_key']; //取出json里对应的值
+//        $signature2 =  sha1(htmlspecialchars_decode($rawData).$sessionKey);
+//        // 验证签名
+//        if ($signature2 !== $signature){
+//            return json("验签失败");
+//        }
+
+        $pc = new wxBizDataCrypt($appid, $sessionKey);
+
+        $errCode = $pc->decryptData($encryptedData, $iv, $data );
+
+        // var_dump($data);
+        //这里是按二手设备做的,以后应该单独变成逻辑,由逻辑层完成,以应对不同的需求
+        if ($errCode == 0) {
+            $result['code']=200;
+            $resultData['msg']='解密成功';
+            $resultData['userInfo']=json_decode($data);
+            $result['resultData']=$resultData;
+            echo json_encode($result);
+            // exit(json_encode($data,JSON_UNESCAPED_UNICODE));
+
+        } else {
+            return json($errCode);
+        }
+    }
+
+
+
+
+}

+ 31 - 0
application/index/controller/Logmanger.php

@@ -0,0 +1,31 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/6
+ * Time: 12:35
+ */
+namespace app\index\controller;
+use app\index\model\logmodel;
+use think\Controller;
+
+class Logmanger extends Controller{
+    public function addlog(){
+        $loginfo = request() -> param();
+
+      //  $loginfo['create_pin']=$loginfo['createPin'];
+        $loginfo['create_date']=date('Y-m-d H:i:s',time());
+        $loginfo['json']=htmlspecialchars_decode($loginfo['json']);
+
+        //执行新增
+        $logtable=new logmodel();
+        $L_id=$logtable->savelog($loginfo);
+
+        $result_add['code']='200';
+        $result_add['id']=$L_id;
+
+        return json($result_add);
+    }
+
+
+}

+ 100 - 0
application/index/controller/Me.php

@@ -0,0 +1,100 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2019/12/7
+ * Time: 16:12
+ */
+
+namespace app\index\controller;
+use app\index\model\memodel;
+use think\Controller;
+
+//extends controller 为什么不能继承
+class Me  extends Controller{
+   public function add(){
+      //获取参数
+//       $userinfo['address']=('post.address');
+//       $userinfo['avatar_url']=I('post.avatarUrl');
+//       $userinfo['city']=I('post.city');
+//       $userinfo['company']=I('post.company');
+//       $userinfo['county']=I('post.county');
+//       $userinfo['gender']=I('post.gender');
+//       $userinfo['id']=I('post.id');
+//       $userinfo['nick_name']=I('post.nickName');
+//       $userinfo['open_id']=I('post.openid');
+//       $userinfo['province']=I('post.province');
+//       $userinfo['tel']=I('post.tel');
+//       $userinfo['union_id']=I('post.unionId');
+       //验证部分
+      $userinfo = request() -> param();
+       $userinfo['open_id']=$userinfo['openId'];
+       $userinfo['avatar_url']=$userinfo['avatarUrl'];
+       $userinfo['nick_name']=$userinfo['nickName'];
+       $userinfo['create_date']=date('Y-m-d H:i:s',time());
+      // $userinfo['nick_name']=$userinfo['nickName'];
+       //var_dump($userinfo);
+        //openid为空,返回403
+       //修改一下,文档中说自动处理了大写转成下划线加小写字母
+       if (!$userinfo['openId']){
+           //return
+           $add_res['code']='403';
+           return json($add_res);
+       }
+       $metabel=new memodel();
+       //先根据open_id判断是否存在,这个以后应当放到logic中
+       $u_info=$metabel->getinfobyopenid($userinfo['open_id']);
+
+       if (!$u_info){
+           //如果为空就新增
+           $id=$metabel->saveme($userinfo);
+           $Resultdata['id']=$id;
+           //存储之后再查询
+           $new_info=$metabel->getinfobyopenid($userinfo['open_id']);
+           $add_res['code']='200';
+           $add_res['resultData']=$new_info;
+           return json($add_res);
+       }else{
+           //如果有,就另一个处理逻辑,判断是否有电话,没有电话就返回
+           //返回数据,前端判断
+            if (!$u_info['tel']){
+                //看传参中是否有手机,如果有,加上,再返回数据,如果没有,直接返回
+                if (array_key_exists('tel',$userinfo)){
+                    //传参中有,则更新操作
+                    //tel是另外一个接口,此处后来应该修改
+                }else{
+                    //传参中也没有手机,直接返回
+                    $add_res['code']='200';
+                    $add_res['resultData']=$u_info;
+                    return json($add_res);
+                }
+            }else{
+                $add_res['code']='200';
+                $add_res['resultData']=$u_info;
+                return json($add_res);
+            }
+
+
+
+       }
+
+
+   }
+    //更新手机号用
+    public function updatemetel(){
+        $userinfo = request() -> param();
+       // var_dump($userinfo);
+        if ($userinfo['tel']){
+            //有手机号,继续
+            $metabel=new memodel();
+            $metabel->updatetelbyoopenid($userinfo['open_id'],$userinfo['tel']);
+            $u_info=$metabel->getinfobyopenid($userinfo['open_id']);
+            $update_res['code']='200';
+            $update_res['resultData']=$u_info;;
+        }else{
+            //无手机号,返回错误
+            $update_res['code']='400';
+        }
+        return json($update_res);
+    }
+} 

+ 528 - 0
application/index/controller/Project.php

@@ -0,0 +1,528 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/27
+ * Time: 15:38
+ */
+
+namespace app\index\controller;
+use app\index\logic\prjmanger;
+use app\index\logic\headmanger;
+use app\index\logic\workermanger;
+use app\index\logic\contactlogic;
+use think\Controller;
+
+class Project extends Controller{
+    public function queryallprj(){
+    $prjlogic=new prjmanger();
+    $p_list=$prjlogic->getallprj();
+
+    if ($p_list){
+        $res_r['code']=200;
+        $res_r['resultData']['records']=$p_list;
+    }else{
+        $res_r['code']=0;
+        $res_r['errmsg']='查询失败';
+    }
+
+    return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230214
+     * 根据web管理员身份获取所有的工地项目
+     */
+    public function queryallprjbycid(){
+        $prjinfo=request() -> param();
+        $prjlogic=new prjmanger();
+        $p_list=$prjlogic->getallprjbycid($prjinfo);
+
+        if ($p_list){
+            $res_r['code']=200;
+            $res_r['resultData']['records']=$p_list;
+        }else{
+            $res_r['code']=0;
+            $res_r['errmsg']='查询失败';
+        }
+
+        return json_encode($res_r,320);
+    }
+
+
+    public function addprj(){
+        $prjinfo=request() -> param();
+        $prjlogic=new prjmanger();
+        $newid=$prjlogic->addnewprj($prjinfo);
+
+        if ($newid>0){
+            $res_r['code']=200;
+            $res_r['resultData']=$newid;
+        }else{
+            $res_r['code']=0;
+            $res_r['errmsg']='添加失败';
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    public function getbyid(){
+        $qryinfo=request() -> param();
+
+        $prjlogic=new prjmanger();
+        $prjinfo=$prjlogic->getbyid($qryinfo['id']);
+
+        if ($prjinfo){
+            $res_r['code']=200;
+            $res_r['resultData']=$prjinfo;
+        }else{
+            $res_r['code']=0;
+            $res_r['errmsg']='查询失败';
+        }
+
+        return json_encode($res_r,320);
+    }
+ /*
+  * 20200205
+  * steelxu
+  *  web端提交项目工人数据
+  */
+    public function saveprjworkerlist(){
+        $qryinfo=request() -> param();
+
+        $prjlogic=new prjmanger();
+        $qryinfo['workerlist']=htmlspecialchars_decode($qryinfo['workerlist']);
+        $wokerlist=json_decode($qryinfo['workerlist'],true);
+        $prjinfo=$prjlogic->changerelation($qryinfo['pid'],$wokerlist);
+
+        if ($prjinfo){
+            $res_r['code']=200;
+            $res_r['resultData']=$prjinfo;
+        }else{
+            $res_r['code']=0;
+            $res_r['errmsg']='修改失败';
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    //项目信息导出execl
+    public function outtoexecle(){
+        //获取数据
+        $prjlogic=new prjmanger();
+        $p_list=$prjlogic->getallprj();
+        //加载类库
+        vendor('PHPExcel.PHPExcel');
+        $objPHPExcel = new \PHPExcel();
+        //4.激活当前的sheet表
+        $objPHPExcel->setActiveSheetIndex(0);
+        //5.设置表格头(即excel表格的第一行)
+        $objPHPExcel->setActiveSheetIndex(0)
+            ->setCellValue('A1', 'ID')
+            ->setCellValue('B1', '项目名称')
+            ->setCellValue('C1', '项目说明');
+        //设置A列水平居中
+        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        //设置单元格宽度
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(50);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(100);
+        //6.循环刚取出来的数组,将数据逐一添加到excel表格。
+        for($i=0;$i<count($p_list);$i++){
+            $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$p_list[$i]['id']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$p_list[$i]['pname']);//名称
+            $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$p_list[$i]['pdisstr']);//说明
+        }
+        //7.设置保存的Excel表格名称
+        $filename = '项目信息表'.date('ymd',time()).'.xls';
+        //8.设置当前激活的sheet表格名称;
+        $objPHPExcel->getActiveSheet()->setTitle('项目信息');
+        //9.设置浏览器窗口下载表格
+        header("Content-Type: application/force-download");
+        header("Content-Type: application/octet-stream");
+        header("Content-Type: application/download");
+        header('Content-Disposition:inline;filename="'.$filename.'"');
+        //生成excel文件
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        //下载文件在浏览器窗口
+        $objWriter->save('php://output');
+        //原代码没有返回
+        $res_r['code']=200;
+        $res_r['resultData']=$filename;
+        return json_encode($res_r,320);
+    }
+
+    //本公司项目信息导出execl
+    public function outprojecttoexecle(){
+        $qryinfo=request() -> param();
+        //获取数据
+        $prjlogic=new prjmanger();
+       // $p_list=$prjlogic->getallprj();
+        $p_list=$prjlogic->getallprjbycid($qryinfo);
+        //加载类库
+        vendor('PHPExcel.PHPExcel');
+        $objPHPExcel = new \PHPExcel();
+        //4.激活当前的sheet表
+        $objPHPExcel->setActiveSheetIndex(0);
+        //5.设置表格头(即excel表格的第一行)
+        $objPHPExcel->setActiveSheetIndex(0)
+            ->setCellValue('A1', 'ID')
+            ->setCellValue('B1', '项目名称')
+            ->setCellValue('C1', '项目说明');
+        //设置A列水平居中
+        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        //设置单元格宽度
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(50);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(100);
+        //6.循环刚取出来的数组,将数据逐一添加到excel表格。
+        for($i=0;$i<count($p_list);$i++){
+            $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$p_list[$i]['id']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$p_list[$i]['pname']);//名称
+            $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$p_list[$i]['pdisstr']);//说明
+        }
+        //7.设置保存的Excel表格名称
+        $filename = '项目信息表'.date('ymd',time()).'.xls';
+        //8.设置当前激活的sheet表格名称;
+        $objPHPExcel->getActiveSheet()->setTitle('项目信息');
+        //9.设置浏览器窗口下载表格
+        header("Content-Type: application/force-download");
+        header("Content-Type: application/octet-stream");
+        header("Content-Type: application/download");
+        header('Content-Disposition:inline;filename="'.$filename.'"');
+        //生成excel文件
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        //下载文件在浏览器窗口
+        $objWriter->save('php://output');
+        //原代码没有返回
+        $res_r['code']=200;
+        $res_r['resultData']=$filename;
+        return json_encode($res_r,320);
+    }
+    /*
+     * 创建班组
+     */
+    public function creategroup(){
+        $groupinfo=request() -> param();
+
+        $p_logic=new prjmanger();
+        $group=$p_logic->creategroup($groupinfo);
+
+        if ($group){
+            $res_r['code']=200;
+            $res_r['resultData']['code']=200;
+            $res_r['resultData']['group']=$group;
+        }else{
+            $res_r['code']=0;
+            $res_r['resultData']['code']=0;
+            $res_r['resultData']['errmsg']='创建失败';
+        }
+
+        return json_encode($res_r,320);
+
+    }
+
+    /*
+     * steelxu
+     * 20200211
+     * 指定班组长
+     */
+
+    public function setgroupdutyer(){
+        $dutyerinfo=request() -> param();
+
+        $p_logic=new headmanger();
+        $group=$p_logic->setghead($dutyerinfo);
+
+        if ($group){
+            $res_r['code']=200;
+            $res_r['resultData']=$group;
+        }else{
+            $res_r['code']=0;
+            $res_r['errmsg']='修改失败';
+        }
+
+        return json_encode($res_r,320);
+
+    }
+
+    /*
+     * steelxu
+     * 20200211
+     * 获取项目下所有班组信息
+     */
+
+    public function getglist(){
+        $qureyinfo=request() -> param();
+        $p_logic=new prjmanger();
+        $group=$p_logic->getglist($qureyinfo['pid']);
+
+        if ($group){
+            $res_r['code']=200;
+            $res_r['resultData']=$group;
+        }else{
+            $res_r['code']=0;
+            $res_r['errmsg']='查询失败';
+        }
+
+        return json_encode($res_r,320);
+    }
+
+     /*
+      * 20200212
+      * steelxu
+      * 获取项目下所有工人
+      */
+    public function getprjworker(){
+        $queryinfo=request() -> param();
+        $pagenum=$queryinfo['pageNum'];
+        $pagesize=$queryinfo['pageSize'];
+        $pid=$queryinfo['pid'];
+        $workerlogic=new workermanger();
+        $w_list=$workerlogic->getprjworkerlist($pagenum,$pagesize,$pid);
+
+        if ($w_list){
+            $res_r['code']=200;
+            $res_r['resultData']['list']=$w_list;
+        }else{
+            $res_r['code']=0;
+            $res_r['errmsg']='查询失败';
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200308
+     * 提交新合同信息
+     */
+
+    public function submitcontact(){
+        $queryinfo=request() -> param();
+        $l_contact=new contactlogic();
+
+        $rid=$l_contact->savecontact($queryinfo);
+        if ($rid>0){
+            $res_r['code']=200;
+            $res_r['resultData']['code']=200;
+            $res_r['resultData']['newid']=$rid;
+        }else{
+            $res_r['code']=0;
+            $res_r['msg']='提交失败';
+        }
+
+
+        return json_encode($res_r,320);
+
+    }
+
+    /*
+     * 20200308
+     * 获取合同列表
+     */
+    public function querycontactbypid(){
+        $queryinfo=request() -> param();
+        $l_contact=new contactlogic();
+        $rlist=$l_contact->getclistbypid($queryinfo);
+
+        if ($rlist){
+            $res_r['code']=200;
+            $res_r['resultData']['list']=$rlist;
+        }else{
+            $res_r['code']=0;
+            $res_r['errmsg']='查询失败';
+        }
+
+        return json_encode($res_r,320);
+
+    }
+
+    /*
+     * 20200309
+     * 处理提交的班组合同关系
+     */
+
+    public function submitgcrelation(){
+        $queryinfo=request() -> param();
+        $l_contact=new contactlogic();
+        $rid=$l_contact->savegcrelation($queryinfo);
+        if ($rid>0){
+            $res_r['code']=200;
+            $res_r['resultData']['code']=200;
+            $res_r['resultData']['newid']=$rid;
+        }else{
+            $res_r['code']=0;
+            $res_r['msg']='提交失败';
+        }
+
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200310
+     * 请求项目下所有合同及合同总记分
+     */
+
+    public function querycwithscorebypid(){
+        $queryinfo=request() -> param();
+        $l_contact=new contactlogic();
+
+        $rlist=$l_contact->getctotalbypid($queryinfo);
+
+        if ($rlist){
+            $res_r['code']=200;
+            $res_r['resultData']['list']=$rlist;
+        }else{
+            $res_r['code']=0;
+            $res_r['errmsg']='查询失败';
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20200331
+     * 更新班组名称
+     */
+
+    public function subgroupname(){
+        $groupinfo=request() -> param();
+        $p_logic=new prjmanger();
+        $rid=$p_logic->updategroupinfo($groupinfo);
+
+        if ($rid){
+            $res_r['code']=200;
+            $res_r['resultData']=$rid;
+        }else{
+            $res_r['code']=0;
+            $res_r['msg']='更新失败';
+        }
+
+        return json_encode($res_r,320);
+
+    }
+
+    /*
+ * 20210228
+ * steelxu
+ *  小程序端提交项目工人数据
+ */
+    public function subleavejobworklist(){
+        $qryinfo=request() -> param();
+
+        $prjlogic=new prjmanger();
+        $qryinfo['workerlist']=htmlspecialchars_decode($qryinfo['workerlist']);
+        $wokerlist=json_decode($qryinfo['workerlist'],true);
+        $prjinfo=$prjlogic->leavejob($wokerlist);
+
+        if ($prjinfo){
+            $res_r['code']=200;
+            $res_r['resultData']=$prjinfo;
+        }else{
+            $res_r['code']=0;
+            $res_r['errmsg']='修改失败';
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+* 20210228
+* steelxu
+*  小程序端端提交项目调动
+*/
+    public function subtransprjworklist(){
+        $qryinfo=request() -> param();
+
+        $prjlogic=new prjmanger();
+        $qryinfo['workerlist']=htmlspecialchars_decode($qryinfo['workerlist']);
+        $wokerlist=json_decode($qryinfo['workerlist'],true);
+        $headid=$qryinfo['headid'];
+        $prjinfo=$prjlogic->transferprj($headid,$wokerlist);
+
+        if ($prjinfo){
+            $res_r['code']=200;
+            $res_r['resultData']=$prjinfo;
+        }else{
+            $res_r['code']=0;
+            $res_r['errmsg']='修改失败';
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20210725
+     */
+    public function queryprjwcount(){
+
+        $p_logic=new prjmanger();
+        $rid=$p_logic->getworkercountbypid();
+
+        if ($rid){
+            $res_r['code']=200;
+            $res_r['resultData']=$rid;
+        }else{
+            $res_r['code']=0;
+            $res_r['msg']='查询失败';
+        }
+
+        return json_encode($res_r,320);
+    }
+
+
+    /*
+     * 20210807
+     */
+    public function autoleavejobwithunscore(){
+        $l_prj=new prjmanger();
+        $l_prj->autoleavejobwithweek();
+    }
+
+
+    /*
+     * 20230302
+     */
+    public function subnewprjlocationforapp(){
+        $queryinfo=request()->param();
+        $l_p=new prjmanger();
+        $rlist=$l_p->subnewprjlocation($queryinfo);
+
+        if (!$rlist){
+            $res_r['code']=0;
+            $res_r['msg']="项目坐标不重复采集";
+            $res_r['data']=$rlist;
+        }else{
+            $res_r['code']=200;
+            $res_r['msg']="提交成功";
+            $res_r['data']=$rlist;
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    /*
+     * 20230303
+     * 请求某一工地的记录规则
+     */
+    public function queryprjlocationrecrulebypid(){
+        $queryinfo=request()->param();
+        $l_p=new prjmanger();
+        $rlist=$l_p->getprjlocationinfo($queryinfo);
+
+        if (!$rlist){
+            $res_r['code']=0;
+            $res_r['msg']="请求失败";
+            $res_r['data']=$rlist;
+        }else{
+            $res_r['code']=200;
+            $res_r['msg']="请求成功";
+            $res_r['data']=$rlist;
+        }
+
+        return json_encode($res_r,320);
+    }
+}

+ 108 - 0
application/index/controller/Recuit.php

@@ -0,0 +1,108 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/4/15
+ * Time: 16:33
+ */
+namespace app\index\controller;
+use app\index\logic\recuitlogic;
+
+use think\Controller;
+
+class Recuit extends Controller{
+    /*
+ * 20200302
+ * steelxu
+ * 标准输出检查找包
+ * 测试成功后,再看是做到扩展的基础类,还是
+ */
+    public function stdout($arr){
+        $res_r=array();
+        if (empty($arr)){
+            $res_r['code']=0;
+            $res_r['errmsg']='无数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$arr;
+        }
+
+        return $res_r;
+    }
+
+    public function appout($arr){
+        $res_r=array();
+        if (empty($arr)){
+            $res_r['code']=0;
+            $res_r['msg']='无数据';
+            $res_r['data']=$arr;
+        }else{
+            $res_r['code']=200;
+            $res_r['msg']="请求成功";
+            $res_r['data']=$arr;
+        }
+
+        return $res_r;
+    }
+    /*
+     * 20200415
+     */
+
+    public function submitrecuit(){
+        $queryinfo=request() -> param();
+        $l_r=new recuitlogic();
+        $rid=$l_r->savenewrecuit($queryinfo);
+        return json_encode($this->stdout($rid),320);
+    }
+
+    /*
+     * 20200415
+     */
+    public function queryrecuitrelation(){
+        $queryinfo=request() -> param();
+        $l_r=new recuitlogic();
+        $rlist=$l_r->getulistbyrecuit($queryinfo);
+        return json_encode($this->stdout($rlist),320);
+    }
+
+    /*
+     * 20200416
+     */
+    public function qureyallrlist(){
+        $queryinfo=request() -> param();
+        $l_r=new recuitlogic();
+        $rlist=$l_r->getallrecuit($queryinfo);
+        return json_encode($this->stdout($rlist),320);
+    }
+
+    /*
+     * 20200417
+     */
+    public function queryinfobytel(){
+        $queryinfo=request() -> param();
+        $l_r=new recuitlogic();
+        $rec=$l_r->getnamebytl($queryinfo);
+        return json_encode($this->stdout($rec),320);
+    }
+
+    /*
+     * 20200419
+     * 获取某用户的最新的数据
+     */
+    public  function querynewawardbyid(){
+        $queryinfo=request() -> param();
+        $l_r=new recuitlogic();
+        $rec=$l_r->getawardbyrid($queryinfo);
+        return json_encode($this->stdout($rec),320);
+    }
+
+    /*
+     * 20230222
+     */
+    public  function querynewawardbyidforapp(){
+        $queryinfo=request() -> param();
+        $l_r=new recuitlogic();
+        $rec=$l_r->getawardbyrid($queryinfo);
+        return json_encode($this->appout($rec),320);
+    }
+}

+ 56 - 0
application/index/controller/Settle.php

@@ -0,0 +1,56 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/3/2
+ * Time: 11:41
+ */
+
+namespace app\index\controller;
+use app\index\logic\settlelogic;
+use think\Controller;
+
+class Settle extends Controller{
+    /*
+     * 20200302
+     * steelxu
+     * 标准输出检查找包
+     * 测试成功后,再看是做到扩展的基础类,还是
+     */
+    public function stdout($arr){
+        $res_r=array();
+        if (empty($arr)){
+            $res_r['code']=0;
+            $res_r['errmsg']='无数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$arr;
+        }
+
+        return $res_r;
+    }
+
+    /*
+     * 20200302
+     * 按身份证请求数据
+     */
+    public function querysettlebysfzid(){
+        $queryinfo=request() -> param();
+        $l_settle=new settlelogic();
+        $rec=$l_settle->getsettlebysfz($queryinfo);
+        return json_encode($this->stdout($rec),320);
+    }
+
+
+    /*
+     * 20200302
+     * 按银行卡请求数据
+     */
+    public function querysettlebycardno(){
+        $queryinfo=request() -> param();
+        $l_settle=new settlelogic();
+        $rec=$l_settle->getsettlebycard($queryinfo);
+        return json_encode($this->stdout($rec),320);
+    }
+
+}

+ 439 - 0
application/index/controller/Test.php

@@ -0,0 +1,439 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/15
+ * Time: 13:56
+ */
+namespace app\index\controller;
+use app\index\model\daycheckinfo;
+use app\index\logic\workermanger;
+use app\index\logic\checkmanger;
+use app\index\logic\prjmanger;
+use app\index\model\ginfomodel;
+use app\index\model\wheadmodel;
+use app\index\model\gworkermodel;
+use app\index\logic\contactlogic;
+use app\index\logic\recuitlogic;
+use app\index\logic\workercheck;
+use app\index\logic\paylogic;
+use think\Controller;
+use think\File;
+
+class Test extends Controller{
+    public function testtime(){
+       echo  date('Y-m-d',strtotime('-1 day'));
+    }
+
+    public function testgetdays(){
+        echo  date('t', strtotime("2020-01-1"));
+    }
+
+    public function teststrvla(){
+        echo $fieldname=strval(1);
+        echo $fieldname=strval(11);
+        for ($i=0;$i<31;$i++){
+            $k=strval($i);
+            if (strlen($k)<2){
+                $k='0'.$k;
+
+            }
+            echo $k;
+            echo '<br>';
+        }
+    }
+
+    public function testexeclclass(){
+        vendor('PHPExcel.PHPExcel');
+        //$fcell=new \PHPExcel_Cell();
+        for ($j=1;$j<=31;$j++){
+            $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+4);
+            echo $fcolumnstr;
+        }
+
+    }
+
+    public function testsumbymonth(){
+        $wid=101;
+        $table=new daycheckinfo();
+        $rlist=$table->totalcheckbymonthwithwid($wid);
+        var_dump($rlist);
+    }
+
+
+
+    public function testworkover(){
+        $l_check=new checkmanger();
+        $rlist=$l_check->getworkovertime(1,10);
+
+        return json_encode($rlist,320);
+    }
+
+    public function t_prj_getglist(){
+        echo 'test start ok!';
+        echo '<br>';
+        $g_talbe=new ginfomodel();
+        $gheadinfo=new wheadmodel();
+        $work_table=new gworkermodel();
+        //获取所有班组
+        $res=$g_talbe->getglistbypid(1);
+
+        echo 'res for start';
+        foreach ($res as &$gitem) {
+            //取班组长名称
+            $gid=$gitem['id'];
+            echo '[gid:';
+            echo $gid;
+            echo "],";
+
+            $gheader=$gheadinfo->getwidbygid($gid);
+
+
+            if ($gheader){
+                $wid=$gheader['gwid'];
+
+                $winfo=$work_table->getinfobyid($wid);
+                echo $winfo['wname'];
+                echo '<br>';
+                $gitem['wname']=$winfo['wname'];
+            }else{
+                $gitem['wname']='';
+            }
+        }
+        return json_encode($res,320);
+
+    }
+
+    public function testjson11(){
+        $date='2020-03-11';
+        $daystr=substr($date,-2);
+
+       // $v["11"]=20;
+        $v[$daystr]=20;
+        echo json_encode($v);
+        print_r($v);
+    }
+
+    public function testdaycount(){
+        $dc=20;
+        $strdc=strval($dc+2);
+        echo $strdc;
+        $strparam='-'.$strdc.' day';
+        echo 'strparm='.$strparam;
+        echo '<bc>';
+        $datestart=date('Y-m-d',strtotime($strparam));
+        echo 'datsstart='.$datestart;
+    }
+
+    public function testnewsumgroupworkerinfo(){
+        $arr['cid']=1;
+        $arr['yearinfo']='2020';
+        $arr['monthinfo']='03';
+        $l_c=new contactlogic();
+        $list=$l_c->getworkersumbycid($arr);
+
+//        foreach($list as $k){
+//            $k_list=array_keys($k['detail']);
+//           // var_dump($k_list);
+//            foreach($k_list as $kv){
+//                echo $kv;
+//            }
+//
+////            foreach($k['detail'] as $v){
+////                var_dump($v);
+////            };
+////            $alen=count($k['detail']);
+////            for ($i=0;$i<$alen;$i++){
+////                var_dump($k['detail'][$i]);
+////            }
+//        }
+
+        return json_encode($list,320);
+    }
+
+    //考勤按合同汇总信息导出execl
+    public function workersumtoexecl(){
+        //获取数据
+   //     $queryinfo=request() -> param();
+        $queryinfo['cid']=6;
+        $queryinfo['yearinfo']='2020';
+        $queryinfo['monthinfo']='03';
+        $yearinfo=$queryinfo['yearinfo'];
+        $monthinfo=$queryinfo['monthinfo'];
+        $l_contact=new contactlogic();
+        //获取当用天数
+        $daysofm=date('t', strtotime( $yearinfo.'-'.$monthinfo.'-1'));
+        $gsumlist=$l_contact->getworkersumbycid($queryinfo);
+
+        //加载类库
+        vendor('PHPExcel.PHPExcel');
+        $objPHPExcel = new \PHPExcel();
+        //4.激活当前的sheet表
+        $objPHPExcel->setActiveSheetIndex(0);
+        //5.设置表格头(即excel表格的第一行)
+        $objPHPExcel->setActiveSheetIndex(0)
+            ->setCellValue('A1', '班组/工人')
+            ->setCellValue('B1', '当月总记分');
+        for ($j=1; $j<=$daysofm;$j++){
+            $columnname=strval($j);
+            if (strlen($columnname)<2){
+                $columnname='0'.$columnname;
+            }
+            $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+2);
+            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1',$columnname);
+        }
+        //设置A列水平居中
+        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        //设置单元格宽度
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(15);
+        //6.循环刚取出来的数组,将数据逐一添加到excel表格。
+        $rowindex=0;
+        for($i=0;$i<count($gsumlist);$i++){
+            //班组汇总信息
+            $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['gname']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['summonth']);//名称
+
+           // $a_keys=array_keys($gsumlist[$i]);
+          //  var_dump($a_keys);
+            for ($j=1; $j<=$daysofm;$j++){
+                //  for ($j=13; $j<=16;$j++){//测试临时
+                $daystr=strval($j);
+                if (strlen($daystr)<2){
+                    $daystr='0'.$daystr;
+                }
+                $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
+                //$eecll=new \PHPExcel_Cell()
+                $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+2);
+
+                echo $fname;
+                //echo true;
+               // echo '<br>';
+                echo (array_key_exists($fname,$gsumlist[$i]));
+                echo '<br>';
+//                echo (in_array($fname,$a_keys));
+//                echo '<br>';
+                $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i])?$gsumlist[$i][$fname]:'-'));//说明
+                //  $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),$gsumlist[$i][$fname]);//说明
+            }
+            $rowindex++;//行控制
+            //员工数据
+            for($workerindex=0;$workerindex<count($gsumlist[$i]['detail']);$workerindex++){
+                $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['gname']);//
+                $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['summonth']);//
+                for ($j=1; $j<=$daysofm;$j++){
+                    $daystr=strval($j);
+                    if (strlen($daystr)<2){
+                        $daystr='0'.$daystr;
+                    }
+                    $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
+                    //$eecll=new \PHPExcel_Cell()
+                    $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+2);
+                    $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex][$fname]:'-'));//说明
+                }
+                $rowindex++;//行控制
+            }
+        }
+        //7.设置保存的Excel表格名称
+        $filename = '考勤汇总'.date('ymd',time()).'.xls';
+        //8.设置当前激活的sheet表格名称;
+        $objPHPExcel->getActiveSheet()->setTitle('考勤汇总');
+        //9.设置浏览器窗口下载表格
+        header("Content-Type: application/force-download");
+        header("Content-Type: application/octet-stream");
+        header("Content-Type: application/download");
+        header('Content-Disposition:inline;filename="'.$filename.'"');
+        //生成excel文件
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        //下载文件在浏览器窗口
+        $objWriter->save('php://output');
+        //原代码没有返回
+        $res_r['code']=200;
+        $res_r['resultData']=$filename;
+        return json_encode($res_r,320);
+    }
+
+    public function testouttoexecl(){
+        //获取传入参数
+        set_time_limit(0);
+        $queryinfo['monthinfo']='03';
+        $queryinfo['yearinfo']='2020';
+        $queryinfo['pageNum']=1;
+        $queryinfo['pageSize']=0;
+        $month=$queryinfo['monthinfo'];
+        $year=$queryinfo['yearinfo'];
+        //获取数据
+        $l_check=new checkmanger();
+        $r_list=$l_check->getsumcheckinfo($queryinfo);
+        //获取当用天数
+        $daysofm=date('t', strtotime($year.'-'.$month.'-1'));
+
+        //加载类库
+        vendor('PHPExcel.PHPExcel');
+        $objPHPExcel = new \PHPExcel();
+        //4.激活当前的sheet表
+        $objPHPExcel->setActiveSheetIndex(0);
+        //5.设置表格头(即excel表格的第一行)
+        $objPHPExcel->setActiveSheetIndex(0)
+            ->setCellValue('A1', 'ID')
+            ->setCellValue('B1', '姓名')
+            ->setCellValue('C1', '记工天数')
+            ->setCellValue('D1','当月计分')
+            ->setCellValue('E1','身份证号');
+        for ($j=1; $j<=$daysofm;$j++){
+            $columnname=strval($j);
+            if (strlen($columnname)<2){
+                $columnname='0'.$columnname;
+            }
+            $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+4);
+            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1',$columnname);
+        }
+
+        //设置A列水平居中
+        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        //设置单元格宽度
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(8);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(12);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(12);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(12);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(18);
+        //6.循环刚取出来的数组,将数据逐一添加到excel表格。
+        for($i=0;$i<count($r_list);$i++){
+            $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$r_list[$i]['wid']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$r_list[$i]['wname']);//名称
+            $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$r_list[$i]['daycount']);//说明
+            $objPHPExcel->getActiveSheet()->setCellValue('D'.($i+2),$r_list[$i]['monthsum']);//说明
+            $objPHPExcel->getActiveSheet()->setCellValue('E'.($i+2),$r_list[$i]['sfz']);//说明
+            for ($j=1; $j<=$daysofm;$j++){
+                $fname=strval($j);
+                if (strlen($fname)<2){
+                    $fname='0'.$fname;
+                }
+                //$eecll=new \PHPExcel_Cell()
+                $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+4);
+                $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($i+2),(array_key_exists($fname,$r_list[$i])?$r_list[$i][$fname]:'-'));//说明
+            }
+        }
+        //7.设置保存的Excel表格名称
+        $filename = $year.'年'.$month.'月考勤统计表'.date('ymd',time()).'.xls';
+        //8.设置当前激活的sheet表格名称;
+        $objPHPExcel->getActiveSheet()->setTitle('考勤信息'.$year.'年'.$month.'月');
+        //9.设置浏览器窗口下载表格
+        header("Content-Type: application/force-download");
+        header("Content-Type: application/octet-stream");
+        header("Content-Type: application/download");
+        header('Content-Disposition:inline;filename="'.$filename.'"');
+        //生成excel文件
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        //下载文件在浏览器窗口
+        $objWriter->save('php://output');
+        //原代码没有返回
+        $res_r['code']=200;
+        $res_r['resultData']=$filename;
+        return json_encode($res_r,320);
+    }
+
+    public function testheadoprlist(){
+       // $queryinfo=request() -> param();
+        $queryinfo['hid']=102;
+
+        $l_opr=new checkmanger();
+        $rlist=$l_opr->getoprinfobyhid($queryinfo);
+        if (empty($rlist)){
+            $res_r['code']=0;
+            $res_r['msg']='无考勤数据';
+        }else{
+            $res_r['code']=200;
+            $res_r['resultData']=$rlist;
+        }
+        return json_encode($res_r,320);
+
+    }
+
+    public function testcountaward(){
+        $queryinfo['uid']=101;
+        $l_r=new recuitlogic();
+        $rec=$l_r->getawardbyrid($queryinfo);
+        return json_encode($rec,320);
+    }
+
+    public function testexcelinput(){
+        vendor('PHPExcel.PHPExcel');
+        //$phpExcel = new \PHPExcel();
+        $objRender = \PHPExcel_IOFactory::createReader('excel2007');
+        $filename = '.'.'/'.'Uploads'.'/'.'test1.xlsx';
+        $filename2 = '.'.'/'.'Uploads'.'/'.'test2.xlsx';
+        $ExcelObj = $objRender->load($filename);
+        $ExcelObj->setActiveSheetIndex(0);
+
+        $ExcelObj->getActiveSheet()->setCellValue('C6',4);
+        $ExcelObj->getActiveSheet()->setCellValue('D6',5);
+        $ExcelObj->getActiveSheet()->setCellValue('E6',20);
+        $flag = $ExcelObj->getActiveSheet()->getCell("B1")->getValue();
+        $objWriter = \PHPExcel_IOFactory::createWriter($ExcelObj, 'excel2007');
+        $objWriter->save($filename2);
+        echo $flag;
+
+    }
+
+    public function testupcheck(){
+        $queryinfo['pid']=14;
+        $queryinfo['checkdate']='2020-05-04';
+        $queryinfo['checkshift']=1;
+        $logicworker=new workercheck();
+        $wlist=$logicworker->getunchecklist($queryinfo);
+        var_dump($wlist);
+    }
+
+    public function testnewchout(){
+        $arr['cid']=4;
+        $arr['yearinfo']='2020';
+        $arr['monthinfo']='08';
+        $logic=new contactlogic();
+        $llist=$logic->getworkersumbycid($arr);
+        var_dump($llist);
+
+    }
+
+
+    public function testexcelinputdb(){
+        vendor('PHPExcel.PHPExcel');
+        //$phpExcel = new \PHPExcel();
+        $objRender = \PHPExcel_IOFactory::createReader('excel2007');
+        $filename = '.'.'/'.'Uploads'.'/'.'payrecord.xlsx';
+        $ExcelObj = $objRender->load($filename);
+        $ExcelObj->setActiveSheetIndex(0);
+
+        $l_p=new paylogic();
+        $plist=array();
+
+        for($i=2;$i<10;$i++){
+            $paydetail=array();
+            $paydetail['paymoney']=$ExcelObj->getActiveSheet()->getCell("H".$i)->getValue();
+            $paydetail['sfzid']=$ExcelObj->getActiveSheet()->getCell("F".$i)->getValue();
+            $paydetail['wname']=$ExcelObj->getActiveSheet()->getCell("G".$i)->getValue();
+            $paydetail['payclass']=$ExcelObj->getActiveSheet()->getCell("E".$i)->getValue();
+            $daynumber=$ExcelObj->getActiveSheet()->getCell("D".$i)->getValue();
+            $paydetail['paydate']=gmdate('Y-m-d',($daynumber-25569)*1440*60);
+            $paydetail['indate']=date('Y-m-d');
+            $l_p->savepaydetail($paydetail);
+            array_push($plist,$paydetail);
+        }
+        echo count($plist);
+        var_dump($plist);
+    }
+
+    public function testdatastrtrans(){
+        $i=44302-25569;
+        $j=$i*1440*60;
+
+
+        echo $j."</br>";
+        echo gmdate('Y-m-d',$j);
+        //date_format($j,"YYYY-mm-dd");
+        //var_dump(strtotime('1900-01-01','+'.$i.' days'));
+
+    }
+}

+ 37 - 0
application/index/controller/Weblogin.php

@@ -0,0 +1,37 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/22
+ * Time: 22:16
+ */
+namespace app\index\controller;
+use app\index\logic\webmanger;
+use think\Controller;
+
+class Weblogin extends Controller{
+    public function login(){
+        //echo  'post ok';
+        $userinfo=request() -> param();
+       // var_dump($userinfo);
+        $wm= new webmanger();
+        $uinfo=$wm->getlogininfo($userinfo['userName'],$userinfo['password']);
+        //var_dump($uinfo);
+        if ($uinfo){
+            $res_r['code']=200;
+            $res_r['resultData']=$uinfo;
+        }else{
+            $res_r['code']=0;
+            $res_r['errmsg']='登录失败';
+        }
+
+        return json_encode($res_r,320);
+    }
+
+    public function testlogin(){
+        echo "test ok";
+        $res_r['code']=0;
+        $res_r['errmsg']='登录失败';
+        return json_encode($res_r);
+    }
+}

+ 786 - 0
application/index/controller/Worker.php

@@ -0,0 +1,786 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/29
+ * Time: 0:38
+ */
+
+namespace app\index\controller;
+use app\index\logic\workercheck;
+use app\index\logic\workermanger;
+use think\Controller;
+use app\index\logic\paylogic;
+
+class Worker extends Controller {
+    /*
+     * 20200306
+     * 修改该方法,获取指定项目的员工
+     * 为了简便,取消了开头自动获取所有项目员工的方法,降低前端体验,但并不重要,
+     * 因多个方法共用此方法,所以必须加上判断
+     * @todo 这个方法要从前端分开,目前这样是不太对的,违背了架构的原则
+     */
+    public function getallworker() {
+        $queryinfo = request()->param();
+        $pagenum = $queryinfo['pageNum'];
+        $pagesize = $queryinfo['pageSize'];
+
+        $workerlogic = new workermanger();
+        if (array_key_exists('sprojectid', $queryinfo)) {
+            $sourceprj = $queryinfo['sprojectid'];
+            $w_list = $workerlogic->getprjworkerlist($pagenum, $pagesize, $sourceprj);
+        } else {
+            // $sourceprj=0;
+            $w_list = $workerlogic->getallworkerlist($pagenum, $pagesize);
+        }
+        //
+        if ($w_list) {
+            $res_r['code'] = 200;
+            $res_r['resultData']['list'] = $w_list;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '查询失败';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230214
+     * 获取所有的工人,
+     * 但是按公司获取
+     */
+    public function getallworkerbycid() {
+        $queryinfo = request()->param();
+        $pagenum = $queryinfo['pageNum'];
+        $pagesize = $queryinfo['pageSize'];
+
+        $workerlogic = new workermanger();
+
+        // $sourceprj=0;
+        $cid = $queryinfo['companyid'];
+        $w_list = $workerlogic->getallworkerlistbycid($pagenum, $pagesize, $cid);
+
+        //
+        if ($w_list) {
+            $res_r['code'] = 200;
+            $res_r['resultData']['list'] = $w_list;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '查询失败';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    public function addworker() {
+        $workerinfo = request()->param();
+
+        $workerlogic = new workermanger();
+
+        // $workerinfo=htmlspecialchars_decode($workerinfo);
+        $newid = $workerlogic->saveworker($workerinfo);
+
+        if ($newid > 0) {
+            $res_r['code'] = 200;
+            $res_r['resultData']['code'] = 200;
+            $res_r['resultData']['newid'] = $newid;
+        } else {
+            $res_r['code'] = 200;
+            $res_r['resultData']['code'] = 0;
+            if ($newid == -1) {
+                $res_r['resultData']['msg'] = '号码重复';
+            } else {
+                $res_r['resultData']['msg'] = '添加失败';
+            }
+
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20200312
+     * 请求日期所需的出勤人数
+     */
+    public function querywcountbydate() {
+        $queryinfo = request()->param();
+        $l_w = new workermanger();
+
+        $worker_countlist = $l_w->getcheckcountbydate($queryinfo);
+        if ($worker_countlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $worker_countlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '查询失败';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230214
+     * 获取本公司的员工的出勤人数统计
+     */
+    public function querywcountbydatecid() {
+        $queryinfo = request()->param();
+        $l_w = new workermanger();
+
+        $worker_countlist = $l_w->getcheckcountbydatecompany($queryinfo);
+        if ($worker_countlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $worker_countlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '查询失败';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210303
+     * 获取所有的未处理调出人员
+     */
+    public function queryunoprtrans() {
+        $queryinfo = request()->param();
+        $l_w = new workermanger();
+
+        $workerlist = $l_w->getuntransworker($queryinfo);
+        if ($workerlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $workerlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '查询失败';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20200205
+     * steelxu
+     *  web端提交项目工人数据
+     */
+    public function suboprtransprj() {
+        $qryinfo = request()->param();
+
+        $workerlogic = new workermanger();
+        $qryinfo['workerlist'] = htmlspecialchars_decode($qryinfo['workerlist']);
+        $wokerlist = json_decode($qryinfo['workerlist'], true);
+        $prjinfo = $workerlogic->oprtransferlist($qryinfo['pid'], $wokerlist);
+
+        if ($prjinfo) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $prjinfo;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '修改失败';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210311
+     * 根据姓名请求资料
+     */
+    public function querywinfobyname() {
+        $queryinfo = request()->param();
+        $l_w = new workermanger();
+
+        $workerlist = $l_w->getworkerinfobyname($queryinfo);
+        if ($workerlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $workerlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '查询失败';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210416
+     * 定时自动更新工人年龄
+     */
+    public function oprworkerage() {
+        $l_w = new workermanger();
+        $l_w->updatewaggbybirthday();
+    }
+
+    /*
+     * 20210427
+     * 更新
+     */
+    public function subupdworkerinfo() {
+        $queryinfo = request()->param();
+        $l_w = new workermanger();
+
+        $wcount = $l_w->updateworkerinfobyid($queryinfo);
+        if ($wcount == 1) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $wcount;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '更新失败';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210508
+     * 获取用户的支款记录
+     */
+    public function querypaylistbyuser() {
+        $queryinfo = request()->param();
+        $l_p = new paylogic();
+
+        $paylist = $l_p->getpayrecordbyuid($queryinfo);
+        if ($paylist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $paylist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '查询失败';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230224
+     */
+    public function querypaylistbyuserforapp() {
+        $queryinfo = request()->param();
+        $l_p = new paylogic();
+
+        $paylist = $l_p->getpayrecordbyuid($queryinfo);
+        if ($paylist) {
+            $res_r['code'] = 200;
+            $res_r['msg'] = "请求成功";
+            $res_r['data'] = $paylist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '查询失败';
+            $res_r['data'] = $paylist;
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210430
+     * 提交位置信息
+     */
+    public function subuserlocation() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $nid = $l_f->saveuserlocation($queryinfo);
+
+        if ($nid > 0) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $nid;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '未成功';
+        }
+
+        return json_encode($res_r, 320);
+
+    }
+
+    /*
+     * 20210502
+     *
+     */
+    public function queryuserlocationlist() {
+
+        $l_m = new workermanger();
+        $rlist = $l_m->getlocationlist();
+
+        if ($rlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $rlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '无数据';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210511
+     *
+     */
+    public function querygroupprovince() {
+        $l_m = new workermanger();
+        $rlist = $l_m->getlocationgroupprovince();
+
+        if ($rlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $rlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '无数据';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210511
+     *
+     */
+    public function querygroupcity() {
+        $l_m = new workermanger();
+        $rlist = $l_m->getlocationgroupcity();
+
+        if ($rlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $rlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '无数据';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210515
+     */
+    public function queryprjlocation() {
+        $l_m = new workermanger();
+        $rlist = $l_m->getprjlocation();
+
+        if ($rlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $rlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '无数据';
+        }
+
+        return json_encode($res_r, 320);
+    }
+    /*
+     * 20230215
+     * 只获取自己公司的项目
+     */
+    public function querymyprjlocation() {
+        $queryinfo = request()->param();
+        $l_m = new workermanger();
+        $rlist = $l_m->getmyprjlocation($queryinfo);
+
+        if ($rlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $rlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '无数据';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210515
+     * 按项目请求项目人数
+     */
+    public function queryworkercountgroupprj() {
+        $l_m = new workermanger();
+        $rlist = $l_m->getworkerlocationcountgprj();
+
+        if ($rlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $rlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '无数据';
+        }
+
+        return json_encode($res_r, 320);
+    }
+    /*
+     * 20230215
+     * 公司按项目请求项目人数
+     */
+    public function queryworkercountgroupprjbycid() {
+        $queryinfo = request()->param();
+        $l_m = new workermanger();
+        $rlist = $l_m->getworkerlocationcountgprjbycid($queryinfo);
+
+        if ($rlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $rlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '无数据';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210516
+     * 提交公告
+     */
+    public function subnewnotice() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $nid = $l_f->savenewnotice($queryinfo);
+
+        if ($nid > 0) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $nid;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '未成功';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210517
+     */
+    public function queryallnotice() {
+        $l_m = new workermanger();
+        $rlist = $l_m->getallnotice();
+
+        if ($rlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $rlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '无数据';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230215
+     */
+    public function querynoticebycid() {
+        $queryinfo = request()->param();
+        $l_m = new workermanger();
+
+        $rlist = $l_m->getnoticebycid($queryinfo);
+
+        if ($rlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $rlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '无数据';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210517
+     */
+    public function querynewmsg() {
+        $queryinfo = request()->param();
+        $l_m = new workermanger();
+        $rlist = $l_m->getnewnotice($queryinfo);
+
+        if ($rlist) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $rlist;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '无数据';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210517
+     * 提交公告阅读记录
+     */
+    public function subnewnoticeread() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $nid = $l_f->updatenoticereadstatus($queryinfo);
+
+        if ($nid > 0) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $nid;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '未成功';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20210517
+     */
+    public function querypaylistbyuplogid() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $nid = $l_f->getpaylistbyuplogid($queryinfo);
+
+        if ($nid > 0) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $nid;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '未成功';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230130
+     */
+    public function subnewworkerfromwatercat() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $nid = $l_f->savenewworkerfromwatercat($queryinfo);
+
+        if ($nid > 0) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $nid;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '未成功';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230224
+     */
+    public function subnewworkerfromwatercatapp() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $nid = $l_f->savenewworkerfromwatercat($queryinfo);
+
+        if ($nid > 0) {
+            $res_r['code'] = 200;
+            $res_r['msg'] = '提交成功';
+            $res_r['data'] = $nid;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '未成功';
+            $res_r['data'] = $nid;
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230131
+     * 根据电话号码返回用户信息
+     */
+    public function queryworkerinfobytel() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $winfo = $l_f->getworkerinfobytel($queryinfo);
+
+        if ($winfo) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $winfo;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '未成功';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230222
+     */
+    public function queryworkerinfobytelforapp() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $winfo = $l_f->getworkerinfobytel($queryinfo);
+
+        if ($winfo) {
+            $res_r['code'] = 200;
+            $res_r['msg'] = '查询成功';
+            $res_r['data'] = $winfo;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '未成功';
+            $res_r['data'] = $winfo;
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230131
+     */
+    public function subnewinventworker() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $winfo = $l_f->addnewinvent($queryinfo);
+
+        if ($winfo) {
+            $res_r['code'] = 200;
+            $res_r['msg'] = '邀请已发出';
+            $res_r['data'] = $winfo;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '邀请未发出';
+            $res_r['data'] = $winfo;
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230222
+     *
+     */
+    public function subnewinventworkerforapp() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $winfo = $l_f->addnewinvent($queryinfo);
+
+        if ($winfo) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $winfo;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '未成功';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230131
+     */
+    public function queryinventinfobywid() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $winfo = $l_f->getinventinfobywid($queryinfo);
+
+        if ($winfo) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $winfo;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '未成功';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230224
+     */
+    public function queryinventinfobywidforapp() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $winfo = $l_f->getinventinfobywid($queryinfo);
+
+        if ($winfo) {
+            $res_r['code'] = 200;
+            $res_r['msg'] = '请求成功';
+            $res_r['data'] = $winfo;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '无数据';
+            $res_r['data'] = $winfo;
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230201
+     */
+    public function subacceptinvent() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $winfo = $l_f->updateprjbyinvent($queryinfo);
+
+        if ($winfo) {
+            $res_r['code'] = 200;
+            $res_r['resultData'] = $winfo;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['errmsg'] = '未成功,查看是否在范围内';
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230223
+     */
+    public function subacceptinventforapp() {
+        $queryinfo = request()->param();
+        $l_f = new workermanger();
+        $winfo = $l_f->updateprjbyinvent($queryinfo);
+
+        if ($winfo) {
+            $res_r['code'] = 200;
+            $res_r['msg'] = '进入工地成功';
+            $res_r['data'] = $winfo;
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = '未成功,查看是否在范围内';
+            $res_r['data'] = $winfo;
+        }
+
+        return json_encode($res_r, 320);
+    }
+
+    /*
+     * 20230303
+     */
+    public function subworkerinclosechangeforapp() {
+        $queryinfo = request()->param();
+        $l_f = new workercheck();
+        $winfo = $l_f->oprinencloseinfo($queryinfo);
+
+        if ($winfo['status'] == 1) {
+            $res_r['code'] = 200;
+            $res_r['msg'] = $winfo['msg'];
+            $res_r['data'] = $winfo['data'];
+        } else {
+            $res_r['code'] = 0;
+            $res_r['msg'] = $winfo['msg'];
+            $res_r['data'] = $winfo['data'];
+        }
+
+        return json_encode($res_r, 320);
+    }
+    /**
+     * 获取工人日工资列表
+     *
+     * @return void
+     * @author wj
+     * @date 2025-02-17
+     */
+    public function getdaypricerecodelist() {
+        $queryinfo = request()->param();
+        $l_f = new workercheck();
+        $result = $l_f->getdaypricerecodelist($queryinfo);
+        if (empty($result['status'])) {
+            $res_r['code'] = 0;
+        }
+        $res_r['msg'] = $result['msg'];
+        $res_r['data'] = $result['data'];
+        return json_encode($res_r, 320);
+    }
+}

+ 277 - 0
application/index/logic/checkmanger.php

@@ -0,0 +1,277 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/30
+ * Time: 10:59
+ */
+
+namespace app\index\logic;
+use app\index\model\checkinfomodel;
+use app\index\model\checkoprmodel;
+use app\index\model\pwrelationmodel;
+use app\index\model\daycheckinfo;
+use app\index\model\ginfomodel;
+use app\index\model\wheadmodel;
+use app\index\model\gworkermodel;
+
+class checkmanger{
+    //20200203 日起停止使用,改从daycheckinfo中读取
+    public function getchecklistbyhead($checkhead,$checkdate,$checkshift){
+        $check_table=new checkinfomodel();
+        $list=$check_table->getchecklistbyheader($checkhead,$checkdate,$checkshift);
+        return $list;
+
+    }
+
+    //20200203 日起使用,从daycheckinfo中读取
+    public function getchecklistbyheadwithdate($checkhead,$checkdate){
+        $daycheck_table=new daycheckinfo();
+        $list=$daycheck_table->getchecklistbyheadwithdate($checkhead,$checkdate);
+        return $list;
+
+    }
+
+  /*
+   *   getprjcheckoprbywid  于20200203日停止使用,仅保留代码
+   * */
+
+    public function getprjcheckoprbywid($wid,$checkdate,$shift){
+        //获得项目ID
+        $pw_tabel=new pwrelationmodel();
+        $pid=$pw_tabel->getpidbywid($wid);
+        if ($pid>0){
+            //获取项目下,当天班次所有打分记录
+            $opr_t=new checkoprmodel();
+            $list=$opr_t->getoprinfobypid($pid,$checkdate,$shift);
+            return $list;
+        }else{
+            //此人无项目
+            $list=array();
+            return $list;
+        }
+
+    }
+    //20200203开始使用,按日汇总考勤,参数中去掉了班次参数
+    public function getheadcheckoprwithdate($wid,$checkdate){
+        //获得项目ID
+        $pw_tabel=new pwrelationmodel();
+        $pid=$pw_tabel->getpidbywid($wid);
+        if ($pid>0){
+            //获取项目下,当天班次所有打分记录
+            $opr_t=new checkoprmodel();
+            $list=$opr_t->getoprinfobypid($pid,$checkdate);
+            return $list;
+        }else{
+            //此人无项目
+            $list=array();
+            return $list;
+        }
+
+    }
+    /*
+     * 20200403
+     * 获取项目经理个人所有的记工记录
+     */
+    public function getoprinfobyhid($arr){
+        $hid=$arr['hid'];
+        $startdate=date('Y-m-d',strtotime('-60 day'));
+        $opr_t=new checkoprmodel();
+        $list=$opr_t->seloprlistbyhid($hid,$startdate);
+
+        return $list;
+    }
+
+
+    /*
+     * 20200206
+     * steelxu
+     * 按人汇总表的数据,汇人总的天数,总记分
+     * 先直接应用daycheckinfo实现
+     * 20200325
+     * 加身份证号
+     */
+    public function getsumcheckinfo($query_arr){
+        $month=$query_arr['monthinfo'];
+        $year=$query_arr['yearinfo'];
+        $pageNum=$query_arr['pageNum'];
+        $pageSize=$query_arr['pageSize'];
+        $start=($pageNum-1)*$pageSize;
+        if (strlen($month)==1){
+            $month='0'.$month;
+        }
+        $strmonth=$year.'-'.$month;
+        $dc_table=new daycheckinfo();
+        //20200421 为统计推荐奖金,启用新方法,
+        //$r_list=$dc_table->countcheckbymonth($strmonth,$start,$pageSize);
+        //20200421 含 奖励计算的新方法
+        $r_list=$dc_table->countcheckwithawardbymonth($strmonth,$start,$pageSize);
+
+        //获取所有工人信息
+        //todo 此处在数据量大时可优化,可重写model层查询,只返回id和身份证,这样效率更高,现在暂时不用
+        $t_w=new gworkermodel();
+        $w_list=$t_w->selshengfengzhenglist();
+        $sfzlist=array();
+        foreach($w_list as $k){
+            $id=$k['id'];
+            if($k['shengfengid']){
+                $sfzlist[$id]=$k['shengfengid'];
+            }else{
+                $sfzlist[$id]='';
+            }
+
+        }
+
+
+
+        //获得了总体数据,获取每日数据
+        foreach ($r_list as &$v) {
+                $wid=$v['wid'];
+               $v['sfz']=$sfzlist[$wid];
+            $detail_arr=$dc_table->getcheckinfobywidwithmonth($wid,$strmonth);
+            foreach($detail_arr as $k){
+                $daystr=substr($k['checkdate'],-2);
+//                echo $k['checkdate'];
+//                echo $daystr;
+                $v[$daystr]=$k['dayscore'];
+            }
+        }
+        return $r_list;
+    }
+
+    /*
+     * 20230215
+     * 加上公司的
+     */
+    public function getsumcompanycheckinfo($query_arr){
+        $month=$query_arr['monthinfo'];
+        $year=$query_arr['yearinfo'];
+        $pageNum=$query_arr['pageNum'];
+        $pageSize=$query_arr['pageSize'];
+        $cid=$query_arr['companyid'];
+        $start=($pageNum-1)*$pageSize;
+        if (strlen($month)==1){
+            $month='0'.$month;
+        }
+        $strmonth=$year.'-'.$month;
+        $dc_table=new daycheckinfo();
+        //20200421 为统计推荐奖金,启用新方法,
+        //$r_list=$dc_table->countcheckbymonth($strmonth,$start,$pageSize);
+        //20200421 含 奖励计算的新方法
+       // $r_list=$dc_table->countcheckwithawardbymonth($strmonth,$start,$pageSize);
+        //20230215 加上公司
+        $r_list=$dc_table->countcompanycheckwithawardbymonth($strmonth,$start,$pageSize,$cid);
+        //获取所有工人信息
+        //todo 此处在数据量大时可优化,可重写model层查询,只返回id和身份证,这样效率更高,现在暂时不用
+        //身份证还是取全部的,因为人员会流动,无论那种方式都会有问题,最后再看如何优化
+        // 问题在于,如果工人数量较多,再和工人身份证做连接,将是a*b的数量级的运算,
+        //如果取出来,则是a+b的运算,
+        $t_w=new gworkermodel();
+        $w_list=$t_w->selshengfengzhenglist();
+       // $w_list=$t_w->selcompanyshengfengzhenglist($cid);
+        $sfzlist=array();
+        foreach($w_list as $k){
+            $id=$k['id'];
+            if($k['shengfengid']){
+                $sfzlist[$id]=$k['shengfengid'];
+            }else{
+                $sfzlist[$id]='';
+            }
+
+        }
+
+        //获得了总体数据,获取每日数据
+        foreach ($r_list as &$v) {
+            $wid=$v['wid'];
+            if($sfzlist[$wid]){
+                $v['sfz']=$sfzlist[$wid];
+                $detail_arr=$dc_table->getcheckinfobywidwithmonth($wid,$strmonth);
+                foreach($detail_arr as $k){
+                    $daystr=substr($k['checkdate'],-2);
+//                echo $k['checkdate'];
+//                echo $daystr;
+                    $v[$daystr]=$k['dayscore'];
+                }
+            }
+        }
+        return $r_list;
+    }
+
+    /*
+     * 20200208
+     * steelxu
+     * 取消某员工,某班次考勤
+     * 20200209 增加对操作记录的处理,在opr 表中增加一条 -1的记录
+     * 20200307,增加对撤销时gid的撤销操作
+     */
+    public function invokecheckbywid($query_arr){
+        $wid=$query_arr['wid'];
+        $checkdate=$query_arr['checkdate'];
+        $shift=$query_arr['shift'];
+        $id=$query_arr['id'];
+        $headid=$query_arr['headid'];
+        if (array_key_exists('gid',$query_arr)){
+            $gid=$query_arr['gid'];
+        }else{
+            $t_head=new wheadmodel();
+            $gid=$t_head->getgidbywid($wid);
+        }
+        $dc_table=new daycheckinfo();
+        $res=$dc_table->revokecheckshift($checkdate,$wid,$shift,$id);
+        $ginfo=new ginfomodel();
+        $pid=$ginfo->getpidbygid($gid);
+        $opr_arr['pid']=$pid;
+        $opr_arr['checkdate']=$checkdate;
+        $opr_arr['checkorder']=$shift;
+        $opr_arr['headid']=$headid;
+        $opr_arr['isopr']=1;
+        $opr_arr['gid']=$gid;
+        $opr_arr['wnum']=-1;
+        $opr_arr['oprtime']=date('Y:m:d H:i:s');
+        $oprtable=new checkoprmodel();
+        $oprtable->saveOprRecord($opr_arr);
+
+        return $res;
+    }
+
+    /*
+     * 20200208
+     * steelxu
+     * 获取班组长某班次的记工记录,
+     * 以便班组长取消
+     *20200416
+     * 取出时只有当时所在的班组才能修改,换了班组则不可以
+     *
+     */
+    public function getheadoprwithshift($query_arr){
+        $headid=$query_arr['wid'];
+        $checkdate=$query_arr['checkdate'];
+        $shift=$query_arr['shift'];
+        //获取班组
+        $ghead=new wheadmodel();
+        $gid=$ghead->getgidbywid($headid);
+
+        $dc_table=new daycheckinfo();
+        $rlist=$dc_table->getlistbyheadwithshift($checkdate,$shift,$headid,$gid);
+        return $rlist;
+    }
+
+    public function getworkovertime($pagenum,$pagesize){
+        $start=($pagenum-1)*$pagesize;
+        $t_dayscore=new daycheckinfo();
+        $rlist=$t_dayscore->selscorewithprjbyscore($start,$pagesize);
+        return $rlist;
+    }
+
+    /*
+     * 20230215
+     * 修改查加班的功能,只能查本公司的
+     */
+    public function getworkovertimebycid($pagenum,$pagesize,$cid){
+        $start=($pagenum-1)*$pagesize;
+        $t_dayscore=new daycheckinfo();
+        $rlist=$t_dayscore->selscorewithprjbyscorecid($start,$pagesize,$cid);
+        return $rlist;
+    }
+
+}

+ 300 - 0
application/index/logic/contactlogic.php

@@ -0,0 +1,300 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/3/8
+ * Time: 16:54
+ */
+
+namespace app\index\logic;
+use app\index\model\gworkermodel;
+use app\index\model\pinfomodel;
+use app\index\model\ginfomodel;
+use app\index\model\contactmodel;
+use app\index\model\gcmodel;
+use app\index\model\daycheckinfo;
+use app\index\model\recuitmodel;
+
+class contactlogic{
+    /*
+     * 20200308 存储新合同
+     */
+    public function savecontact($arr){
+        $t_contact=new contactmodel();
+        $res=$t_contact->insinfo($arr);
+        return $res;
+    }
+
+    /*
+ * 20200308 获取合同清单
+ */
+    public function getclistbypid($arr){
+        $pid=$arr['pid'];
+        $t_contact=new contactmodel();
+        $res=$t_contact->selclistbypid($pid);
+        return $res;
+    }
+
+    /*
+     * 20200320
+     * 获取所有合同清单,只为导出服务,该方案中去年验证合同
+     */
+
+    public function getclist(){
+        $t_contact=new contactmodel();
+        $clist=$t_contact->selectclistbyacitve();
+        return $clist;
+    }
+    /*
+     * 20230215
+     * 获取公司的合同列表
+     */
+    public function getcompanyclist($cid){
+        $t_contact=new contactmodel();
+        $clist=$t_contact->sellistbycid($cid);
+        return $clist;
+    }
+
+    /*
+     * 20200309
+     * 存入合同关系
+     */
+
+    public function savegcrelation($gcinfo){
+        $t_gc=new gcmodel();
+        $newid=$t_gc->insinfo($gcinfo);
+        return $newid;
+
+    }
+/*
+ * 20200310
+ * 按项目获取合同及各合同的汇总记分
+ * 当前先实现返回合同,后期加按合同汇总分
+ */
+    public function getctotalbypid($arr){
+        //预留翻页,用$arr可实现controller层不受影响
+        $pid=$arr['pid'];
+        $t_contact=new contactmodel();
+        $res=$t_contact->selclistbypid($pid);
+
+        //todo 条件成熟后 加上所有项目的总分
+        return $res;
+    }
+   /*
+    * 20200310
+    * 获取合同下的班组考勤
+    *
+    */
+
+    public function getgroupsumbycid($arr){
+        $cid=$arr['cid'];
+        $month=$arr['monthinfo'];
+        $year=$arr['yearinfo'];
+        if (strlen($month)==1){
+            $month='0'.$month;
+        }
+        $strmonth=$year.'-'.$month;
+        $t_gc=new gcmodel();
+        $t_ginfo=new ginfomodel();
+        $t_ds=new daycheckinfo();
+        //获取班组清单
+        $g_list=$t_gc->selgidbycid($cid);
+
+        foreach($g_list as &$v){
+            //获取班组名称
+            $gid=$v['gid'];
+            $g_info=$t_ginfo->selginfobygid($gid);
+            $v['gname']=$g_info['gname'];
+            //获取月度计分详情
+            $score_list=$t_ds->selsuminfobygid($gid,$strmonth);
+           if ($score_list) {
+               $summonth = 0;
+               foreach ($score_list as $k) {
+                  // $day_str = strval(substr(strval($k['checkdate']), -2));
+                   $int_score = intval($k['d_score_1']) + intval($k['d_score_2']);
+
+                   if ($int_score > 0) {
+                     //  $v[$day_str] = $int_score;
+                       $v[$k['checkdate']] = $int_score;
+                   }
+                   $summonth += $int_score;
+               }
+               $v['summonth'] = $summonth;
+               // print_r($v);
+           }
+        }
+       // echo json_encode($g_list);
+        return $g_list;
+    }
+
+    /*
+     * 20200315
+     * 获取同一个合同下班组下所有工人的考勤,
+     * 另外还可以按个人对考勤一样,给一个分组的考勤
+     * 20200818 将处理过程改到
+     */
+
+    public function getworkersumbycid($arr){
+        //准备
+        $cid=$arr['cid'];
+        $month=$arr['monthinfo'];
+        $year=$arr['yearinfo'];
+        if (strlen($month)==1){
+            $month='0'.$month;
+        }
+        $strmonth=$year.'-'.$month;
+        $t_gc=new gcmodel();
+        $t_ginfo=new ginfomodel();
+        $t_ds=new daycheckinfo();
+
+        $t_re=new recuitmodel();
+        //取出ulist 存储所有的被推荐人,减少每一个用户都要访问数据表的问题,在单独一条记录低于就可以
+        $ulist=$t_re->seluserlist();
+        $recuituserlist=array();
+        foreach($ulist as $kv){
+            array_push($recuituserlist,$kv['userid']);
+        }
+        $gwlist=array();
+
+        //先获取班组
+        $g_list=$t_gc->selgidbycid($cid);
+        foreach($g_list as &$v) {
+            //按班组获得员工记分清单
+            $gid=$v['gid'];
+            $g_info=$t_ginfo->selginfobygid($gid);
+            $v['gname']=$g_info['gname'];
+            $v['wid']='g'.strval($gid);
+            //再按班组组装员工数据
+            $workerscore_list=$t_ds->selworksumbygidwithdate($gid,$strmonth);
+
+            $newscorelist=$this->countgroupdaysum($workerscore_list);
+
+            //获取班组汇总数据
+            //$score_list=$t_ds->selsuminfobygid($gid,$strmonth);
+            //20200823 用新方法,不访问数据表,最后再合并
+            $score_list=$this->countgroupdaysum($workerscore_list);
+            if($workerscore_list){
+                //如果该项目日期内有员工记录,则建立员工记录
+                $summonth = 0;
+                foreach ($score_list as $k) {
+                    // $day_str = strval(substr(strval($k['checkdate']), -2));
+                    $int_score = intval($k['d_score_1']) + intval($k['d_score_2']);
+
+                    if ($int_score > 0) {
+                        //  $v[$day_str] = $int_score;
+                        $v[$k['checkdate']] = $int_score;
+                    }
+                    $summonth += $int_score;
+                }
+                $v['summonth'] = $summonth;
+                //以上处理班组总数据
+                //以下处理班组个人数据
+                $opredwlist=$this->opreworkerlist($workerscore_list,$recuituserlist);
+                $v['detail']=$opredwlist;
+
+//                }
+            }else{
+                //没有员工被记工,则返回一条记录,只有组名
+                $v['summonth']=0;
+                $v['detail']=array();
+            }
+
+        }
+        return $g_list;
+    }
+    /*
+     * 20200823
+     * 根据问题,推动内部获取分组的相关数据
+     *
+     */
+    private function countgroupdaysum($workerlist){
+        $wlist=array();
+        $datelist=array();
+        foreach($workerlist as $kv){
+            $cdate=$kv['checkdate'];
+            if (in_array($cdate,$datelist)){
+                //已存在,取得位置
+                $dateindex=array_flip($datelist);
+                $dindex=$dateindex[$cdate];
+                $wlist[$dindex]['d_score_1']+=$kv['d_score_1'];
+                $wlist[$dindex]['d_score_2']+=$kv['d_score_2'];
+            }else{
+                //不存在,创造一个新元素,同步插入
+                $nitem=array();
+                $nitem['checkdate']=$cdate;
+                $nitem['d_score_1']=$kv['d_score_1'];
+                $nitem['d_score_2']=$kv['d_score_2'];
+                array_push($wlist,$nitem);
+                array_push($datelist,$cdate);
+            }
+        }
+        return $wlist;
+
+    }
+
+    /*
+     * edit
+     * 20200503
+     * 增加,如果是被推荐的工人,则每天到10分累加5元的成本
+     * 20200818 被推荐的工人处理到上一级处理,一次处理只访问一次数据表,节约时间
+     */
+
+    private function opreworkerlist($arr,$ulist){
+        $wlist=array();
+        //初始化
+
+
+        foreach($arr as $k){
+            $wname=$k['wname'];
+
+                $wlist[$wname]['wid']=$k['wid'];
+
+                $wlist[$wname]['gname']=$wname;
+                $checkdate=$k['checkdate'];
+                $int_score = intval($k['d_score_1']) + intval($k['d_score_2']);
+                $wlist[$wname][$checkdate]=$int_score;
+                if (array_key_exists('summonth',$wlist[$wname])){
+                    $wlist[$wname]['summonth']+=$int_score;
+                }else{
+                    $wlist[$wname]['summonth']=$int_score;
+                }
+                //累加超过10分的天数
+               if ($int_score>=10){
+                   if (array_key_exists('countdays',$wlist[$wname])){
+                       $wlist[$wname]['countdays']+=1;
+                   }else{
+                       $wlist[$wname]['countdays']=1;
+                   }
+               }
+
+        }
+        $key_list=array_keys($wlist);
+        $workertotal=array();
+        foreach($key_list as $kv){
+            $wid=$wlist[$kv]['wid'];
+            //获取是否是推荐关系
+         //   $recuitinfo=$t_re->selrecuitinfobyuserid($wid);  //20200817 ,test废弃,比较时间
+          // if ($recuitinfo){
+            if (in_array($wid,$ulist)){                       //20200817 测试使用
+                if(array_key_exists('countdays',$wlist[$kv])){
+                    $wlist[$kv]['recuitcost']=5*$wlist[$kv]['countdays'];
+                }
+            }
+
+            array_push($workertotal,$wlist[$kv]);
+        }
+        //补充身份证号
+        $t_w=new gworkermodel();
+
+        foreach($workertotal as &$worker){
+            $wid=$worker['wid'];
+            $winfo=$t_w->getinfobyid($wid);
+            if($winfo){
+                $worker['sfz']=$winfo['shengfengid'];
+            }
+
+        }
+        return $workertotal;
+
+    }
+}

+ 23 - 0
application/index/logic/errorCode.php

@@ -0,0 +1,23 @@
+<?php
+namespace app\index\logic;
+/**
+ * error code 说明.
+ * <ul>
+
+ *    <li>-41001: encodingAesKey 非法</li>
+ *    <li>-41003: aes 解密失败</li>
+ *    <li>-41004: 解密后得到的buffer非法</li>
+ *    <li>-41005: base64加密失败</li>
+ *    <li>-41016: base64解密失败</li>
+ * </ul>
+ */
+class errorCode
+{
+	public static $OK = 0;
+	public static $IllegalAesKey = -41001;
+	public static $IllegalIv = -41002;
+	public static $IllegalBuffer = -41003;
+	public static $DecodeBase64Error = -41004;
+}
+
+?>

+ 51 - 0
application/index/logic/gmemberlogic.php

@@ -0,0 +1,51 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/3/3
+ * Time: 11:59
+ */
+
+namespace app\index\logic;
+use app\index\model\gmembermodel;
+
+class gmemberlogic{
+    /*
+     * 20200303
+     * 获取班组成员
+     */
+
+    public function getmlistbygid($arr){
+        $gid=$arr['gid'];
+        $t_gmember=new gmembermodel();
+        $mlist=$t_gmember->selmlistbygid($gid);
+
+        return $mlist;
+    }
+
+    /*
+     * 20200303
+     * 存入班组成员
+     */
+
+    public function savemember($member){
+
+        $t_gmember=new gmembermodel();
+        $mid=$t_gmember->insmember($member);
+
+        return $mid;
+    }
+
+    /*
+ * 20200303
+ * 存入班组成员列表
+ */
+
+    public function savememberlist($memberlist){
+
+        $t_gmember=new gmembermodel();
+        $mcount=$t_gmember->insmlist($memberlist);
+
+        return $mcount;
+    }
+}

+ 29 - 0
application/index/logic/headmanger.php

@@ -0,0 +1,29 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/2/11
+ * Time: 14:38
+ */
+namespace app\index\logic;
+use app\index\model\gworkermodel;
+use app\index\model\pwrelationmodel;
+use app\index\model\wheadmodel;
+
+class headmanger{
+    public function setghead($arr){
+        $set_arr['gid']=$arr['gid'];
+        $set_arr['gwid']=$arr['wid'];
+        $set_arr['startdate']=date('Y-m-d ');
+        $set_arr['checkstatus']=1;
+
+        $head_t=new wheadmodel();
+        //取消新班组长以前的权取,只在本班组有效
+        $head_t->changeghead($set_arr['gwid']);
+        //取消本班组当前的班组长,只有一个班组长
+        $head_t->updategheadbygid($set_arr['gid']);
+       $res= $head_t->addnewghead($set_arr);
+        return $res;
+
+    }
+}

+ 89 - 0
application/index/logic/paylogic.php

@@ -0,0 +1,89 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2021/5/1
+ * Time: 2:04
+ */
+namespace app\index\logic;
+use app\index\model\paydetailmodel;
+use app\index\model\uplogmodel;
+use app\index\model\gworkermodel;
+class paylogic{
+
+    /*
+     * 20210501
+     */
+    public function savepaydetail($arr){
+        $t_p=new paydetailmodel();
+        $t_p->insinfo($arr);
+    }
+
+    /*
+     * 20210502
+     */
+    public function savepayredetaillist($arr){
+        $t_p=new paydetailmodel();
+        $rcounts=$t_p->insinfolist($arr);
+        return $rcounts;
+    }
+
+    /*
+     * 20210506
+     */
+    public function savenewuplog($arr){
+        $t_ul=new uplogmodel();
+        $id=$t_ul->insinfo($arr);
+        return $id;
+
+    }
+
+    /*
+     * 20210507
+     * 查找是否有相同的文件名,来防止重复
+     */
+     public function getinfobyfname($arr){
+         $fname=$arr['upfilename'];
+         $t_ul=new uplogmodel();
+         $finfo=$t_ul->selinfobyfname($fname);
+         return $finfo;
+     }
+
+    /*
+     * 202100508
+     * 获取某人的支款记录
+     */
+    public function getpayrecordbyuid($arr){
+        $wid=$arr['wid'];
+        $t_w=new gworkermodel();
+        $winfo=$t_w->getinfobyid($wid);
+        $t_p=new paydetailmodel();
+        $ulist=array();
+        if($winfo){
+            $sfz=$winfo['shengfengid'];
+            $ulist=$t_p->selinfobysfz($sfz);
+        }
+        return $ulist;
+
+    }
+
+    /*
+     * 20210509
+     * 获得所有的导入记录
+     */
+    public function getalluplog(){
+        $t_u=new uplogmodel();
+        $rlist=$t_u->selalllist();
+        return $rlist;
+    }
+
+    /*
+     * 20230214
+     */
+    public function getuplogbycid($arr){
+        $cid=$arr['companyid'];
+        $t_u=new uplogmodel();
+        $rlist=$t_u->sellistbycid($cid);
+        return $rlist;
+    }
+}

+ 337 - 0
application/index/logic/prjmanger.php

@@ -0,0 +1,337 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/27
+ * Time: 15:35
+ */
+namespace app\index\logic;
+use app\index\model\daycheckinfo;
+use app\index\model\gworkermodel;
+use app\index\model\pinfomodel;
+use app\index\model\prjlocationmodel;
+use app\index\model\pwrelationmodel;
+use app\index\model\ginfomodel;
+use app\index\model\wheadmodel;
+use app\index\model\contactmodel;
+use app\index\model\gcmodel;
+use app\index\model\transfermodel;
+
+class prjmanger{
+    public function getallprj(){
+        $t_prj=new pinfomodel();
+        $prj_list=$t_prj->getallpinfo();
+        return $prj_list;
+    }
+
+    /*
+     * 20230214
+     * 根据 web管理员身份获取接口
+     */
+    public function getallprjbycid($arr){
+        $cid=$arr['companyid'];
+        $t_prj=new pinfomodel();
+        $prj_list=$t_prj->sellistbycid($cid);
+        return $prj_list;
+    }
+
+    public function addnewprj($prj){
+        $t_prj=new pinfomodel();
+        $datenow=date('Y-m-d ');
+        $prj['create_date']=$datenow;
+        $id=$t_prj->saveprjinfo($prj);
+        return $id;
+    }
+
+    public function getbyid($id){
+        $t_prj=new pinfomodel();
+        $prjinfo=$t_prj->getbyid($id);
+        return $prjinfo;
+    }
+
+    //批量设置修改项目关系接口
+    /*
+     * 20200204
+     * steelxu
+     * 修改用户的对应项目,以批量更改用户项目
+     * 特别说明,对班组长的迁移目前不自动处理,不在此方法中默认解决
+     */
+
+    public function changerelation($pid,$worker_arr){
+        $newdate=date('Y-m-d ');
+        $r_tale=new pwrelationmodel();
+        $w_table=new gworkermodel();
+        $icount=0;
+        //var_dump($worker_arr);
+        foreach ($worker_arr as $k=>$v) {
+            //组织数据
+            $relation['pid']=$pid;
+            $relation['wid']=$v['wid'];
+            $relation['startdate']=$newdate;
+            $relation['checkstatus']=1;
+            $w_table->updateprj($pid,$v['wid']);
+            $rid=$r_tale->addnewrelation($relation);
+            if ($rid>0){
+                $icount++;
+            }
+        }
+        return $icount;
+
+    }
+   /*
+    * 20200211
+    * steelxu
+    * 创建班组
+    */
+    public function creategroup($arr){
+        $g_tabel=new ginfomodel();
+        $res=$g_tabel->addnewgroup($arr);
+        return $res;
+    }
+
+    /*
+     * 20200211
+     * steelxu
+     * 获取项目下所有的班组
+     * 20200309修改加合同关系
+     * 20200530
+     * 增加反回班组长WID
+     */
+    public function getglist($pid){
+        $g_talbe=new ginfomodel();
+        $gheadinfo=new wheadmodel();
+        $work_table=new gworkermodel();
+        $t_gc =new gcmodel();
+        $t_ctct=new contactmodel();
+
+        //获取所有班组
+        $res=$g_talbe->getglistbypid($pid);
+        foreach ($res as &$gitem) {
+            //取班组长名称
+            $gid=$gitem['id'];
+            $gheader=$gheadinfo->getwidbygid($gid);
+            if ($gheader){
+                $wid=$gheader['gwid'];
+                $winfo=$work_table->getinfobyid($wid);
+                $gitem['wname']=$winfo['wname'];
+                $gitem['gwid']=$wid;
+            }else{
+                $gitem['wname']='';
+            }
+          //取合同名称
+            $gcinfo=$t_gc->selcinfobygid($gid);
+            if ($gcinfo){
+                $cid=$gcinfo['cid'];
+                $cinfo=$t_ctct->selcinfobycid($cid);
+                $gitem['contactname']=$cinfo['contactname'];
+            }else{
+                $gitem['contactname']='';
+            }
+        }
+        return $res;
+    }
+
+    /*
+     * 20200331
+     * 更新班组名称,详情
+     */
+    public function updategroupinfo($arr){
+        $g_tabel=new ginfomodel();
+        $res=$g_tabel->updatenamebyid($arr);
+        return $res;
+    }
+
+    /*
+     * 20210228
+     * steelxu
+     * 将用户离职,放到人才库,prjid=3中
+     * 所有的组长权限清零
+     */
+
+    public function leavejob($worker_arr){
+        $newdate=date('Y-m-d ');
+        $r_tale=new pwrelationmodel();
+        $w_table=new gworkermodel();
+        $t_gheader=new wheadmodel();
+        $icount=0;
+
+        //var_dump($worker_arr);
+        foreach ($worker_arr as $k=>$v) {
+            //组织数据
+            $relation['pid']=3;
+            $relation['wid']=$v['wid'];
+            $relation['startdate']=$newdate;
+            $relation['checkstatus']=1;
+            $w_table->updateprj(3,$v['wid']);
+            $rid=$r_tale->addnewrelation($relation);
+            if ($rid>0){
+                $icount++;
+            }
+            //如果是组长去掉组长权限
+            $change=$t_gheader->changeghead($v['wid']);
+        }
+        return $icount;
+
+    }
+
+    /*
+     * 20250212
+     * 自动离职,增加调出记录
+     */
+
+    public function autoleavejob($worker_arr){
+        $newdate=date('Y-m-d ');
+        $r_tale=new pwrelationmodel();
+        $w_table=new gworkermodel();
+        $t_gheader=new wheadmodel();
+        $icount=0;
+
+        //var_dump($worker_arr);
+        foreach ($worker_arr as $k=>$v) {
+            //组织数据
+            $relation['pid']=3;
+            $relation['wid']=$v['wid'];
+            $relation['startdate']=$newdate;
+            $relation['checkstatus']=1;
+            $w_table->updateprj(3,$v['wid']);
+            $rid=$r_tale->addnewrelation($relation);
+            if ($rid>0){
+                $icount++;
+            }
+            //如果是组长去掉组长权限
+            $change=$t_gheader->changeghead($v['wid']);
+            //插入调动表记录
+            $trans['wname']=$v['wname'];
+            $trans['wid']=$v['wid'];
+            $trans['rectime']=date('Y-m-d H:i:s');
+            $trans['telno']=$v['telno'];
+            $trans['transoutman']='两日未记工';
+            $trans['transoutid']=0;
+            $rid=$t_trans->insinfo($trans);
+        }
+        return $icount;
+
+    }
+
+
+    /*
+ * 20210228
+ * steelxu
+ * 将用户离职,放到人才库,prjid=3中
+ * 所有的组长权限清零
+     *并插入调动表中
+ */
+
+    public function transferprj($headid,$worker_arr){
+        $newdate=date('Y-m-d ');
+        $r_tale=new pwrelationmodel();
+        $w_table=new gworkermodel();
+        $t_gheader=new wheadmodel();
+        $t_trans=new transfermodel();
+        $icount=0;
+
+        //获取名字
+        $headinfo=$w_table->getinfobyid($headid);
+        $transoutname=$headinfo['wname'];
+
+        //var_dump($worker_arr);
+        foreach ($worker_arr as $k=>$v) {
+            //组织数据
+            $relation['pid']=3;
+            $relation['wid']=$v['wid'];
+            $relation['startdate']=$newdate;
+            $relation['checkstatus']=1;
+            $w_table->updateprj(3,$v['wid']);
+            $rid=$r_tale->addnewrelation($relation);
+            if ($rid>0){
+                $icount++;
+            }
+            //如果是组长去掉组长权限
+            $change=$t_gheader->changeghead($v['wid']);
+            //插入调动表记录
+            $trans['wname']=$v['wname'];
+            $trans['wid']=$v['wid'];
+            $trans['rectime']=date('Y-m-d H:i:s');
+            $trans['telno']=$v['telno'];
+            $trans['transoutman']=$transoutname;
+            $trans['transoutid']=$v['transoutid'];
+            $rid=$t_trans->insinfo($trans);
+        }
+        return $icount;
+
+    }
+
+    /*
+     * 20210725
+     * 每个项目的人员统计
+     */
+    public function getworkercountbypid(){
+        $t_p=new pinfomodel();
+        $plist=$t_p->getallpinfo();
+        $t_w=new gworkermodel();
+        $wlist=$t_w->selwcountbyprj();
+        foreach($wlist as &$pwinfo){
+            $pid=$pwinfo['cprojectid'];
+            foreach($plist as $prjinfo){
+                if($pid==$prjinfo['id']){
+                    $pwinfo['prjname']=$prjinfo['pname'];
+                }
+            }
+        }
+        return $wlist;
+    }
+
+
+    /*
+     * 20210807
+     * 七天自动离职
+     * edit by steelxu5
+     * 改为2天未记工,自动离开项目
+     */
+    public function autoleavejobwithweek(){
+        $t_gw=new gworkermodel();
+        $wlist=$t_gw->selinfolistwithprjid();
+        $unworkerlist=array();
+        $bdate=date('Y-m-d',strtotime('-2 day'));//20250211 改为2天未记工自动离开,原为7天
+        $t_d=new daycheckinfo();
+        foreach($wlist as $worker){
+            $wid=$worker['wid'];
+            $weekcount=$t_d->selscorebyidwithdays($wid,$bdate);
+            if($weekcount==0){
+                $nworker=array();
+                $nworker['wid']=$wid;
+                $nworker['tel']=$worker['telno'];
+                $nworker['wname']=$worker['wname'];
+                array_push($unworkerlist,$nworker);
+            }
+        }
+        if(count($unworkerlist)>0){
+            $this->autoleavejob($unworkerlist);
+        }
+    }
+
+    /*
+     * 20230302
+     */
+    public function subnewprjlocation($arr){
+        $t_pl=new prjlocationmodel();
+        $rec=$t_pl->insinfo($arr);
+        return $rec;
+    }
+
+
+    /*
+     * 20230302
+     */
+    public function getprjlocationinfo($arr){
+        $prjid=$arr['prjid'];
+        $t_pl=new prjlocationmodel();
+        $rec=$t_pl->selinfobyprjid($prjid);
+        return $rec;
+    }
+
+    /*
+     *
+     */
+
+}

+ 247 - 0
application/index/logic/recuitlogic.php

@@ -0,0 +1,247 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/4/15
+ * Time: 16:27
+ */
+
+namespace app\index\logic;
+use app\index\model\recuitmodel;
+use app\index\model\recuitawardmodel;
+use app\index\model\daycheckinfo;
+use app\index\model\gworkermodel;
+
+class recuitlogic{
+    public function savenewrecuit($arr){
+        $t_r=new recuitmodel();
+        $rid=$t_r->insinfo($arr);
+        return $rid;
+
+    }
+
+    public function getulistbyrecuit($arr){
+        $recuitid=$arr['recuituser'];
+        $t_r=new recuitmodel();
+        $rlist=$t_r->selulistbyrecuit($recuitid);
+        return $rlist;
+    }
+
+    /*
+     * 20200416
+     *修改数据结构,直接存储
+     */
+    public function getallrecuit($arr){
+        $t_r=new recuitmodel();
+        $rlist=$t_r->selrlist();
+//        $t_m= new gworkermodel();
+//        foreach($rlist as &$k){
+//            $recuitid=$k['recuituserid'];
+//            $uid=$k['userid'];
+//            $recuitinfo=$t_m->getinfobyid($recuitid);
+//            $uinfo=$t_m->getinfobyid($uid);
+//            $k['recuitname']=$recuitinfo['wname'];
+//            $k['wname']=$uinfo['wname'];
+//
+//        }
+
+        return $rlist;
+    }
+
+    /*
+     * 20200417
+     */
+
+    public function getnamebytl($arr){
+        $tel=$arr['tel'];
+        $t_m=new gworkermodel();
+        $rec=$t_m->seluinfobytel($tel);
+        return $rec;
+    }
+
+    /*
+     * 20200418
+     * 计算
+     */
+    private function countaward($uid){
+        //调用时已确认此用户数据需要重新计算,所以不再判断
+        //获取推荐人清单,同进要读取最早的入职日期
+        $t_r=new recuitmodel();
+        $ulist=$t_r->selulistbyrecuit($uid);
+        if (!$ulist){
+            //直接返回空,什么也不做
+            return 0;
+        }
+        $firstindate=$ulist[0]['indate'];//获取第一条入职记录,以确认是否在需要处理上个月的记录
+        //获取已有的记录
+        $t_ra=new recuitawardmodel();
+        $recordlist=$t_ra->selinfolistbywid($uid,1);
+        //循环计算准备
+        $t_ds=new daycheckinfo();
+        $edate=date('Y-m-d',strtotime('-2 day'));
+        $smonth=date('Y-m',strtotime('-2 day'));//计算的月份
+       // echo $edate;
+      //  echo $smonth;
+        //如果有记录,则获取最后一条记录的月份
+        $lastrecmonth='';
+        if ($recordlist){
+            $lastrecmonth=$recordlist[0]['summonth'];
+
+        }
+        //确定开始日期
+        //如果确定开始日期,如果已有记录,则开始日期从最后一条记录月份的第一天开始,如果没有记录,则从内推人员的第一个入职日期开始
+        if ($lastrecmonth>''){
+            $bdate=$lastrecmonth.'-01';
+            $commonth=$lastrecmonth;
+        }else{
+            $bdate=$firstindate;
+            $commonth=substr($bdate,0,7);
+        }
+       // echo $commonth;
+        //从确定的开始日期开始,循环计算,循环结束条件,下一个计算月份超出当前月份
+        while ($commonth<=$smonth){
+            //设置初始变量
+            $recuitworks=0;
+            $sumcounts=0;
+            $tmpbdate=$commonth.'-01';
+            $commothendate=date('Y-m-d',strtotime("$tmpbdate +1 month -1 day"));
+            //如果超出,则设置实际日期,避免最后两天被统计进去
+            if ($commothendate>=$edate){
+                $commothendate=$edate;
+            }
+            //循环遍历每个推荐的员工,获取阶段考勤日
+            foreach($ulist as &$kv ){
+                $kid=$kv['userid'];
+                $indate=$kv['indate'];
+                if ($indate>$bdate){
+                    $combdate=$indate;
+                }else{
+                    $combdate=$bdate;
+                }
+
+                $sumw=$t_ds->selcountbyidwithdate($kid,$combdate,$commothendate);
+
+                $sumcounts+=$sumw;
+                if ($indate<=$commothendate){
+                    $recuitworks+=1;
+                }
+                //echo "kid=$kid,combdate=$combdate,commonthenddate=$commothendate,sumw=$sumw,sumcounts=$sumcounts"."</br>";
+            }
+         //存储
+            //新增或更新组装数据
+            $awardinfo['recuituser']=$uid;
+            $awardinfo['recuitworks']=$recuitworks;
+            $awardinfo['summonth']=$commonth;
+            $awardinfo['sumdate']=$commothendate;
+            $awardinfo['sumcounts']=$sumcounts;
+            $awardinfo['sumaward']=$sumcounts*5;
+            if ($commonth==$lastrecmonth){
+                //更新
+                $lastrecid=$recordlist[0]['id'];
+                $t_ra->updateinfobyid($lastrecid,$awardinfo);
+            }else{
+                //新增
+                $rid=$t_ra->insinfo($awardinfo);
+            }
+          //准备计算下一月
+            $bdate=date('Y-m-01',strtotime("$bdate +1 month"));
+            $commonth=substr($bdate,0,7);
+
+        };
+        return 1;
+    }
+
+    /*
+     * 20200419
+     *获取某人的分数
+     * 2020-04-20
+     * 返回数据不同了,要返回所有的数据
+     */
+    public function getawardbyrid($arr){
+        //是否有推荐的人,没有直接退出
+        $uid=$arr['uid'];
+        $t_r=new recuitmodel();
+        $ulist=$t_r->selulistbyrecuit($uid);
+        if (!$ulist){
+            //直接返回空,什么也不做
+            return 0;
+        }
+        //是否有已经到的计算日的数据
+
+        $edate=date('Y-m-d',strtotime('-2 day'));
+        $t_ra=new recuitawardmodel();
+        $rec=$t_ra->selinfobyiddate($uid,$edate);
+        if (!$rec){
+            $rec=$this->countaward($uid);
+            if ($rec==0){
+                return 0;
+            }
+        }
+        //获取所有数据
+        $rlist=$t_ra->selinfolistbywid($uid,0);
+        //获取这两天的临时数据
+        $temprec=$this->counttmpaward($uid);
+        array_push($rlist,$temprec);
+        return $rlist;
+    }
+
+    /*
+     * 20200419
+     * 计算这两天的临时数据
+     */
+
+    private function counttmpaward($uid){
+        //获取推荐人清单
+        $t_r=new recuitmodel();
+        $t_ds=new daycheckinfo();
+        $ulist=$t_r->selulistbyrecuit($uid);
+        $bdate=date('Y-m-d',strtotime('-1 day'));
+        $edate=date('Y-m-d');
+        $sumcounts=0;
+        $recuitworks=0;
+        foreach($ulist as &$kv ){
+            $kid=$kv['userid'];
+            $indate=$kv['indate'];
+            //确定开始日期
+
+                if ($indate>$bdate){
+                    $bdate=$indate;
+                }
+
+            $sumw=$t_ds->selcountbyidwithdate($kid,$bdate,$edate);
+            $sumcounts+=$sumw;
+            $recuitworks+=1;
+        }
+
+        //新增或更新组装数据
+        $awardinfo['recuituser']=$uid;
+        $awardinfo['recuitworks']=$recuitworks;
+        $awardinfo['summonth']='近两日';
+        $awardinfo['somdate']=$edate;
+        $awardinfo['sumcounts']=$sumcounts;
+        $awardinfo['sumaward']=$sumcounts*5;
+        return $awardinfo;
+    }
+
+    /*
+     * 20200421
+     * 轮询处理
+     */
+
+    public function oprrecuitaward(){
+        // 获取所有关系:
+        $t_r=new recuitmodel();
+        $ulist=$t_r->selrlist();
+        //批量处理
+        $edate=date('Y-m-d',strtotime('-2 day'));
+        $t_ra=new recuitawardmodel();
+        foreach ($ulist as $kv) {
+            $uid=$kv['recuituserid'];
+            $rec=$t_ra->selinfobyiddate($uid,$edate);
+            if (!$rec){
+                $this->countaward($uid);
+            }
+        }
+
+    }
+}

+ 35 - 0
application/index/logic/settlelogic.php

@@ -0,0 +1,35 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/3/2
+ * Time: 11:26
+ */
+
+namespace app\index\logic;
+use app\index\model\yearsettlemodel;
+
+class settlelogic{
+    /*
+     * 按身份证查找逻辑
+     * 20200302
+     */
+    public function getsettlebysfz($arr){
+        $year=$arr['year'];
+        $sfzid=$arr['sfzid'];
+        $t_settle=new yearsettlemodel();
+        $rec=$t_settle->selinfobysfzid($year,$sfzid);
+        return $rec;
+    }
+    /*
+     * 按银行卡找逻辑
+     * 20200302
+     */
+    public function getsettlebycard($arr){
+        $year=$arr['year'];
+        $cardno=$arr['cardno'];
+        $t_settle=new yearsettlemodel();
+        $rec=$t_settle->selinfobycardno($year,$cardno);
+        return $rec;
+    }
+}

+ 19 - 0
application/index/logic/webmanger.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/22
+ * Time: 21:19
+ */
+namespace app\index\logic;
+use app\index\model\webusermodel;
+
+class webmanger{
+    public function getlogininfo($lname,$lpwd){
+
+        $webusertable=new webusermodel();
+        $userinfo=$webusertable->getlogininfo($lname,$lpwd);
+        //var_dump($userinfo);
+        return $userinfo;
+    }
+}

+ 780 - 0
application/index/logic/workercheck.php

@@ -0,0 +1,780 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/13
+ * Time: 0:05
+ */
+namespace app\index\logic;
+use app\index\model\gworkermodel;
+use app\index\model\prjlocationmodel;
+use app\index\model\transfermodel;
+use app\index\model\wheadmodel;
+use app\index\model\checkoprmodel;
+use app\index\model\ginfomodel;
+use app\index\model\pwrelationmodel;
+use app\index\model\checkinfomodel;
+use app\index\model\daycheckinfo;
+use app\index\model\pinfomodel;
+use app\index\model\gcmodel;
+use app\index\model\contactmodel;
+use app\index\model\complainmodel;
+use app\index\model\daypricerecodemodel;
+use app\index\model\workerindaymodel;
+use app\index\model\workersignmodel;
+use think\Log;
+
+class workercheck {
+    public function isheaderbytel($tel) {
+        /*
+         * 20200304
+         * 修改接口
+         * 增加返回pid
+         * 返回pnaem
+         * eidt by 20250209
+         *
+         */
+        $workertable = new gworkermodel();
+        $workerid = $workertable->getidbytel($tel);
+        if ($workerid === 0) {
+            //电话不存在
+            $res['r_code'] = 0;
+            return $res;
+        } else {
+            //获取项目id
+            $workerinfo = $workertable->getinfobyid($workerid);
+            $pid = $workerinfo['cprojectid'];
+            if ($pid > 0) {
+                $t_prj = new pinfomodel();
+                $pinfo = $t_prj->getbyid($pid);
+                $pname = $pinfo['pname'];
+            } else {
+                $pname = '';
+            }
+            //获取组长ID
+            $ghead = new wheadmodel();
+            $gid = $ghead->getgidbywid($workerid);
+            if ($gid === 0) {
+                //不是班组长
+                $res['r_code'] = 9902;
+                $res['workerData']['wid'] = $workerid;
+                $res['workerData']['pid'] = $pid;
+                $res['workerData']['pname'] = $pname;
+                return $res;
+            } else {
+                //是班组长,给合同名称
+                $t_gc = new gcmodel();
+                $gc = $t_gc->selcinfobygid($gid);
+                if ($gc) {
+                    $t_c = new contactmodel();
+                    $cinfo = $t_c->selcinfobycid($gc['cid']);
+                }
+                $res['r_code'] = 200;
+                $res['workerData']['gid'] = $gid;
+                $res['workerData']['wid'] = $workerid;
+                $res['workerData']['pid'] = $pid;
+                if ($gc) {
+                    $res['workerData']['pname'] = $cinfo['contactname'];
+                } else {
+                    $res['workerData']['pname'] = $pname;
+                }
+
+                return $res;
+            }
+        }
+    }
+
+    public function isheaderbytelV2($uinfo) {
+        /*
+         * 20200304
+         * 修改接口
+         * 增加返回pid
+         * 返回pnaem
+         * eidt by 20250209
+         * 修改参数为数组而非电话
+         * 增加打卡保存
+         * 增加工人坐标在项目位置10公里以内
+         * 增加班组长坐标在项目位置10公里以内的检查
+         *
+         * todo 增加判断是否有坐标参数
+         *
+         */
+        $workertable = new gworkermodel();
+        $tel = $uinfo['tel'];
+        $paramhaslocation = 0;
+        if (!empty($uinfo['gps_lng'])) {
+            $paramhaslocation = 1;
+        }
+        log::info($paramhaslocation);
+        $workerid = $workertable->getidbytel($tel);
+        if ($workerid === 0) {
+            //电话不存在
+            $res['r_code'] = 0;
+            return $res;
+        } else {
+            //获取项目id
+            $workerinfo = $workertable->getinfobyid($workerid);
+            $pid = $workerinfo['cprojectid'];
+            if ($pid > 0) {
+                $t_prj = new pinfomodel();
+                $pinfo = $t_prj->getbyid($pid);
+                $pname = $pinfo['pname'];
+            } else {
+                $pname = '';
+            }
+            //如果在正式藏在,获取项目地点,进行比较
+
+            $inprjlocation = 0; //预设不在项目内;
+            $distance = 0;
+            if ($paramhaslocation == 0) {
+                $inprjlocation = 1; //如果没有位置参数,则可以继续打卡
+            }
+            if ($paramhaslocation) {
+                if ($pid > 3) {
+                    $t_pl = new prjlocationmodel();
+                    $ploaction = $t_pl->selinfobyprjid($pid);
+                    log::info($ploaction);
+                    if (!empty($ploaction)) {
+                        log::info('computergps');
+                        $p_lng = $ploaction['gps_lng'];
+                        $p_lat = $ploaction['gps_lat'];
+                        $distance = $this->calculateDistance($p_lat, $p_lng, $uinfo['gps_lat'], $uinfo['gps_lng']);
+                        if ($distance < 10) {
+                            $inprjlocation = 1;
+                        }
+                    }
+                }
+                //保存登录记录
+                $singinfo['wid'] = $workerid;
+                $singinfo['signdate'] = date('Y-m-d');
+                $singinfo['signpid'] = $pid;
+                $singinfo['signsuccess'] = $inprjlocation;
+                $singinfo['gps_lng'] = $uinfo['gps_lng'];
+                $singinfo['gps_lat'] = $uinfo['gps_lat'];
+                $t_ws = new workersignmodel();
+                $rs = $t_ws->insinfo($singinfo);
+            }
+
+            //获取组长ID
+            $ghead = new wheadmodel();
+            $gid = $ghead->getgidbywid($workerid);
+            if ($gid === 0) {
+                //不是班组长
+                //如果正常项目,如果有位置参数,且不在范围内,移出项目,返回新的项目信息
+                if ($paramhaslocation && $pid > 3 && $inprjlocation == 0) {
+                    $isleave = $this->transferworerfromprj($workerid, $workerinfo['wname'], $workerinfo['telno']); //移出项目
+                    $res['r_code'] = 9902;
+                    $res['workerData']['wid'] = $workerid;
+                    $res['workerData']['pid'] = 3;
+                    $res['workerData']['pname'] = '人才库';
+                    $res['workerData']['isleavejobbydistance'] = 1;
+                    return $res;
+
+                } else {
+                    $res['r_code'] = 9902;
+                    $res['workerData']['wid'] = $workerid;
+                    $res['workerData']['pid'] = $pid;
+                    $res['workerData']['pname'] = $pname;
+                    return $res;
+                }
+
+            } else {
+                //是班组长,给合同名称
+                $t_gc = new gcmodel();
+                $gc = $t_gc->selcinfobygid($gid);
+
+                if ($gc) {
+                    $t_c = new contactmodel();
+                    $cinfo = $t_c->selcinfobycid($gc['cid']);
+                    $pname = $cinfo['contactname'];
+                }
+                $res['r_code'] = 200;
+                $res['workerData']['gid'] = $gid;
+                $res['workerData']['wid'] = $workerid;
+                $res['workerData']['pid'] = $pid;
+
+                $res['workerData']['pname'] = $pname;
+
+                $res['workerData']['inproject'] = $inprjlocation;
+                $res['workerData']['distance'] = $distance;
+
+                return $res;
+            }
+        }
+    }
+
+    private function createshiftlist() {
+        $datenow = date('Y-m-d ');
+        $datestart = date('Y-m-d', strtotime('-1 day'));
+//        $shift_arr[$datestart][1]=1;
+//        $shift_arr[$datestart][2]=1;
+//        $shift_arr[$datenow][1]=1;
+//        $shift_arr[$datenow][2]=1;
+        $shift_arr[0]['date'] = $datestart;
+        $shift_arr[0]['shift'] = '1';
+        $shift_arr[0]['ischeck'] = '1';
+        $shift_arr[0]['index'] = 0;
+        $shift_arr[1]['date'] = $datestart;
+        $shift_arr[1]['shift'] = '2';
+        $shift_arr[1]['ischeck'] = '1';
+        $shift_arr[1]['index'] = 1;
+        $shift_arr[2]['date'] = $datenow;
+        $shift_arr[2]['shift'] = '1';
+        $shift_arr[2]['ischeck'] = '1';
+        $shift_arr[2]['index'] = 2;
+        $shift_arr[3]['date'] = $datenow;
+        $shift_arr[3]['shift'] = '2';
+        $shift_arr[3]['ischeck'] = '1';
+        $shift_arr[3]['index'] = 3;
+        return $shift_arr;
+    }
+
+    private function subshiltlist($shift_arr) {
+        $index = 0;
+        $r_list = array();
+        foreach ($shift_arr as $k => $v) {
+            //var_dump($v);
+            if ($v['ischeck'] == 1) {
+                $r_list[$index]['index'] = $index;
+                $r_list[$index]['date'] = $v['date'];
+                $r_list[$index]['shift'] = $v['shift'];
+                if ($v['shift'] == 1) {
+                    $r_list[$index]['disstr'] = $v['date'] . '日早班(0:00-12:00)';
+                } else {
+                    $r_list[$index]['disstr'] = $v['date'] . '日晚班(12:00-24:00)';
+                }
+                $index += 1;
+            }
+        }
+        return $r_list;
+    }
+
+    //获得记分班次
+
+    public function getshiftbywid($wid) {
+        $shift_arr = $this->createshiftlist();
+        //每个班组长可以分次记一个班,避免一个班次人太多,记错的情况
+        $r_list = $this->subshiltlist($shift_arr);
+
+        return $r_list;
+
+    }
+
+    /*
+     * 20200729
+     * 获取班次同时获取班组已考勤人数
+     */
+    public function getshiftandcountbywid($wid, $gid) {
+        $shift_arr = $this->createshiftlist();
+        //每个班组长可以分次记一个班,避免一个班次人太多,记错的情况
+        $r_list = $this->subshiltlist($shift_arr);
+        $t_dc = new daycheckinfo();
+        foreach ($r_list as &$kv) {
+            $checkdate = $kv['date'];
+            $shift = $kv['shift'];
+            $count = $t_dc->selcountbygid($gid, $checkdate, $shift);
+            $kv['checkcount'] = $count[0]['checkcount'];
+
+        }
+
+        return $r_list;
+    }
+
+    //获得记分日期
+    /*
+     * 20210303 修改成7天
+     */
+    public function getcheckdate() {
+        // $datenow=date('Y-m-d ');
+        // $datestart=date('Y-m-d',strtotime('-1 day'));
+        //  $datestart_begin=date('Y-m-d',strtotime('-2 day'));
+        for ($i = 0; $i < 7; $i++) {
+            $shift_arr[$i]['date'] = date('Y-m-d', strtotime('-' . (string) ($i) . ' day'));
+            $shift_arr[$i]['shift'] = '1';
+            $shift_arr[$i]['disstr'] = $shift_arr[$i]['date'] . '日';
+            $shift_arr[$i]['index'] = $i;
+        }
+
+        // $shift_arr[0]['date']=$datestart_begin;$shift_arr[0]['shift']='1';$shift_arr[0]['disstr']=$datestart_begin.'日';;$shift_arr[0]['index']=0;
+        //  $shift_arr[1]['date']=$datestart;$shift_arr[1]['shift']='1';$shift_arr[1]['disstr']=$datestart.'日';;$shift_arr[1]['index']=1;
+        //   $shift_arr[2]['date']=$datenow;$shift_arr[2]['shift']='2';$shift_arr[2]['disstr']=$datenow.'日';$shift_arr[2]['index']=2;
+        return $shift_arr;
+    }
+
+    public function getworkerlistbyhead($gid, $checkdate, $shift, $wid) {
+        //获取项目工人
+
+        //获取是那个项目的
+        $ginfo = new ginfomodel();
+        $pid = $ginfo->getpidbygid($gid);
+        if ($pid === 0) {
+            $res['r_code'] = 9910;
+            return $res;
+        } else {
+            //预判合法性,Gw关系是合法的,因为在实时读取,所以本判断还是坚持原来的作用,对异常进行判定
+            if ($wid > 0) {
+                //$wid>0,只有传了才检查,
+                $t_gworker = new gworkermodel();
+                $queryuserinfo = $t_gworker->getinfobyid($wid, $gid);
+                if ($queryuserinfo) {
+                    //如果返回有值再检查
+                    if ($pid != $queryuserinfo['cprojectid']) {
+                        $res['r_code'] = 9910;
+                        return $res;
+                    }
+                }
+            }
+
+            //根据项目获取工人
+            //目前先采用跨表联查获取,人数多了再采用内存中优化 20200113
+            $worktable = new pwrelationmodel();
+            $workerlist = $worktable->getworkerunlist($pid, $checkdate, $shift);
+            // $workerlist=$worktable->getworkerlistbypid($pid);  //20200113 标准方法,先获取班组工人,暂时不用
+            if (empty($workerlist)) {
+                //没有工人
+                $res['r_code'] = 9911;
+                $res['pid'] = $pid;
+                return $res;
+            } else {
+                /**
+                 *
+                这一段原来采用分表查询,但是由于需要对两个数组循环,先直接采用数据表联查方法 20200113
+                //去掉已考勤人员
+                //获得已考勤人员
+                $checktable=new checkinfomodel();
+                $c_list=$checktable->getcheckworkerlistbydate($checkdate,$shift,$pid);
+                //去掉重复
+                // foreach($c_list)
+                 */
+                $res['r_code'] = 1;
+                $res['pid'] = $pid;
+                $res['wlist'] = $workerlist;
+                return $res;
+            }
+        }
+    }
+//20200203日停止使用
+    public function oprcheckinfo($checklist, $checkoprinfo) {
+        //存入考勤详情数据
+        $checktable = new checkinfomodel();
+        // var_dump($checklist);
+        $savecount = $checktable->savechecklist($checklist);
+        //存入考勤
+        $oprtable = new checkoprmodel();
+        $checkoprinfo['oprtime'] = date('Y:m:d H:i:s');
+        $checkoprinfo['wnum'] = $savecount;
+//任取一条记录的pid
+        $checkoprinfo['pid'] = $checklist[0]['pid'];
+        $oprtable->saveOprRecord($checkoprinfo);
+        return $savecount;
+
+    }
+//20200203后采用,按日记考勤
+/*
+ * 20200307
+ * 修改,有gid时记录gid,没有gid时获取gid
+ */
+    public function savedaycheckinfo($checklist, $checkoprinfo) {
+        $day_table = new daycheckinfo();
+        $icount = 0;
+        //判断是否有有效gid,没有的话根据班组长id获取
+        if ($checkoprinfo['gid'] > 0) {
+            $gid = $checkoprinfo['gid'];
+        } else {
+            $headid = $checkoprinfo['headid'];
+            $t_head = new wheadmodel();
+            $gid = $t_head->getgidbywid($headid);
+            $checkoprinfo['gid'] = $gid;
+        }
+        //逐条存入考勤详情
+        foreach ($checklist as $key => $v) {
+            $check = array();
+            $check['pid'] = $v['pid'];
+            $check['wid'] = $v['wid'];
+            $check['wname'] = $v['wname'];
+            if (array_key_exists('dayprice', $v)) {
+                if (is_numeric($v['dayprice'])) {
+                    $check['dayprice'] = $v['dayprice'];
+                } else {
+                    $check['dayprice'] = 0;
+                }
+            }
+
+            $check['checkdate'] = $v['checkdate'];
+            if ($v['checkorder'] == 1) {
+                $check['score_1'] = $v['workscore'];
+                $check['headid_1'] = $v['checkheadid'];
+                $check['gid_1'] = $gid;
+                $check['oprtime_1'] = $v['oprtime'];
+            } else {
+                $check['score_2'] = $v['workscore'];
+                $check['headid_2'] = $v['checkheadid'];
+                $check['gid_2'] = $gid;
+                $check['oprtime_2'] = $v['oprtime'];
+            }
+
+            $id = $day_table->addnewcheck($check);
+            if ($id > 0) {
+                $icount++;
+            };
+        }
+
+        $oprtable = new checkoprmodel();
+        $checkoprinfo['oprtime'] = date('Y:m:d H:i:s');
+        $checkoprinfo['wnum'] = $icount;
+//任取一条记录的pid
+        $checkoprinfo['pid'] = $checklist[0]['pid'];
+        $oprtable->saveOprRecord($checkoprinfo);
+        return $icount;
+
+    }
+
+    public function getworkercheckinfobyid($wid) {
+        //20200203后停用班次数据,采用日记录
+//        $checkinfo=new checkinfomodel();
+
+        //20200216日起,APP不调用此端口,改为调用按月查询接口
+
+        $checkinfo = new daycheckinfo(); //20200203启用日数据表
+        $r_list = $checkinfo->getusercheckinfobywid($wid);
+        return $r_list;
+    }
+    /*
+     * 20200216
+     * steelxu
+     * 按月查询工人的记分记录,提交给APP端
+     */
+    public function getworkercheckinfobyidwithmonth($wid, $month) {
+
+        $checkinfo = new daycheckinfo();
+        $r_list = $checkinfo->getusercheckinfobywidwithmonth($wid, $month);
+        return $r_list;
+    }
+
+    public function gettotallistbywid($wid) {
+        $checkinfo = new daycheckinfo(); //20200203启用日数据表
+        $r_list = $checkinfo->totalcheckbymonthwithwid($wid);
+        return $r_list;
+
+    }
+
+    /*
+     * 20200317
+     * 按月度,按班组返回员工考勤分数
+     *
+     */
+
+    public function getScoreGroupbyWidWithMonth($arr) {
+        //准备
+        $wid = $arr['wid'];
+        $month = $arr['strmonth'];
+        $grouplist = array();
+        $gidlist = array();
+        $checkinfo = new daycheckinfo();
+        $t_g = new ginfomodel();
+        $t_p = new pinfomodel();
+        //获取基础数据
+        $r_list = $checkinfo->getusercheckinfobywidwithmonth($wid, $month);
+        //汇总班组数据
+        foreach ($r_list as $k) {
+            $gid = $k['gid_1'];
+            if ($gid && (!(in_array($gid, $gidlist)))) {
+                //新班组
+                $gitem['gid'] = $gid;
+                $ginfo = $t_g->selginfobygid($gid);
+                $gitem['gname'] = $ginfo['gname'];
+                $pid = $ginfo['pid'];
+                $pinfo = $t_p->getbyid($pid);
+                $gitem['prjname'] = $pinfo['pname'];
+                array_push($grouplist, $gitem);
+                array_push($gidlist, $gid);
+            }
+            $gid = $k['gid_2'];
+            if ($gid && (!(in_array($gid, $gidlist)))) {
+                //新班组
+                $gitem['gid'] = $gid;
+                $ginfo = $t_g->selginfobygid($gid);
+                $gitem['gname'] = $ginfo['gname'];
+                $pid = $ginfo['pid'];
+                $pinfo = $t_p->getbyid($pid);
+                $gitem['prjname'] = $pinfo['pname'];
+                array_push($grouplist, $gitem);
+                array_push($gidlist, $gid);
+            }
+
+        }
+        $rlist['grouplist'] = $grouplist;
+        $rlist['dayscorelist'] = $r_list;
+        //返回总数据
+        return $rlist;
+    }
+
+    /*
+     * 2020531
+     * 根据项目,日期,班次,获取未记考勤的员工
+     */
+    public function getunchecklist($arr) {
+        $pid = $arr['pid'];
+        $checkdate = $arr['checkdate'];
+        $shift = $arr['checkshift'];
+        $worktable = new pwrelationmodel();
+        $workerlist = $worktable->selunwlistforupdate($pid, $checkdate, $shift);
+
+        return $workerlist;
+    }
+
+    /*
+     * 20210421
+     */
+    public function savecomplaininf($arr) {
+        $arr['complaindate'] = date('Y-m-d');
+        $t_c = new complainmodel();
+        if ($arr['complaintype'] == 1) {
+            $t_w = new gworkermodel();
+            $winfo = $t_w->getinfobyid($arr['complainuser']);
+            $arr['complainusername'] = $winfo['wname'];
+        }
+        $id = $t_c->insinfo($arr);
+        return $id;
+    }
+
+    /*
+     * 20210421
+     */
+    public function getcomplainlist() {
+        $t_c = new complainmodel();
+        $list = $t_c->sellistbyunopr();
+        return $list;
+    }
+
+    /*
+     * 20230215
+     * 由于原始数据中没有工地数据
+     * 采用join方式,数据量巨大,
+     * 所以获取所有的投诉之后
+     * 轮巡检查是否某公司的项目
+     * 经检查 ,只能用daycheckinfo
+     */
+    public function getcomplainlistbycid($arr) {
+        $cid = $arr['companyid'];
+        $t_c = new complainmodel();
+        $list = $t_c->sellistbyunopr();
+        $t_p = new pinfomodel();
+        $plist = $t_p->sellistbycid($cid);
+        $p_arr = array();
+        foreach ($plist as $prj) {
+            array_push($p_arr, $prj['id']);
+        }
+        $t_dc = new daycheckinfo();
+        $clist = array();
+        foreach ($list as $complain) {
+            $coprid = $complain['checkinfoid'];
+            $hcinfo = $t_dc->selinfobyid($coprid);
+            $cpid = $hcinfo['pid'];
+            if (in_array($cpid, $p_arr)) {
+                array_push($clist, $complain);
+            }
+        }
+        return $clist;
+
+    }
+
+    /*
+     * 20230303
+     */
+    public function oprinencloseinfo($arr) {
+        $nowstauts = $arr['nowstatus'];
+        $prjid = $arr['prjid'];
+        $wid = $arr['wid'];
+        $recdate = $arr['checkdate'];
+        $t_wi = new workerindaymodel();
+        $lastrec = $t_wi->selinfobywid($wid, $recdate, $prjid);
+        $arrreturn['status'] = 0;
+        $arrreturn['msg'] = '';
+        $arrreturn['data'] = array();
+        if (!$lastrec) {
+            //当天第一条
+            $newrec['nowstatus'] = $nowstauts;
+            $newrec['peid'] = $prjid;
+            $newrec['wid'] = $wid;
+            $newrec['checkdate'] = $recdate;
+            $newrec['lastupdatetime'] = $arr['updatetime'];
+            /*  需要处理,避免进入围栏后再开机的漏洞
+            if($nowstauts==1){
+            //如果是一开始不在现场,则增加最开始在现场的时间
+            $newhours=substr($arr['updatetime'],12,2);
+            $newrec['todayinhours']=$newhours;
+            }
+             */
+            $rid = $t_wi->insinfo($newrec);
+
+            if ($rid) {
+                $arrreturn['status'] = '1';
+                $arrreturn['msg'] = '新增当日围栏状态成功';
+                return $arrreturn;
+            } else {
+                $arrreturn['msg'] = '新增当日围栏状态失败';
+                return $arrreturn;
+            }
+
+        } else {
+            $oldstatus = $lastrec['nowstatus'];
+            if ($oldstatus == $nowstauts) {
+                $arrreturn['msg'] = '状态未变更';
+                return $arrreturn;
+            }
+            if ($nowstauts == 1) {
+                $updatearr['nowstatus'] = 1;
+                $updatearr['lastupdatetime'] = $arr['updatetime'];
+                $rec = $t_wi->updateinstatus($wid, $recdate, $prjid, $updatearr);
+                if ($rec) {
+                    $arrreturn['status'] = '1';
+                    $arrreturn['msg'] = '更改为围栏内状态';
+                    return $arrreturn;
+                } else {
+                    $arrreturn['msg'] = '更改为围栏内状态失败';
+                    return $arrreturn;
+                }
+            }
+            if ($nowstauts == 2) {
+                $updatearr['nowstatus'] = 2;
+                $updatearr['lastupdatetime'] = $arr['updatetime'];
+                //计算时长
+                $oldhours = substr($lastrec['lastupdatetime'], 11, 2);
+                log::info($oldhours);
+                $newhours = substr($arr['updatetime'], 11, 2);
+                log::info($newhours);
+                $newhourcount = (int) $newhours - (int) $oldhours;
+                $oldhourcount = $lastrec['todayinhours'];
+                $newhourcount = $newhourcount + $oldhourcount;
+                $updatearr['todayinhours'] = $newhourcount;
+                //
+                $rec = $t_wi->updateoutstatus($wid, $recdate, $prjid, $updatearr);
+                if ($rec) {
+                    $arrreturn['status'] = '1';
+                    $arrreturn['msg'] = '更改为出围栏状态';
+                    return $arrreturn;
+                } else {
+                    $arrreturn['msg'] = '更改出围栏状态失败';
+                    return $arrreturn;
+                }
+
+            }
+        }
+
+    }
+
+    private function calculateDistance($lat1, $lon1, $lat2, $lon2, $unit = 'km') {
+        // 将角度转换为弧度
+        $lat1 = deg2rad($lat1);
+        $lon1 = deg2rad($lon1);
+        $lat2 = deg2rad($lat2);
+        $lon2 = deg2rad($lon2);
+        log::info($lat1);
+        log::info($lat2);
+        log::info($lon1);
+        log::info($lon2);
+        // 计算经纬度差值
+        $dLat = $lat2 - $lat1;
+        $dLon = $lon2 - $lon1;
+        // Haversine 公式的中间计算部分
+        $a = sin($dLat / 2) * sin($dLat / 2) +
+        cos($lat1) * cos($lat2) *
+        sin($dLon / 2) * sin($dLon / 2);
+        $c = 2 * atan2(sqrt($a), sqrt(1 - $a));
+        log::info($c);
+        // 地球半径,单位:千米
+        $earthRadius = 6371;
+        // 计算距离
+        $distance = $earthRadius * $c;
+        // 根据单位进行转换
+        if ($unit === 'mi') {
+            $distance = $distance * 0.621371; // 千米转换为英里
+        }
+        return $distance;
+    }
+
+    /*
+     * 调离项目
+     */
+    public function transferworerfromprj($wid, $wname, $wtel) {
+        $newdate = date('Y-m-d ');
+        $r_tale = new pwrelationmodel();
+        $w_table = new gworkermodel();
+        $t_gheader = new wheadmodel();
+        $t_trans = new transfermodel();
+        $icount = 0;
+
+        //获取名字
+
+        $transoutname = '后台自动调离';
+
+        //var_dump($worker_arr);
+
+        //组织数据
+        $relation['pid'] = 3;
+        $relation['wid'] = $wid;
+        $relation['startdate'] = $newdate;
+        $relation['checkstatus'] = 1;
+        $w_table->updateprj(3, $wid);
+        $rid = $r_tale->addnewrelation($relation);
+        if ($rid > 0) {
+            $icount = 1;
+        }
+
+        //如果是组长去掉组长权限
+        $change = $t_gheader->changeghead($wid);
+        //插入调动表记录
+        $trans['wname'] = $wname;
+        $trans['wid'] = $wid;
+        $trans['rectime'] = date('Y-m-d H:i:s');
+        $trans['telno'] = $wtel;
+        $trans['transoutman'] = $transoutname;
+        $trans['transoutid'] = 0; //设置 后台调出为0
+        $rid = $t_trans->insinfo($trans);
+
+        return $icount;
+
+    }
+    /**
+     * 获取工人日工资列表
+     *
+     * @return void
+     * @author wj
+     * @date 2025-02-17
+     */
+    public function getdaypricerecodelist($arr) {
+        $m_dr = new daypricerecodemodel();
+        $where = [];
+        if (isset($arr['userid']) && !empty($arr['userid'])) {
+            $where['user_id'] = $arr['userid'];
+        }
+        if (isset($arr['createtime']) && is_array($arr['createtime'])) {
+            $times = array_filter($arr['createtime']);
+            if (is_array($times) && count($times) == 2) {
+                $where['createtime'] = ['between', [$times[0], $times[1]]];
+            }
+        }
+        $page = isset($arr['page']) && !empty($arr['page']) && is_numeric($arr['page']) ? $arr['page'] : 1;
+        $size = isset($arr['size']) && !empty($arr['size']) && is_numeric($arr['size']) ? $arr['size'] : 10;
+        $count = $m_dr->getList($where, 'count');
+        $arrreturn['status'] = 0;
+        $arrreturn['msg'] = '无数据';
+        $arrreturn['data'] = [];
+        if ($count <= 0) {
+            return $arrreturn;
+        }
+        $list = $m_dr->getList($where, "*", $page, $size);
+        $arrreturn['status'] = 1;
+        $arrreturn['msg'] = '查询成功';
+        $data = [
+            "pageSize" => 10,
+            "pageNum" => 1,
+            'count' => $count,
+            'list' => $list,
+        ];
+        $arrreturn['data'] = $data;
+        return $arrreturn;
+    }
+
+}

+ 636 - 0
application/index/logic/workermanger.php

@@ -0,0 +1,636 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/29
+ * Time: 0:36
+ */
+
+namespace app\index\logic;
+use app\index\model\gworkermodel;
+use app\index\model\inventrecmodel;
+use app\index\model\paydetailmodel;
+use app\index\model\pwrelationmodel;
+use app\index\model\daycheckinfo;
+use app\index\model\daypricerecodemodel;
+use app\index\model\pinfomodel;
+use app\index\model\transfermodel;
+use app\index\model\userlocationmodel;
+use app\index\model\userlocationhismodel;
+use app\index\model\prjlocationmodel;
+use app\index\model\noticemodel;
+use app\index\model\noticereadmodel;
+
+class workermanger {
+    public function getallworkerlist($pagenum, $pagesize) {
+        $start = ($pagenum - 1) * $pagesize;
+        $workertable = new gworkermodel();
+
+        $worker_list = $workertable->getallworker($start, $pagesize);
+        //var_dump($userinfo);
+        return $worker_list;
+    }
+    /*
+     * 20230214
+     * 按公司获取所有的项目的工人
+     */
+    public function getallworkerlistbycid($pagenum, $pagesize, $cid) {
+        $start = ($pagenum - 1) * $pagesize;
+        $workertable = new gworkermodel();
+        //先获取公司清单
+        /*
+        $t_p=new pinfomodel();
+        $plist=$t_p->sellistbycid($cid);
+        $strpinfo='';
+        foreach($plist as $pinfo){
+        $strpinfo=$strpinfo.$pinfo['id'].",";
+        }
+        if($strpinfo>''){
+        $lenstr=strlen($strpinfo);
+        $strp=substr($strpinfo,0,-1);
+        }
+         */
+        $worker_list = $workertable->getallworkerbycid($start, $pagesize, $cid);
+        //var_dump($userinfo);
+        return $worker_list;
+    }
+    /*
+     * 20200212
+     * steelxu
+     *  获取指定项目的员工
+     */
+    public function getprjworkerlist($pagenum, $pagesize, $pid) {
+        $start = ($pagenum - 1) * $pagesize;
+        $workertable = new gworkermodel();
+
+        $worker_list = $workertable->getprjworker($start, $pagesize, $pid);
+        //var_dump($userinfo);
+        return $worker_list;
+    }
+
+    public function saveworker($worker) {
+        $t_worker = new gworkermodel();
+        $datenow = date('Y-m-d ');
+        $t_worker['create_date'] = $datenow;
+        $newid = $t_worker->saveworkerinfo($worker);
+        //如果重复,直接返回
+        if ($newid == -1) {
+            return $newid;
+        }
+
+        //如果插入正常
+
+        if ($newid > 0) {
+            $r_table = new pwrelationmodel();
+            $relation['pid'] = $worker['cprojectid'];
+            $relation['wid'] = $newid;
+            $relation['startdate'] = $datenow;
+            $relation['checkstatus'] = 1;
+            $rid = $r_table->savenewrelation($relation);
+        }
+
+        return $newid;
+
+    }
+
+    /*
+     * 20200312
+     * 统计各项目当天记工人数,两天前起,指定天数内的出勤的工人数
+     * 先处理日期参数
+     * 获取所有项目,ID和项目名称
+     * 按项目获取出勤统计、分两次获取,一次是当天的,一次是前一阶段的
+     * 组装数据
+     */
+
+    public function getcheckcountbydate($arr) {
+        $daycount = $arr['daycount'];
+        $strdc = strval($daycount + 2);
+        $strparam = '-' . $strdc . ' day';
+        $datenow = date('Y-m-d ');
+        $dateend = date('Y-m-d', strtotime('-2 day'));
+        $datestart = date('Y-m-d', strtotime($strparam));
+
+        //获取所有项目
+        $t_p = new pinfomodel();
+        $p_list = $t_p->getallpinfo();
+        $t_dc = new daycheckinfo();
+        foreach ($p_list as &$v) {
+            $pid = $v['id'];
+            //获取当天数据
+            $w_today = $t_dc->selcinfowithdate($datenow, $datenow, $pid);
+            if ($w_today) {
+                //  var_dump($w_today);
+                $v['todaycount'] = $w_today[0]['workernumber'];
+                // echo 'ok<br>';
+            } else {
+                $v['todaycount'] = 0;
+            }
+            //获取历史记录
+            $w_history = $t_dc->selcinfowithdate($datestart, $dateend, $pid);
+            if ($w_history) {
+
+                foreach ($w_history as $k) {
+
+                    $checkdate = strval($k['checkdate']);
+                    $v[$checkdate] = $k['workernumber'];
+                }
+            }
+        }
+        return $p_list;
+    }
+
+    /*
+     * 20230214
+     * 统计本公司各项目的记工人数,两天前起(不可更改)
+     */
+    public function getcheckcountbydatecompany($arr) {
+        $daycount = $arr['daycount'];
+        $cid = $arr['companyid'];
+        $strdc = strval($daycount + 2);
+        $strparam = '-' . $strdc . ' day';
+        $datenow = date('Y-m-d ');
+        $dateend = date('Y-m-d', strtotime('-2 day'));
+        $datestart = date('Y-m-d', strtotime($strparam));
+
+        //获取本公司项目
+        $t_p = new pinfomodel();
+        //$p_list=$t_p->getallpinfo();
+        $p_list = $t_p->sellistbycid($cid);
+        $t_dc = new daycheckinfo();
+        foreach ($p_list as &$v) {
+            $pid = $v['id'];
+            //获取当天数据
+            $w_today = $t_dc->selcinfowithdate($datenow, $datenow, $pid);
+            if ($w_today) {
+                //  var_dump($w_today);
+                $v['todaycount'] = $w_today[0]['workernumber'];
+                // echo 'ok<br>';
+            } else {
+                $v['todaycount'] = 0;
+            }
+            //获取历史记录
+            $w_history = $t_dc->selcinfowithdate($datestart, $dateend, $pid);
+            if ($w_history) {
+
+                foreach ($w_history as $k) {
+
+                    $checkdate = strval($k['checkdate']);
+                    $v[$checkdate] = $k['workernumber'];
+                }
+            }
+        }
+        return $p_list;
+    }
+    /*
+     * 20210303
+     * 获取待安排调出人员
+     */
+    public function getuntransworker($arr) {
+        $t_trans = new transfermodel();
+        $page = isset($arr['page']) && !empty($arr['page']) && is_numeric($arr['page']) ? $arr['page'] : 1;
+        $size = isset($arr['size']) && !empty($arr['size']) && is_numeric($arr['size']) ? $arr['size'] : 10;
+        $wlist = $t_trans->selinfolistbyopr($page, $size);
+        $data = [
+            "pageSize" => $size,
+            "pageNum" => $page,
+            'list' => $wlist,
+        ];
+        return $data;
+    }
+
+    /*
+     * 20210303
+     * steelxu
+     * 将用户由人才库,调入最终库
+     * 没有组长权限处理,
+     *更改调动表数据
+     */
+
+    public function oprtransferlist($prjid, $worker_arr) {
+        $newdate = date('Y-m-d ');
+        $r_tale = new pwrelationmodel();
+        $w_table = new gworkermodel();
+
+        $t_trans = new transfermodel();
+        $icount = 0;
+
+        //var_dump($worker_arr);
+        foreach ($worker_arr as $k => $v) {
+            //组织数据
+            $relation['pid'] = $prjid;
+            $relation['wid'] = $v['wid'];
+            $relation['startdate'] = $newdate;
+            $relation['checkstatus'] = 1;
+            $w_table->updateprj($prjid, $v['wid']);
+            $rid = $r_tale->addnewrelation($relation);
+            if ($rid > 0) {
+                $icount++;
+            }
+
+            //处理调动表
+            $t_trans->updoprbywid($v['wid'], $prjid);
+        }
+        return $icount;
+
+    }
+
+    /*
+     * 20210311
+     * 根据用户姓名获取
+     */
+    public function getworkerinfobyname($arr) {
+        $wname = $arr['wname'];
+        $t_work = new gworkermodel();
+        $rlist = $t_work->selinfobyname($wname);
+        return $rlist;
+    }
+
+    /*
+     * 20210416
+     * 过生日更新员工年齿
+     */
+    public function updatewaggbybirthday() {
+        $birthday = date('md');
+        $t_w = new gworkermodel();
+        $wlist = $t_w->selworklistbybirthday($birthday);
+        $year = (int) date('Y');
+        foreach ($wlist as $worker) {
+            $byear = substr($worker['shengfengid'], 6, 4);
+            $nage = $year - (int) $byear;
+            $t_w->updwagebyid($worker['id'], $nage);
+        }
+    }
+
+    /*
+     * 20210427
+     * 修改工人停止
+     */
+    public function updateworkerinfobyid($arr) {
+        $wid = $arr['id'];
+        $updarr['telno'] = $arr['telno'];
+        $updarr['workclass'] = $arr['workclass'];
+        $updarr['dayprice'] = $arr['dayprice'];
+        $updarr['wage'] = $arr['wage'];
+
+        $t_work = new gworkermodel();
+        $winfo = $t_work->getinfobyid($wid);
+        $rcount = $t_work->updinfobyid($wid, $updarr);
+        if ($rcount > 0) {
+            $m_dr = new daypricerecodemodel();
+            $insertarr = [
+                'user_id' => $wid,
+                'old_dayprice' => $winfo['dayprice'],
+                'dayprice' => $arr['dayprice'],
+                'createtime' => date("Y-m-d H:i:s"),
+                'type' => 1, //修改用户信息
+            ];
+            $drid = $m_dr->insinfo($insertarr);
+        }
+        return $rcount;
+    }
+
+    /*
+     * 20210502
+     *
+     */
+    public function getlocationlist() {
+        $t_ul = new userlocationmodel();
+        $list = $t_ul->sellist();
+        return $list;
+    }
+
+    /*
+     * 20210430
+     * 存储地址
+     * 20210510
+     * 修改为先保存历史
+     * 当前表如果有,就
+     */
+    public function saveuserlocation($arr) {
+        $t_ul = new userlocationmodel();
+        $openid = $arr['openid'];
+        $arr['createdate'] = date('Y-m-d H:i:s');
+        $t_ulh = new userlocationhismodel();
+        $t_ulh->insinfo($arr);
+        $rinfo = $t_ul->selinfobyopenid($openid);
+        if (empty($rinfo)) {
+            $rid = $t_ul->insinfo($arr);
+            return $rid;
+        } else {
+            $rid = $rinfo['id'];
+            $nid = $t_ul->updinfobyid($rid, $arr);
+            return $nid;
+        }
+    }
+
+    /*
+     * 20210511
+     */
+    public function getlocationgroupprovince() {
+        $t_ul = new userlocationmodel();
+        $tlist = $t_ul->selgroupby_p();
+        return $tlist;
+    }
+
+    /*
+     * 20210511
+     */
+    public function getlocationgroupcity() {
+        $t_ul = new userlocationmodel();
+        $tlist = $t_ul->selgroupby_c();
+        return $tlist;
+    }
+
+    /*
+     * 20210515
+     * 获得项目的地址
+     */
+    public function getprjlocation() {
+        $t_pl = new prjlocationmodel();
+        $t_p = new pinfomodel();
+        $plocationlist = $t_pl->sellist();
+        $plist = $t_p->getallpinfo();
+        foreach ($plist as $prj) {
+            foreach ($plocationlist as &$prjlocation) {
+                if ($prjlocation['prjid'] == $prj['id']) {
+                    $prjlocation['prjname'] = $prj['pname'];
+                    break;
+                }
+            }
+        }
+        return $plocationlist;
+    }
+
+    /*
+     * 2030215
+     * 只获得自己公司的项目位置
+     */
+    public function getmyprjlocation($arr) {
+        $cid = $arr['companyid'];
+        $t_pl = new prjlocationmodel();
+        $t_p = new pinfomodel();
+        $plocationlist = $t_pl->sellist();
+        $plist = $t_p->sellistbycid($cid);
+        $myplist = array();
+        foreach ($plist as $prj) {
+            foreach ($plocationlist as &$prjlocation) {
+                if ($prjlocation['prjid'] == $prj['id']) {
+                    $prjlocation['prjname'] = $prj['pname'];
+                    array_push($myplist, $prjlocation);
+                    break;
+                }
+            }
+        }
+        //return $plocationlist;
+        return $myplist;
+    }
+
+    /*
+     * 20210515
+     * 按项目统计人群
+     */
+    public function getworkerlocationcountgprj() {
+        $t_ul = new userlocationmodel();
+        $pwlist = $t_ul->selgroupbyprj();
+        return $pwlist;
+    }
+    /*
+     * 20230215
+     * 获取自己公司项目的统计人数
+     */
+    public function getworkerlocationcountgprjbycid($arr) {
+        $cid = $arr['companyid'];
+        $t_ul = new userlocationmodel();
+        $t_p = new pinfomodel();
+        $plist = $t_p->sellistbycid($cid);
+        $pwlist = array();
+        foreach ($plist as $pinfo) {
+            $pid = $pinfo['id'];
+            $pwcount = $t_ul->selgroupcountbypid($pid);
+            array_push($pwlist, $pwcount);
+        }
+
+        return $pwlist;
+    }
+
+    /*
+     * 20210516
+     * 提交公告
+     */
+    public function savenewnotice($arr) {
+        $arr['createdate'] = date('Y-m-d H:i:s');
+        $t_n = new noticemodel();
+        $id = $t_n->insinfo($arr);
+        return $id;
+
+    }
+
+    /*
+     * 20210517
+     *
+     */
+    public function getallnotice() {
+        $t_n = new noticemodel();
+        $rlist = $t_n->selalllist();
+        return $rlist;
+    }
+
+    /*
+     * 20230215
+     */
+    public function getnoticebycid($arr) {
+        $cid = $arr['companyid'];
+        $t_n = new noticemodel();
+        $rlist = $t_n->sellistbycid($cid);
+        return $rlist;
+    }
+
+    /*
+     * 20210517
+     * 获得最新消息
+     */
+    public function getnewnotice($arr) {
+        $t_n = new noticemodel();
+        $wid = $arr['wid'];
+        $t_w = new gworkermodel();
+        $winfo = $t_w->getinfobyid($wid);
+        $pid = $winfo['cprojectid'];
+        $t_p = new pinfomodel();
+        $pinfo = $t_p->getbyid($pid);
+        $cid = $pinfo['companyid'];
+        $res_info = array();
+        if (!$cid) {
+            return $res_info;
+        }
+
+        $rlist = $t_n->selnewmsgbycid($cid);
+        $t_nr = new noticereadmodel();
+        $readinfo = $t_nr->selnewinfobywid($wid);
+
+        if (!empty($rlist)) {
+            if (empty($readinfo)) {
+                $res_info = $rlist[0];
+            } else {
+                if ($readinfo[0]['readnoticeid'] < $rlist[0]['id']) {
+                    $res_info = $rlist[0];
+                }
+            }
+        }
+
+        return $res_info;
+    }
+
+    /*
+     * 20210517
+     */
+    public function updatenoticereadstatus($arr) {
+        $readinfo['wid'] = $arr['wid'];
+        $update = true;
+        if (array_key_exists('noticeid', $arr)) {
+            $readinfo['readnoticeid'] = $arr['noticeid'];
+        } else {
+            $t_n = new noticemodel();
+            $rlist = $t_n->selnewmsg();
+            if (!empty($rlist)) {
+                $readinfo['readnoticeid'] = $rlist[0]['id'];
+            } else {
+                $update = false;
+            }
+
+        }
+        $readinfo['readtime'] = date("Y-m-d H:i:s");
+        if ($update) {
+            $t_nr = new noticereadmodel();
+            $rid = $t_nr->insinfo($readinfo);
+        } else {
+            $rid = 0;
+        }
+
+        return $rid;
+
+    }
+
+    /*
+     * 20210517
+     *
+     */
+    public function getpaylistbyuplogid($arr) {
+        $logid = $arr['logid'];
+        $t_p = new paydetailmodel();
+        $list = $t_p->sellistbyuplogid($logid);
+        return $list;
+    }
+
+    /*
+     * 20230130
+     * 从水猫那里增加工人
+     */
+    public function savenewworkerfromwatercat($worker) {
+        $t_worker = new gworkermodel();
+        $datenow = date('Y-m-d ');
+        $worker['create_date'] = $datenow;
+        $worker['cprojectid'] = 1;
+        if (isset($arr['prjtelno']) || !empty($arr['prjtelno'])) {
+            $worker['workclass'] = $arr['prjtelno'];
+        }
+        $newid = $t_worker->saveworkerinfo($worker);
+        //如果重复,直接返回
+        if ($newid == -1) {
+            return $newid;
+        }
+
+        //如果插入正常
+        //项目id设置为1
+        if ($newid > 0) {
+            $r_table = new pwrelationmodel();
+            $relation['pid'] = $worker['cprojectid'];
+            $relation['wid'] = $newid;
+            $relation['startdate'] = $datenow;
+            $relation['checkstatus'] = 1;
+            $rid = $r_table->savenewrelation($relation);
+        }
+
+        return $newid;
+    }
+
+    /*
+     * 20230126
+     */
+
+    public function getworkerinfobytel($arr) {
+        $tel = $arr['tel'];
+        $t_m = new gworkermodel();
+        $rec = $t_m->seluinfobytel($tel);
+        $rworker = array();
+        if ($rec) {
+            $rworker['wid'] = $rec['id'];
+            $rworker['wage'] = $rec['wage'];
+            $rworker['wname'] = $rec['wname'];
+            $rworker['workclass'] = $rec['workclass'];
+        }
+
+        return $rworker;
+    }
+
+    /*
+     * 20230131
+     */
+    public function addnewinvent($arr) {
+        $t_i = new inventrecmodel();
+        $arr['inventdate'] = date('Y-m-d');
+        $rid = $t_i->insinfo($arr);
+        return $rid;
+
+    }
+
+    /*
+     * 20230131
+     */
+    public function getinventinfobywid($arr) {
+        $t_i = new inventrecmodel();
+        $wid = $arr['wid'];
+        $rec = $t_i->selinfobywid($wid);
+        return $rec;
+    }
+
+    /*
+     * 20230131
+     */
+    public function updateprjbyinvent($arr) {
+        $newdate = date('Y-m-d ');
+        $pid = $arr['pid'];
+        $r_tale = new pwrelationmodel();
+        $w_table = new gworkermodel();
+        $i_table = new inventrecmodel();
+        //检验GPS
+        $iinfo = $i_table->selinfobyid($arr['id']);
+        $p_lng = $iinfo['prj_lng'];
+        $p_lat = $iinfo['prj_lat'];
+        $m_lat = $arr['my_lat'];
+        $m_lng = $arr['my_lng'];
+
+        if ((abs($p_lng - $m_lng) > 0.1) || (abs($p_lat - $m_lat) > 0.1)) {
+            return 0;
+        }
+        $icount = 0;
+        //var_dump($worker_arr);
+
+        //组织数据
+        $relation['pid'] = $pid;
+        $relation['wid'] = $arr['wid'];
+        $relation['startdate'] = $newdate;
+        $relation['checkstatus'] = 1;
+        $w_table->updateprj($pid, $arr['wid']);
+        $rid = $r_tale->addnewrelation($relation);
+        //更新inventrec
+
+        if ($rid > 0) {
+            $i_table->updateacceptbyid($arr['id']);
+            $icount++;
+        }
+
+        return $icount;
+
+    }
+
+}

+ 73 - 0
application/index/logic/wxBizDataCrypt.php

@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * 对微信小程序用户加密数据的解密示例代码.
+ *
+ * @copyright Copyright (c) 1998-2014 Tencent Inc.
+ */
+
+namespace app\index\logic;
+use app\index\logic\errorCode;
+//include_once "errorCode.php";
+
+
+class wxBizDataCrypt
+{
+    private $appid;
+	private $sessionKey;
+
+	/**
+	 * 构造函数
+	 * @param $sessionKey string 用户在小程序登录后获取的会话密钥
+	 * @param $appid string 小程序的appid
+	 */
+	public function __construct( $appid, $sessionKey)
+	{
+
+		$this->sessionKey = $sessionKey;
+		$this->appid = $appid;
+	}
+
+
+	/**
+	 * 检验数据的真实性,并且获取解密后的明文.
+	 * @param $encryptedData string 加密的用户数据
+	 * @param $iv string 与用户数据一同返回的初始向量
+	 * @param $data string 解密后的原文
+     *
+	 * @return int 成功0,失败返回对应的错误码
+	 */
+	public function decryptData( $encryptedData, $iv, &$data )
+	{
+
+		if (strlen($this->sessionKey) != 24) {
+			return errorCode::$IllegalAesKey;
+		}
+		$aesKey=base64_decode($this->sessionKey);
+
+
+		if (strlen($iv) != 24) {
+			return errorCode::$IllegalIv;
+		}
+		$aesIV=base64_decode($iv);
+
+		$aesCipher=base64_decode($encryptedData);
+
+		$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
+
+		$dataObj=json_decode( $result );
+		if( $dataObj  == NULL )
+		{
+			return errorCode::$IllegalBuffer;
+		}
+		if( $dataObj->watermark->appid != $this->appid )
+		{
+			return errorCode::$IllegalBuffer;
+		}
+		$data = $result;
+
+		return errorCode::$OK;
+	}
+
+}
+

+ 45 - 0
application/index/model/checkinfomodel.php

@@ -0,0 +1,45 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/13
+ * Time: 16:35
+ */
+
+namespace app\index\model;
+use think\Model;
+
+class checkinfomodel extends Model{
+    protected $table='t_nowcheckinfo';
+
+    public function getcheckworkerlistbydate($checkdate,$shift,$pid){
+        $where_arr['checkdate']=$checkdate;
+        $where_arr['checkorder']=$shift;
+        $where_arr['pid']=$pid;
+        $c_workerlist=$this->where($where_arr)->select();
+        return $c_workerlist;
+    }
+
+    public function savechecklist($checklist){
+        $list=$this->saveall($checklist);
+        return count($list);
+    }
+    //根据用户id获取记录
+    public function getusercheckinfobywid($wid){
+        $where_arr['wid']=$wid;
+        $list=$this->where($where_arr)->order('checkdate,checkorder')->select();
+        return $list;
+    }
+
+    //20200203 日起停止使用
+    //获取某人,某班次的评分数据
+    public function getchecklistbyheader($header_id,$chheckdate,$checkshift){
+        $where_arr['checkheadid']=$header_id;
+        $where_arr['checkdate']=$chheckdate;
+        $where_arr['checkorder']=$checkshift;
+        $list=$this->where($where_arr)->select();
+        return $list;
+    }
+
+
+}

+ 82 - 0
application/index/model/checkoprmodel.php

@@ -0,0 +1,82 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/13
+ * Time: 9:13
+ */
+
+namespace app\index\model;
+use think\Model;
+
+class checkoprmodel extends Model{
+    protected $table='t_headcheckrecord';
+
+   //
+   public function getShiftbyWid($wid){
+
+       $datenow=date('Y-m-d ');
+       $datestart=date('Y-m-d',strtotime('-1 day'));
+
+       //暂时取今天昨天
+      $strsql="select * from t_headcheckrecord";
+
+       $strsql=$strsql." where checkdate<='".$datenow."' and checkdate>='".$datestart."' and headid=".$wid." and isopr=1";
+
+       //$wherearr['checkdate']=$datestart;
+       $recordlist=$this->query($strsql);
+       return $recordlist;
+   }
+
+    public function saveOprRecord($oprinfo){
+        $id=$this->save($oprinfo);
+        return $id;
+    }
+
+    public function getoprinfobypid($pid,$checkdate){
+//        $where_arr['pid']=$pid;
+//        $where_arr['checkdate']=$checkdate;
+//        $where_arr['checkorder']=$checkshift;
+        //采用语句查询,
+        //20200203 改成按日,汇总,不再区分班次
+        $strsql="select a.checkdate,a.checkorder,a.pid,a.headid,sum(a.wnum) as countwnum,b.wname";
+        $strsql=$strsql." from t_headcheckrecord a left join t_workerinfo b on a.headid=b.id";
+       // $strsql=$strsql.' where pid='.$pid." and checkdate='".$checkdate."' and checkorder=".$checkshift;
+        $strsql=$strsql.' where pid='.$pid." and checkdate='".$checkdate."' ";
+        $strsql=$strsql." group by headid";
+        $list=$this->query($strsql);
+        return $list;
+    }
+
+    /*
+     * 20200402
+     * 获取项目经理的记工记录
+     * 这个功能在这种情况下可能会出现错误,即同一个项目经理,上下午在不同工地的时候
+     * 需要在获取详情的代码中查看,是否有此问题
+     * 按大于某一天查询
+     */
+    public function seloprlistbyhid($hid,$startdate){
+
+        $strsql="select a.checkdate,a.checkorder,a.pid,a.headid,sum(a.wnum) as countwnum,b.wname";
+        $strsql=$strsql." from t_headcheckrecord a left join t_workerinfo b on a.headid=b.id";
+        // $strsql=$strsql.' where pid='.$pid." and checkdate='".$checkdate."' and checkorder=".$checkshift;
+        $strsql=$strsql.' where headid='.$hid." and checkdate  > '".$startdate."' ";
+        $strsql=$strsql." group by checkdate";
+        $strsql=$strsql." having countwnum>0";
+        $list=$this->query($strsql);
+        return $list;
+    }
+
+    /*
+     * 20230215
+     */
+    public function selinfobyid($id){
+        $where['id']=$id;
+        $rec=$this->where($where)->find();
+        return $rec;
+
+    }
+
+
+
+}

+ 35 - 0
application/index/model/complainmodel.php

@@ -0,0 +1,35 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2021/4/21
+ * Time: 19:17
+ */
+namespace app\index\model;
+use think\Model;
+class complainmodel extends Model{
+    protected $table='t_complainrecord';
+
+    /*
+     * 20210421
+     *
+     */
+    public function insinfo($arr){
+        $this->allowField(true)->isUpdate(false)->setAttr('id',null)->save($arr);
+        return $this->id;
+    }
+
+
+    /*
+     * 20210421
+     * 读取
+     */
+    public function sellistbyunopr(){
+        $where_arr['isopr']=0;
+        $list=$this->where($where_arr)->order('id','desc')->select();
+        $list=collection($list)->toArray();
+        return $list;
+    }
+
+
+}

+ 60 - 0
application/index/model/contactmodel.php

@@ -0,0 +1,60 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/3/8
+ * Time: 16:48
+ */
+
+namespace app\index\model;
+use think\Model;
+
+class contactmodel extends Model{
+    protected $table='t_contact';
+    /*
+     * 20200308
+     * 执行合同
+     */
+    public function insinfo($arr){
+        $res=$this->allowField(true)->save($arr);
+        return $this->id;
+    }
+
+    /*
+     * 20200308
+     * 查询工地下的所有合同
+     */
+    public function selclistbypid($pid){
+        $rlist=$this->where('pid',$pid)->select();
+        return $rlist;
+
+    }
+
+    /*
+     * 20200320
+     * 查询所有有效的合同,
+     */
+   public function selectclistbyacitve(){
+       $rlist=$this->where('isacitve',1)->select();
+       return $rlist;
+   }
+    /*
+     * 20200309
+     * 根据ID查合同信息
+     */
+    public function selcinfobycid($cid){
+        $rec=$this->where('id',$cid)->find();
+        return $rec;
+    }
+
+    /*
+     * 20230215
+     */
+    public function sellistbycid($cid){
+        $where_arr['isacitve']=1;
+        $where_arr['companyid']=$cid;
+        $rlist=$this->where($where_arr)->select();
+        return $rlist;
+    }
+
+}

+ 361 - 0
application/index/model/daycheckinfo.php

@@ -0,0 +1,361 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/2/3
+ * Time: 1:45
+ */
+
+namespace app\index\model;
+use think\Model;
+
+class daycheckinfo extends Model{
+    protected $table='t_daycheckinfo';
+
+    //  是否存在相庆的记录
+    /*
+     * 20200416
+     * 修改
+     * 因为更换工地当天,存在误操作
+     * 因在源头解决,所以此修改取消
+     */
+    public  function getinfobywid($pid,$checkdate,$wid){
+        $where_arr['wid']=$wid;
+        //$where_arr['pid']=$pid;//20200416,取消此条件,同一个,同一天只能有一个记录,这样可能导致工地记录不准确,
+        $where_arr['checkdate']=$checkdate;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+    }
+
+    //新增
+    public function addnewcheck($checkinfo){
+        //判断是否存在
+        $pid=$checkinfo['pid'];
+        $checkdate=$checkinfo['checkdate'];
+        $wid=$checkinfo['wid'];
+
+        $rec=$this->getinfobywid($pid,$checkdate,$wid);
+
+        if (empty($rec)){
+
+           $this->isUpdate(false)->setAttr('id',null)->save($checkinfo);
+            $rid=$this->id;
+
+        }else{
+           $rid=$rec['id'];
+            $this->updatebycheck($checkinfo,$rid);
+
+        }
+       $this->addtwoshift($rid);
+        return $rid;
+
+    }
+
+    public function updatebycheck($checkinfo,$id){
+        $where_arr['id']=$id;
+        $rid=$this->where($where_arr)->update($checkinfo);
+        return $rid;
+    }
+
+    private function addtwoshift($id){
+        $stradd='update t_daycheckinfo ';
+        $stradd=$stradd." set dayscore=if(isnull(score_1),0,score_1)+if(isnull(score_2),0,score_2)";
+        $stradd=$stradd." where id=".$id;
+        $this->execute($stradd);
+
+    }
+
+    public function getusercheckinfobywid($wid){
+        $where_arr['wid']=$wid;
+        $list=$this->where($where_arr)->order('checkdate')->select();
+        return $list;
+    }
+    /*
+     * 20200216
+     * steelxu
+     * 按月,按人查询的端口
+     */
+    public function getusercheckinfobywidwithmonth($wid,$strmonth){
+        $strsql="select *";
+        $strsql=$strsql." from t_daycheckinfo";
+        $strsql=$strsql." where wid=".$wid." and checkdate like '".$strmonth."%'";
+        $strsql=$strsql." order by checkdate";
+        $list=$this->query($strsql);
+        return $list;
+    }
+
+    public function getchecklistbyheadwithdate($headid,$checkdate){
+        $strsql="select *";
+        $strsql=$strsql." from t_daycheckinfo";
+        $strsql=$strsql." where checkdate='".$checkdate."' and ((headid_1=".$headid.") or (headid_2=".$headid."))";
+        $rlist=$this->query($strsql);
+        return $rlist;
+
+    }
+
+    /*
+     * 20200206
+     * steelxu
+     * 汇总统计记工数据
+     * param $formatmoth 是格式化的月份,格式化工作在上一级完成
+     * 20200401
+     * 修改,测试项目记录的不导出
+     */
+    public function countcheckbymonth($formatmonth,$start,$len){
+        $strsql= "select wid,wname,count(dayscore) as daycount,sum(dayscore) as monthsum ";
+        $strsql=$strsql." from t_daycheckinfo ";
+        $strsql=$strsql." where checkdate like '".$formatmonth."%' and pid>3 and dayscore>0" ;//
+        $strsql=$strsql." group by wid";
+        if ($len>0){
+            //导出到execl时,传入 $len参数为0,不加此行,导出所有数据
+            $strsql=$strsql." limit ".$start.",".$len;
+        }
+        $rlist=$this->query($strsql);
+        return $rlist;
+    }
+    /*
+     * 20200421
+     * 在原方法上,增加返回的推荐奖励数据的一个方法
+     * 从架构上而言,这是一种临时的省事的做法,
+     * 再有新的奖励,就必须创建一个奖励类来处理业务逻辑,再合并到输出中
+     */
+    public function countcheckwithawardbymonth($formatmonth,$start,$len){
+            $strsql= "select a.wid,a.wname,count(a.dayscore) as daycount,sum(a.dayscore) as monthsum,b.sumaward";
+        $strsql=$strsql." from t_daycheckinfo a left join t_recuitaward b on a.wid=b.recuituser and b.summonth='".$formatmonth."'";
+        $strsql=$strsql." where checkdate like '".$formatmonth."%' and pid>3 and dayscore>0" ;//
+        $strsql=$strsql." group by wid";
+        if ($len>0){
+            //导出到execl时,传入 $len参数为0,不加此行,导出所有数据
+            $strsql=$strsql." limit ".$start.",".$len;
+        }
+        $rlist=$this->query($strsql);
+        return $rlist;
+    }
+
+    /*
+     * 20230215
+     * 在原有的方式上,加上一个公司id来处理
+     */
+    public function countcompanycheckwithawardbymonth($formatmonth,$start,$len,$cid){
+        $strsql= "select a.wid,a.wname,count(a.dayscore) as daycount,sum(a.dayscore) as monthsum,b.sumaward";
+        $strsql=$strsql." from t_daycheckinfo a left join t_recuitaward b on a.wid=b.recuituser and b.summonth='".$formatmonth."' left join t_pinfo c on a.pid=c.id";
+        $strsql=$strsql." where checkdate like '".$formatmonth."%' and c.companyid=".$cid." and dayscore>0" ;//
+        $strsql=$strsql." group by wid";
+        if ($len>0){
+            //导出到execl时,传入 $len参数为0,不加此行,导出所有数据
+            $strsql=$strsql." limit ".$start.",".$len;
+        }
+        $rlist=$this->query($strsql);
+        return $rlist;
+    }
+
+    /*
+     * 20200208
+     * steelxu
+     * 获取某员工某月的记工记录
+     */
+    public function getcheckinfobywidwithmonth($wid,$strmonth){
+        $strsql= "select * ";
+        $strsql=$strsql." from t_daycheckinfo ";
+        $strsql=$strsql." where wid=".$wid." and checkdate like '".$strmonth."%' and pid>3";//
+        $strsql=$strsql." order by checkdate ";
+        $rlist=$this->query($strsql);
+        return $rlist;
+    }
+
+    /*
+     * 20200208
+     * steelxu
+     * 取消某员工某班次的记录
+     * 本函数未更新操作记录
+     */
+    public function revokecheckshift($checkdate,$wid,$shift,$id){
+        $strsql="update t_daycheckinfo";
+        $strsql=$strsql." set score_".$shift."=0,headid_".$shift."=0,gid_".$shift."=0";
+        $strsql=$strsql." where checkdate='".$checkdate."' and wid=".$wid;
+       $res=$this->execute($strsql);
+        $this->addtwoshift($id);
+        return $res;
+    }
+
+    /*
+     * 20200208 获取某公司某班组长记工的记录
+     * steelxu
+     * 解决班组长可以撤销操作记录的功能
+     */
+    public function getlistbyheadwithshift($checkdate,$shift,$headid,$gid){
+        $strsql="select id,wid,wname,checkdate,score_".$shift." as score";
+        $strsql=$strsql." from t_daycheckinfo";
+        $strsql=$strsql." where checkdate='".$checkdate."' and headid_".$shift."=".$headid." and gid_".$shift."=".$gid;
+        $rlist=$this->query($strsql);
+
+        return $rlist;
+
+    }
+
+    /*
+     * 20200215
+     * steelxu
+     * 按月给工人汇总工分
+     */
+    public function totalcheckbymonthwithwid($wid){
+        $strsql="select wid,wname,left(checkdate,7) as strmonth,count(*) as daycount,sum(dayscore) as monthsum";
+        $strsql=$strsql." from t_daycheckinfo";
+        $strsql=$strsql." where wid=".$wid;
+        $strsql=$strsql." group by left(checkdate,7)";
+        $strsql=$strsql." order by left(checkdate,7) desc";
+        $rlist=$this->query($strsql);
+        return $rlist;
+    }
+
+     /*
+      * 20200307
+      * 做一个查加班的记录
+      * 此记录是单独记录,但不是
+      *
+      */
+
+    public function selscorewithprjbyscore($start,$len){
+        $strsql="select a.wid,a.wname,a.checkdate,a.score_1,b.wname as mname_1,a.score_2,c.wname as mname_2,d.pname as prjname ";
+        $strsql=$strsql." from t_daycheckinfo a INNER JOIN t_workerinfo b on a.headid_1=b.id INNER JOIN t_workerinfo c on a.headid_2=c.id INNER JOIN t_pinfo d on a.pid=d.id";
+        $strsql=$strsql." where score_1>5 or score_2>5 ";
+        $strsql=$strsql." order by a.pid,a.wid";
+        $strsql=$strsql." limit $start,$len";
+
+        $rlist=$this->query($strsql);
+        return $rlist;
+
+    }
+
+    /*
+     * 20230215
+     * 修改查加班的记录的功能 ,只能查自己公司的
+     */
+    public function selscorewithprjbyscorecid($start,$len,$cid){
+        $strsql="select a.wid,a.wname,a.checkdate,a.score_1,b.wname as mname_1,a.score_2,c.wname as mname_2,d.pname as prjname ";
+        $strsql=$strsql." from t_daycheckinfo a INNER JOIN t_workerinfo b on a.headid_1=b.id INNER JOIN t_workerinfo c on a.headid_2=c.id INNER JOIN t_pinfo d on a.pid=d.id";
+        $strsql=$strsql." where (a.score_1>5 or a.score_2>5) and d.companyid=".$cid;
+        $strsql=$strsql." order by a.pid,a.wid";
+        $strsql=$strsql." limit $start,$len";
+
+        $rlist=$this->query($strsql);
+        return $rlist;
+
+    }
+
+    /*
+     * 20200308 完成按班组统计的数据
+     */
+    public function selsuminfobygid($gid,$strmonth){
+       // $datenow=date('Y-m-d');
+        $strsql="select checkdate,sum(case when gid_1=$gid then score_1 else 0 end) as d_score_1,sum(case  when gid_2=$gid then score_2 else 0 end) as d_score_2";
+        $strsql=$strsql." from t_daycheckinfo";
+        $strsql=$strsql." where checkdate like '$strmonth%'";
+        $strsql=$strsql." group by checkdate";
+
+//        echo $strsql;
+//        echo '<br>';
+        $rlist=$this->query($strsql);
+        return $rlist;
+
+
+    }
+
+    /*
+     * 20200312
+     * 按项目,起始日期,统计出勤记录
+     *
+     */
+     public function selcinfowithdate($startday,$endday,$pid){
+         $strsql="select checkdate,pid,count(*) as workernumber ";
+         $strsql=$strsql." from t_daycheckinfo";
+         $strsql=$strsql." where checkdate>='".$startday."' and checkdate<='".$endday."' and pid=".$pid;
+         $strsql=$strsql." group by checkdate";
+
+         $r_list=$this->query($strsql);
+         return $r_list;
+     }
+
+    /*
+     * 20200315
+     * 实现按班组按人的统计
+     */
+    public function selworksumbygidwithdate($gid,$strmonth){
+        // $datenow=date('Y-m-d');
+        $strsql="select checkdate,wid,wname,sum(case when gid_1=$gid then score_1 else 0 end) as d_score_1,sum(case  when gid_2=$gid then score_2 else 0 end) as d_score_2";
+        $strsql=$strsql." from t_daycheckinfo";
+        $strsql=$strsql." where checkdate like '$strmonth%'";
+        $strsql=$strsql." group by checkdate,wid";
+        $strsql=$strsql." having d_score_1>0 or d_score_2>0";
+//        echo $strsql;
+//        echo '<br>';
+        $rlist=$this->query($strsql);
+        return $rlist;
+
+    }
+
+    /*
+     * 20200419
+     * 获取某员工某一时间段的工作记录
+     *
+     */
+    public function selcountbyidwithdate($id,$bdate,$edate){
+        $strsql="select wid,checkdate, sum(dayscore) as sumds";
+        $strsql=$strsql." from t_daycheckinfo";
+        $strsql=$strsql." where wid=$id and checkdate>='".$bdate."' and checkdate<='".$edate."'";
+        $strsql=$strsql." group by checkdate";
+        $strsql=$strsql." having sumds>=10";
+
+        $rlist=$this->query($strsql);
+        if($rlist){
+            $rlist=collection($rlist)->toArray();
+            return count($rlist);
+        }else{
+            return 0;
+        }
+    }
+
+    /*
+     * 20200729
+     * 根据GID获取已取班次已经记工的人数
+     */
+    public function selcountbygid($gid,$checkdate,$shift){
+        $strsql="select count(id) as checkcount";
+        $strsql=$strsql." from t_daycheckinfo";
+        $strsql=$strsql." where gid_$shift=$gid and checkdate='".$checkdate."' and score_$shift>0";
+        $count=$this->query($strsql);
+        $count=collection($count)->toArray();
+        return $count;
+    }
+
+    /*
+     * 20210807
+     */
+    public function selscorebyidwithdays($id,$bdate){
+        $strsql="select wid,checkdate, sum(dayscore) as sumds";
+        $strsql=$strsql." from t_daycheckinfo";
+        $strsql=$strsql." where wid=$id and checkdate>='".$bdate."'";
+
+
+        $rlist=$this->query($strsql);
+        if($rlist){
+            $rlist=collection($rlist)->toArray();
+            return count($rlist);
+        }else{
+            return 0;
+        }
+    }
+
+
+    /*
+     * 20230215
+     */
+    public function selinfobyid($id){
+        $where['id']=$id;
+        $rec=$this->where($where)->find();
+        return $rec;
+
+    }
+
+
+}

+ 33 - 0
application/index/model/daypricerecodemodel.php

@@ -0,0 +1,33 @@
+<?php
+namespace app\index\model;
+use think\Model;
+/**
+ * 工人日工资记录表
+ *
+ * @author wj
+ * @date 2025-02-17
+ */
+class daypricerecodemodel extends Model {
+    protected $table = 't_dayprice_recode';
+
+    public function insinfo($arr) {
+        $this->allowField(true)->save($arr);
+        return $this->id;
+
+    }
+
+    public function getList($where = [], $field = "*", $page = 1, $size = 10, $order = "id desc", $group = "", $row = false) {
+        $sqlObj = $this->where($where);
+        if ("count" != $field) {
+            $sqlObj = $sqlObj->field($field)->order($order)->group($group)->page($page, $size);
+            if ($row) {
+                $data = $sqlObj->find();
+            } else {
+                $data = $sqlObj->select();
+            }
+        } else {
+            $data = $sqlObj = $sqlObj->count();
+        }
+        return $data;
+    }
+}

+ 42 - 0
application/index/model/gcmodel.php

@@ -0,0 +1,42 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/3/9
+ * Time: 11:28
+ */
+
+namespace app\index\model;
+use think\Model;
+
+class gcmodel extends Model{
+    protected $table='t_g2c';
+    protected $resultSetType ='collection';
+
+    public function insinfo($arr){
+        $this->allowField(true)->save($arr);
+        return $this->id;
+
+    }
+    /*
+     * 20200309
+     * 根据班组查合同
+     */
+    public function selcinfobygid($gid){
+        $where_arr['gid']=$gid;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+    }
+
+    /*
+     * 20200310
+     * 按合同查询所有项目
+     */
+
+    public function selgidbycid($cid){
+        $where_arr['cid']=$cid;
+        $rlist=$this->where($where_arr)->select()->toArray();
+
+        return $rlist;
+    }
+}

+ 60 - 0
application/index/model/ginfomodel.php

@@ -0,0 +1,60 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/13
+ * Time: 15:37
+ */
+namespace app\index\model;
+use think\Model;
+
+class ginfomodel extends Model{
+    protected $table='t_ginfo';
+
+    public function getpidbygid($gid){
+        $record=$this->where('id',$gid)->find();
+        if (empty($record)){
+            return 0;
+        }else{
+            return $record['pid'];
+        }
+    }
+
+    public function addnewgroup($arr){
+        $res=$this->save($arr);
+        return $res;
+    }
+
+    public function getglistbypid($pid){
+
+       $rlist=$this->where('pid',$pid)->select();
+
+
+        return $rlist;
+
+    }
+
+    /*
+     * 20200310
+     * 获取班组名称
+     */
+    public function selginfobygid($gid){
+        $rec=$this->where('id',$gid)->find();
+        return $rec;
+    }
+
+    /*
+     * 20200331
+     * 更新班组名称
+     */
+
+    public function updatenamebyid($arr){
+        $where_arr['id']=$arr['id'];
+        $updatearr['gname']=$arr['gname'];
+        $updatearr['gworkclass']=$arr['gworkclass'];
+        $rid=$this->where($where_arr)->update($updatearr);
+        return $rid;
+    }
+
+
+}

+ 46 - 0
application/index/model/gmembermodel.php

@@ -0,0 +1,46 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/3/3
+ * Time: 11:27
+ */
+
+namespace app\index\model;
+use think\Model;
+
+class gmembermodel extends Model{
+    protected $table='t_gmember';
+
+    /*
+     * 20200303
+     * steelxu
+     * 根据班组id返回班组成员
+     */
+    public function selmlistbygid($gid){
+        $where_arr['gid']=$gid;
+        $where_arr['checkstate']=1;
+        $rlist=$this->where($where_arr)->select();
+        return $rlist;
+    }
+
+    /*
+     * 20200303
+     * steelxu
+     * 存入一条数据
+     */
+    public function insmember($minfo){
+        $this->isUpdate(false)->save($minfo);
+        return $this->id;
+    }
+
+    /*
+     * 20200303
+     * steelxu
+     * 存入一组数据
+     */
+    public function insmlist($mlist){
+        $rcount=$this->saveAll($mlist);
+        return $rcount;
+    }
+}

+ 244 - 0
application/index/model/gworkermodel.php

@@ -0,0 +1,244 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/12
+ * Time: 21:59
+ */
+
+namespace app\index\model;
+use think\Model;
+use think\Log;
+
+class gworkermodel extends Model{
+    protected $table='t_workerinfo';
+
+    public function getidbytel($tel){
+        $recordlist=$this->where('telno',$tel)->find();
+        if ($recordlist){
+        return $recordlist['id'];
+        }else{
+            return 0;
+        }
+    }
+
+    //获取所有工人信息,并带项目名称
+    public function getallworker($start,$rlen){
+        $strsql="select a.*,c.pname,c.is_worker ";
+        $strsql=$strsql."from t_workerinfo a left join t_p2wrelation b on a.id=b.wid and b.checkstatus=1 left join t_pinfo c on b.pid=c.id";
+        $strsql=$strsql." limit ".$start.",".$rlen;
+
+        $workerlist=$this->query($strsql);
+        return $workerlist;
+
+    }
+
+    /*
+     * 20230214
+     * 获取一个企业的项目的所有工人
+     */
+    public function getallworkerbycid($start,$rlen,$cid){
+        $strsql="select a.*,c.pname,c.is_worker ";
+        $strsql=$strsql."from t_workerinfo a left join t_p2wrelation b on a.id=b.wid and b.checkstatus=1 left join t_pinfo c on b.pid=c.id";
+        $strsql=$strsql." where c.companyid=".$cid;
+        $strsql=$strsql." order by a.dayprice,create_date desc";
+        $strsql=$strsql." limit ".$start.",".$rlen;
+
+        $workerlist=$this->query($strsql);
+        return $workerlist;
+
+    }
+    /*
+     * steelxu
+     * 20200212
+     * 获取指定项目员工
+     */
+    public function getprjworker($start,$rlen,$pid){
+        $strsql="select * ";
+        $strsql=$strsql."from t_workerinfo ";
+        $strsql=$strsql." where cprojectid=".$pid;
+        $strsql=$strsql." order by wname";
+        $strsql=$strsql." limit ".$start.",".$rlen;
+
+        $workerlist=$this->query($strsql);
+        return $workerlist;
+    }
+    /*
+     * 20200303
+     * 预检查是否有索引字段重复
+     */
+    private function precheckindex($info){
+        $where_arr['telno']=$info['telno'];
+        $rec=$this->where($where_arr)->find();
+        if ($rec){
+            return false;
+        }else{
+            return true;
+        }
+    }
+/*
+ * 20200303
+ * edit
+ * 有索引表,增加预检 *
+ */
+    public function saveworkerinfo($worker){
+        //预检
+        $ishave=$this->precheckindex($worker);
+        Log::info($ishave);
+        if (!$ishave){
+            return -1;
+        }
+        Log::info($worker);
+        $sid=$this->allowField(true)->isUpdate(false)->setAttr('id',null)->save($worker);
+
+        if ($sid==1){
+            return $this->id;
+        }else{
+            return $sid;
+        }
+
+    }
+    /*
+     * 20200204
+     * steelxu
+     * 更新工人的cprojectid,
+     * 实现工人指量设置,换项目的功能
+     * */
+    public function updateprj($pid,$wid){
+        $where_arr['id']=$wid;
+        $update_arr['cprojectid']=$pid;
+      $res=$this->where($where_arr)->update($update_arr);
+        return $res;
+    }
+
+    /*
+     * steelxu
+     * 20200211
+     * 根据工人ID获取信息
+     */
+    public function getinfobyid($wid){
+        $where_arr['id']=$wid;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+    }
+
+    /*
+     * 20200325
+     * 获取所有工人的id和身份证
+     */
+    public function selshengfengzhenglist(){
+        $strsql="select id,shengfengid ";
+        $strsql=$strsql." from t_workerinfo";
+        $wlist=$this->query($strsql);
+        return $wlist;
+    }
+
+    /*
+     * 2030215
+     * 只返回公司的员工id和身份证
+     */
+    public function selcompanyshengfengzhenglist($cid){
+        $strsql="select a.id,a.shengfengid ";
+        $strsql=$strsql." from t_workerinfo a left join t_pinfo b on a.cprojectid=b.id";
+        $strsql=$strsql." where b.companyid=".$cid;
+        $wlist=$this->query($strsql);
+        return $wlist;
+    }
+/*
+ * 20200417
+ * 根据电话获取用户信息
+  *
+ */
+    public function seluinfobytel($tel){
+        $where_arr['telno']=$tel;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+    }
+
+    /*
+     * 20200515
+     * 根据身份证获取数据
+     */
+    public function selinfobysfz($sfzid){
+        $where_arr['shengfengid']=$sfzid;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+
+    }
+
+    /*
+     * 20210311
+     * 根据姓名获取数据
+     */
+    public function selinfobyname($name){
+        $strsql="select * from t_workerinfo where wname like '%".$name."%' order by id,cprojectid";
+        $rlist=$this->query($strsql);
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+    }
+
+    /*
+     * 20210416
+     * 获取生日是今天的员工
+     */
+    public function selworklistbybirthday($birthday){
+        if($birthday!='0301') {
+            $strsql="select * from t_workerinfo where SUBSTR(shengfengid FROM 11 FOR 4)='".$birthday."'";
+        }else{
+            $strsql="select * from t_workerinfo where SUBSTR(shengfengid FROM 11 FOR 4)='".$birthday."' or SUBSTR(shengfengid FROM 11 FOR 4)='0209'";
+        }
+        $rlist=$this->query($strsql);
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+
+
+    }
+
+    /*
+     * 20210416
+     * 更新工人年龄
+     */
+    public function updwagebyid($id,$wage){
+        $where_arr['id']=$id;
+        $upd_arr['wage']=$wage;
+        $this->where($where_arr)->update($upd_arr);
+    }
+
+    /*
+     * 20210427
+     * 更新工人信息(电话、工种)
+     */
+    public function updinfobyid($id,$arr){
+        $where_arr['id']=$id;
+        $count=$this->where($where_arr)->update($arr);
+        return $count;
+
+    }
+
+    /*
+     * 20210725
+     * 获取每个工地的人数统计
+     */
+    public function selwcountbyprj(){
+        $strsql='select cprojectid, count(*) as pwcount ';
+        $strsql=$strsql.' from t_workerinfo ';
+        $strsql=$strsql." where cprojectid>3";
+        $strsql=$strsql." group by cprojectid";
+        $rlist=$this->query($strsql);
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+
+    }
+
+    /*
+     * 20210807
+     * 获取所有cprojectid>3的用户
+     */
+    public function selinfolistwithprjid(){
+        $strsql='select * from t_workerinfo where cprojectid>3';
+        $rlist=$this->query($strsql);
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+    }
+
+}

+ 22 - 0
application/index/model/indatarec.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/5/10
+ * Time: 23:48
+ */
+
+namespace app\index\model;
+use think\Model;
+class indatarec extends Model{
+    public $table='t_indatarec';
+
+    public function updrecbycid($cid,$rec)
+    {
+        //
+        $where_arr['contractid'] = $cid;
+        $update_arr['workrecid'] = $rec;
+        $this->where($where_arr)->update($update_arr);
+    }
+
+}

+ 51 - 0
application/index/model/inventrecmodel.php

@@ -0,0 +1,51 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2023/1/31
+ * Time: 13:59
+ */
+namespace app\index\model;
+use think\Model;
+class inventrecmodel extends Model{
+    protected $table='t_inventworkerrec';
+    /*
+     * 20200308
+     *
+     */
+    public function insinfo($arr){
+        $res=$this->allowField(true)->save($arr);
+        return $this->id;
+    }
+
+    /*
+     * 20230131
+     */
+    public function selinfobywid($wid){
+        $where_arr['workerid']=$wid;
+        $where_arr['isaccept']=0;
+        $rec=$this->where($where_arr)->order('id','desc')->find();
+        return $rec;
+    }
+
+    /*
+     * 20230131
+     */
+    public function updateacceptbyid($id){
+        $where_arr['id']=$id;
+        $where_arr['isaccept']=0;
+        $update_arr['isaccept']=1;
+        $update_arr['accpetdate']=date('Y-m-d');
+        $rec=$this->where($where_arr)->update($update_arr);
+        return $rec;
+    }
+
+    /*
+     * 20230201
+     */
+    public function selinfobyid($id){
+        $where_arr['id']=$id;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+    }
+}

+ 17 - 0
application/index/model/logmodel.php

@@ -0,0 +1,17 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/6
+ * Time: 12:36
+ */
+namespace app\index\model;
+use think\Model;
+class logmodel extends Model{
+    protected $table='t_actlog';
+
+    public function savelog($loginfo){
+        $r_id=$this->allowField(true)->save($loginfo);
+        return $r_id;
+    }
+}

+ 37 - 0
application/index/model/memodel.php

@@ -0,0 +1,37 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2019/12/7
+ * Time: 11:11
+ */
+
+namespace app\index\model;
+use think\Model;
+
+
+class memodel extends Model{
+  // private $me_tabel;
+    protected $table = 't_wxuser';
+
+//   public function initialize(){
+//       //echo "in";
+//       $this->me_tabel=model("tEquipmentMe");
+//       echo 'init';
+//   }
+
+    public function saveme($userinfo){
+        $r_id=$this->allowField(true)->save($userinfo);
+        return $r_id;
+    }
+
+    public function getinfobyopenid($openid){
+        $record=$this->where("open_id",$openid)->find();
+        return $record;
+    }
+
+    public function updatetelbyoopenid($openid,$tel){
+        $r_id=$this->where("open_id",$openid)->update(['tel'=>$tel]);
+        return $r_id;
+    }
+} 

+ 65 - 0
application/index/model/noticemodel.php

@@ -0,0 +1,65 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2021/5/16
+ * Time: 12:05
+ */
+namespace app\index\model;
+use think\Model;
+class noticemodel extends Model{
+    protected $table='t_notice';
+
+    /*
+     * 20210516
+     */
+    public function insinfo($arr){
+        $this->allowField(true)->isUpdate(false)->setAttr('id',null)->save($arr);
+        return $this->id;
+    }
+
+    /*
+     * 20210517
+     * 获取所有的有效公告接口
+     */
+    public function selalllist(){
+        $where_arr['isactive']=1;
+        $rlist=$this->where($where_arr)->order('id','desc')->select();
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+    }
+
+    /*
+ * 20210517
+ */
+    public function selnewmsg(){
+
+        $where_arr['isactive']=1;
+        $rlist=$this->where($where_arr)->order('id','desc')->limit(0,1)->select();
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+    }
+
+    /*
+     * 20230215
+     */
+    public function sellistbycid($cid){
+        $where_arr['companyid']=$cid;
+        $where_arr['isactive']=1;
+        $rlist=$this->where($where_arr)->order('id','desc')->select();
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+    }
+
+    /*
+     * 20230218
+     */
+    public function selnewmsgbycid($cid){
+        $where_arr['isactive']=1;
+        $where_arr['companyid']=$cid;
+        $rlist=$this->where($where_arr)->order('id','desc')->limit(0,1)->select();
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+    }
+
+}

+ 31 - 0
application/index/model/noticereadmodel.php

@@ -0,0 +1,31 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2021/5/17
+ * Time: 9:09
+ */
+namespace app\index\model;
+use think\Model;
+class noticereadmodel extends Model{
+    protected $table='t_noticeread';
+
+    /*
+ * 20210517
+ */
+    public function insinfo($arr){
+        $this->allowField(true)->isUpdate(false)->setAttr('id',null)->save($arr);
+        return $this->id;
+    }
+
+    /*
+     * 20210517
+     */
+    public function selnewinfobywid($wid){
+        $where_arr['wid']=$wid;
+        $rinfo=$this->where($where_arr)->order('id',"desc")->limit(0,1)->select();
+        $rlist=collection($rinfo)->toArray();
+        return $rlist;
+
+    }
+}

+ 52 - 0
application/index/model/paydetailmodel.php

@@ -0,0 +1,52 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2021/5/1
+ * Time: 2:02
+ */
+namespace app\index\model;
+use think\Model;
+class paydetailmodel extends Model{
+    protected $table='t_paydetail';
+    /*
+ * 20210430
+ *
+ */
+    public function insinfo($arr){
+        $this->allowField(true)->isUpdate(false)->setAttr('id',null)->save($arr);
+        return $this->id;
+    }
+
+    /*
+     * 20210502
+     *
+     */
+    public function insinfolist($arr){
+        $icount=$this->saveAll($arr);
+        return $icount;
+    }
+
+    /*
+     * 20210508
+     * 按身份证获取支款记录
+     */
+    public function selinfobysfz($sfz){
+        $where_arr['sfzid']=$sfz;
+        $rlist=$this->where($where_arr)->order('paydate','desc')->select();
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+    }
+
+    /*
+     * 20210517
+     * 按导入查询
+     */
+    public function sellistbyuplogid($uplogid){
+        $where_arr['uplogid']=$uplogid;
+        $rlist=$this->where($where_arr)->select();
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+
+    }
+}

+ 41 - 0
application/index/model/pinfomodel.php

@@ -0,0 +1,41 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/27
+ * Time: 14:13
+ */
+namespace app\index\model;
+use think\Model;
+
+class pinfomodel extends Model{
+    protected $table='t_pinfo';
+
+    function getallpinfo(){
+        $plist=$this->where('is_worker=1')->select();
+        //$plist=collection($plist)->toArray();
+        return $plist;
+    }
+
+    function sellistbycid($companyid){
+        $where_arr['companyid']=$companyid;
+        $where_arr['is_worker']=1;
+        $plist=$this->where($where_arr)->order('id','asc')->select();
+        //$plist=collection($plist)->toArray();
+        return $plist;
+    }
+
+    public function saveprjinfo($prj){
+        $id=$this->save($prj);
+        return $id;
+    }
+
+    public function getbyid($id){
+        $where_arr['id']=$id;
+        $pinfo=$this->where($where_arr)->find();
+
+        return $pinfo;
+    }
+
+
+}

+ 55 - 0
application/index/model/prjlocationmodel.php

@@ -0,0 +1,55 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2021/5/15
+ * Time: 17:18
+ */
+namespace app\index\model;
+use think\Model;
+class prjlocationmodel extends Model{
+    protected $table='t_prjlocation';
+
+    /*
+     * 20210515
+     */
+    public function sellist(){
+        $rlist=$this->order('prjid')->select();
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+    }
+
+    /*
+     * 20230302
+     */
+    public function insinfo($arr){
+        $prjid=$arr['prjid'];
+        $rec=$this->selinfobyprjid($prjid);
+        if($rec){
+            return 0;
+        }else{
+            $this->allowField(true)->save($arr);
+            return $this->id;
+        }
+    }
+
+    public function updatelocation($arr){
+    //    $prjid=$arr['prjid'];
+     //   $uplocation['']
+
+
+    }
+
+    /*
+     * 20230302
+     */
+    public function selinfobyprjid($prjid){
+        $where_arr['prjid']=$prjid;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+    }
+
+    /*
+     *
+     */
+}

+ 108 - 0
application/index/model/pwrelationmodel.php

@@ -0,0 +1,108 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/13
+ * Time: 15:54
+ */
+namespace app\index\model;
+use think\Model;
+
+class pwrelationmodel extends Model{
+    protected $table='t_p2wrelation';
+
+    public function getworkerlistbypid($pid){
+        $where_arr['pid']=$pid;
+        $where_arr['checkstatus']=1;
+        $workerlist=$this->where($where_arr)->select();
+        return $workerlist;
+    }
+/*
+ * 20200416
+ * 修改:原有的不能发现在其它工地已记工的员工,导致重复记录
+ * 修改为联表查询,相关员工的记工记录
+ *todo 在人员再增加时,联表查询会有问题,此功能要取消,改为从上一级查询
+ */
+    public function getworkerunlist($pid,$checkdate,$shift){
+//        $strsql="select a.*,b.wname,b.workclass,b.telno,b.wage, 5 as setscore,0 as mcheck from t_p2wrelation a left join t_workerinfo b on a.wid=b.id ";
+//
+//        $strsql=$strsql." where a.pid = ".$pid." and a.checkstatus=1 and a.wid not in ";
+//        if ($shift==1){
+//            $strsql=$strsql."(select wid from t_daycheckinfo ";
+//            $strsql=$strsql." where pid=".$pid."  and checkdate='".$checkdate."' and score_1>0)";
+//        }else{
+//            $strsql=$strsql."(select wid from t_daycheckinfo ";
+//            $strsql=$strsql." where pid=".$pid."  and checkdate='".$checkdate."' and score_2>0)";
+//        }
+        $strsql="select a.*,b.wname,b.workclass,b.telno,b.wage, b.dayprice,5 as setscore,0 as mcheck from t_p2wrelation a left join t_workerinfo b on a.wid=b.id ";
+        $strsql=$strsql." left join t_daycheckinfo c on a.wid=c.wid and c.checkdate='".$checkdate."'";
+        $strsql=$strsql." where a.pid = ".$pid." and a.checkstatus=1 and a.startdate<='".$checkdate."' and ";
+        if ($shift==1){
+            $strsql=$strsql." (c.score_1 is null or c.score_1=0)";
+        }else{
+            $strsql=$strsql." (c.score_2 is null or c.score_2=0)";
+        }
+
+        $strsql=$strsql." order by workclass,wname";
+
+
+
+        $workerlist=$this->query($strsql);
+        return $workerlist;
+    }
+  /*
+   * 20200603
+   * 补考勤用新的,排除掉进入项目日期必须在考勤日期之前
+   */
+    public function selunwlistforupdate($pid,$checkdate,$shift){
+
+        $strsql="select a.*,b.wname,b.workclass,b.telno,b.wage, b.dayprice,5 as setscore,0 as mcheck from t_p2wrelation a left join t_workerinfo b on a.wid=b.id ";
+        $strsql=$strsql." left join t_daycheckinfo c on a.wid=c.wid and c.checkdate='".$checkdate."'";
+        $strsql=$strsql." where a.pid = ".$pid." and a.checkstatus=1  and ";
+        if ($shift==1){
+            $strsql=$strsql." (c.score_1 is null or c.score_1=0)";
+        }else{
+            $strsql=$strsql." (c.score_2 is null or c.score_2=0)";
+        }
+
+        $strsql=$strsql." order by workclass,wname";
+
+
+
+        $workerlist=$this->query($strsql);
+        return $workerlist;
+    }
+
+
+
+
+    public function savenewrelation($relation){
+        $id=$this->save($relation);
+        return $id;
+    }
+
+    public function getpidbywid($wid){
+        $where_arr['wid']=$wid;
+        $where_arr['checkstatus']=1;
+        $pwinfo=$this->where($where_arr)->find();
+        return $pwinfo['pid'];
+    }
+
+    //取消某用户以前的历史关系,将checkstatus set=0
+    private  function cancelpwhistory($wid,$date){
+        $where_arr['wid']=$wid;
+        $where_arr['checkstatus']=1;
+        $update_arr['checkstatus']=0;
+        $update_arr['enddate']=$date;
+        $this->where($where_arr)->update($update_arr);
+        return 1;
+    }
+
+    public function addnewrelation($relation_arr){
+        //先取消原有的关系
+        $this->cancelpwhistory($relation_arr['wid'],$relation_arr['startdate']);
+
+        $this->isUpdate(false)->save($relation_arr);
+        return 1;
+    }
+}

+ 61 - 0
application/index/model/recuitawardmodel.php

@@ -0,0 +1,61 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/4/18
+ * Time: 17:16
+ */
+
+namespace app\index\model;
+use think\Model;
+class recuitawardmodel extends Model{
+    protected $table='t_recuitaward';
+
+    public function insinfo($arr){
+        $this->allowField(true)->isUpdate(false)->setAttr('id',null)->save($arr);
+        return $this->id;
+    }
+
+    public function updateinfobyid($id,$arr){
+        $where_arr['id']=$id;
+        $this->allowField(true)->where($where_arr)->update($arr);
+
+    }
+
+    public function selinfobywid($uid,$strmoth){
+        $where_arr['recuituser']=$uid;
+        $where_arr['summonth']=$strmoth;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+
+    }
+    /*
+     * 20200418
+     * 获取某用户的所有记录,并按时间降序排列
+     * todo 压力大后改为只返回结果值
+     */
+    public function selinfolistbywid($uid,$sort){
+        $where_arr['recuituser']=$uid;
+        if ($sort==0){
+            $rlist=$this->where($where_arr)->order('sumdate','asc')->select();
+        }else{
+            $rlist=$this->where($where_arr)->order('sumdate','desc')->select();
+        }
+        return $rlist;
+    }
+
+    /*
+     * 20200419
+     *获取指定日期的
+     */
+
+    public function selinfobyiddate($uid,$strdate){
+        $where_arr['recuituser']=$uid;
+        $where_arr['sumdate']=$strdate;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+
+    }
+
+
+}

+ 71 - 0
application/index/model/recuitmodel.php

@@ -0,0 +1,71 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/4/15
+ * Time: 15:52
+ */
+
+namespace app\index\model;
+use think\Model;
+
+class recuitmodel extends Model{
+    protected $table='t_recuit';
+
+    public function insinfo($arr){
+        $this->allowField(true)->save($arr);
+        return $this->id;
+
+    }
+
+    public function selulistbyrecuit($recuit){
+        $where_arr['recuituserid']=$recuit;
+        $rlist=$this->where($where_arr)->order('indate','asc')->select();
+        return $rlist;
+    }
+
+    /*
+     * 20200416
+     * 获取所有的数据
+     */
+    public function selrlist(){
+        $strsql="select *";
+        $strsql=$strsql." from t_recuit";
+        $rlist=$this->query($strsql);
+        return $rlist;
+    }
+
+    /*
+     * 20200421
+     */
+    public function selruserlist(){
+        $strsql="select DISTINCT recuituserid ";
+        $strsql=$strsql." from t_recuit";
+        $ulist=$this->query($strsql);
+        $ulist=collection($ulist)->toArray();
+        return $ulist;
+
+    }
+
+    /*
+     * 20200503
+     * 判断某人是否是被推荐的,以确认是否计划招人成本
+     */
+    public function selrecuitinfobyuserid($uid){
+        $where_arr['userid']=$uid;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+    }
+
+    /*
+     * 20200817
+     * 获取所有的被推荐了
+     */
+    public function seluserlist(){
+        $strsql="select userid ";
+        $strsql=$strsql." from t_recuit";
+        $ulist=$this->query($strsql);
+        $ulist=collection($ulist)->toArray();
+        return $ulist;
+    }
+}

+ 45 - 0
application/index/model/transfermodel.php

@@ -0,0 +1,45 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2021/2/28
+ * Time: 14:58
+ */
+namespace app\index\model;
+use think\Model;
+class transfermodel extends Model {
+    protected $table = 't_waittransfer';
+
+    /*
+     * 20210228
+     * 插入记录
+     */
+    public function insinfo($arr) {
+        $this->allowField(true)->isUpdate(false)->setAttr('id', null)->save($arr);
+        return $this->id;
+    }
+
+    /*
+     * 20210303
+     * 获取未处理的
+     */
+    public function selinfolistbyopr($page, $size) {
+        $where_arr['isopr'] = 0;
+        $index = ($page - 1) * $size;
+        $rlist = $this->where($where_arr)->limit($index, $page)->select();
+        $rlist = collection($rlist)->toArray();
+        return $rlist;
+    }
+
+    /*
+     * 20210303
+     * 修改处理状态
+     */
+    public function updoprbywid($wid, $prjid) {
+        $where_arr['isopr'] = 0;
+        $where_arr['wid'] = $wid;
+        $update_arr['isopr'] = 1;
+        $update_arr['transferprj'] = $prjid;
+        $this->where($where_arr)->update($update_arr);
+    }
+}

+ 55 - 0
application/index/model/uplogmodel.php

@@ -0,0 +1,55 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2021/5/6
+ * Time: 20:34
+ */
+namespace app\index\model;
+use think\Model;
+class uplogmodel extends Model{
+    protected $table='t_uplog';
+
+    /*
+     * 20210506
+     * 插入记录
+     */
+    public function insinfo($arr){
+        $this->allowField(true)->isUpdate(false)->setAttr('id',null)->save($arr);
+        return $this->id;
+    }
+
+    /*
+     * 20210506
+     */
+    public function selinfobyfname($fname){
+        $where_arr['upfilename']=$fname;
+        $rinfo=$this->where($where_arr)->find();
+        return $rinfo;
+
+    }
+
+    /*
+     * 20210509
+     * 获取所有的导入记录
+     */
+    public function selalllist(){
+        $rlist=$this->order('id','desc')->select();
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+    }
+
+
+    /*
+     * 20230214
+     *
+     */
+    public function sellistbycid($cid){
+        $where_arr['companyid']=$cid;
+        $rlist=$this->where($where_arr)->order('id','desc')->select();
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+    }
+
+
+}

+ 41 - 0
application/index/model/userlocationhismodel.php

@@ -0,0 +1,41 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2021/5/10
+ * Time: 10:06
+ */
+namespace app\index\model;
+use think\Model;
+class userlocationhismodel extends Model{
+    protected $table='t_userlocation_history';
+
+    public function sellistbyopenid($openid){
+        $where_arr['openid']=$openid;
+        $uloction=$this->where($where_arr)->order('id','desc')->select();
+
+        return $uloction;
+    }
+
+
+    /*
+     * 20210510
+     *
+     */
+    public function insinfo($arr){
+        $this->setAttr('id',null)->isUpdate(false)->allowField(true)->save($arr);
+        return $this->id;
+    }
+
+    /*
+     * 20210510
+     */
+    public function sellistbywid($wid){
+        $where_arr['wid']=$wid;
+        $uloction=$this->where($where_arr)->order('id','desc')->select();
+
+        return $uloction;
+    }
+
+
+}

+ 95 - 0
application/index/model/userlocationmodel.php

@@ -0,0 +1,95 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2021/4/30
+ * Time: 10:55
+ */
+namespace app\index\model;
+use think\Model;
+class userlocationmodel extends Model{
+    protected $table='t_userlocation';
+
+    public function selinfobyopenid($openid){
+        $where_arr['openid']=$openid;
+        $uloction=$this->where($where_arr)->find();
+
+        return $uloction;
+    }
+
+
+    /*
+     * 20210424
+     *
+     */
+    public function insinfo($arr){
+        $this->setAttr('id',null)->isUpdate(false)->allowField(true)->save($arr);
+        return $this->id;
+    }
+
+
+    /*
+     * 20210502
+     * 获取所有数据
+     */
+    public function sellist(){
+        $list=$this->all();
+        $list=collection($list)->toArray();
+        return $list;
+
+    }
+
+    /*
+     * 20210510
+     */
+    public function updinfobyid($id,$updarr){
+        $where_arr['id']=$id;
+        $rec=$upd_arr=$this->where($where_arr)->update($updarr);
+        return $rec;
+    }
+
+    /*
+     * 20210511
+     * 获取用户的按省级的统计数据
+     */
+    public function selgroupby_p(){
+        $strsql="select province,count(*) as workcount from t_userlocation group by province";
+        $rlist=$this->query($strsql);
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+    }
+
+    /*
+ * 20210511
+ * 获取用户的按市级的统计数据
+ */
+    public function selgroupby_c(){
+        $strsql="select city,count(*) as workcount from t_userlocation group by city";
+        $rlist=$this->query($strsql);
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+    }
+
+    /*
+     * 20210515
+     * 按项目统计用户数据
+     */
+    public function selgroupbyprj(){
+        $strsql="select prjid,count(*) as workcount from t_userlocation group by prjid";
+        $rlist=$this->query($strsql);
+        $rlist=collection($rlist)->toArray();
+        return $rlist;
+    }
+
+    /*
+     * 20230215
+     */
+    public function selgroupcountbypid($pid){
+        $strsql="select count(*) as workcount from t_userlocation where prjid=".$pid;
+        $rec=$this->query($strsql);
+        $rlist=array();
+        $rlist['prjid']=$pid;
+        $rlist['workcount']=$rec[0]['workcount'];
+        return $rlist;
+    }
+}

+ 22 - 0
application/index/model/webusermodel.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/22
+ * Time: 21:08
+ */
+namespace app\index\model;
+use think\Model;
+
+class webusermodel extends Model{
+    protected $table='t_webuser';
+
+    public function getlogininfo($lname,$lpwd){
+        $where_arr['userpwd']=$lpwd;
+        $where_arr['username']=$lname;
+        $uinfo=$this->where($where_arr)->find();
+        //var_dump($uinfo);
+        return $uinfo;
+
+    }
+}

+ 61 - 0
application/index/model/wheadmodel.php

@@ -0,0 +1,61 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/1/13
+ * Time: 0:25
+ */
+namespace app\index\model;
+use think\Model;
+
+class wheadmodel extends Model{
+    protected $table='t_gheader';
+
+    public function getgidbywid($wid){
+        $arr['checkstatus']=1;
+        $arr['gwid']=$wid;
+        $recordlist=$this->where($arr)->find();
+        if ($recordlist){
+            return $recordlist['gid'];
+        }else{
+            return 0;
+        }
+    }
+
+
+
+    public function addnewghead($arr){
+        $res=$this->save($arr);
+        return $res;
+    }
+
+
+    /*
+     * 取消此人的班组
+     */
+    public function changeghead($wid){
+        $where_arr['gwid']=$wid;
+        $update_arr['checkstatus']=0;
+        $res=$this->where($where_arr)->update($update_arr);
+        return $res;
+    }
+
+    /*
+     * 20200320
+     * 设置了新班组长时,将原班组长的权限取消
+     */
+    public function updategheadbygid($gid){
+        $where_arr['gid']=$gid;
+        $where_arr['checkstatus']=1;
+        $update_arr['checkstatus']=0;
+        $res=$this->where($where_arr)->update($update_arr);
+        return $res;
+    }
+
+    public function getwidbygid($gid){
+        $where_arr['gid']=$gid;
+        $where_arr['checkstatus']=1;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+    }
+}

+ 47 - 0
application/index/model/workerindaymodel.php

@@ -0,0 +1,47 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2023/3/2
+ * Time: 18:09
+ */
+namespace app\index\model;
+use think\Model;
+class workerindaymodel extends Model{
+    protected $table='t_workerdayinenclose';
+
+    public function insinfo($arr){
+        $res=$this->allowField(true)->save($arr);
+        return $this->id;
+    }
+
+    public function selinfobywid($wid,$recdate,$pid){
+        $where_arr['wid']=$wid;
+        $where_arr['peid']=$pid;
+        $where_arr['checkdate']=$recdate;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+    }
+
+
+    public function updateinstatus($wid,$recdate,$pid,$updatearr){
+        $where_arr['wid']=$wid;
+        $where_arr['peid']=$pid;
+        $where_arr['checkdate']=$recdate;
+        $where_arr['nowstatus']=2;
+        $rec=$this->where($where_arr)->update($updatearr);
+        return $rec;
+    }
+
+    /*
+     * 数据层只处理操作,业务由上一层处理
+     */
+    public function updateoutstatus($wid,$recdate,$pid,$updatearr){
+        $where_arr['wid']=$wid;
+        $where_arr['peid']=$pid;
+        $where_arr['checkdate']=$recdate;
+        $where_arr['nowstatus']=1;
+        $rec=$this->where($where_arr)->update($updatearr);
+        return $rec;
+    }
+}

+ 29 - 0
application/index/model/workersignmodel.php

@@ -0,0 +1,29 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2025/2/9
+ * Time: 10:21
+ */
+namespace app\index\model;
+use think\Model;
+class workersignmodel extends Model{
+    protected $table='t_workerdayinenclose';
+
+    public function insinfo($arr){
+        $res=$this->allowField(true)->save($arr);
+        return $this->id;
+    }
+
+    /*
+     * 20250209
+     * 获取某人某一天的打卡记录
+     */
+    public function selinfobywiddate($wid,$recdate){
+        $where_arr['wid']=$wid;
+        $where_arr['signdate']=$recdate;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+    }
+
+}

+ 37 - 0
application/index/model/yearsettlemodel.php

@@ -0,0 +1,37 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: sicilon_IT
+ * Date: 2020/3/2
+ * Time: 11:05
+ */
+
+namespace app\index\model;
+use think\Model;
+
+class yearsettlemodel extends Model{
+    protected $table='t_yearsettle';
+
+    /*
+     * 20200302
+     * steelxu
+     * 按身份证查询
+     */
+    public function selinfobysfzid($year,$sfzid){
+        $where_arr['workyear']=$year;
+        $where_arr['sfzid']=$sfzid;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+    }
+    /*
+     * 20200302
+     * steelxu
+     * 按银行卡年份查询
+     */
+    public function selinfobycardno($year,$cardno){
+        $where_arr['workyear']=$year;
+        $where_arr['cardno']=$cardno;
+        $rec=$this->where($where_arr)->find();
+        return $rec;
+    }
+}

+ 21 - 0
application/route.php

@@ -0,0 +1,21 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+return [
+    '__pattern__' => [
+        'name' => '\w+',
+    ],
+    '[hello]'     => [
+        ':id'   => ['index/hello', ['method' => 'get'], ['id' => '\d+']],
+        ':name' => ['index/hello', ['method' => 'post']],
+    ],
+
+];

+ 28 - 0
application/tags.php

@@ -0,0 +1,28 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+// 应用行为扩展定义文件
+return [
+    // 应用初始化
+    'app_init'     => [],
+    // 应用开始
+    'app_begin'    => [],
+    // 模块初始化
+    'module_init'  => [],
+    // 操作开始执行
+    'action_begin' => [],
+    // 视图内容过滤
+    'view_filter'  => [],
+    // 日志写入
+    'log_write'    => [],
+    // 应用结束
+    'app_end'      => [],
+];

+ 25 - 0
build.php

@@ -0,0 +1,25 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+
+return [
+    // 生成应用公共文件
+    '__file__' => ['common.php', 'config.php', 'database.php'],
+
+    // 定义demo模块的自动生成 (按照实际定义的文件名生成)
+    'demo'     => [
+        '__file__'   => ['common.php'],
+        '__dir__'    => ['behavior', 'controller', 'model', 'view'],
+        'controller' => ['Index', 'Test', 'UserType'],
+        'model'      => ['User', 'UserType'],
+        'view'       => ['index/index'],
+    ],
+    // 其他更多的模块定义
+];

+ 39 - 0
composer.json

@@ -0,0 +1,39 @@
+{
+    "name": "topthink/think",
+    "description": "the new thinkphp framework",
+    "type": "project",
+    "keywords": [
+        "framework",
+        "thinkphp",
+        "ORM"
+    ],
+    "homepage": "http://thinkphp.cn/",
+    "license": "Apache-2.0",
+    "authors": [
+        {
+            "name": "liu21st",
+            "email": "liu21st@gmail.com"
+        }
+    ],
+    "require": {
+        "php": ">=5.4.0",
+        "topthink/framework": "5.0.*",
+        "topthink/think-captcha": "1.*",
+        "topthink/think-mongo": "1.*",
+        "topthink/think-image": "1.*",
+        "topthink/think-queue": "1.*",
+        "topthink/think-migration": "1.*",
+        "topthink/think-oracle": "1.*"
+    },
+    "autoload": {
+        "psr-4": {
+            "app\\": "application"
+        }
+    },
+    "extra": {
+        "think-path": "thinkphp"
+    },
+    "config": {
+        "preferred-install": "dist"
+    }
+}

+ 2 - 0
extend/.gitignore

@@ -0,0 +1,2 @@
+*
+!.gitignore

+ 0 - 0
public/.htaccess


BIN
public/Uploads/20210506/46ff549e83095fe6f1b890d729ec4291.xlsx


BIN
public/Uploads/20210506/51183b6ed83dfa3e8655aaf2f282355b.xlsx


BIN
public/Uploads/20210506/eef3ef3579abee3eb6b88b7406281ef6.xlsx


BIN
public/Uploads/20210507/7780fbdaf329b2a43f030dec81f75309.xlsx


BIN
public/Uploads/20210507/a181f0077213f75e205b03d55c3d9b04.xlsx


BIN
public/Uploads/20210507/d8a5e2178f09f8916d4a705e1416e3ad.xlsx


BIN
public/Uploads/20210509/3bb0896c52822c45b7d146c1a53f8fe9.xlsx


BIN
public/Uploads/20210509/6228dc22d847a1ba05aade08efd91cf2.xlsx


BIN
public/Uploads/20210509/b1bb9da4f821623c0dfba3e6031be52b.xlsx


BIN
public/Uploads/20211030/555c2156f2c9fb449f105793e27330b1.xlsx


BIN
public/Uploads/20211030/af7f88db29b2135a0dfb959743abc674.xlsx


BIN
public/Uploads/20211030/cf9ae623a341baac8abfb1178cdc4a5f.xlsx


BIN
public/Uploads/20211102/fa31afb9924264515552c6658e2b65e0.xlsx


BIN
public/Uploads/20211124/ba9311bd0c70f3d838964b2ae16215b4.xlsx


BIN
public/Uploads/20211124/f9c082eb66a93767a645fd2b8200907d.xlsx


BIN
public/Uploads/20211222/5c65f1238974e7d3057deab9106fbf06.xlsx


BIN
public/Uploads/20220127/016755c42f11fcdafe790944fad1e8e9.xlsx


BIN
public/Uploads/20220127/835934b9f2ff1571300d75d9571aa244.xlsx


BIN
public/Uploads/20220128/316b0648010766498b6d7eaa8c6ae2e1.xlsx


BIN
public/Uploads/20220128/69d72912451bdd616a01d46d39277fbd.xlsx


BIN
public/Uploads/20220209/464625624dd1721879259020aa52d082.xlsx


BIN
public/Uploads/20220209/e311748a5bd2dec2ea8870d113ca95ef.xlsx


BIN
public/Uploads/20220211/7e2215a5dcbc335557295b3c197c95d6.xlsx


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.