where(array('pre_num' => array('neq', 0), 'is_complete' => 0, 'status'=>1))->field('type_id,type_name')->order('task_flow_id')->group('type_id')->select(); $this->success($data); } //获取操作工 工种-工序 public function opGetCraft() { $type_id = I('type_id'); $data = D('task_flow')->where(array('pre_num' => array('neq', 0), 'is_complete' => 0, 'type_id' => $type_id, 'status'=>1))->field('flow_craft_id,craft_name,type_id,craft_id')->order('task_flow_id')->group('craft_id')->select(); $this->success($data); } //获取操作工 工种-工序-产品 public function opGetProduct() { // $type_id = I('type_id'); $craft_id = I('craft_id'); $data = D('task_flow')->where(array('pre_num' => array('neq', 0), 'is_complete' => 0, 'craft_id'=>$craft_id, 'status'=>1))->field('product_id,product_name,product_desc,flow_craft_id')->order('task_flow_id')->group('product_id')->select(); $this->success($data); } //获取操作工 工种-工序-产品-任务 public function opGetTask() { $product_id = I('product_id'); $flow_craft_id = I('flow_craft_id'); $data = D('task_flow')->where(array('pre_num' => array('neq', 0), 'is_complete' => 0, 'product_id' => $product_id, 'flow_craft_id' => $flow_craft_id, 'status'=>1))->field('task_flow_id, task_name, task_time, task_id')->order('task_flow_id')->select(); foreach ($data as $k => $v) { $data[$k]['task_time'] = date('Y.m.d', $data[$k]['task_time']); $task_data = D('task')->find($v['task_id']); $data[$k]['sub_name'] = ''; if($task_data['is_sub']==1){ $data[$k]['sub_name'] = $data[$k]['task_name']; $data[$k]['task_name'] = D('task')->find($task_data['task_id_pro'])['task_name']; } } $this->success($data); } //操作工添加 计划数 同时增加子任务 public function opAddSubTask() { $subtask_plan_num = I('subtask_plan_num'); $task_flow_id = I('task_flow_id'); $task_flow_data = D('task_flow')->find($task_flow_id); $origin_pre_num = $task_flow_data['pre_num']; if ($subtask_plan_num > $task_flow_data['pre_num']) { $this->error('计划数量超标,最多' . $task_flow_data['pre_num'] . '件'); } if($subtask_plan_num < 1){ $this->error('计划数量不能小于1件'); } $is_sub = I('is_sub'); if($is_sub != 'false'){ $sub_name = I('sub_name'); if(!$sub_name){ $this->error('开启子任务,子任务单号不能为空'); } $task_id = D('task_flow')->where(array('task_flow_id' => $task_flow_id))->find()['task_id']; $order_id = D('task_flow')->where(array('task_flow_id' => $task_flow_id))->find()['order_id']; $task_data0 = D('task')->find($task_id); unset($task_data0['task_id']); $task_data0['is_sub'] = 1; $task_data0['task_product_num'] = $subtask_plan_num; $task_data0['task_id_pro'] = $task_id; $task_data0['task_who_add'] = $this->user_id; $addTime = time(); $task_data0['task_time_add'] = $addTime; $task_data0['task_name'] = $sub_name; $task_data0['sub_num'] = 0; $new_task_id = D('task')->add($task_data0); $task_flow_data0 = D('task_flow')->where(array('task_id'=>$task_id))->order('order_id')->select(); foreach ($task_flow_data0 as $k=>$v){ $new_flow_data = $v; unset($new_flow_data['task_flow_id']); $new_flow_data['task_id'] = $new_task_id; $new_flow_data['task_name'] = $sub_name; $new_flow_data['task_time'] = $addTime; D('task_flow')->add($new_flow_data); } D('task_flow')->where(array('task_flow_id' => $task_flow_id))->save(array('pre_num'=>$origin_pre_num-$subtask_plan_num)); D('task')->where(array('task_id'=>$task_id))->save(array('sub_num'=>$task_data0['sub_num'] + $subtask_plan_num)); D('task_flow')->where(array('task_id' => $new_task_id, 'order_id'=>$order_id))->save(array('pre_num'=>$subtask_plan_num,'pass_num'=>0,'is_complete'=>0)); D('task_flow')->where(array('task_id' => $new_task_id, 'order_id'=>array('lt',$order_id)))->save(array('pre_num'=>0,'pass_num'=>$subtask_plan_num,'is_complete'=>1)); D('task_flow')->where(array('task_id' => $new_task_id, 'order_id'=>array('gt',$order_id)))->save(array('pre_num'=>0,'pass_num'=>0,'is_complete'=>0)); $task_flow_id = D('task_flow')->where(array('task_id' => $new_task_id, 'order_id'=>$order_id))->find()['task_flow_id']; $task_flow_data = D('task_flow')->find($task_flow_id); } $subtask_time_add = time(); $subtask_operator_id = $this->user_id; $operator_name = D('user')->find($this->user_id)['user_name']; $task_id = D('task_flow')->where(array('task_flow_id' => $task_flow_id))->find()['task_id']; $task_sub_id = D('task_sub')->add( array( 'task_id' => $task_id, 'task_flow_id' => $task_flow_id, 'subtask_time_add' => $subtask_time_add, 'subtask_plan_num' => $subtask_plan_num, 'subtask_operator_id' => $subtask_operator_id, 'operator_name' => $operator_name, 'craft_id' => $task_flow_data['craft_id'], 'type_id' => $task_flow_data['type_id'], 'type_name' => $task_flow_data['type_name'], 'flow_craft_id' => $task_flow_data['flow_craft_id'], 'craft_name' => $task_flow_data['craft_name'], )); if (!$task_sub_id) { $this->error('计划失败,请联系管理员!'); } //在task_flow中总数量 减去 计划数量 if($is_sub == 'false') { $task_flow_data['pre_num'] = $task_flow_data['pre_num'] - $subtask_plan_num; D('task_flow')->save($task_flow_data); } $this->success($task_sub_id); } //操作工添加 完成数 结算task_flow 多退少补 public function opCompleteSubTask() { $task_sub_id = I('task_sub_id'); $task_sub_data = D('task_sub')->find($task_sub_id); $subtask_complete_num = I('subtask_complete_num'); if ($subtask_complete_num > $task_sub_data['subtask_plan_num']) { $this->error('完成数量不能大于计划数量!'); } else { if ($task_sub_data['subtask_complete_num'] == 0) { $diff_num = $task_sub_data['subtask_plan_num'] - $subtask_complete_num; $save['subtask_complete_num'] = $subtask_complete_num; $save['subtask_id'] = $task_sub_id; D('task_sub')->save($save); $task_flow_data = D('task_flow')->find($task_sub_data['task_flow_id']); $task_flow_save['pre_num'] = $task_flow_data['pre_num'] + $diff_num; $task_flow_save['task_flow_id'] = $task_sub_data['task_flow_id']; D('task_flow')->save($task_flow_save); } else { $diff_num = $task_sub_data['subtask_complete_num'] - $subtask_complete_num; $save['subtask_complete_num'] = $subtask_complete_num; $save['subtask_id'] = $task_sub_id; D('task_sub')->save($save); $task_flow_data = D('task_flow')->find($task_sub_data['task_flow_id']); $task_flow_save['pre_num'] = $task_flow_data['pre_num'] + $diff_num; $task_flow_save['task_flow_id'] = $task_sub_data['task_flow_id']; D('task_flow')->save($task_flow_save); } $this->success('本次子任务完成!'); } } //获取子任务相关信息 public function getSubTaskInfo() { $subtask_id = I('subtask_id'); $subtask_data = D('task_sub')->find($subtask_id); $task_flow_data = D('task_flow')->find($subtask_data['task_flow_id']); $task_flow_data['product_type'] = D('product')->find($task_flow_data['product_id'])['product_type']; $param_data = D('craft_param')->where(array('flow_craft_id' => $task_flow_data['flow_craft_id']))->order('param_id')->select(); $task_flow_data['task_time'] = date('Y年m月d日', $task_flow_data['task_time']); foreach ($param_data as $k => $v) { $param_data[$k]['param_diff_up'] = floatval($param_data[$k]['param_diff_up']); $param_data[$k]['param_diff_down'] = floatval($param_data[$k]['param_diff_down']); $param_data[$k]['param_base'] = floatval($param_data[$k]['param_base']); } $firstAllData = D('task_sub_record')->where(array('record_type' => 0, 'subtask_id' => $subtask_id, 'user_id' => $this->user_id))->order('order_id desc')->select(); $first = array(); if ($firstAllData) { $order_id_arr = array(); foreach ($firstAllData as $k0 => $v0) { $order_id_arr[] = $v0['order_id']; } $firstData = D('task_sub_record')->where(array('record_type' => 0, 'subtask_id' => $subtask_id, 'order_id' => array('in', $order_id_arr)))->select(); foreach ($firstData as $k => $v) { $firstData[$k]['record_data'] = floatval($firstData[$k]['record_data']); $firstData[$k]['record_data1'] = floatval($firstData[$k]['record_data1']); $firstData[$k]['record_data2'] = floatval($firstData[$k]['record_data2']); $firstData[$k]['record_data3'] = floatval($firstData[$k]['record_data3']); $firstData[$k]['record_data4'] = floatval($firstData[$k]['record_data4']); } foreach ($firstData as $k => $v) { $first[$v['order_id']][$v['param_id']] = array(array($v['record_data'], $v['record_data1'], $v['record_data2'], $v['record_data3'], $v['record_data4']), $v['is_pass'], $v['record_id']); $first[$v['order_id']]['time'] = $v['record_time']; } } $lastData = D('task_sub_record')->where(array('record_type' => 2, 'subtask_id' => $subtask_id, 'user_id' => $this->user_id))->select(); foreach ($lastData as $k => $v) { $lastData[$k]['record_data'] = floatval($v['record_data']); $lastData[$k]['record_data1'] = floatval($v['record_data1']); $lastData[$k]['record_data2'] = floatval($v['record_data2']); $lastData[$k]['record_data3'] = floatval($v['record_data3']); $lastData[$k]['record_data4'] = floatval($v['record_data4']); } $last = array(); if ($lastData) { foreach ($lastData as $k => $v) { $last[$v['param_id']] = array(array($v['record_data'], $v['record_data1'], $v['record_data2'], $v['record_data3'], $v['record_data4']), $v['is_pass'], $v['record_id']); $last['time'] = $v['record_time']; } } $check = array(); $checkAllData = D('task_sub_record')->where(array('record_type' => 1, 'subtask_id' => $subtask_id, 'user_id' => $this->user_id))->order('order_id desc')->select(); if ($checkAllData) { $order_id_arr = array(); foreach ($checkAllData as $k0 => $v0) { $order_id_arr[] = $v0['order_id']; } $checkData = D('task_sub_record')->where(array('record_type' => 1, 'subtask_id' => $subtask_id, 'user_id' => $this->user_id, 'order_id' => array('in', $order_id_arr)))->select(); foreach ($checkData as $k => $v) { $checkData[$k]['record_data'] = floatval($checkData[$k]['record_data']); $checkData[$k]['record_data1'] = floatval($checkData[$k]['record_data1']); $checkData[$k]['record_data2'] = floatval($checkData[$k]['record_data2']); $checkData[$k]['record_data3'] = floatval($checkData[$k]['record_data3']); $checkData[$k]['record_data4'] = floatval($checkData[$k]['record_data4']); } foreach ($checkData as $k => $v) { $check[$v['order_id']][$v['param_id']] = array(array($v['record_data'], $v['record_data1'], $v['record_data2'], $v['record_data3'], $v['record_data4']), $v['is_pass'], $v['record_id']); $check[$v['order_id']]['time'] = $v['record_time']; } } $data = array(); $data['task'] = $subtask_data; $data['flow'] = $task_flow_data; $data['param'] = $param_data; $data['first'] = $first; $data['last'] = $last; $data['check'] = $check; $this->success($data); } //获取子任务相关信息 public function getSubTaskInfoOther() { $subtask_id = I('subtask_id'); $subtask_data = D('task_sub')->find($subtask_id); $where = array(); if ($subtask_data['subtask_qc_id']) { $where['user_id'] = $subtask_data['subtask_qc_id']; } $task_flow_data = D('task_flow')->find($subtask_data['task_flow_id']); $param_data = D('craft_param')->where(array('flow_craft_id' => $task_flow_data['flow_craft_id']))->order('param_id')->select(); $task_flow_data['task_time'] = date('Y年m月d日', $task_flow_data['task_time']); foreach ($param_data as $k => $v) { $param_data[$k]['param_diff_up'] = floatval($param_data[$k]['param_diff_up']); $param_data[$k]['param_diff_down'] = floatval($param_data[$k]['param_diff_down']); $param_data[$k]['param_base'] = floatval($param_data[$k]['param_base']); } $firstAllData = D('task_sub_record')->where(array('record_type' => 0, 'subtask_id' => $subtask_id))->where($where)->order('order_id desc')->select(); $first = array(); if ($firstAllData) { $order_id_arr = array(); foreach ($firstAllData as $k0 => $v0) { $order_id_arr[] = $v0['order_id']; } $firstData = D('task_sub_record')->where(array('record_type' => 0, 'subtask_id' => $subtask_id, 'order_id' => array('in', $order_id_arr)))->where($where)->select(); foreach ($firstData as $k => $v) { $firstData[$k]['record_data'] = floatval($firstData[$k]['record_data']); $firstData[$k]['record_data1'] = floatval($firstData[$k]['record_data1']); $firstData[$k]['record_data2'] = floatval($firstData[$k]['record_data2']); $firstData[$k]['record_data3'] = floatval($firstData[$k]['record_data3']); $firstData[$k]['record_data4'] = floatval($firstData[$k]['record_data4']); } foreach ($firstData as $k => $v) { $first[$v['order_id']][$v['param_id']] = array(array($v['record_data'], $v['record_data1'], $v['record_data2'], $v['record_data3'], $v['record_data4']), $v['is_pass'], $v['record_id']); $first[$v['order_id']]['time'] = $v['record_time']; } } $lastData = D('task_sub_record')->where(array('record_type' => 2, 'subtask_id' => $subtask_id))->where($where)->select(); foreach ($lastData as $k => $v) { $lastData[$k]['record_data'] = floatval($lastData[$k]['record_data']); $lastData[$k]['record_data1'] = floatval($v['record_data1']); $lastData[$k]['record_data2'] = floatval($v['record_data2']); $lastData[$k]['record_data3'] = floatval($v['record_data3']); $lastData[$k]['record_data4'] = floatval($v['record_data4']); } $last = array(); if ($lastData) { foreach ($lastData as $k => $v) { $last[$v['param_id']] = array(array($v['record_data'], $v['record_data1'], $v['record_data2'], $v['record_data3'], $v['record_data4']), $v['is_pass'], $v['record_id']); $last['time'] = $v['record_time']; } } $check = array(); $checkAllData = D('task_sub_record')->where(array('record_type' => 1, 'subtask_id' => $subtask_id))->where($where)->order('order_id desc')->select(); if ($checkAllData) { $order_id_arr = array(); foreach ($checkAllData as $k0 => $v0) { $order_id_arr[] = $v0['order_id']; } $checkData = D('task_sub_record')->where(array('record_type' => 1, 'subtask_id' => $subtask_id, 'order_id' => array('in', $order_id_arr)))->where($where)->select(); foreach ($checkData as $k => $v) { $checkData[$k]['record_data'] = floatval($checkData[$k]['record_data']); $checkData[$k]['record_data1'] = floatval($checkData[$k]['record_data1']); $checkData[$k]['record_data2'] = floatval($checkData[$k]['record_data2']); $checkData[$k]['record_data3'] = floatval($checkData[$k]['record_data3']); $checkData[$k]['record_data4'] = floatval($checkData[$k]['record_data4']); } foreach ($checkData as $k => $v) { $check[$v['order_id']][$v['param_id']] = array(array($v['record_data'], $v['record_data1'], $v['record_data2'], $v['record_data3'], $v['record_data4']), $v['is_pass'], $v['record_id']); $check[$v['order_id']]['time'] = $v['record_time']; } } $data = array(); $data['task'] = $subtask_data; $data['flow'] = $task_flow_data; $data['param'] = $param_data; $data['first'] = $first; $data['last'] = $last; $data['check'] = $check; $this->success($data); } //获取子任务相关信息 public function getSubTaskInfoOther1() { $subtask_id = I('subtask_id'); $subtask_data = D('task_sub')->find($subtask_id); $where = array(); if ($subtask_data['subtask_qc_id']) { $where['user_id'] = $subtask_data['subtask_qc_id']; } $task_flow_data = D('task_flow')->find($subtask_data['task_flow_id']); $task_flow_data['product_name'] = D('product')->find($task_flow_data['product_id'])['product_type']; $param_data = D('craft_param')->where(array('flow_craft_id' => $task_flow_data['flow_craft_id']))->order('param_id')->select(); $task_flow_data['task_time'] = date('Y年m月d日', $task_flow_data['task_time']); foreach ($param_data as $k => $v) { $param_data[$k]['param_diff_up'] = floatval($param_data[$k]['param_diff_up']); $param_data[$k]['param_diff_down'] = floatval($param_data[$k]['param_diff_down']); $param_data[$k]['param_base'] = floatval($param_data[$k]['param_base']); } $firstAllData = D('task_sub_record')->where(array('record_type' => 0, 'subtask_id' => $subtask_id))->where($where)->order('order_id desc')->select(); $first = array(); if ($firstAllData) { $order_id_arr = array(); foreach ($firstAllData as $k0 => $v0) { $order_id_arr[] = $v0['order_id']; } $firstData = D('task_sub_record')->where(array('record_type' => 0, 'subtask_id' => $subtask_id, 'order_id' => array('in', $order_id_arr)))->where($where)->select(); foreach ($firstData as $k => $v) { $firstData[$k]['record_data'] = floatval($firstData[$k]['record_data']); $firstData[$k]['record_data1'] = floatval($firstData[$k]['record_data1']); $firstData[$k]['record_data2'] = floatval($firstData[$k]['record_data2']); $firstData[$k]['record_data3'] = floatval($firstData[$k]['record_data3']); $firstData[$k]['record_data4'] = floatval($firstData[$k]['record_data4']); } foreach ($firstData as $k => $v) { $first[$v['order_id']][$v['param_id']] = array(array($v['record_data'], $v['record_data1'], $v['record_data2'], $v['record_data3'], $v['record_data4']), $v['is_pass'], $v['record_id']); $first[$v['order_id']]['time'] = $v['record_time']; } } $lastAllData = D('task_sub_record')->where(array('record_type' => 2, 'subtask_id' => $subtask_id))->where($where)->order('order_id desc')->select(); $last = array(); if ($lastAllData) { $order_id_arr = array(); foreach ($lastAllData as $k0 => $v0) { $order_id_arr[] = $v0['order_id']; } $lastData = D('task_sub_record')->where(array('record_type' => 2, 'subtask_id' => $subtask_id, 'order_id' => array('in', $order_id_arr)))->where($where)->select(); foreach ($lastData as $k => $v) { $lastData[$k]['record_data'] = floatval($lastData[$k]['record_data']); $lastData[$k]['record_data1'] = floatval($v['record_data1']); $lastData[$k]['record_data2'] = floatval($v['record_data2']); $lastData[$k]['record_data3'] = floatval($v['record_data3']); $lastData[$k]['record_data4'] = floatval($v['record_data4']); } foreach ($lastData as $k => $v) { $last[$v['order_id']][$v['param_id']] = array(array($v['record_data'], $v['record_data1'], $v['record_data2'], $v['record_data3'], $v['record_data4']), $v['is_pass'], $v['record_id']); $last[$v['order_id']]['time'] = $v['record_time']; } } $check = array(); $checkAllData = D('task_sub_record')->where(array('record_type' => 1, 'subtask_id' => $subtask_id))->where($where)->order('order_id desc')->select(); if ($checkAllData) { $order_id_arr = array(); foreach ($checkAllData as $k0 => $v0) { $order_id_arr[] = $v0['order_id']; } $checkData = D('task_sub_record')->where(array('record_type' => 1, 'subtask_id' => $subtask_id, 'order_id' => array('in', $order_id_arr)))->where($where)->select(); foreach ($checkData as $k => $v) { $checkData[$k]['record_data'] = floatval($checkData[$k]['record_data']); $checkData[$k]['record_data1'] = floatval($checkData[$k]['record_data1']); $checkData[$k]['record_data2'] = floatval($checkData[$k]['record_data2']); $checkData[$k]['record_data3'] = floatval($checkData[$k]['record_data3']); $checkData[$k]['record_data4'] = floatval($checkData[$k]['record_data4']); } foreach ($checkData as $k => $v) { $check[$v['order_id']][$v['param_id']] = array(array($v['record_data'], $v['record_data1'], $v['record_data2'], $v['record_data3'], $v['record_data4']), $v['is_pass'], $v['record_id']); $check[$v['order_id']]['time'] = $v['record_time']; } } $data = array(); $data['task'] = $subtask_data; $data['flow'] = $task_flow_data; $data['param'] = $param_data; $data['first'] = $first; $data['last'] = $last; $data['check'] = $check; $this->success($data); } //获取子任务相关信息 public function getSubTaskInfoAll() { $subtask_id = I('subtask_id'); $subtask_data = D('task_sub')->find($subtask_id); $where = array(); // if ($subtask_data['subtask_qc_id']) { // $where['user_id'] = $subtask_data['subtask_qc_id']; // } $task_flow_data = D('task_flow')->find($subtask_data['task_flow_id']); $param_data = D('craft_param')->where(array('flow_craft_id' => $task_flow_data['flow_craft_id']))->order('param_id')->select(); $task_flow_data['task_time'] = date('Y年m月d日', $task_flow_data['task_time']); foreach ($param_data as $k => $v) { $param_data[$k]['param_diff_up'] = (int)$param_data[$k]['param_diff_up']; $param_data[$k]['param_diff_down'] = (int)$param_data[$k]['param_diff_down']; $param_data[$k]['param_base'] = floatval($param_data[$k]['param_base']); } $firstAllData = D('task_sub_record')->where(array('record_type' => 0, 'subtask_id' => $subtask_id))->where($where)->order('order_id desc')->select(); $first = array(); if ($firstAllData) { $order_id_arr = array(); foreach ($firstAllData as $k0 => $v0) { $order_id_arr[] = $v0['order_id']; } $firstData = D('task_sub_record')->where(array('record_type' => 0, 'subtask_id' => $subtask_id, 'order_id' => array('in', $order_id_arr)))->where($where)->select(); foreach ($firstData as $k => $v) { $firstData[$k]['record_data'] = floatval($firstData[$k]['record_data']); $firstData[$k]['record_data1'] = floatval($firstData[$k]['record_data1']); $firstData[$k]['record_data2'] = floatval($firstData[$k]['record_data2']); $firstData[$k]['record_data3'] = floatval($firstData[$k]['record_data3']); $firstData[$k]['record_data4'] = floatval($firstData[$k]['record_data4']); } foreach ($firstData as $k => $v) { $user_name = D('user')->find($v['user_id'])['user_name']; $first[$v['order_id']][$v['param_id']] = array(array($v['record_data'], $v['record_data1'], $v['record_data2'], $v['record_data3'], $v['record_data4']), $v['is_pass'], $v['record_id'], $user_name); $first[$v['order_id']]['time'] = $v['record_time']; } } $lastAllData = D('task_sub_record')->where(array('record_type' => 2, 'subtask_id' => $subtask_id))->where($where)->order('order_id desc')->select(); $last = array(); if ($lastAllData) { $order_id_arr = array(); foreach ($lastAllData as $k0 => $v0) { $order_id_arr[] = $v0['order_id']; } $lastData = D('task_sub_record')->where(array('record_type' => 2, 'subtask_id' => $subtask_id, 'order_id' => array('in', $order_id_arr)))->where($where)->select(); foreach ($lastData as $k => $v) { $lastData[$k]['record_data'] = floatval($lastData[$k]['record_data']); $lastData[$k]['record_data1'] = floatval($v['record_data1']); $lastData[$k]['record_data2'] = floatval($v['record_data2']); $lastData[$k]['record_data3'] = floatval($v['record_data3']); $lastData[$k]['record_data4'] = floatval($v['record_data4']); } foreach ($lastData as $k => $v) { $user_name = D('user')->find($v['user_id'])['user_name']; $last[$v['order_id']][$v['param_id']] = array(array($v['record_data'], $v['record_data1'], $v['record_data2'], $v['record_data3'], $v['record_data4']), $v['is_pass'], $v['record_id'], $user_name); $last[$v['order_id']]['time'] = $v['record_time']; } } $check = array(); $checkAllData = D('task_sub_record')->where(array('record_type' => 1, 'subtask_id' => $subtask_id))->where($where)->order('order_id desc')->select(); if ($checkAllData) { $order_id_arr = array(); foreach ($checkAllData as $k0 => $v0) { $order_id_arr[] = $v0['order_id']; } $checkData = D('task_sub_record')->where(array('record_type' => 1, 'subtask_id' => $subtask_id, 'order_id' => array('in', $order_id_arr)))->where($where)->select(); foreach ($checkData as $k => $v) { $checkData[$k]['record_data'] = floatval($checkData[$k]['record_data']); $checkData[$k]['record_data1'] = floatval($checkData[$k]['record_data1']); $checkData[$k]['record_data2'] = floatval($checkData[$k]['record_data2']); $checkData[$k]['record_data3'] = floatval($checkData[$k]['record_data3']); $checkData[$k]['record_data4'] = floatval($checkData[$k]['record_data4']); } foreach ($checkData as $k => $v) { $user_name = D('user')->find($v['user_id'])['user_name']; $check[$v['order_id']][$v['param_id']] = array(array($v['record_data'], $v['record_data1'], $v['record_data2'], $v['record_data3'], $v['record_data4']), $v['is_pass'], $v['record_id'], $user_name); $check[$v['order_id']]['time'] = $v['record_time']; } } $data = array(); $data['task'] = $subtask_data; $data['flow'] = $task_flow_data; $data['param'] = $param_data; $data['first'] = $first; $data['last'] = $last; $data['check'] = $check; $this->success($data); } public function addRecord() { $data = file_get_contents('php://input'); $data = json_decode($data, true); $record_type = $data['record_type']; $subtask_id = $data['subtask_id']; $subtask_data = D('task_sub')->find($subtask_id); $task_flow_data = D('task_flow')->find($subtask_data['task_flow_id']); $user_id = $this->user_id; $record = $data['record']; $res = ''; $addData = array(); $addData['record_type'] = $record_type; $addData['subtask_id'] = $subtask_id; $addData['user_id'] = $user_id; $addData['task_id'] = $task_flow_data['task_id']; $addData['user_id'] = $user_id; $addData['task_flow_id'] = $task_flow_data['task_flow_id']; $addData['record_time'] = date('m.d', time()); $dataExit = D('task_sub_record')->where(array('subtask_id' => $subtask_id))->order('order_id desc')->find(); if ($record_type == 2) { if (D('task_sub_record')->where(array('subtask_id' => $subtask_id, 'record_type' => $record_type, 'user_id' => $user_id))->order('order_id desc')->find()) { $this->error("数据已存在,不可以重复添加"); } } if ($dataExit) { $addData['order_id'] = $dataExit['order_id'] + 1; } else { $addData['order_id'] = 1; } foreach ($record as $k => $v) { $paramData = D('craft_param')->find($k); if (!is_numeric($v[0])) { $addData['is_pass'] = "合格"; } else { $addData['is_pass'] = "合格"; if ($v[0] < $paramData['param_base'] + $paramData['param_diff_down'] || $v[0] > $paramData['param_base'] + $paramData['param_diff_up']) { $addData['is_pass'] = "不合格"; } if ($v[1] < $paramData['param_base'] + $paramData['param_diff_down'] || $v[1] > $paramData['param_base'] + $paramData['param_diff_up']) { $addData['is_pass'] = "不合格"; } if ($v[2] < $paramData['param_base'] + $paramData['param_diff_down'] || $v[2] > $paramData['param_base'] + $paramData['param_diff_up']) { $addData['is_pass'] = "不合格"; } if ($v[3] < $paramData['param_base'] + $paramData['param_diff_down'] || $v[3] > $paramData['param_base'] + $paramData['param_diff_up']) { $addData['is_pass'] = "不合格"; } if ($v[4] < $paramData['param_base'] + $paramData['param_diff_down'] || $v[4] > $paramData['param_base'] + $paramData['param_diff_up']) { $addData['is_pass'] = "不合格"; } } $addData['param_id'] = $k; $addData['record_data'] = $v[0]; $addData['record_data1'] = $v[1]; $addData['record_data2'] = $v[2]; $addData['record_data3'] = $v[3]; $addData['record_data4'] = $v[4]; D('task_sub_record')->add($addData); } $this->success($res); } public function modifyRecord() { $data = file_get_contents('php://input'); $data = json_decode($data, true); unset($data['time']); foreach ($data as $k => $v) { $saveData['record_id'] = $v[2]; $saveData['record_data'] = $v[0][0]; $saveData['record_data1'] = $v[0][1]; $saveData['record_data2'] = $v[0][2]; $saveData['record_data3'] = $v[0][3]; $saveData['record_data4'] = $v[0][4]; $paramData = D('craft_param')->find($k); if (!is_numeric($v[0][0])) { $saveData['is_pass'] = "合格"; } else { $saveData['is_pass'] = "合格"; if (floatval($v[0][0]) < $paramData['param_base'] + $paramData['param_diff_down'] || floatval($v[0][0]) > $paramData['param_base'] + $paramData['param_diff_up']) { $saveData['is_pass'] = "不合格"; } if (floatval($v[0][1]) < $paramData['param_base'] + $paramData['param_diff_down'] || floatval($v[0][1]) > $paramData['param_base'] + $paramData['param_diff_up']) { $saveData['is_pass'] = "不合格"; } if (floatval($v[0][2]) < $paramData['param_base'] + $paramData['param_diff_down'] || floatval($v[0][2]) > $paramData['param_base'] + $paramData['param_diff_up']) { $saveData['is_pass'] = "不合格"; } if (floatval($v[0][3]) < $paramData['param_base'] + $paramData['param_diff_down'] || floatval($v[0][3]) > $paramData['param_base'] + $paramData['param_diff_up']) { $saveData['is_pass'] = "不合格"; } if (floatval($v[0][4]) < $paramData['param_base'] + $paramData['param_diff_down'] || floatval($v[0][4]) > $paramData['param_base'] + $paramData['param_diff_up']) { $saveData['is_pass'] = "不合格"; } } // if ($v[0] >= $paramData['param_base'] + $paramData['param_diff_down'] && $v[0] <= $paramData['param_base'] + $paramData['param_diff_up']) { // $saveData['is_pass'] = "合格"; // } else { // $saveData['is_pass'] = "不合格"; // } D('task_sub_record')->save($saveData); } $this->success($data); } public function deleteRecord() { $data = file_get_contents('php://input'); $data = json_decode($data, true); unset($data['time']); foreach ($data as $k => $v) { D('task_sub_record')->delete($v[2]); } $this->success($data); } //获取质检员 工种 public function qcGetType() { $data = D('task_sub')->where(array('subtask_tonext_num' => 0))->field('type_id,type_name')->order('subtask_id')->group('type_id')->select(); $this->success($data); } //获取质检员 工种-工序 public function qcGetCraft() { $type_id = I('type_id'); $data = D('task_sub')->where(array('subtask_tonext_num' => 0, 'type_id' => $type_id))->field('flow_craft_id,craft_name')->order('subtask_id')->group('craft_id')->select(); $this->success($data); } //获取质检员 工种-工序-操作工 public function qcGetOperator() { $flow_craft_id = I('flow_craft_id'); $craft_id = D('flow_craft')->find($flow_craft_id)['craft_id']; $data = D('task_sub')->where(array('subtask_tonext_num' => 0, 'craft_id' => $craft_id))->field('subtask_id,operator_name,task_id,subtask_time_add')->order('subtask_id')->select(); foreach ($data as $k=>$v){ $thisData = D('task')->find($v['task_id']); $time = date('Y-m-d', $data[$k]['subtask_time_add']); // $data[$k]['operator_name'] = $data[$k]['operator_name'] . '('.$thisData['task_name'].')'; if($thisData['is_sub']==0){ $data[$k]['operator_name'] = $data[$k]['operator_name'] . '['.$time.'] -- ('.$thisData['task_name'].')'; } else{ $subName = D('task')->where(array('task_id'=>$thisData['task_id_pro']))->find()['task_name']; $data[$k]['operator_name'] = $data[$k]['operator_name'] . '['.$time.'] -- ('.$thisData['task_name'].') -- ' . $subName; } } $this->success($data); } //质检员填写小计 public function qcXiaoji() { $data = file_get_contents('php://input'); $data = json_decode($data, true); if ($data['subtask_tonext_num'] < $data['subtask_pass_num']) { $this->error("流转数不能小于合格数"); } // if ($data['subtask_tonext_num'] > $data['subtask_complete_num']) { // $this->error("流转数不能大于完成数"); // } $flow_craft_id = $data['flow_craft_id']; $data['subtask_qc_id'] = $this->user_id; $data['qc_name'] = D('user')->find($this->user_id)['user_name']; $data['subtask_time_qc'] = time(); $data['subtask_pass_rate'] = ($data['subtask_pass_num'] * 1.0000) / ($data['subtask_complete_num'] * 1.0000); $price_data = D('craft_price')->where(array('flow_craft_id' => $flow_craft_id))->find(); unset($price_data['price_id']); unset($price_data['flow_craft_id']); $money = 0; foreach ($price_data as $k => $v) { if ($data[$k]) { $money += $v * $data[$k]; } } $data['money'] = $money; D('task_sub')->save($data); $task_flow_data = D('task_flow')->find($data['task_flow_id']); $task_flow_save['task_flow_id'] = $data['task_flow_id']; $task_flow_save['pass_num'] = $task_flow_save['pass_num'] + $data['subtask_pass_num']; $unCompleteSubTask = D('task_sub')->where(array('task_flow_id' => $data['task_flow_id'], 'subtask_tonext_num' => array('neq', 0)))->select(); if (!$unCompleteSubTask && $task_flow_data['pre_num'] == 0) { $task_flow_save['is_complete'] = 1; } D('task_flow')->save($task_flow_save); $order_id = $task_flow_data['order_id']; $is_final = $task_flow_data['is_final']; if (!$is_final) { $next_task_flow_data = D('task_flow')->where(array('task_id' => $task_flow_data['task_id'], 'order_id' => $order_id + 1))->find(); $next_task_flow_data['pre_num'] = $next_task_flow_data['pre_num'] + $data['subtask_tonext_num']; D('task_flow')->where(array('task_flow_id' => $next_task_flow_data['task_flow_id']))->save(array('pre_num' => $next_task_flow_data['pre_num'])); } $task_final_data = D('task_flow')->where(array('task_id' => $data['task_id'], 'is_final' => 1, 'is_complete' => 1))->find(); if ($task_final_data) { $min_pass_data = D('task_flow')->where(array('task_id' => $data['task_id']))->order('pass_num')->find(); $task_data = D('task')->find($data['task_id']); $pass_rate = ($min_pass_data['pass_num'] * 1.0000) / (($task_data['task_product_num'] - $task_data['sub_num']) * 1.0000); D('task')->where(array('task_id' => $data['task_id']))->save(array('task_pass_num' => $min_pass_data['pass_num'], 'task_pass_rate' => $pass_rate)); } $this->success($data); } public function qcModifyXiaoji() { $data = file_get_contents('php://input'); $data = json_decode($data, true); $subtask_id = $data['subtask_id']; $origin_task_data = D('task_sub')->find($subtask_id); if ($data['subtask_tonext_num'] < $data['subtask_pass_num']) { $this->error("流转数不能小于合格数"); } if ($data['subtask_tonext_num'] > $data['subtask_complete_num']) { $this->error("流转数不能大于完成数"); } $flow_craft_id = $data['flow_craft_id']; $data['subtask_qc_id'] = $this->user_id; $data['qc_name'] = D('user')->find($this->user_id)['user_name']; $data['subtask_time_qc'] = time(); $data['subtask_pass_rate'] = ($data['subtask_pass_num'] * 1.0000) / ($data['subtask_complete_num'] * 1.0000); $price_data = D('craft_price')->where(array('flow_craft_id' => $flow_craft_id))->find(); unset($price_data['price_id']); unset($price_data['flow_craft_id']); $money = 0; foreach ($price_data as $k => $v) { if ($data[$k]) { $money += $v * $data[$k]; } } $data['money'] = $money; D('task_sub')->save($data); $pass_num_diff = $data['subtask_pass_num'] - $origin_task_data['subtask_pass_num']; $tonext_num_diff = $data['subtask_tonext_num'] - $origin_task_data['subtask_tonext_num']; $task_flow_data = D('task_flow')->find($data['task_flow_id']); $task_flow_save['task_flow_id'] = $data['task_flow_id']; $task_flow_save['pass_num'] = $task_flow_save['pass_num'] + $pass_num_diff; $unCompleteSubTask = D('task_sub')->where(array('task_flow_id' => $data['task_flow_id'], 'subtask_tonext_num' => array('neq', 0)))->select(); if (!$unCompleteSubTask && $task_flow_data['pre_num'] == 0) { $task_flow_save['is_complete'] = 1; } D('task_flow')->save($task_flow_save); $order_id = $task_flow_data['order_id']; $is_final = $task_flow_data['is_final']; if (!$is_final) { $next_task_flow_data = D('task_flow')->where(array('task_id' => $task_flow_data['task_id'], 'order_id' => $order_id + 1))->find(); $next_task_flow_data['pre_num'] = $next_task_flow_data['pre_num'] + $tonext_num_diff; D('task_flow')->where(array('task_flow_id' => $next_task_flow_data['task_flow_id']))->save(array('pre_num' => $next_task_flow_data['pre_num'])); } $task_final_data = D('task_flow')->where(array('task_id' => $data['task_id'], 'is_final' => 1, 'is_complete' => 1))->find(); if ($task_final_data) { $min_pass_data = D('task_flow')->where(array('task_id' => $data['task_id']))->order('pass_num')->find(); $task_data = D('task')->find($data['task_id']); $pass_rate = ($min_pass_data['pass_num'] * 1.0000) / ($task_data['task_product_num'] * 1.0000); D('task')->where(array('task_id' => $data['task_id']))->save(array('task_pass_num' => $min_pass_data['pass_num'], 'task_pass_rate' => $pass_rate)); } $this->success($data); } //操作工 个人查询 public function getPersonDetails() { $craftData = D('task_sub')->where(array('subtask_operator_id' => $this->user_id))->field('craft_id,craft_name')->group('craft_id')->select(); $taskData = D('task_sub')->where(array('subtask_operator_id' => $this->user_id))->field('task_flow_id, task_id')->group('task_id')->select(); foreach ($taskData as $k => $v) { $taskData[$k]['product_name'] = D('task_flow')->find($taskData[$k]['task_flow_id'])['product_name']; } $data['craft'] = $craftData; $data['task'] = $taskData; $this->success($data); } // 操作工 所有子任务 public function allSubTask() { $data = D('task_sub')->where(array('subtask_operator_id' => $this->user_id))->order('subtask_time_add desc')->select(); foreach ($data as $k => $v) { if ($data[$k]['subtask_pass_rate']) { $data[$k]['subtask_pass_rate'] = ($data[$k]['subtask_pass_rate'] * 100) . "%"; } else { $data[$k]['subtask_pass_rate'] = ''; } $data[$k]['time'] = date('Y.m.d', $data[$k]['subtask_time_add']); } $this->success($data); } //操作工 根据条件查询子任务 public function partSubTask() { $start_time = I('start_time'); $end_time = I('end_time'); // $task_id = I('task_id'); // $craft_id = I('craft_id'); $start_time = strtotime($start_time); $end_time = strtotime($end_time) + 86400; if ($end_time < $start_time) { $this->error('结束时间不能小于开始时间'); } $where = array(); $where['subtask_time_add'] = array('between', array($start_time, $end_time)); $where['subtask_operator_id'] = $this->user_id; // $where['task_id'] = $task_id; // $where['craft_id'] = $craft_id; $data = D('task_sub')->where($where)->select(); foreach ($data as $k => $v) { if ($data[$k]['subtask_pass_rate']) { $data[$k]['subtask_pass_rate'] = ($data[$k]['subtask_pass_rate'] * 100) . "%"; } else { $data[$k]['subtask_pass_rate'] = ''; } $data[$k]['time'] = date('Y.m.d', $data[$k]['subtask_time_add']); } $this->success($data); } //质检和其他查询 所有任务(最新10条) public function allTask() { $where = array(); $role_info = D('role_user')->where(array('user_id' => $this->user_id))->find(); $role_id = $role_info['role_id']; $subtask_data = D('task_sub')->group('task_id')->select();; if ($role_id == 3) { $subtask_data = D('task_sub')->where(array('subtask_operator_id' => $this->user_id))->group('task_id')->select(); } if ($role_id == 4) { $subtask_data = D('task_sub')->where(array('subtask_qc_id' => $this->user_id))->group('task_id')->select(); } $task_id_arr = array(); if ($subtask_data) { foreach ($subtask_data as $k => $v) { $task_id_arr[] = $v['task_id']; } if ($task_id_arr) { $where['task_id'] = array('in', $task_id_arr); } } $data = D('task')->where($where)->order('task_id desc')->select(); foreach ($data as $k => $v) { if ($data[$k]['task_pass_rate']) { $data[$k]['task_pass_rate'] = ($data[$k]['task_pass_rate'] * 100) . "%"; } else { $data[$k]['task_pass_rate'] = ''; $data[$k]['task_pass_num'] = ''; } $data[$k]['product_name'] = D('task_flow')->where(array('task_id' => $v['task_id']))->find()['product_name']; $data[$k]['time'] = date('Ymd', $data[$k]['subtask_time_add']); } $this->success($data); } //质检和其他查询任务(根据时间) public function partTask() { $start_time = I('start_time'); $end_time = I('end_time'); $start_time = strtotime($start_time); $end_time = strtotime($end_time) + 86400; if ($end_time < $start_time) { $this->error('结束时间不能小于开始时间'); } $where = array(); $where['task_time_add'] = array('between', array($start_time, $end_time)); $pici = I('pici'); $danhao = I('danhao'); if ($pici) { $where['task_pici'] = array('like', '%' . $pici . '%'); } if ($danhao) { $where['task_name'] = array('like', '%' . $danhao . '%'); } $role_info = D('role_user')->where(array('user_id' => $this->user_id))->find(); $role_id = $role_info['role_id']; if ($role_id == 4) { $where['subtask_qc_id'] = $this->user_id; } $data = D('task')->where($where)->select(); foreach ($data as $k => $v) { if ($data[$k]['task_pass_rate']) { $data[$k]['task_pass_rate'] = ($data[$k]['task_pass_rate'] * 100) . "%"; } else { $data[$k]['task_pass_rate'] = ''; $data[$k]['task_pass_num'] = ''; } $data[$k]['product_name'] = D('task_flow')->where(array('task_id' => $v['task_id']))->find()['product_name']; $data[$k]['time'] = date('Ymd', $data[$k]['subtask_time_add']); } $this->success($data); } //质检或其他 查看某个单独的任务 public function taskDetial() { $role_info = D('role_user')->where(array('user_id' => $this->user_id))->find(); $role_id = $role_info['role_id']; $where = array(); if ($role_id == 4) { $where['subtask_qc_id'] = $this->user_id; } $task_id = I('task_id'); $orgin_task_data = D('task')->find($task_id); $orgin_task_data['time'] = date('Y-m-d', $orgin_task_data['task_time_add']); $task_data = D('task_flow')->where(array('task_id' => $task_id))->find(); $subtask_data = D('task_sub')->where(array('task_id' => $task_id))->where($where)->select(); $qc_data = D('task_sub')->where(array('task_id' => $task_id))->field('subtask_qc_id,qc_name')->group('subtask_qc_id')->select(); $op_data = D('task_sub')->where(array('task_id' => $task_id))->field('subtask_operator_id,operator_name')->group('subtask_operator_id')->select(); foreach ($subtask_data as $k => $v) { $subtask_data[$k]['time'] = date('Ymd', $subtask_data[$k]['subtask_time_add']); if ($subtask_data[$k]['subtask_pass_rate']) { $subtask_data[$k]['subtask_pass_rate'] = ($subtask_data[$k]['subtask_pass_rate'] * 100) . "%"; } else { $subtask_data[$k]['subtask_pass_rate'] = ''; } } $data = array(); $data['qc'] = $qc_data; $data['op'] = $op_data; $data['task'] = $task_data; $data['subtask'] = $subtask_data; $data['orgin_task'] = $orgin_task_data; $this->success($data); } //其他人员所有子任务 public function taskDetialOther() { $where = array(); $operator_name = I('operator'); if ($operator_name) { $where['operator_name'] = array('like', '%' . $operator_name . '%'); } $start_time = I('start_time'); $end_time = I('end_time'); if ($start_time && $end_time) { $start_time = strtotime($start_time); $end_time = strtotime($end_time) + 86400; if ($end_time < $start_time) { $this->error('结束时间不能小于开始时间'); } $where['subtask_time_add'] = array('between', array($start_time, $end_time)); } $subtask_data = D('task_sub')->where($where)->select(); foreach ($subtask_data as $k => $v) { $subtask_data[$k]['time'] = date('Ymd', $subtask_data[$k]['subtask_time_add']); if ($subtask_data[$k]['subtask_pass_rate']) { $subtask_data[$k]['subtask_pass_rate'] = ($subtask_data[$k]['subtask_pass_rate'] * 100) . "%"; } else { $subtask_data[$k]['subtask_pass_rate'] = ''; } $subtask_data[$k]['task_name'] = D('task')->find($v['task_id'])['task_name']; } $data = array(); $data['subtask'] = $subtask_data; $this->success($data); } //质检或其他 查看某个单独的任务(根据 操作员 和 质检员 查看) public function partTaskDetial() { $task_id = I('task_id'); $subtask_qc_id = I('subtask_qc_id'); $subtask_operator_id = I('subtask_operator_id'); $where = array(); $where['task_id'] = $task_id; $where['subtask_operator_id'] = $subtask_operator_id; if ($subtask_qc_id) { $where['subtask_qc_id'] = $subtask_qc_id; } else { $where['subtask_qc_id'] = $this->user_id; } $subtask_data = D('task_sub')->where($where)->select(); foreach ($subtask_data as $k => $v) { $subtask_data[$k]['time'] = date('Ymd', $subtask_data[$k]['subtask_time_add']); if ($subtask_data[$k]['subtask_pass_rate']) { $subtask_data[$k]['subtask_pass_rate'] = ($subtask_data[$k]['subtask_pass_rate'] * 100) . "%"; } else { $subtask_data[$k]['subtask_pass_rate'] = ''; } } $data = array(); $data['subtask'] = $subtask_data; $this->success($data); } public function getUnCheckedSubTask() { $where = array(); $where['subtask_pass_rate'] = array('gt', '0'); $where['is_checked'] = 0; $role_info = D('role_user')->where(array('user_id' => $this->user_id))->find(); $role_id = $role_info['role_id']; // 质检员 if ($role_id == 4) { $where['subtask_qc_id'] = $this->user_id; } $subtask_data = D('task_sub')->where($where)->select(); foreach ($subtask_data as $k => $v) { $subtask_data[$k]['time'] = date('Ymd', $v['subtask_time_add']); if ($subtask_data[$k]['subtask_pass_rate']) { $subtask_data[$k]['subtask_pass_rate'] = ($subtask_data[$k]['subtask_pass_rate'] * 100) . "%"; } else { $subtask_data[$k]['subtask_pass_rate'] = ''; } } $data['subtask'] = $subtask_data; $this->success($data); } public function fuhe() { $user_data = D('user')->find($this->user_id); $subtask_id = I('subtask_id'); $save['is_checked'] = 1; $save['subtask_check_id'] = $user_data['user_id']; $save['check_name'] = $user_data['user_name']; D('task_sub')->where(array('subtask_id' => $subtask_id))->save($save); $this->success('复核成功!'); } public function is_sub(){ $task_flow_id = I('task_flow_id'); $task_id = D('task_flow')->find($task_flow_id)['task_id']; $pre_num = D('task_flow')->find($task_flow_id)['pre_num']; $is_sub = D('task')->find($task_id)['is_sub']; $this->success(array($is_sub,$pre_num)); } }