unknown 2 долоо хоног өмнө
parent
commit
7f2293f227

+ 374 - 142
application/api/controller/CostAccounting.php

@@ -637,6 +637,83 @@ class CostAccounting extends Api
         $this->success('成功', $data);
         $this->success('成功', $data);
     }
     }
 
 
+    /**
+     * 水电气科目(前端 search)→ 成本v23_月度成本明细 汇总表达式
+     */
+    private function resolveCostDetailSubjectSumExpression(string $search): ?string
+    {
+        $search = trim($search);
+        if ($search === '') {
+            return null;
+        }
+
+        if (in_array($search, ['待分摊总额', '分摊总额', '分摊水电'], true)) {
+            return 'sum(m.`分摊水电`)';
+        }
+
+        if ($search === '热水锅炉') {
+            return 'sum(m.`热水锅炉`)';
+        }
+
+        if ($search === '锅炉' || (mb_strpos($search, '锅炉') !== false && mb_strpos($search, '热水') === false)) {
+            return 'sum(m.`锅炉` + m.`热水锅炉`)';
+        }
+
+        $keywordToColumn = [
+            '6#楼真空鼓风' => '真空鼓风机',
+            '真空鼓风' => '真空鼓风机',
+            '真空风机' => '真空鼓风机',
+            '6#楼空压机' => '空压机',
+            '空压机' => '空压机',
+            '空压' => '空压机',
+            '废气处理' => '废气处理',
+            '废气' => '废气处理',
+            '中央空调' => '中央空调',
+            '空调' => '中央空调',
+        ];
+
+        foreach ($keywordToColumn as $keyword => $column) {
+            if ($search === $keyword || mb_strpos($search, $keyword) !== false) {
+                return 'sum(m.`' . $column . '`)';
+            }
+        }
+
+        $allowedColumns = ['分摊水电', '直接水电', '空压机', '真空鼓风机', '中央空调', '废气处理', '锅炉', '热水锅炉'];
+        if (in_array($search, $allowedColumns, true)) {
+            return 'sum(m.`' . $search . '`)';
+        }
+
+        return null;
+    }
+
+    /**
+     * 是否按设备档案「使用部门」过滤(仅真实生产车间)
+     */
+    private function shouldFilterMachineByWorkshopDepartment(string $sist): bool
+    {
+        static $workshops = ['胶印车间', '凹丝印车间', '印后车间', '检验车间'];
+
+        return in_array($sist, $workshops, true);
+    }
+
+    /**
+     * @param array $rows 含 sczl_jtbh、hours 字段的查询结果
+     * @return array<string, float>
+     */
+    private function buildMachineHoursMap(array $rows): array
+    {
+        $map = [];
+        foreach ($rows as $row) {
+            $machine = trim((string)($row['sczl_jtbh'] ?? ''));
+            if ($machine === '') {
+                continue;
+            }
+            $map[$machine] = floatval($row['hours'] ?? 0);
+        }
+
+        return $map;
+    }
+
     //计算每个车间色度数
     //计算每个车间色度数
     private function CountSistChromaticity($month,$sist)
     private function CountSistChromaticity($month,$sist)
     {
     {
@@ -659,22 +736,92 @@ class CostAccounting extends Api
         return $data;
         return $data;
     }
     }
 
 
-    //水电气分摊费用下方明细列表
-//    public function shuidianqiMachineDetailList()
-//    {
-//        if ($this->request->isGet() === false) {
-//            $this->error('请求错误');
-//        }
-//        $param = $this->request->param();
-//        if (empty($param)) {
-//            $this->error('参数错误');
-//        }
-//        $list = db('设备_基本资料')
-//            ->alias('a')
-//            ->join('成本_各月分摊系数 b', 'a.设备编号 = b.设备编号', 'LEFT')
-//            ->field()
-//
-//    }
+    /**
+     * 水电气分摊费用下方机台明细列表
+     * @ApiMethod GET
+     * @param string month 年月 YYYYMM
+     * @param string sist 分摊费用部门(如公用设备设施分摊、胶印车间等)
+     * @param string search 科目名称(对应成本v23_月度成本明细字段,由水电气基础科目映射)
+     */
+    public function shuidianqiMachineDetailList()
+    {
+        if ($this->request->isGet() === false) {
+            $this->error('请求错误');
+        }
+        $param = $this->request->param();
+        if (empty($param['month'])) {
+            $this->error('月份参数错误');
+        }
+
+        $month = trim($param['month']);
+        if (!preg_match('/^\d{6}$/', $month)) {
+            $this->error('月份格式应为 YYYYMM');
+        }
+        $monthDash = substr($month, 0, 4) . '-' . substr($month, 4, 2);
+        $sist = trim((string)($param['sist'] ?? ''));
+        $search = trim((string)($param['search'] ?? ''));
+
+        if ($search === '') {
+            $this->error('缺少科目参数 search');
+        }
+
+        $subjectSumExpr = $this->resolveCostDetailSubjectSumExpression($search);
+        if ($subjectSumExpr === null) {
+            $this->success('成功', []);
+        }
+
+        $query = db('成本v23_月度成本明细')
+            ->alias('m')
+            ->join('设备_基本资料 a', 'a.设备编号 = m.sczl_jtbh', 'LEFT')
+            ->where('m.sys_ny', $month);
+
+        if ($sist !== '' && $this->shouldFilterMachineByWorkshopDepartment($sist)) {
+            $query->where('m.车间名称', $sist);
+        }
+
+        $list = $query
+            ->field([
+                'rtrim(m.sczl_jtbh) as 设备编号',
+                'rtrim(a.设备名称) as 设备名称',
+                'm.sys_ny as 年月',
+                'rtrim(a.使用部门) as 使用部门',
+                $subjectSumExpr . ' as 科目金额',
+            ])
+            ->group('m.sczl_jtbh, m.sys_ny, a.设备名称, a.使用部门')
+            ->having($subjectSumExpr . ' > 0')
+            ->order('a.使用部门, m.sczl_jtbh')
+            ->select();
+
+        $allHoursMap = $this->buildMachineHoursMap(
+            db('设备_产量计酬')
+                ->field('sczl_jtbh, sum(sczl_设备运行工时) as hours')
+                ->where('sczl_rq', 'like', $monthDash . '%')
+                ->group('sczl_jtbh')
+                ->select()
+        );
+
+        $costHoursMap = $this->buildMachineHoursMap(
+            db('成本v23_月度成本明细')
+                ->field('sczl_jtbh, sum(占用机时) as hours')
+                ->where('sys_ny', $month)
+                ->group('sczl_jtbh')
+                ->select()
+        );
+
+        foreach ($list as $k => $row) {
+            $machine = trim((string)($row['设备编号'] ?? ''));
+            $list[$k]['通电工时_全部'] = isset($allHoursMap[$machine])
+                ? round(floatval($allHoursMap[$machine]), 2)
+                : 0;
+            $list[$k]['通电工时_成本'] = isset($costHoursMap[$machine])
+                ? round(floatval($costHoursMap[$machine]), 2)
+                : 0;
+            $list[$k]['科目名称'] = $search;
+            unset($list[$k]['科目金额']);
+        }
+
+        $this->success('成功', $list ?: []);
+    }
 
 
     /**
     /**
      * 其他待摊费用
      * 其他待摊费用
@@ -926,34 +1073,50 @@ class CostAccounting extends Api
         if (empty($param)) {
         if (empty($param)) {
             $this->error('参数错误');
             $this->error('参数错误');
         }
         }
-        $month = substr($param['month'], 0, 4) . '-' . substr($param['month'], 4, 2);
-        $field = [
-            'a.jjcp_gdbh as 工单编号',
-            'sum(b.车间人工) as 车间人工',
-            'sum(b.部门人工附加) as 部门人工附加',
-            'sum(c.金额) as 直接材料',
-            'sum(b.分摊材料) as 分摊材料',
-            'sum(b.直接水电) as 直接水电',
-            'sum(b.分摊水电) as 分摊水电',
-            'sum(b.废气处理) as 废气处理',
-            'sum(b.锅炉 + b.热水锅炉) as 锅炉',
-            'sum(b.空压机) as 空压机',
-            'sum(b.真空鼓风机) as 真空鼓风机',
-            'sum(b.中央空调) as 中央空调',
-            'sum(b.分摊其他) as 分摊其他'
-        ];
+        $sysNy = trim((string)$param['month']);
+        if (!preg_match('/^\d{6}$/', $sysNy)) {
+            $this->error('月份参数错误,格式应为 YYYYMM');
+        }
+        $warehousingMonth = substr($sysNy, 0, 4) . '-' . substr($sysNy, 4, 2);
 
 
-        $list = db('成品入仓')
-            ->alias('a')
-            ->join('成本v23_月度成本明细 b', 'a.jjcp_gdbh = b.sczl_gdbh')
-            ->join('材料出库单列表 c', 'a.jjcp_gdbh = c.表体生产订单号', 'left')
-            ->field($field)
-            ->where('a.jjcp_sj', 'like', $month.'%')
-            ->group('a.jjcp_gdbh')
+        // 当月有成品入仓的工单(去重,避免与成本明细关联时重复累加)
+        $gdbhList = db('成品入仓')
+            ->where('jjcp_sj', 'like', $warehousingMonth . '%')
+            ->group('jjcp_gdbh')
+            ->column('jjcp_gdbh');
+
+        if (empty($gdbhList)) {
+            $this->error('未找到完工工单');
+        }
+
+        // 直接材料等取自已核算的月度成本明细,不再关联材料出库单(避免笛卡尔积放大金额)
+        $list = db('成本v23_月度成本明细')
+            ->where('sys_ny', $sysNy)
+            ->where('sczl_gdbh', 'in', $gdbhList)
+            ->field([
+                'sczl_gdbh as 工单编号',
+                'sum(车间人工) as 车间人工',
+                'sum(部门人工附加) as 部门人工附加',
+                'sum(直接材料) as 直接材料',
+                'sum(考核直接材料) as 考核直接材料',
+                'sum(分摊材料) as 分摊材料',
+                'sum(直接水电) as 直接水电',
+                'sum(分摊水电) as 分摊水电',
+                'sum(废气处理) as 废气处理',
+                'sum(锅炉 + 热水锅炉) as 锅炉',
+                'sum(空压机) as 空压机',
+                'sum(真空鼓风机) as 真空鼓风机',
+                'sum(中央空调) as 中央空调',
+                'sum(分摊其他) as 分摊其他',
+                'sum(分摊折旧) as 分摊折旧',
+                'sum(场地租金) as 场地租金',
+                'sum(直接折旧) as 直接折旧',
+            ])
+            ->group('sczl_gdbh')
             ->select();
             ->select();
-            
+
         if (empty($list)) {
         if (empty($list)) {
-            $this->error('未找到完工工单');
+            $this->error('未找到该月成本明细,请先执行月度成本计算');
         }
         }
 
 
         // 获取所有工单编号
         // 获取所有工单编号
@@ -965,10 +1128,28 @@ class CostAccounting extends Api
             ->delete();
             ->delete();
 
 
         foreach ($list as $k => $v) {
         foreach ($list as $k => $v) {
-            $list[$k]['考核直接材料'] = $v['直接材料'];
-            $list[$k]['成本合计'] = $v['直接材料'] + $v['车间人工'] + $v['部门人工附加'] + $v['分摊材料'] + $v['直接水电'] + $v['分摊水电'] + $v['废气处理'] +
-                $v['锅炉'] + $v['空压机'] + $v['真空鼓风机'] + $v['中央空调'] + $v['分摊其他'];
-            $list[$k]['Sys_id'] = $param['sys_id'];
+            $directMaterial = floatval($v['直接材料']);
+            $assessedMaterial = floatval($v['考核直接材料'] ?? 0);
+            if ($assessedMaterial <= 0) {
+                $assessedMaterial = $directMaterial;
+            }
+            $list[$k]['考核直接材料'] = $assessedMaterial;
+            $list[$k]['成本合计'] = $directMaterial
+                + floatval($v['车间人工'])
+                + floatval($v['部门人工附加'])
+                + floatval($v['分摊材料'])
+                + floatval($v['直接水电'])
+                + floatval($v['分摊水电'])
+                + floatval($v['废气处理'])
+                + floatval($v['锅炉'])
+                + floatval($v['空压机'])
+                + floatval($v['真空鼓风机'])
+                + floatval($v['中央空调'])
+                + floatval($v['分摊其他'])
+                + floatval($v['分摊折旧'] ?? 0)
+                + floatval($v['场地租金'] ?? 0)
+                + floatval($v['直接折旧'] ?? 0);
+            $list[$k]['Sys_id'] = $param['sys_id'] ?? '';
             $list[$k]['Sys_rq'] = date('Y-m-d H:i:s', time());
             $list[$k]['Sys_rq'] = date('Y-m-d H:i:s', time());
         }
         }
 
 
@@ -1072,34 +1253,6 @@ class CostAccounting extends Api
         ]);
         ]);
     }
     }
 
 
-//    public function GetCompletionWorkOrderCostTab()
-//    {
-//        if ($this->request->isGet() === false) {
-//            $this->error('请求错误');
-//        }
-//        $list = db('成本v23_完工工单车间成本汇总')
-//            ->alias('a')
-//            ->join('工单_基本资料 b', 'a.工单编号 = b.Gd_gdbh')
-//            ->join('产品_基本资料 c', 'b.成品代号 = c.产品编号')
-//            ->where('b.成品代号', '<>', '')
-//            ->where('c.客户编号', '<>', '')
-//            ->where('c.客户名称', '<>', '')
-//            ->field([
-//                'TRIM(c.客户名称) as 客户名称',
-//                'TRIM(c.客户编号) as 客户编号'
-//            ])
-//            ->group('客户编号, 客户名称')
-//            ->order('客户编号')
-//            ->select();
-//        if (empty($list)) {
-//            $this->error('未找到完工数据');
-//        }
-//        $data = [];
-//        foreach ($list as $k => $v) {
-//            $data[] = $v['客户编号'] .'-->'.$v['客户名称'];
-//        }
-//        $this->success('成功', $data);
-//    }
 
 
 
 
     /**
     /**
@@ -1151,7 +1304,8 @@ class CostAccounting extends Api
         $totalQuery = db('成本v23_完工工单车间成本汇总')
         $totalQuery = db('成本v23_完工工单车间成本汇总')
             ->alias('a')
             ->alias('a')
             ->join('工单_基本资料 b', 'a.工单编号 = b.Gd_gdbh')
             ->join('工单_基本资料 b', 'a.工单编号 = b.Gd_gdbh')
-            ->where($where);
+            ->where($where)
+            ->group('a.工单编号');
 
 
         $total = $totalQuery->count();
         $total = $totalQuery->count();
 
 
@@ -1167,11 +1321,15 @@ class CostAccounting extends Api
                     'a.*',
                     'a.*',
                     'TRIM(b.成品代号) as 成品代号',
                     'TRIM(b.成品代号) as 成品代号',
                     'TRIM(b.成品名称) as 成品名称',
                     'TRIM(b.成品名称) as 成品名称',
+                    'TRIM(b.接单日期) as 开单日期',
                 ])
                 ])
                 ->where($where)
                 ->where($where)
+                ->group('a.工单编号')
                 ->order('a.工单编号 DESC')
                 ->order('a.工单编号 DESC')
                 ->limit($offset, $pageSize)
                 ->limit($offset, $pageSize)
                 ->select();
                 ->select();
+
+            $list = $this->enrichCompletionWorkOrderCostList($list);
         }
         }
         if (empty($list)) {
         if (empty($list)) {
             $this->error('未找到完工成本数据');
             $this->error('未找到完工成本数据');
@@ -1183,74 +1341,109 @@ class CostAccounting extends Api
         $this->success('成功', $data);
         $this->success('成功', $data);
     }
     }
 
 
-//    public function CompletionWorkOrderCostList()
-//    {
-//        if ($this->request->isGet() === false) {
-//            $this->error('请求错误');
-//        }
-//        $param = $this->request->param();
-//        if (empty($param)) {
-//            $this->error('参数错误');
-//        }
-//
-//// 参数过滤和安全处理
-//        $param = array_map(function($value) {
-//            return is_string($value) ? trim($value) : $value;
-//        }, $param);
-//
-//        $where = [];
-//
-//// 精确查询成品代号
-//        if (!empty($param['code'])) {
-//            $code = htmlspecialchars($param['code'], ENT_QUOTES);
-//            $where['b.成品代号'] = ['like', $code . '%'];
-//        }
-//
-//        // 分页参数处理
-//        $page = max(1, intval($param['page'] ?? 1));
-//        $pageSize = max(1, min(100, intval($param['limit'] ?? 30))); // 限制最大100条
-//
-//        // 搜索条件处理
-//        if (!empty($param['search'])) {
-//            $search = htmlspecialchars($param['search'], ENT_QUOTES);
-//            $where['a.工单编号|b.成品名称'] = ['like', $search . '%'];
-//        }
-//
-//        // 获取总数用于分页(性能优化)
-//        $totalQuery = db('成本v23_完工工单车间成本汇总')
-//            ->alias('a')
-//            ->join('工单_基本资料 b', 'a.工单编号 = b.Gd_gdbh')
-//            ->where($where);
-//
-//        $total = $totalQuery->count();
-//
-//        // 分页查询数据
-//        $list = [];
-//        if ($total > 0) {
-//            $offset = ($page - 1) * $pageSize;
-//
-//            $list = db('成本v23_完工工单车间成本汇总')
-//                ->alias('a')
-//                ->join('工单_基本资料 b', 'a.工单编号 = b.Gd_gdbh')
-//                ->field([
-//                    'a.*',
-//                    'TRIM(b.成品代号) as 成品代号',
-//                    'TRIM(b.成品名称) as 成品名称',
-//                ])
-//                ->where($where)
-//                ->order('a.工单编号 DESC')  // 添加排序,避免分页混乱
-//                ->limit($offset, $pageSize)
-//                ->select();
-//        }
-//        if (empty($list)) {
-//            $this->error('未找到完工成本数据');
-//        }
-//        $data = [
-//            'total' => $total,
-//            'list' => $list,
-//        ];
-//        $this->success('成功', $data);
-//    }
+    /**
+     * 完工工单成本列表:补充合格率、入仓数量、日期、单位成本
+     *
+     * @param array $list
+     * @return array
+     */
+    private function enrichCompletionWorkOrderCostList(array $list): array
+    {
+        if (empty($list)) {
+            return $list;
+        }
+
+        $gdbhList = array_values(array_unique(array_filter(array_map(function ($row) {
+            return isset($row['工单编号']) ? trim((string)$row['工单编号']) : '';
+        }, $list))));
+
+        if (empty($gdbhList)) {
+            return $list;
+        }
+
+        $warehousingRows = db('成品入仓')
+            ->field('jjcp_gdbh, jjcp_yjno, SUM(jjcp_sl) AS sl')
+            ->where('jjcp_gdbh', 'in', $gdbhList)
+            ->group('jjcp_gdbh, jjcp_yjno')
+            ->select();
+
+        $warehousingByOrder = [];
+        foreach ($warehousingRows as $row) {
+            $gdbh = trim((string)$row['jjcp_gdbh']);
+            $sl = floatval($row['sl']);
+            if (!isset($warehousingByOrder[$gdbh])) {
+                $warehousingByOrder[$gdbh] = 0;
+            }
+            $warehousingByOrder[$gdbh] += $sl;
+        }
+
+        $lastWarehousingRows = db('成品入仓')
+            ->field('jjcp_gdbh, MAX(jjcp_sj) AS last_sj')
+            ->where('jjcp_gdbh', 'in', $gdbhList)
+            ->where('jjcp_smb', 'like', '末%')
+            ->group('jjcp_gdbh')
+            ->select();
+
+        $lastWarehousingMap = [];
+        foreach ($lastWarehousingRows as $row) {
+            $gdbh = trim((string)$row['jjcp_gdbh']);
+            $ts = !empty($row['last_sj']) ? strtotime($row['last_sj']) : false;
+            $lastWarehousingMap[$gdbh] = $ts ? date('Y-m-d', $ts) : null;
+        }
+
+        $materialRows = db('工单_质量考核汇总')
+            ->field('Gy0_gdbh, 印件及工序, MAX(实际投料) AS 实际投料')
+            ->where('Gy0_gdbh', 'in', $gdbhList)
+            ->group('Gy0_gdbh, 印件及工序')
+            ->select();
+
+        $actualMaterialByOrder = [];
+        foreach ($materialRows as $row) {
+            $gdbh = trim((string)$row['Gy0_gdbh']);
+            $mat = floatval($row['实际投料']);
+            if ($mat <= 0) {
+                continue;
+            }
+            if (!isset($actualMaterialByOrder[$gdbh])) {
+                $actualMaterialByOrder[$gdbh] = 0;
+            }
+            $actualMaterialByOrder[$gdbh] += $mat * 10000;
+        }
+
+        foreach ($list as $key => $item) {
+            $gdbh = isset($item['工单编号']) ? trim((string)$item['工单编号']) : '';
+
+            if (!empty($item['开单日期'])) {
+                $orderDateTs = strtotime($item['开单日期']);
+                $list[$key]['开单日期'] = $orderDateTs ? date('Y-m-d', $orderDateTs) : trim((string)$item['开单日期']);
+            } else {
+                $list[$key]['开单日期'] = null;
+            }
+
+            $whQty = $warehousingByOrder[$gdbh] ?? 0;
+            $list[$key]['成品入仓数量'] = round($whQty, 2);
+
+            $list[$key]['入仓日期'] = $lastWarehousingMap[$gdbh] ?? null;
+
+            $denominator = $actualMaterialByOrder[$gdbh] ?? 0;
+            if ($denominator > 0 && $whQty > 0) {
+                $rate = $whQty / $denominator * 100;
+                $list[$key]['工单合格率'] = number_format($rate, 2) . '%';
+            } else {
+                $list[$key]['工单合格率'] = null;
+            }
+
+            $totalCost = floatval($item['成本合计'] ?? 0);
+            if ($whQty > 0) {
+                $list[$key]['单位成本'] = round($totalCost / $whQty, 4);
+            } else {
+                $list[$key]['单位成本'] = null;
+            }
+        }
+
+        return $list;
+    }
+
 
 
 
 
 
 
@@ -1348,4 +1541,43 @@ class CostAccounting extends Api
         $this->success('成功', $result);
         $this->success('成功', $result);
     }
     }
 
 
+
+    /**
+     * 完工工单工序成本明细(按工单编号查成本v23_月度成本明细)
+     */
+    public function getCompletionWorkOrderCostDetailList()
+    {
+        if (!$this->request->isGet()) {
+            $this->error('请求错误');
+        }
+
+        $param = $this->request->param();
+        $gdbh = trim((string)($param['gdbh'] ?? $param['工单编号'] ?? $param['order'] ?? ''));
+        if ($gdbh === '') {
+            $this->error('缺少必要参数:工单编号');
+        }
+
+        $query = db('成本v23_月度成本明细')->where('sczl_gdbh', $gdbh);
+
+        $sysNy = trim((string)($param['sys_ny'] ?? $param['month'] ?? ''));
+        if ($sysNy !== '' && preg_match('/^\d{6}$/', $sysNy)) {
+            $query->where('sys_ny', $sysNy);
+        } elseif (!empty($param['year']) && !empty($param['month'])) {
+            $sysNy = $param['year'] . str_pad((string)$param['month'], 2, '0', STR_PAD_LEFT);
+            $query->where('sys_ny', $sysNy);
+        }
+
+        $list = $query
+            ->order('sys_ny desc, sczl_yjno asc, sczl_gxh asc, sczl_jtbh asc')
+            ->select();
+
+        if (empty($list)) {
+            $this->error('未找到该工单工序成本明细');
+        }
+
+        $this->success('成功', [
+            'total' => count($list),
+            'list' => $list,
+        ]);
+    }
 }
 }

+ 2 - 7
application/api/controller/CostCalculation.php

@@ -53,7 +53,7 @@ class CostCalculation extends Api
             ->find();
             ->find();
 
 
         if ($salaryRunning) {
         if ($salaryRunning) {
-            $this->error('该月份的工资计算正在执行中,建议等待工资计算完成后再进行成本计算');
+            $this->success('该月份的工资计算正在执行中,建议等待工资计算完成后再进行成本计算');
         }
         }
 
 
         // 准备任务数据
         // 准备任务数据
@@ -92,12 +92,7 @@ class CostCalculation extends Api
                     'update_time' => date('Y-m-d H:i:s')
                     'update_time' => date('Y-m-d H:i:s')
                 ]);
                 ]);
 
 
-            $this->success('成本计算任务已提交到队列,请稍后查看结果', null, [
-                'task_id' => $taskId,
-                'job_id' => $jobId,
-                'month' => $month,
-                'queue_name' => $queueName
-            ]);
+            $this->success('成本计算任务已提交到队列,请稍后查看结果');
         } else {
         } else {
             // 更新任务状态为失败
             // 更新任务状态为失败
             Db::name('queue_tasks')
             Db::name('queue_tasks')

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 563 - 139
application/service/UnifiedCostCalculationService.php


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно