| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502 |
- <?php
- namespace app\api\controller;
- use app\common\controller\Api;
- use \think\Request;
- use \think\Db;
- /**
- * 员工资料接口
- */
- class Staff extends Api
- {
- protected $noNeedLogin = ['*'];
- protected $noNeedRight = ['*'];
- /**
- * 首页
- */
- public function index()
- {
- $this->success('员工资料接口');
- }
- /**
- * 获取部门列表
- */
- public function getDepartment(){
- if (Request::instance()->isGet() == false){
- $this->error('非法请求');
- }
- // 1. 查询所有有效人员(按部门+工序分组)
- $list = db('人员_基本资料')
- ->field('dept_name as 所在部门, big_process as 生产工序, COUNT(*) AS count')
- ->whereNull('mod_rq')
- ->group('所在部门, 生产工序')
- ->order('id asc')
- ->select();
- // 2. 构建 部门 → 工序 二级结构
- $tree = [];
- foreach ($list as $item) {
- $dept = $item['所在部门'];
- $process = $item['生产工序'];
- $count = $item['count'];
- // 初始化部门
- if (!isset($tree[$dept])) {
- $tree[$dept] = [
- 'label' => $dept,
- 'count' => 0,
- 'children' => []
- ];
- }
- // 总数量累加
- $tree[$dept]['count'] += $count;
- // 有生产工序 → 加入二级
- if (!empty($process)) {
- $tree[$dept]['children'][] = [
- 'label' => $process,
- 'count' => $count
- ];
- }
- }
- $result = array_values($tree);
- $this->success('获取部门数据', $result);
- }
- /**
- * 获取员工列表信息
- */
- public function getStaffList(){
- if (Request::instance()->isGet() == false){
- $this->error('非法请求');
- }
- $params = Request::instance()->param();
- $where = [];
- if (!empty($params['search'])){
- $where['staff_no|staff_name'] = array('like','%'.$params['search'].'%');
- }
- if (!empty($params['department_code'])){
- $where['big_process|dept_name'] = $params['department_code'];
- }
- $limit = $params['limit'];
- if (empty($limit)){
- $limit = 15;
- }
- $pages = $params['page'];
- if (empty($pages)){
- $pages = 1;
- }
- $list = db('人员_基本资料')
- ->field('
- id,
- staff_no as 员工编号,
- staff_name as 员工姓名,
- gender as 性别,
- big_process as 生产工序,
- dept_name as 所在部门,
- status as 状态,
- sys_rq as 创建日期,
- sys_id as 创建人员
- ')
- ->where($where)->page($pages)->limit($limit)->order('id desc')->whereNull('mod_rq')->select();
- $total = db('人员_基本资料')->where($where)->whereNull('mod_rq')->count();
- $data['list'] = $list;
- $data['total'] = $total;
- $this->success('获取员工列表信息',$data);
- }
- /**
- * 获取员工资料
- * @ApiMethod GET
- * @params string code
- */
- public function getStaffInfo(){
- if (Request::instance()->isGet() == false){
- $this->error('非法请求');
- }
- $params = Request::instance()->param();
- $where = [];
- if (isset($params['id'])){
- $where['id'] = $params['id'];
- }
- // 1. 查询人员基础信息
- $staffList = db('人员_基本资料')
- ->field('
- id,
- staff_no as 员工编号,
- staff_name as 员工姓名,
- gender as 性别,
- big_process as 生产工序,
- dept_name as 所在部门,
- status as 状态,
- sys_rq as 创建日期,
- sys_id as 创建人员
- ')
- ->where($where)
- ->whereNull('mod_rq')
- ->select();
- $this->success('获取员工资料', $staffList);
- }
- /**
- * 新增员工资料
- */
- public function PostStaffAdd(){
- if (Request::instance()->isPost() == false){
- $this->error('非法请求');
- }
- $params = Request::instance()->param();
- $staff_no = $params['员工编号'] ?? '';
- if(empty($staff_no)){
- $this->error('员工编号不能为空');
- }
- // 查询数据库是否已存在
- $Find_list = Db::name('人员_基本资料')->where('staff_no', $staff_no)->find();
- if($Find_list){
- $this->error('员工编号已存在');
- }
- $data = [];
- $data['staff_no'] = $params['员工编号'];
- $data['staff_name'] = $params['员工姓名'];
- $data['gender'] = $params['性别'];
- $data['big_process'] = $params['生产工序'];
- $data['dept_name'] = '生产部';
- $data['status'] = 1;
- $data['sys_rq'] = date('Y-m-d H:i:s');
- $data['sys_id'] = $params['sys_id'];
- $res = Db::name('人员_基本资料')->insert($data);
- if ($res !== false){
- $this->success('新增成功');
- }else{
- $this->error('新增失败');
- }
- }
- /**
- * 修改员工资料
- * @ApiMethod POST
- *
- */
- public function PostStaffEdit(){
- if (!Request::instance()->isPost()){
- $this->error('非法请求');
- }
- $params = Request::instance()->param();
- //必传参数校验
- if (empty($params['id'])){
- $this->error('参数不能为空');
- }
- if (empty($params['员工编号'])){
- $this->error('员工编号不能为空');
- }
- //查询员工是否存在(未删除)
- $info = db('人员_基本资料')
- ->where('id', $params['id'])
- ->whereNull('mod_rq')
- ->find();
- if (!$info){
- $this->error('员工不存在');
- }
- //员工编号重复判断(排除自身)
- $exist = db('人员_基本资料')
- ->where('staff_no', $params['员工编号'])
- ->where('id', '<>', $params['id']) // 排除自己
- ->whereNull('mod_rq')
- ->find();
- if ($exist) {
- $this->error('员工编号已存在');
- }
- //修改数据
- $data = [];
- $data['staff_no'] = $params['员工编号'];
- $data['staff_name'] = $params['员工姓名'];
- $data['gender'] = $params['性别'];
- $data['big_process'] = $params['生产工序'];
- $data['dept_name'] = '生产部';
- $data['updatetime'] = date('Y-m-d H:i:s');
- $data['sys_id'] = $params['sys_id'];
- $res = db('人员_基本资料')
- ->where('id', $params['id'])
- ->update($data);
- if ($res !== false){
- $this->success('更新成功');
- }else{
- $this->error('更新失败');
- }
- }
- /**
- * 删除员工资料
- */
- public function PostStaffDelete()
- {
- if (Request::instance()->isPost() == false){
- $this->error('非法请求');
- }
- $params = Request::instance()->param();
- if (empty($params['id'])){
- $this->error('参数不能为空');
- }
- $staffCode = $params['id'];
- $sql = db('人员_基本资料')->where('id',$staffCode)->fetchSql(true)->update(['mod_rq'=>date('Y-m-d H:i:s')]);
- $res = Db::query($sql);
- if ($res !== false){
- $this->success('删除成功');
- }else{
- $this->error('删除失败');
- }
- }
- /**
- * 获取小组
- */
- public function GetDeviceNameList(){
- if (!Request::instance()->isGet()){
- $this->error('非法请求');
- }
- // 定义需要过滤、不返回给前端的设备编组
- $filterGroups = [
- '自动裁床01组',
- '自动裁床02组',
- '模板机01组',
- '模板机02组',
- '上袖机01组',
- '上袖机02组',
- '裁床1',
- '裁床2',
- '模版机'
- ];
- $list = Db::name('设备_基本资料')
- ->field('UniqId,设备编组,生产工序,工序')
- ->where('设备名称', 1)
- ->whereNull('mod_rq')
- ->whereNotIn('设备编组', $filterGroups) // 过滤不想要的数据
- ->group('设备编组')
- ->order('工序,UniqId asc')
- ->select();
- $this->success('获取设备编组成功', $list);
- }
- /**
- * 获取小组及人员列表
- * 支持按工序/小组名称搜索,返回每个小组下的成员信息
- */
- public function GetTeamStaffList()
- {
- if (Request::instance()->isGet() == false){
- $this->error('非法请求');
- }
- $params = Request::instance()->param();
- $where = [];
- if (!empty($params['search'])){
- $where['b.staff_no|b.staff_name|a.team_name|b.big_process'] = array('like','%'.$params['search'].'%');
- }
- $list = Db::name('人员_小组资料')->alias('a')
- ->field('
- b.staff_no as 员工编号,
- b.staff_name as 员工姓名,
- a.*
- ')
- ->join('人员_基本资料 b', 'a.staff_no = b.staff_no')
- ->where($where)
- ->whereNull('a.mod_rq')
- ->whereNull('b.mod_rq')
- ->order('a.id asc')
- ->select();
- // 整理成"小组+成员"的树形结构
- $result = [];
- foreach ($list as $item) {
- $teamId = $item['team_id'];
- if (!isset($result[$teamId])) {
- $result[$teamId] = [
- '小组ID' => $teamId,
- '小组名称' => $item['team_name'],
- '生产工序' => $item['big_process'],
- 'staff_list' => []
- ];
- }
- // 添加成员信息
- $result[$teamId]['staff_list'][] = [
- 'id' => $item['id'],
- '员工编号' => $item['员工编号'],
- '员工姓名' => $item['员工姓名'],
- '小组名称' => $item['team_name'],
- '职位' => $item['position']
- ];
- }
- // 转为索引数组返回
- $data = array_values($result);
- $this->success('获取成功', $data);
- }
- /**
- * 新增小组人员
- */
- public function AddTeamStaff()
- {
- if (!Request::instance()->isPost()) {
- $this->error('非法请求');
- }
- $params = Request::instance()->param();
- // 1. 校验员工是否存在
- $staffInfo = Db::name('人员_基本资料')
- ->where('staff_no', $params['staff_no'])
- ->whereNull('mod_rq')
- ->find();
- if (!$staffInfo) {
- $this->error('员工不存在或已删除');
- }
- // 2. 校验该员工是否已在小组中
- $exist = Db::name('人员_小组资料')
- ->where('staff_no', $params['staff_no'])
- ->whereNull('mod_rq')
- ->find();
- if ($exist) {
- $this->error('该员工已在'.$exist['team_name'].'小组中');
- }
- // 3. 组装数据
- $data = [
- 'big_process' => $params['big_process'],
- 'team_id' => $params['team_id'],
- 'team_name' => $params['team_name'],
- 'staff_no' => $params['staff_no'],
- 'position' => $params['position'],
- 'status' => 1,
- 'sys_id' => $params['sys_id'],
- 'createtime' => date('Y-m-d H:i:s')
- ];
- $res = Db::name('人员_小组资料')->insert($data);
- if ($res) {
- $this->success('新增成功');
- } else {
- $this->error('新增失败');
- }
- }
- /**
- * 修改小组人员
- */
- public function EditTeamStaff()
- {
- if (!Request::instance()->isPost()) {
- $this->error('非法请求');
- }
- $params = Request::instance()->param();
- // 必传参数校验
- if (empty($params['id'])) {
- $this->error('参数不完整');
- }
- // 1. 校验该记录是否存在
- $info = Db::name('人员_小组资料')
- ->where('id', $params['id'])
- ->whereNull('mod_rq')
- ->find();
- if (!$info) {
- $this->error('记录不存在或已删除');
- }
- // 2. 如果修改了员工ID,校验新员工是否已在该小组中(排除自身)
- if (!empty($params['staff_id']) && $params['staff_id'] != $info['staff_id']) {
- $exist = Db::name('人员_小组资料')
- ->where('team_id', $params['team_id'] ?? $info['team_id'])
- ->where('staff_id', $params['staff_id'])
- ->where('id', '<>', $params['id'])
- ->whereNull('mod_rq')
- ->find();
- if ($exist) {
- $this->error('该员工已在此小组中');
- }
- }
- // 3. 组装更新数据
- $data = [];
- if (isset($params['big_process'])) $data['big_process'] = $params['big_process'];
- if (isset($params['team_id'])) $data['team_id'] = $params['team_id'];
- if (isset($params['team_name'])) $data['team_name'] = $params['team_name'];
- if (isset($params['position'])) $data['position'] = $params['position'];
- if (isset($params['staff_id'])) {
- $data['staff_id'] = $params['staff_id'];
- // 更新员工姓名
- $staffInfo = Db::name('人员_基本资料')->where('id', $params['staff_id'])->find();
- if ($staffInfo) {
- $data['staff_name'] = $staffInfo['staff_name'];
- }
- }
- if (isset($params['position'])) $data['position'] = $params['position'];
- $data['updatetime'] = date('Y-m-d H:i:s');
- $res = Db::name('人员_小组资料')
- ->where('id', $params['id'])
- ->update($data);
- if ($res !== false) {
- $this->success('小组更换成功');
- } else {
- $this->error('小组更换失败');
- }
- }
- /**
- * 删除小组人员
- */
- public function DelTeamStaff()
- {
- if (!Request::instance()->isPost()) {
- $this->error('非法请求');
- }
- $params = Request::instance()->param();
- $res = Db::name('人员_小组资料')
- ->where('id', $params['id'])
- ->update([
- 'mod_rq' => date('Y-m-d H:i:s')
- ]);
- if ($res !== false) {
- $this->success('删除成功');
- } else {
- $this->error('删除失败');
- }
- }
- }
|