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() { if (!$this->request->isGet()) { $this->error('请求错误'); } $param = $this->request->param(); if (empty($param) || empty($param['order'])) { $this->error('参数错误'); } $orderNo = $param['order']; $isSubOrder = strpos($orderNo, '-') !== false; $colour_id = substr($orderNo, 0, 12); // 条件构造 $where = ['a.Mod_rq' => null]; if ($isSubOrder) { $where['a.子订单编号'] = $orderNo; } else { $where['a.订单编号'] = $orderNo; } // 获取所有工单数据(订单或子订单) $workOrderList = \db('工单_印件资料') ->alias('a') ->join('工单_基本资料 b', 'a.订单编号 = b.订单编号') ->where($where) ->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') ->select(); if (empty($workOrderList)) { $this->error('未找到相关工单数据'); } // 初始化变量 $sizeList = []; $result = [ '工序名称' => '制单', 'total' => 0, '制单数' => 0 ]; foreach ($workOrderList as $workOrder) { $result['制单数'] += $workOrder['zdtotal']; for ($i = 1; $i <= 10; $i++) { $cmKey = 'cm' . $i; $cmslKey = 'cmsl' . $i; if (!empty($workOrder[$cmKey])) { $size = $workOrder[$cmKey]; $qty = (int)($workOrder[$cmslKey] ?? 0); $sizeList[] = $size; if (!isset($result[$size])) { $result[$size] = 0; } $result[$size] += $qty; } } } $sizeList = array_unique($sizeList); sort($sizeList); // 获取设备产量数据 $list = \db('设备_产量计酬') ->where($isSubOrder ? ['子订单编号' => $orderNo] : ['订单编号' => $orderNo]) ->where('mod_rq', null) ->select(); $processes = ['裁剪', '车缝', '手工', '大烫', '总检', '包装']; $data['data'] = []; $data['data'][] = $result; foreach ($processes as $process) { $processData = array_fill_keys($sizeList, 0); foreach ($list as $item) { if ($item['工序名称'] === $process && in_array($item['尺码'], $sizeList)) { $qty = ($process === '裁剪' || $process === '车缝') ? $item['数量'] : $item['s_num']; $processData[$item['尺码']] += $qty; } } $processData['total'] = array_sum($processData); $processData['工序名称'] = $process; $data['data'][] = $processData; } // 计算百分比 foreach ($data['data'] as &$val) { if ($val['工序名称'] === '制单') { $val['scale'] = ''; } else { $val['scale'] = $result['制单数'] > 0 ? number_format(($val['total'] / $result['制单数']) * 100, 2) . '%' : '0%'; } } $data['arr'] = $sizeList; if ($isSubOrder) { // 查询的是子订单,直接取第一条完整数据 $data['workOrderData'] = $workOrderList[0]; } else { // 查询的是订单编号,保留第一条数据但去掉 "子订单编号" $workOrderData = $workOrderList[0]; unset($workOrderData['子订单编号']); // 去掉子订单编号 $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 (!isset($param['process']) || $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); } }