| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- <?php
- namespace app\api\controller;
- use app\common\controller\Api;
- use think\Config;
- use think\Db;
- use think\Request;
- /**
- * 工单资料管理
- */
- class SubWorkorderStatus extends Api
- {
- protected $noNeedLogin = ['*'];
- protected $noNeedRight = ['*'];
- public function _initialize()
- {
- if (isset($_SERVER['HTTP_ORIGIN'])) {
- header('Access-Control-Expose-Headers: __token__');//跨域让客户端获取到
- }
- //跨域检测
- check_cors_request();
- if (!isset($_COOKIE['PHPSESSID'])) {
- Config::set('session.id', $this->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);
- }
- }
|