zck 1 день тому
батько
коміт
d192d4d66f

+ 184 - 27
application/api/controller/CostAccounting.php

@@ -818,17 +818,17 @@ class CostAccounting extends Api
             ->select();
         $data = [];
         foreach ($list as $k => $v) {
-           $data[] = [
-               'Sys_ny' => $param['month'],
-               '部门名称' => $v['使用部门'],
-               '费用类型' => '直接',
-               '设备编号' => $v['sczl_jtbh'],
-               '科目名称' => $v['设备名称'],
-               '耗电量' => $v['通电工时'],
-               '单位电价' => 0.69,
-               'Sys_id' => $param['sys_id'],
-               'Sys_rq' => date('Y-m-d H:i:s', time()),
-           ];
+            $data[] = [
+                'Sys_ny' => $param['month'],
+                '部门名称' => $v['使用部门'],
+                '费用类型' => '直接',
+                '设备编号' => $v['sczl_jtbh'],
+                '科目名称' => $v['设备名称'],
+                '耗电量' => $v['通电工时'],
+                '单位电价' => 0.69,
+                'Sys_id' => $param['sys_id'],
+                'Sys_rq' => date('Y-m-d H:i:s', time()),
+            ];
         }
         $sql = db('成本_各月水电气')->fetchSql(true)->insertAll($data);
         $res = db()->query($sql);
@@ -994,6 +994,8 @@ class CostAccounting extends Api
         if ($this->request->isGet() === false) {
             $this->error('请求错误');
         }
+
+        // 获取客户列表
         $list = db('成本v23_完工工单车间成本汇总')
             ->alias('a')
             ->join('工单_基本资料 b', 'a.工单编号 = b.Gd_gdbh')
@@ -1008,16 +1010,97 @@ class CostAccounting extends Api
             ->group('客户编号, 客户名称')
             ->order('客户编号')
             ->select();
+
         if (empty($list)) {
             $this->error('未找到完工数据');
         }
+
         $data = [];
         foreach ($list as $k => $v) {
-            $data[] = $v['客户编号'] .'-->'.$v['客户名称'];
+            $data[] = $v['客户编号'] . '-->' . $v['客户名称'];
         }
-        $this->success('成功', $data);
+
+        // 树形日期结构(年月日)
+        $dateList = db('成本v23_完工工单车间成本汇总')
+            ->alias('a')
+            ->join('工单_基本资料 b', 'a.工单编号 = b.Gd_gdbh')
+            ->join('产品_基本资料 c', 'b.成品代号 = c.产品编号')
+            ->where('b.成品代号', '<>', '')
+            ->where('c.客户编号', '<>', '')
+            ->where('c.客户名称', '<>', '')
+            ->field('DISTINCT DATE_FORMAT(a.Sys_rq, \'%Y-%m-%d\') AS Sys_rq')
+            ->order('a.Sys_rq DESC')
+            ->select();
+
+        $tree = [];
+        foreach ($dateList as $val) {
+            $rq = $val['Sys_rq'];
+            $year = date('Y', strtotime($rq));
+            $month = date('Y-m', strtotime($rq));
+            $day = $rq;
+
+            // 年
+            if (!isset($tree[$year])) {
+                $tree[$year] = [
+                    'year' => $year,
+                    'children' => []
+                ];
+            }
+
+            // 月
+            if (!isset($tree[$year]['children'][$month])) {
+                $tree[$year]['children'][$month] = [
+                    'month' => $month,
+                    'children' => []
+                ];
+            }
+
+            // 日
+            if (!in_array($day, $tree[$year]['children'][$month]['children'])) {
+                $tree[$year]['children'][$month]['children'][] = $day;
+            }
+        }
+
+        // 重新索引
+        $tree = array_values($tree);
+        foreach ($tree as &$yearItem) {
+            $yearItem['children'] = array_values($yearItem['children']);
+        }
+        $this->success('成功', [
+            'data' => $data,  // 客户列表
+            'list' => $tree   // 树形日期(年-月-日层级)
+        ]);
     }
 
+//    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);
+//    }
+
 
     /**
      * 完工工单成本列表
@@ -1036,30 +1119,35 @@ class CostAccounting extends Api
             $this->error('参数错误');
         }
 
-// 参数过滤和安全处理
-        $param = array_map(function($value) {
+        // 参数过滤
+        $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 . '%'];
         }
 
-        // 分页参数处理
+        //按日期 Sys_rq 查询
+        if (!empty($param['Sys_rq'])) {
+            $where['a.sys_rq'] = ['like', $param['Sys_rq'] . '%'];
+        }
+
+        // 分页参数
         $page = max(1, intval($param['page'] ?? 1));
-        $pageSize = max(1, min(100, intval($param['limit'] ?? 30))); // 限制最大100条
+        $pageSize = max(1, min(100, intval($param['limit'] ?? 30)));
 
-        // 搜索条件处理
+        // 搜索
         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')
@@ -1067,7 +1155,7 @@ class CostAccounting extends Api
 
         $total = $totalQuery->count();
 
-        // 分页查询数据
+        // 查询列表
         $list = [];
         if ($total > 0) {
             $offset = ($page - 1) * $pageSize;
@@ -1081,20 +1169,89 @@ class CostAccounting extends Api
                     'TRIM(b.成品名称) as 成品名称',
                 ])
                 ->where($where)
-                ->order('a.工单编号 DESC')  // 添加排序,避免分页混乱
+                ->order('a.工单编号 DESC')
                 ->limit($offset, $pageSize)
                 ->select();
         }
         if (empty($list)) {
             $this->error('未找到完工成本数据');
         }
-         $data = [
+        $data = [
             'total' => $total,
             'list' => $list,
         ];
         $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);
+//    }
+
 
 
     /**
@@ -1114,7 +1271,7 @@ class CostAccounting extends Api
         // 2. 参数获取和验证
         $year = $this->request->param('year');
         $month = $this->request->param('month');
-        
+
         if (empty($year)) {
             $this->error('缺少必要参数:year');
         }
@@ -1152,7 +1309,7 @@ class CostAccounting extends Api
                     SUM(个人加班工资) as 加班工资,
                     sys_ny as 年月
                 ');
-            
+
             // 根据查询粒度决定是否分组
             if ($queryType == 'year') {
                 // 查询整年数据,按年月分组
@@ -1167,7 +1324,7 @@ class CostAccounting extends Api
                 foreach ($processData as &$item) {
                     $item['核算产量'] = $item['车头产量'] + $item['补产产量'];
                     $item['产量工资合计'] = $item['计件工资'] + $item['加班工资'];
-                    
+
                     // 格式化年月显示
                     if (isset($item['年月']) && strlen($item['年月']) == 6) {
                         $item['年份'] = substr($item['年月'], 0, 4);
@@ -1191,4 +1348,4 @@ class CostAccounting extends Api
         $this->success('成功', $result);
     }
 
-}
+}

+ 2 - 2
application/api/controller/ProductionLot.php

@@ -30,7 +30,7 @@ class ProductionLot extends Api
         }
         $param = $this->request->param();
         if (empty($param['search'])){
-            $where['Mod_rq'] = ['between',[date('Y-m-d 00:00:00',time()-1209600),date('Y-m-d H:i:s',time())]];
+            $where['a.Mod_rq'] = ['between',[date('Y-m-d 00:00:00',time()-1209600),date('Y-m-d H:i:s',time())]];
         }else{
             $where['Gd_gdbh|Gd_客户代号|成品名称|Gd_cpmc'] = ['like','%'.$param['search'].'%'];
         }
@@ -222,7 +222,7 @@ class ProductionLot extends Api
         if (!isset($param['gdbh']) || !isset($param['yjno'])|| !isset($param['num'])){
             $this->success('参数错误');
         }
-        $list = db('制程检验_记录附加') 
+        $list = db('制程检验_记录附加')
             ->field('流程单号,缺陷备注')
             ->where('工单编号',$param['gdbh'])
             ->where('印件号',$param['yjno'])