|
@@ -307,30 +307,57 @@ class WorkOrder extends Api
|
|
|
/**
|
|
/**
|
|
|
* 月度客户订单汇总
|
|
* 月度客户订单汇总
|
|
|
*/
|
|
*/
|
|
|
- public function ProductInformation(){
|
|
|
|
|
|
|
+ public function ProductInformation()
|
|
|
|
|
+ {
|
|
|
if ($this->request->isGet() === false) {
|
|
if ($this->request->isGet() === false) {
|
|
|
$this->error('请求错误');
|
|
$this->error('请求错误');
|
|
|
}
|
|
}
|
|
|
- $where['j.gd_statu'] = '2-生产中';
|
|
|
|
|
- $where['j.Mod_rq'] = null;
|
|
|
|
|
|
|
|
|
|
|
|
+ // 查询生产中和未生产的数据,使用 CASE WHEN 进行分类统计
|
|
|
$data = \db('工单_基本资料')->alias('j')
|
|
$data = \db('工单_基本资料')->alias('j')
|
|
|
- ->field('j.客户编号, REPLACE(DATE_FORMAT(j.Sys_rq, "%Y-%m"), "-", "") as 年月, GROUP_CONCAT(DISTINCT j.订单编号) as 订单编号')
|
|
|
|
|
- ->where($where)
|
|
|
|
|
- ->order('j.客户编号 asc')
|
|
|
|
|
|
|
+ ->field('
|
|
|
|
|
+ j.客户编号,
|
|
|
|
|
+ REPLACE(DATE_FORMAT(j.Sys_rq, "%Y-%m"), "-", "") as 年月,
|
|
|
|
|
+ SUM(CASE WHEN j.gd_statu = "2-生产中" THEN 1 ELSE 0 END) as 生产中数量,
|
|
|
|
|
+ SUM(CASE WHEN j.gd_statu = "1-计划中" THEN 1 ELSE 0 END) as 未生产数量
|
|
|
|
|
+ ')
|
|
|
|
|
+ ->where('j.Mod_rq', null) // 统一的查询条件
|
|
|
->group('j.客户编号, 年月')
|
|
->group('j.客户编号, 年月')
|
|
|
|
|
+ ->order('j.客户编号 asc')
|
|
|
->select();
|
|
->select();
|
|
|
|
|
|
|
|
|
|
+ // 格式化数据
|
|
|
$result = [];
|
|
$result = [];
|
|
|
foreach ($data as $item) {
|
|
foreach ($data as $item) {
|
|
|
- $orderlist = count(explode(',', $item['订单编号']));
|
|
|
|
|
- $result[$item['年月']][] = [$item['客户编号'] . '【生产中:' . $orderlist . '】',
|
|
|
|
|
- ];
|
|
|
|
|
|
|
+ $result[$item['年月']][] = $item['客户编号'] . '【生产中' . $item['生产中数量'] . ',计划中' . $item['未生产数量'] . '】';
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$this->success('请求成功', ['data' => $result]);
|
|
$this->success('请求成功', ['data' => $result]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// public function ProductInformation(){
|
|
|
|
|
+// if ($this->request->isGet() === false) {
|
|
|
|
|
+// $this->error('请求错误');
|
|
|
|
|
+// }
|
|
|
|
|
+// $where['j.gd_statu'] = '2-生产中';
|
|
|
|
|
+// $where['j.Mod_rq'] = null;
|
|
|
|
|
+//
|
|
|
|
|
+// $data = \db('工单_基本资料')->alias('j')
|
|
|
|
|
+// ->field('j.客户编号, REPLACE(DATE_FORMAT(j.Sys_rq, "%Y-%m"), "-", "") as 年月, GROUP_CONCAT(DISTINCT j.订单编号) as 订单编号')
|
|
|
|
|
+// ->where($where)
|
|
|
|
|
+// ->order('j.客户编号 asc')
|
|
|
|
|
+// ->group('j.客户编号, 年月')
|
|
|
|
|
+// ->select();
|
|
|
|
|
+// $result = [];
|
|
|
|
|
+// foreach ($data as $item) {
|
|
|
|
|
+// $orderlist = count(explode(',', $item['订单编号']));
|
|
|
|
|
+// $result[$item['年月']][] = [$item['客户编号'] . '【生产中:' . $orderlist . '】',
|
|
|
|
|
+// ];
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// $this->success('请求成功', ['data' => $result]);
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -837,6 +864,7 @@ class WorkOrder extends Api
|
|
|
} else {
|
|
} else {
|
|
|
$param['订单编号'] = $param['订单编号'];
|
|
$param['订单编号'] = $param['订单编号'];
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
$sql= \db('工单_基本资料')->fetchSql(true)->insert($param);
|
|
$sql= \db('工单_基本资料')->fetchSql(true)->insert($param);
|
|
|
$res = \db()->query($sql);
|
|
$res = \db()->query($sql);
|
|
|
if ($res !== false){
|
|
if ($res !== false){
|
|
@@ -1127,6 +1155,10 @@ class WorkOrder extends Api
|
|
|
$prefixDir = ROOT_PATH . '/public/';
|
|
$prefixDir = ROOT_PATH . '/public/';
|
|
|
$uploadDir = ''.'uploads/' . date('Ymd') . '/' . $relateId;
|
|
$uploadDir = ''.'uploads/' . date('Ymd') . '/' . $relateId;
|
|
|
|
|
|
|
|
|
|
+ DB::name('工单_基本资料')
|
|
|
|
|
+ ->where('订单编号', $relateId)
|
|
|
|
|
+ ->update(['gd_statu' => '2-生产中']);
|
|
|
|
|
+
|
|
|
// 检查并创建目录
|
|
// 检查并创建目录
|
|
|
if (!is_dir($prefixDir . $uploadDir)) {
|
|
if (!is_dir($prefixDir . $uploadDir)) {
|
|
|
mkdir($prefixDir . $uploadDir, 0777, true);
|
|
mkdir($prefixDir . $uploadDir, 0777, true);
|
|
@@ -1448,9 +1480,6 @@ class WorkOrder extends Api
|
|
|
$finalList[] = $mergedData[$key]; // 在组的尾部添加合并数据
|
|
$finalList[] = $mergedData[$key]; // 在组的尾部添加合并数据
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
// 将船样为1的数据添加到最终列表中
|
|
// 将船样为1的数据添加到最终列表中
|
|
|
$finalList = array_merge($finalList, $chuanyang);
|
|
$finalList = array_merge($finalList, $chuanyang);
|
|
|
$data['process'] = $finalList;
|
|
$data['process'] = $finalList;
|
|
@@ -1458,147 +1487,41 @@ class WorkOrder extends Api
|
|
|
$data['xhdata'] = $arr;
|
|
$data['xhdata'] = $arr;
|
|
|
$this->success('成功',$data);
|
|
$this->success('成功',$data);
|
|
|
} elseif (strlen($afterDash) == 4) {
|
|
} elseif (strlen($afterDash) == 4) {
|
|
|
-
|
|
|
|
|
-// if($list['water'] == 1){
|
|
|
|
|
- // 查询非船样数据
|
|
|
|
|
- // 获取数据
|
|
|
|
|
|
|
+ //一条子订单编号一个条码,统计颜色
|
|
|
// $processlist = \db('工单_印件资料')
|
|
// $processlist = \db('工单_印件资料')
|
|
|
// ->where('订单编号', $param['order'])
|
|
// ->where('订单编号', $param['order'])
|
|
|
-// ->where($where)
|
|
|
|
|
-// ->where('船样', 0)
|
|
|
|
|
-// ->field('子订单编号,款号, color_id, 颜色, 颜色备注, zdtotal,船样, Uniqid,
|
|
|
|
|
-// cm1, cm2, cm3, cm4, cm5, cm6, cm7, cm8, cm9, cm10,
|
|
|
|
|
-// cmsl1, cmsl2, cmsl3, cmsl4, cmsl5, cmsl6, cmsl7, cmsl8, cmsl9, cmsl10')
|
|
|
|
|
|
|
+// ->whereNull('Mod_rq') // 查询未删除数据
|
|
|
// ->select();
|
|
// ->select();
|
|
|
//
|
|
//
|
|
|
-//// 格式化原始数据
|
|
|
|
|
-// $formattedData = [];
|
|
|
|
|
|
|
+// $table = [];
|
|
|
// foreach ($processlist as $item) {
|
|
// foreach ($processlist as $item) {
|
|
|
|
|
+// // 当前子订单编号的数据
|
|
|
|
|
+// $subOrder = [
|
|
|
|
|
+// '颜色备注' => $item['颜色备注'],
|
|
|
|
|
+// '色系名称' => $item['颜色'],
|
|
|
|
|
+// '订单编号' => $item['订单编号'],
|
|
|
|
|
+// '子订单编号' => $item['子订单编号'],
|
|
|
|
|
+// '条码' => $item['子订单编号'],
|
|
|
|
|
+// '款号' => $item['款号'],
|
|
|
|
|
+// ];
|
|
|
|
|
+// // 当前子订单编号的合计
|
|
|
|
|
+// $subOrderTotal = 0;
|
|
|
// for ($i = 1; $i <= 10; $i++) {
|
|
// for ($i = 1; $i <= 10; $i++) {
|
|
|
// if (!empty($item['cm' . $i])) {
|
|
// if (!empty($item['cm' . $i])) {
|
|
|
-// $size = $item['cm' . $i];
|
|
|
|
|
-// $item[$size] = $item['cmsl' . $i]; // 动态映射尺码字段
|
|
|
|
|
-// }
|
|
|
|
|
-// unset($item['cm' . $i], $item['cmsl' . $i]); // 删除原始字段
|
|
|
|
|
-// }
|
|
|
|
|
-// $formattedData[] = $item;
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-//// 合并数据逻辑
|
|
|
|
|
-// $result = [];
|
|
|
|
|
-// foreach ($formattedData as $item) {
|
|
|
|
|
-// $key = $item['color_id'] . '_' . $item['颜色备注'];
|
|
|
|
|
-// if (!isset($result[$key])) {
|
|
|
|
|
-// $result[$key] = $item;
|
|
|
|
|
-// $result[$key]['条码'] = $item['子订单编号']; // 初始化条码字段
|
|
|
|
|
-// } else {
|
|
|
|
|
-// foreach ($item as $size => $value) {
|
|
|
|
|
-// if (is_numeric($size)) {
|
|
|
|
|
-// $result[$key][$size] = ($result[$key][$size] ?? 0) + $value; // 累加尺码
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-// $result[$key]['zdtotal'] += $item['zdtotal']; // 累加总数
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-//// 按照合并逻辑插入合并数据
|
|
|
|
|
-// $finalData = $formattedData; // 复制原始数据
|
|
|
|
|
-// foreach ($result as $key => $mergeItem) {
|
|
|
|
|
-// foreach (array_reverse($finalData, true) as $index => $originalItem) {
|
|
|
|
|
-// if ($originalItem['color_id'] . '_' . $originalItem['颜色备注'] === $key) {
|
|
|
|
|
-// // 插入合并数据到最后一条记录之后
|
|
|
|
|
-// $finalData = array_merge(
|
|
|
|
|
-// array_slice($finalData, 0, $index + 1),
|
|
|
|
|
-// [$mergeItem],
|
|
|
|
|
-// array_slice($finalData, $index + 1)
|
|
|
|
|
-// );
|
|
|
|
|
-// break;
|
|
|
|
|
|
|
+// $subOrder[$item['cm' . $i]] = $item['cmsl' . $i];
|
|
|
|
|
+// // 累加每个尺码的数量
|
|
|
|
|
+// $subOrderTotal += $item['cmsl' . $i];
|
|
|
// }
|
|
// }
|
|
|
|
|
+// unset($item['cm' . $i], $item['cmsl' . $i]);
|
|
|
// }
|
|
// }
|
|
|
|
|
+// $subOrder['合计'] = $subOrderTotal; // 添加合计
|
|
|
|
|
+// $table[] = $subOrder; // 将当前子订单的数据添加到 $table 中
|
|
|
// }
|
|
// }
|
|
|
-//
|
|
|
|
|
-//// 按 color_id 和 颜色备注 排序
|
|
|
|
|
-// usort($finalData, function ($a, $b) {
|
|
|
|
|
-// // 按 color_id 排序
|
|
|
|
|
-// if ($a['color_id'] === $b['color_id']) {
|
|
|
|
|
-// // 如果 color_id 相同,按颜色备注排序
|
|
|
|
|
-// return strcmp($a['颜色备注'], $b['颜色备注']);
|
|
|
|
|
-// }
|
|
|
|
|
-// return strcmp($a['color_id'], $b['color_id']);
|
|
|
|
|
-// });
|
|
|
|
|
-//
|
|
|
|
|
-// // 查询船样为 1 的数据
|
|
|
|
|
-// $chuanyang = \db('工单_印件资料')
|
|
|
|
|
-// ->where('订单编号', $param['order'])
|
|
|
|
|
-// ->where($where)
|
|
|
|
|
-// ->where('船样', 1)
|
|
|
|
|
-// ->field('子订单编号,款号, color_id, 颜色, 颜色备注, zdtotal,船样, Uniqid,
|
|
|
|
|
-// cm1, cm2, cm3, cm4, cm5, cm6, cm7, cm8, cm9, cm10,
|
|
|
|
|
-// cmsl1, cmsl2, cmsl3, cmsl4, cmsl5, cmsl6, cmsl7, cmsl8, cmsl9, cmsl10')
|
|
|
|
|
-// ->select();
|
|
|
|
|
-//
|
|
|
|
|
-//// 格式化船样数据// 格式化原始数据
|
|
|
|
|
-// $chuanyangvval = [];
|
|
|
|
|
-// foreach ($chuanyang as $item) {
|
|
|
|
|
-// for ($i = 1; $i <= 10; $i++) {
|
|
|
|
|
-// if (!empty($item['cm' . $i])) {
|
|
|
|
|
-// $size = $item['cm' . $i];
|
|
|
|
|
-// $item[$size] = $item['cmsl' . $i]; // 动态映射尺码字段
|
|
|
|
|
-// }
|
|
|
|
|
-// unset($item['cm' . $i], $item['cmsl' . $i]); // 删除原始字段
|
|
|
|
|
-// }
|
|
|
|
|
-// $item['条码'] = $item['子订单编号']; // 添加条码字段
|
|
|
|
|
-//
|
|
|
|
|
-// $chuanyangvval[] = $item;
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-// // 合并船样和非船样数据并去重
|
|
|
|
|
-// $final = array_map('unserialize', array_unique(array_map('serialize', array_merge($finalData, $chuanyangvval))));
|
|
|
|
|
-//
|
|
|
|
|
-// // 清理数据:对于船样为 0 的记录,删除子订单编号和颜色字段
|
|
|
|
|
-// foreach ($final as &$item) {
|
|
|
|
|
-// if (isset($item['条码']) && $item['船样'] == 0) {
|
|
|
|
|
-// unset($item['子订单编号'], $item['颜色']);
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-// // 统计累积数据
|
|
|
|
|
-// $counthz = \db('工单_印件资料')
|
|
|
|
|
-// ->where('订单编号', $param['order'])
|
|
|
|
|
-// ->where($where)
|
|
|
|
|
-// ->select();
|
|
|
|
|
-//
|
|
|
|
|
-// // 初始化统计数组
|
|
|
|
|
-// $scslTotals = [
|
|
|
|
|
-// 'cmsl1' => 0, 'cmsl2' => 0, 'cmsl3' => 0, 'cmsl4' => 0, 'cmsl5' => 0,
|
|
|
|
|
-// 'cmsl6' => 0, 'cmsl7' => 0, 'cmsl8' => 0, 'cmsl9' => 0, 'cmsl10' => 0,
|
|
|
|
|
-// 'zdtotal' => 0,
|
|
|
|
|
-// ];
|
|
|
|
|
-//
|
|
|
|
|
-// // 累加统计尺码数量
|
|
|
|
|
-// foreach ($counthz as $item) {
|
|
|
|
|
-// for ($i = 1; $i <= 10; $i++) {
|
|
|
|
|
-// $key = "cmsl{$i}";
|
|
|
|
|
-// $scslTotals[$key] += (int)($item[$key] ?? 0); // 累加每个尺码的数量
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-// $scslTotals['zdtotal'] = array_sum(array_slice($scslTotals, 0, 10)); // 计算总数
|
|
|
|
|
-// echo "<pre>";
|
|
|
|
|
-// print_r($processlist);
|
|
|
|
|
-// echo "<pre>";
|
|
|
|
|
-// // 返回数据给前端
|
|
|
|
|
-// $data['process'] = $processlist;
|
|
|
|
|
-// $data['scslTotals'] = $scslTotals;//汇总数据集
|
|
|
|
|
-// $data['order'] = $list;//表格数据
|
|
|
|
|
-// $data['xhdata'] = $arr;//尺码表头
|
|
|
|
|
-//
|
|
|
|
|
-// $this->success('成功', $data);
|
|
|
|
|
-// }else{
|
|
|
|
|
- //一条子订单编号一个条码,统计颜色
|
|
|
|
|
$processlist = \db('工单_印件资料')
|
|
$processlist = \db('工单_印件资料')
|
|
|
->where('订单编号', $param['order'])
|
|
->where('订单编号', $param['order'])
|
|
|
->whereNull('Mod_rq') // 查询未删除数据
|
|
->whereNull('Mod_rq') // 查询未删除数据
|
|
|
->select();
|
|
->select();
|
|
|
|
|
+
|
|
|
$table = [];
|
|
$table = [];
|
|
|
foreach ($processlist as $item) {
|
|
foreach ($processlist as $item) {
|
|
|
// 当前子订单编号的数据
|
|
// 当前子订单编号的数据
|
|
@@ -1613,17 +1536,20 @@ class WorkOrder extends Api
|
|
|
// 当前子订单编号的合计
|
|
// 当前子订单编号的合计
|
|
|
$subOrderTotal = 0;
|
|
$subOrderTotal = 0;
|
|
|
for ($i = 1; $i <= 10; $i++) {
|
|
for ($i = 1; $i <= 10; $i++) {
|
|
|
- if (!empty($item['cm' . $i])) {
|
|
|
|
|
- $subOrder[$item['cm' . $i]] = $item['cmsl' . $i];
|
|
|
|
|
|
|
+ // 判断 cm 和 cmsl 是否有值,空值不显示,0 则显示
|
|
|
|
|
+ if (isset($item['cm' . $i]) && $item['cm' . $i] !== '') {
|
|
|
|
|
+ $subOrder[$item['cm' . $i]] = $item['cmsl' . $i] ?? 0; // 默认数量为 0
|
|
|
// 累加每个尺码的数量
|
|
// 累加每个尺码的数量
|
|
|
- $subOrderTotal += $item['cmsl' . $i];
|
|
|
|
|
|
|
+ $subOrderTotal += (int)$item['cmsl' . $i]; // 确保是数值类型
|
|
|
}
|
|
}
|
|
|
|
|
+ // 清理字段
|
|
|
unset($item['cm' . $i], $item['cmsl' . $i]);
|
|
unset($item['cm' . $i], $item['cmsl' . $i]);
|
|
|
}
|
|
}
|
|
|
$subOrder['合计'] = $subOrderTotal; // 添加合计
|
|
$subOrder['合计'] = $subOrderTotal; // 添加合计
|
|
|
$table[] = $subOrder; // 将当前子订单的数据添加到 $table 中
|
|
$table[] = $subOrder; // 将当前子订单的数据添加到 $table 中
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// 初始化汇总数组
|
|
// 初始化汇总数组
|
|
|
$scslTotals = [
|
|
$scslTotals = [
|
|
|
"cmsl1" => 0,
|
|
"cmsl1" => 0,
|