request->server("HTTP_SID")); } parent::_initialize(); } /** * 子订单状态查询 * @return void * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function SubWorkOrderStatusList() { // 验证请求类型是否为 GET if ($this->request->isGet() === false) { $this->error('请求错误'); } // 获取请求参数并验证 $param = $this->request->param(); if (empty($param)) { $this->error('参数错误'); } // 提取子订单编号的前12位作为色系ID $colour_id = substr($param['order'], 0, 12); // 获取订单尺码信息 $where['Mod_rq'] = null; $xhdata = \db('工单_印件资料') ->where('子订单编号', $param['order']) ->where($where) ->field('cm1,cm2,cm3,cm4,cm5,cm6,cm7,cm8,cm9,cm10') ->select(); // 收集cm1到cm10的非空值并排序 $arr = []; foreach ($xhdata as $value) { for ($i = 1; $i <= 10; $i++) { $cmValue = $value['cm' . $i] ?? null; if (!empty($cmValue)) { $arr[] = $cmValue; } } } $arr = array_unique($arr); // 去重 sort($arr); // 排序 // 获取工单详细资料 $workOrderData = \db('工单_印件资料') ->alias('a') ->join('工单_基本资料 b', 'a.订单编号 = b.订单编号') ->where('a.子订单编号', $param['order']) ->where('a.Mod_rq', null) ->field('a.订单编号,a.子订单编号,a.款号,b.款式,b.客户编号,a.zdtotal, cm1,cm2,cm3,cm4,cm5,cm6,cm7,cm8,cm9,cm10, cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10') ->find(); // 初始化制单数据 $result = [ '工序名称' => '制单', 'total' => ' ', '制单数' => $workOrderData['zdtotal'] ?? 0 ]; // 处理cm1到cm10和对应的cmsl1到cmsl10数据 for ($i = 1; $i <= 10; $i++) { $cmKey = 'cm' . $i; $cmslKey = 'cmsl' . $i; if (!empty($workOrderData[$cmKey])) { $result[$workOrderData[$cmKey]] = (int)($workOrderData[$cmslKey] ?? 0); } } // 定义工序名称 $processes = ['裁剪', '车缝', '手工', '大烫', '总检', '包装']; // 获取设备产量数据 $list = \db('设备_产量计酬') ->where('子订单编号', 'like', $colour_id . '%') ->where('mod_rq', null) ->select(); $data['data'] = []; array_unshift($data['data'], $result); // 将制单数据放在第一个位置 // 获取色系的制单总数 // $total = \db('工单_印件资料') // ->where('子订单编号', 'like', $colour_id . '%') // ->column('sum(zdtotal)'); // 处理各工序数据 foreach ($processes as $process) { $res = array_fill_keys($arr, 0); // 初始化每个尺码为0 foreach ($list as $value) { if ($value['工序名称'] === $process) { $quantity = ($process === '裁剪' || $process === '车缝') ? $value['数量'] : $value['s_num']; // 更新对应尺码的数据 if (array_key_exists($value['尺码'], $res)) { $res[$value['尺码']] += $quantity; } } } // 计算总量并设置工序信息 $res['total'] = array_sum($res); $res['工序名称'] = $process; // $res['制单数'] = $total[0]; $data['data'][] = $res; } // 计算完成百分比 foreach ($data['data'] as $key => $value) { // 如果工序名称是“制单”,则直接将 scale 设置为空 if ($value['工序名称'] === '制单') { $data['data'][$key]['scale'] = ''; continue; // 跳过当前循环 } // 其他工序正常计算百分比 $data['data'][$key]['scale'] = $workOrderData['zdtotal'] > 0 ? number_format(($value['total'] / $workOrderData['zdtotal']) * 100, 2) . '%' : '0%'; } // 输出整理后的数据 $data['arr'] = $arr; $data['workOrderData'] = $workOrderData; $this->success('成功', $data); } /** * 码包号接口 * @return void */ public function Mabaolist() { if ($this->request->isGet() === false){ $this->error('参数错误'); } $param = $this->request->param(); if (empty($param)){ $this->error('参数错误'); } if($param['process'] === ''){ $param['process'] = '车缝'; } //车缝码包号 $chefeng = \db('设备_产量计酬') // ->where('子订单编号','like',substr($param['order'],0,12).'%') ->where('子订单编号',$param['order']) ->where('工序名称','车缝') ->column('serial'); //查询工序码包号 $complete = \db('设备_产量计酬') // ->where('子订单编号','like',substr($param['order'],0,12).'%') ->where('子订单编号',$param['order']) ->where('工序名称',$param['process']) ->where('mod_rq',null) ->column('serial'); //查询删除码包号 $delete = \db('设备_产量计酬') // ->where('子订单编号','like',substr($param['order'],0,12).'%') ->where('子订单编号',$param['order']) ->where('工序名称','车缝') ->whereNotNull('mod_rq') ->column('serial'); $delete = array_unique($delete); $data['chefeng'] = $chefeng; $data['complete'] = $complete; $data['delete'] = $delete; $this->success('成功',$data); } }