|
@@ -56,24 +56,24 @@ class OrderSuperLoss extends Api
|
|
|
date DESC,
|
|
date DESC,
|
|
|
编号 ASC;";
|
|
编号 ASC;";
|
|
|
$data = Db::query($sql);
|
|
$data = Db::query($sql);
|
|
|
- $data = \db('工单_质量考核汇总')
|
|
|
|
|
- ->field([
|
|
|
|
|
- 'sys_ny AS date',
|
|
|
|
|
- 'CASE
|
|
|
|
|
- WHEN 产品代号 REGEXP \'[A-Za-z]\' THEN LEFT(产品代号, 5)
|
|
|
|
|
- ELSE LEFT(产品代号, 4)
|
|
|
|
|
- END AS 编号',
|
|
|
|
|
- '客户名称',
|
|
|
|
|
- 'COUNT(DISTINCT Gy0_gdbh) AS count'
|
|
|
|
|
- ])
|
|
|
|
|
- ->group('编号, date')
|
|
|
|
|
- ->order('date desc,编号')
|
|
|
|
|
- ->select();
|
|
|
|
|
|
|
+// $data = \db('工单_质量考核汇总')
|
|
|
|
|
+// ->field([
|
|
|
|
|
+// 'sys_ny AS date',
|
|
|
|
|
+// 'CASE
|
|
|
|
|
+// WHEN 产品代号 REGEXP \'[A-Za-z]\' THEN LEFT(产品代号, 5)
|
|
|
|
|
+// ELSE LEFT(产品代号, 4)
|
|
|
|
|
+// END AS 编号',
|
|
|
|
|
+// '客户名称',
|
|
|
|
|
+// 'COUNT(DISTINCT Gy0_gdbh) AS count'
|
|
|
|
|
+// ])
|
|
|
|
|
+// ->group('编号, date')
|
|
|
|
|
+// ->order('date desc,编号')
|
|
|
|
|
+// ->select();
|
|
|
// 创建一个新数组来存储整理后的数据
|
|
// 创建一个新数组来存储整理后的数据
|
|
|
$organizedData = [];
|
|
$organizedData = [];
|
|
|
// 遍历原始数据
|
|
// 遍历原始数据
|
|
|
foreach ($data as $entry) {
|
|
foreach ($data as $entry) {
|
|
|
- $date = $entry['date'];
|
|
|
|
|
|
|
+ $date = date('Ym',strtotime($entry['date']));
|
|
|
|
|
|
|
|
// 检查日期是否在已整理数据中存在
|
|
// 检查日期是否在已整理数据中存在
|
|
|
if (isset($organizedData[$date])) {
|
|
if (isset($organizedData[$date])) {
|
|
@@ -1673,54 +1673,60 @@ class OrderSuperLoss extends Api
|
|
|
if (!empty($params['code'])) {
|
|
if (!empty($params['code'])) {
|
|
|
// 根据产品代号是否含有字母确定匹配长度
|
|
// 根据产品代号是否含有字母确定匹配长度
|
|
|
$prefixLength = preg_match('/[A-Za-z]/', $params['code']) ? 5 : 4;
|
|
$prefixLength = preg_match('/[A-Za-z]/', $params['code']) ? 5 : 4;
|
|
|
- $where['产品代号'] = ['LIKE', substr($params['code'], 0, $prefixLength) . '%'];
|
|
|
|
|
|
|
+ $where['a.jjcp_cpdh'] = ['LIKE', substr($params['code'], 0, $prefixLength) . '%'];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (!empty($params['date'])) {
|
|
if (!empty($params['date'])) {
|
|
|
- $where['sys_ny'] = $params['date'];
|
|
|
|
|
|
|
+ $year = substr($params['date'], 0, 4); // 取前4位作为年份
|
|
|
|
|
+ $month = substr($params['date'], 4, 2); // 取后2位作为月份
|
|
|
|
|
+
|
|
|
|
|
+ // 格式化为需要的值
|
|
|
|
|
+ $formattedDate = $year . '-' . $month;
|
|
|
|
|
+ $where['a.jjcp_sj'] = ['like',$formattedDate.'%'];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (!empty($params['search'])) {
|
|
if (!empty($params['search'])) {
|
|
|
if (!empty($params['date']) || !empty($params['code'])) {
|
|
if (!empty($params['date']) || !empty($params['code'])) {
|
|
|
$this->error('参数错误');
|
|
$this->error('参数错误');
|
|
|
}
|
|
}
|
|
|
- $where['Gy0_gdbh|产品名称|产品代号'] = ['like', '%' . $params['search'] . '%'];
|
|
|
|
|
|
|
+ $where['a.jjcp_gdbh|a.jjcp_cpdh|a.jjcp_cpmc'] = ['like', '%' . $params['search'] . '%'];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 定义字段
|
|
// 定义字段
|
|
|
$field = '
|
|
$field = '
|
|
|
- sys_ny,
|
|
|
|
|
- Gy0_gdbh AS Gd_gdbh,
|
|
|
|
|
- `印件及工序` AS jjcp_yjno,
|
|
|
|
|
- `印件及工序` AS yj_Yjno,
|
|
|
|
|
- `联数` AS yj_ls,
|
|
|
|
|
- `产品代号` AS 成品编码,
|
|
|
|
|
- `产品名称` AS 成品名称,
|
|
|
|
|
- `实际投料`,
|
|
|
|
|
- `计量单位`,
|
|
|
|
|
- DATE(`入仓日期`) AS warehousing_date,
|
|
|
|
|
- `入仓数量` AS warehousing_num,
|
|
|
|
|
- SUM(DISTINCT `计划损耗`) AS `工单计划损耗`,
|
|
|
|
|
- `废品合计`,
|
|
|
|
|
- SUM(`CjsJe`) AS reward_money,
|
|
|
|
|
- `印件无形损` AS 工单无形损,
|
|
|
|
|
- `材料废`,
|
|
|
|
|
- `零头处理`,
|
|
|
|
|
- `外发废`,
|
|
|
|
|
- SUM(`班组制程废品`) AS zcfp,
|
|
|
|
|
- `班组分摊质检废品` AS 工单质检废
|
|
|
|
|
|
|
+ b.sys_ny,
|
|
|
|
|
+ a.jjcp_gdbh AS Gd_gdbh,
|
|
|
|
|
+ a.jjcp_yjno AS jjcp_yjno,
|
|
|
|
|
+ a.jjcp_yjno AS yj_Yjno,
|
|
|
|
|
+ c.yj_ls AS yj_ls,
|
|
|
|
|
+ c.yj_cpdh AS 成品编码,
|
|
|
|
|
+ c.yj_yjmc AS 成品名称,
|
|
|
|
|
+ b.`实际投料`,
|
|
|
|
|
+ b.`计量单位`,
|
|
|
|
|
+ DATE(a.jjcp_sj) AS warehousing_date,
|
|
|
|
|
+ SUM(a.jjcp_sl) AS warehousing_num,
|
|
|
|
|
+ SUM(DISTINCT b.`计划损耗`) AS `工单计划损耗`,
|
|
|
|
|
+ b.`废品合计`,
|
|
|
|
|
+ SUM(b.`CjsJe`) AS reward_money,
|
|
|
|
|
+ b.`印件无形损` AS 工单无形损,
|
|
|
|
|
+ b.`材料废`,
|
|
|
|
|
+ b.`零头处理`,
|
|
|
|
|
+ b.`外发废`,
|
|
|
|
|
+ SUM(b.`班组制程废品`) AS zcfp,
|
|
|
|
|
+ b.`班组分摊质检废品` AS 工单质检废
|
|
|
';
|
|
';
|
|
|
-
|
|
|
|
|
- // 查询数据
|
|
|
|
|
- $list = \db('工单_质量考核汇总')
|
|
|
|
|
|
|
+ $list = \db('成品入仓')
|
|
|
|
|
+ ->alias('a')
|
|
|
|
|
+ ->join('工单_质量考核汇总 b','a.jjcp_gdbh = b.Gy0_gdbh AND a.jjcp_yjno = b.印件及工序','left')
|
|
|
|
|
+ ->join('工单_印件资料 c','a.jjcp_gdbh = c.Yj_Gdbh AND a.jjcp_yjno = c.yj_Yjno')
|
|
|
->field($field)
|
|
->field($field)
|
|
|
->where($where)
|
|
->where($where)
|
|
|
- ->group('Gy0_gdbh, `印件及工序`')
|
|
|
|
|
- ->order('sys_rq DESC')
|
|
|
|
|
|
|
+ ->where('a.jjcp_smb','like','末%')
|
|
|
|
|
+ ->group('b.Gy0_gdbh, b.`印件及工序`')
|
|
|
|
|
+ ->order('b.sys_rq DESC')
|
|
|
->page($pages)
|
|
->page($pages)
|
|
|
->limit($limit)
|
|
->limit($limit)
|
|
|
->select();
|
|
->select();
|
|
|
-
|
|
|
|
|
// 处理查询结果
|
|
// 处理查询结果
|
|
|
foreach ($list as $key => $value) {
|
|
foreach ($list as $key => $value) {
|
|
|
$status = \db('工单_印件资料')
|
|
$status = \db('工单_印件资料')
|
|
@@ -1730,11 +1736,15 @@ class OrderSuperLoss extends Api
|
|
|
|
|
|
|
|
$list[$key]['质量考核'] = $status;
|
|
$list[$key]['质量考核'] = $status;
|
|
|
$list[$key]['考核'] = ($status == 1) ? '否' : '是';
|
|
$list[$key]['考核'] = ($status == 1) ? '否' : '是';
|
|
|
-
|
|
|
|
|
- $actualMaterial = $value['实际投料'] * 10000;
|
|
|
|
|
- $list[$key]['target_rate'] = $this->calculateRate($actualMaterial, $value['工单计划损耗']);
|
|
|
|
|
- $list[$key]['real_rate'] = $value['warehousing_num']/($value['实际投料']*10000)*100;
|
|
|
|
|
- $list[$key]['real_rate'] = number_format($list[$key]['real_rate'], 2).'%';
|
|
|
|
|
|
|
+ if ($value['实际投料'] !== null){
|
|
|
|
|
+ $actualMaterial = $value['实际投料'] * 10000;
|
|
|
|
|
+ $list[$key]['target_rate'] = $this->calculateRate($actualMaterial, $value['工单计划损耗']);
|
|
|
|
|
+ $list[$key]['real_rate'] = $value['warehousing_num']/($value['实际投料']*10000)*100;
|
|
|
|
|
+ $list[$key]['real_rate'] = number_format($list[$key]['real_rate'], 2).'%';
|
|
|
|
|
+ }else{
|
|
|
|
|
+ $list[$key]['target_rate'] = null;
|
|
|
|
|
+ $list[$key]['real_rate'] = null;
|
|
|
|
|
+ }
|
|
|
$list[$key]['reward_rate'] = '1'; // or some logic if needed
|
|
$list[$key]['reward_rate'] = '1'; // or some logic if needed
|
|
|
}
|
|
}
|
|
|
|
|
|