|
|
@@ -107,263 +107,263 @@ class OrderSuperLoss extends Api
|
|
|
* 节损奖 小盒0.02 大盒0.09
|
|
|
*
|
|
|
*/
|
|
|
- public function getList(){
|
|
|
- if (Request::instance()->isGet() == false) {
|
|
|
- $this->error('非法请求');
|
|
|
- }
|
|
|
- $params = Request::instance()->param();
|
|
|
- $where = [];
|
|
|
- if (!empty($params['code'])) {
|
|
|
- if (!empty($params['search'])) {
|
|
|
- $this->error('参数错误');
|
|
|
- }
|
|
|
- }
|
|
|
- if (!empty($params['date'])) {
|
|
|
- if (!empty($params['search'])) {
|
|
|
- $this->error('参数错误');
|
|
|
- }
|
|
|
- $date_year = substr($params['date'],0,4);
|
|
|
- $date_mon = substr($params['date'],4);
|
|
|
- $date = $date_year.'-'.$date_mon;
|
|
|
- $where['a.jjcp_sj' ] = array('like',$date.'%');
|
|
|
- }
|
|
|
- if (!empty($params['search'])) {
|
|
|
- if (!empty($params['date']) || !empty($params['code'])) {
|
|
|
- $this->error('参数错误');
|
|
|
- }
|
|
|
- $where['a.jjcp_gdbh|a.成品名称|a.jjcp_cpmc'] = array('like','%'.$params['search'].'%');
|
|
|
- }
|
|
|
- $where['a.jjcp_smb' ] = array('IN', array('末 板', '末板'));
|
|
|
- $limit = $params['limit'];
|
|
|
- if (empty($limit)){
|
|
|
- $limit = 15;
|
|
|
- }
|
|
|
- $pages = $params['page'];
|
|
|
- if (empty($pages)){
|
|
|
- $pages = 1;
|
|
|
- }
|
|
|
- $is_have_cache = false;
|
|
|
- $num = config('product_code_digit');
|
|
|
- if ($is_have_cache === false){
|
|
|
- if (!empty($params['code'])){
|
|
|
- $sql= db('物料_收发记录')
|
|
|
- ->alias('d')
|
|
|
- ->where('d.仓库编号', 'Y101')
|
|
|
- ->whereOr('d.仓库编号', '101')
|
|
|
- ->group('d.st_gdbh, d.cpdh')
|
|
|
- ->field('d.st_gdbh, d.cpdh,d.st_rq, SUM(d.st_sl) as 实际投料,d.仓库编号')
|
|
|
- ->buildSql();
|
|
|
- $data = db('成品入仓')->alias('a')
|
|
|
- ->join('工单_基本资料 b', 'a.jjcp_gdbh = b.Gd_gdbh', 'left')
|
|
|
- ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh AND a.jjcp_cpdh = c.yj_Yjdh', 'left')
|
|
|
- ->join([$sql => 'd'], 'a.jjcp_gdbh = d.st_gdbh AND a.jjcp_cpdh = d.cpdh', 'left')
|
|
|
- ->where($where)
|
|
|
- ->where(function($query) {
|
|
|
- $query->where('d.仓库编号', '101')
|
|
|
- ->whereOr('d.仓库编号', 'Y101');})
|
|
|
- ->whereRaw('LEFT(a.成品编码, CASE WHEN a.成品编码 REGEXP "[a-zA-Z]" THEN 5 ELSE 4 END) = ?', [$params['code']])
|
|
|
- ->field('a.jjcp_gdbh as Gd_gdbh, a.jjcp_yjno, rtrim(a.jjcp_cpdh) as 成品编码, rtrim(a.jjcp_cpmc) as 成品名称,
|
|
|
- a.jjcp_sj, a.jjcp_smb, b.计量单位, b.Gd_khdh, d.实际投料, c.yj_Yjno, c.yj_ls, c.yj_ks, c.质量考核')
|
|
|
- ->group('a.jjcp_gdbh, a.jjcp_yjno')
|
|
|
- ->order('b.Gd_khdh, a.成品编码 asc, a.jjcp_yjno,d.st_rq desc')
|
|
|
- ->page($pages)
|
|
|
- ->limit($limit)
|
|
|
- ->select();
|
|
|
- $total = db('成品入仓')->alias('a')
|
|
|
- ->join('工单_基本资料 b', 'a.jjcp_gdbh = b.Gd_gdbh','left')
|
|
|
- ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh','left')
|
|
|
- ->where($where)
|
|
|
- ->whereRaw('LEFT(a.成品编码, CASE WHEN a.成品编码 REGEXP "[a-zA-Z]" THEN 5 ELSE 4 END) = ?', [$params['code']])
|
|
|
- ->count();
|
|
|
- }else{
|
|
|
- $sql= db('物料_收发记录')
|
|
|
- ->alias('d')
|
|
|
- ->where('d.仓库编号', 'Y101')
|
|
|
- ->whereOr('d.仓库编号', '101')
|
|
|
- ->group('d.st_gdbh, d.cpdh')
|
|
|
- ->field('d.st_gdbh, d.cpdh,d.st_rq, SUM(d.st_sl) as 实际投料,d.仓库编号')
|
|
|
- ->buildSql();
|
|
|
- $data = db('成品入仓')->alias('a')
|
|
|
- ->join('工单_基本资料 b', 'a.jjcp_gdbh = b.Gd_gdbh', 'left')
|
|
|
- ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh AND a.jjcp_cpdh = c.yj_Yjdh', 'left')
|
|
|
- ->join([$sql => 'd'], 'a.jjcp_gdbh = d.st_gdbh AND a.jjcp_cpdh = d.cpdh', 'left')
|
|
|
- ->where($where)
|
|
|
- ->field('a.jjcp_gdbh as Gd_gdbh, a.jjcp_yjno, rtrim(a.jjcp_cpdh) as 成品编码, rtrim(a.jjcp_cpmc) as 成品名称,
|
|
|
- a.jjcp_sj, a.jjcp_smb, b.计量单位, b.Gd_khdh, d.实际投料, c.yj_Yjno, c.yj_ls, c.yj_ks, c.质量考核')
|
|
|
- ->group('a.jjcp_gdbh, a.jjcp_yjno')
|
|
|
- ->order('b.Gd_khdh, a.成品编码 asc, a.jjcp_yjno, d.st_rq desc')
|
|
|
- ->page($pages)
|
|
|
- ->limit($limit)
|
|
|
- ->select();
|
|
|
- $total = db('成品入仓')->alias('a')
|
|
|
- ->join('工单_基本资料 b', 'a.jjcp_gdbh = b.Gd_gdbh','left')
|
|
|
- ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh','left')
|
|
|
- ->where($where)
|
|
|
- ->count();
|
|
|
- }
|
|
|
- foreach ($data as $key => $value){
|
|
|
- //查出成品数量及日期
|
|
|
- $cp_sql = "SELECT SUM(jjcp_sl) as cp_sl,MAX(jjcp_sj) as jjcp_sj FROM `成品入仓` WHERE jjcp_gdbh = '{$value['Gd_gdbh']}' AND jjcp_yjno = '{$value['jjcp_yjno']}' GROUP BY jjcp_gdbh,jjcp_yjno";
|
|
|
- $cp_data = Db::query($cp_sql);
|
|
|
- //入仓总数
|
|
|
- $data[$key]['warehousing_num'] = $cp_data[0]['cp_sl'];
|
|
|
- $data[$key]['warehousing_date'] = substr($cp_data[0]['jjcp_sj'],0,10);
|
|
|
- //查出进入超节损的工序,有上报产量的工序就进入超节损
|
|
|
- $gxh_sql = "SELECT sczl_gxh FROM
|
|
|
- (SELECT sczl_gxh FROM 设备_产量计酬 WHERE sczl_gdbh = '{$value['Gd_gdbh']}' AND sczl_yjno = '{$value['jjcp_yjno']}'
|
|
|
- UNION SELECT sczl_gxh FROM db_sczl WHERE sczl_gdbh = '{$value['Gd_gdbh']}' AND sczl_yjno = '{$value['jjcp_yjno']}') AS combined_result";
|
|
|
- $gxh_arr = Db::query($gxh_sql);
|
|
|
- $gxh_values = array_column($gxh_arr, 'sczl_gxh');
|
|
|
- $gy_data =db('工单_工艺资料')
|
|
|
- ->alias('a')
|
|
|
- ->field([
|
|
|
- 'a.Gy0_yjno', 'a.Gy0_gxh', 'RTRIM(a.Gy0_gxmc) as Gy0_gxmc','RTRIM(a.Add_gxmc) as Add_gxmc','a.Gy0_ks', 'a.Gy0_ls', 'a.Gy0_计划接货数',
|
|
|
- 'a.Gy0_计划损耗', 'a.超节损承担比例','SUM(b.sczl_zcfp) as total_fp','SUM(b.sczl_cl) as total_cl','SUM(c.sczl_cl) as cl','SUM(c.sczl_fp) as fp',
|
|
|
- ])
|
|
|
- ->join('设备_产量计酬 b', 'a.Gy0_gdbh = b.sczl_gdbh AND a.Gy0_yjno = b.sczl_yjno AND a.Gy0_gxh = b.sczl_gxh','left')
|
|
|
- ->join('db_sczl c', 'a.Gy0_gdbh = c.sczl_gdbh AND a.Gy0_yjno = c.sczl_yjno AND a.Gy0_gxh = c.sczl_gxh','left')
|
|
|
- ->where([
|
|
|
- 'a.Gy0_gdbh' => $value['Gd_gdbh'],
|
|
|
- 'a.Gy0_yjno' =>$value['jjcp_yjno'],
|
|
|
- 'a.Gy0_gxh' => ['in', $gxh_values]
|
|
|
- ])
|
|
|
- ->group('a.Gy0_yjno,a.Gy0_gxh')
|
|
|
- ->select();
|
|
|
- $arr = [];
|
|
|
- $plan_loss = [];//工单计划损耗
|
|
|
- $machine_plan_loss = 0;//机检计划损耗
|
|
|
- foreach ($gy_data as $k=>$v){
|
|
|
- if (strpos($v['Gy0_gxmc'],'检') === false){
|
|
|
- if ($v['Gy0_计划接货数'] > 0){
|
|
|
- $rate = round($v['Gy0_计划损耗'] / $v['Gy0_计划接货数'],5);
|
|
|
- }else{
|
|
|
- $rate = 0;
|
|
|
- }
|
|
|
- $arr[$k] = floor($rate * 10000) /10000;
|
|
|
- $plan_loss[$k] = $v['Gy0_计划损耗']*$v['Gy0_ls']*$value['yj_ks'];
|
|
|
- }
|
|
|
- }
|
|
|
- if ((int)$value['yj_ls'] > 0){
|
|
|
- $value['实际投料'] = number_format(((int)$value['实际投料']/10000)*$value['yj_ls']*$value['yj_ks'],4);
|
|
|
- }else{
|
|
|
- $value['实际投料'] = number_format($value['实际投料']/10000,4);
|
|
|
- }
|
|
|
- $data[$key]['实际投料'] = $value['实际投料'];
|
|
|
- if ($value['实际投料'] >0 ){
|
|
|
- $target_rate = (1-array_sum($arr))*100;
|
|
|
- $data[$key]['target_rate'] =$target_rate.'%'; //目标合格率
|
|
|
- $real_rate = $cp_data[0]['cp_sl'] / ((float)str_replace(',', '', $value['实际投料']) * 10000) *100;
|
|
|
- $data[$key]['real_rate'] = number_format($real_rate,2) . '%';//实际合格率
|
|
|
- }else{
|
|
|
- $data[$key]['target_rate'] = ''; //目标合格率
|
|
|
- $data[$key]['real_rate'] = '';//实际合格率
|
|
|
- }
|
|
|
-
|
|
|
- //制程废品
|
|
|
- $zzfp_data =db('设备_产量计酬')->where('sczl_gdbh',$value['Gd_gdbh'])->where('sczl_yjno',$value['jjcp_yjno'])->value('SUM(sczl_zcfp) as sczl_zcfp');
|
|
|
- $data[$key]['zcfp'] = $zzfp_data * $value['yj_ls'];//制程废品
|
|
|
- //废品合计
|
|
|
- $wasteTotal = db('db_qczl')->where('qczl_gdbh',$value['Gd_gdbh'])->where('qczl_yjno',$value['jjcp_yjno'])->sum('qczl_fp');
|
|
|
- if (empty($wasteTotal)){
|
|
|
- $wasteTotal = 0;
|
|
|
- }
|
|
|
- $data[$key]['废品合计'] = $wasteTotal + $data[$key]['zcfp'];//废品合计
|
|
|
- $data[$key]['工单无形损'] = (int)((float)str_replace(',', '', $value['实际投料']) *10000) - $cp_data[0]['cp_sl'] - $data[$key]['废品合计'];//工单无形损
|
|
|
- $out_sql = "SELECT fp_sl1,fp_sl2,fp_sl3,fp_sl4,fp_sl5,fp_sl6,fp_sl7,fp_sl8,fp_sl9,fp_sl10,fp_sl11,fp_sl12,fp_sl13,
|
|
|
- fp_lb1,fp_lb2,fp_lb3,fp_lb4,fp_lb5,fp_lb6,fp_lb7,fp_lb8,fp_lb9,fp_lb10,fp_lb11,fp_lb12,fp_lb13,
|
|
|
- fp_bh1,fp_bh2,fp_bh3,fp_bh4,fp_bh5,fp_bh6,fp_bh7,fp_bh8,fp_bh9,fp_bh10,fp_bh11,fp_bh12,fp_bh13,
|
|
|
- fp_gxmc1,fp_gxmc2,fp_gxmc3,fp_gxmc4,fp_gxmc5,fp_gxmc6,fp_gxmc7,fp_gxmc8,fp_gxmc9,fp_gxmc10,fp_gxmc11,fp_gxmc12,fp_gxmc13
|
|
|
- FROM db_qczl WHERE qczl_gdbh = '{$value['Gd_gdbh']}' AND qczl_yjno = '{$value['jjcp_yjno']}'";
|
|
|
- $waste_out = Db::query($out_sql);
|
|
|
- $list = []; //外发废数组
|
|
|
- $quality = [];//质检废数组
|
|
|
- $material = [];//材料废数组
|
|
|
- $change = [];//零头处理数组
|
|
|
- $machine = [];//机检废品数组
|
|
|
- $j = 0;
|
|
|
- $m = 0;
|
|
|
- $n = 0;
|
|
|
- $l = 0;
|
|
|
- $o = 0;
|
|
|
- foreach ($waste_out as $entry) {
|
|
|
- for ($i = 1; $i <= 13; $i++) {
|
|
|
- $labelKey = "fp_lb" . $i;
|
|
|
- $bhKey = "fp_bh" . $i;
|
|
|
- $gxmcKey = "fp_gxmc" . $i;
|
|
|
- $slKey = "fp_sl" . $i;
|
|
|
- if (!empty($entry[$labelKey])) {
|
|
|
- //外发加工废
|
|
|
- if (substr($entry[$labelKey],0,3) == 'M04'){
|
|
|
- $list[$j]= $entry[$slKey];
|
|
|
- $j++;
|
|
|
- }
|
|
|
- //材料废
|
|
|
- if (substr($entry[$labelKey],0,1) == 'L' ){
|
|
|
- $material[$n]= $entry[$slKey];
|
|
|
- $n++;
|
|
|
- }
|
|
|
- //零头处理
|
|
|
- if (substr($entry[$labelKey],0,3) == 'M01' ){
|
|
|
- $change[$l]= $entry[$slKey];
|
|
|
- $l++;
|
|
|
- }
|
|
|
-
|
|
|
- //机检废品
|
|
|
- if (substr($entry[$labelKey],0,1) == 'K' ){
|
|
|
- $machine[$o]= $entry[$slKey];
|
|
|
- $o++;
|
|
|
- }
|
|
|
- }
|
|
|
- $quality[$m]= $entry[$slKey];
|
|
|
- $m++;
|
|
|
- }
|
|
|
- }
|
|
|
- $machine_waste = array_sum($machine);//机检废品
|
|
|
- if ($data[$key]['Gd_gdbh'] == '2401746'){
|
|
|
- halt($machine_waste);
|
|
|
- }
|
|
|
- $data[$key]['工单计划损耗'] = array_sum($plan_loss);//工单计划损耗
|
|
|
- /**
|
|
|
- * 奖惩系数及金额
|
|
|
- * 奖惩金额 = 工单节损数 * 0.02(0.09)
|
|
|
- * 工单节损数 = 工单计划损耗 - 废品总数 - 机检节损数
|
|
|
- * 机检节损数 = 机检计划损耗 - 机检质检废品
|
|
|
- */
|
|
|
- $machine_loss = $machine_plan_loss - $machine_waste;
|
|
|
- $order_loss = $data[$key]['工单计划损耗'] - ($data[$key]['废品合计'] - array_sum($list) - array_sum($material)+$data[$key]['工单无形损'] - $machine_waste);
|
|
|
- $guige = \db('物料_存货编码')
|
|
|
- ->where('物料代码',$data[$key]['成品编码'])
|
|
|
- ->value('rtrim(规格)');
|
|
|
- //工序超节损金额
|
|
|
- if ($guige === '小盒'){
|
|
|
- $moneyRate = 0.02;
|
|
|
- }else{
|
|
|
- $moneyRate = 0.09;
|
|
|
- }
|
|
|
- $reward = $order_loss * $moneyRate;
|
|
|
- $data[$key]['reward_rate'] = '1';
|
|
|
- if ($data[$key]['质量考核'] === 0){
|
|
|
- $data[$key]['reward_money'] = number_format($reward,2);
|
|
|
- $data[$key]['考核'] = '是';
|
|
|
- }else{
|
|
|
- $data[$key]['reward_money'] = '';
|
|
|
- $data[$key]['考核'] = '否';
|
|
|
- }
|
|
|
- $data[$key]['材料废'] = array_sum($material); //材料废
|
|
|
- $data[$key]['零头处理'] = array_sum($change); //零头处理
|
|
|
- $data[$key]['外发废'] = array_sum($list);//外发废
|
|
|
- $data[$key]['分摊废'] = '';//分摊废
|
|
|
- $data[$key]['工单质检废'] = array_sum($quality); //质检废
|
|
|
- $data[$key]['机检废'] = $machine_waste;
|
|
|
- }
|
|
|
- $res = [
|
|
|
- 'data'=>$data,
|
|
|
- 'total' => $total
|
|
|
- ];
|
|
|
-
|
|
|
- }
|
|
|
- $this->success('请求成功',$res);
|
|
|
- }
|
|
|
+// public function getList(){
|
|
|
+// if (Request::instance()->isGet() == false) {
|
|
|
+// $this->error('非法请求');
|
|
|
+// }
|
|
|
+// $params = Request::instance()->param();
|
|
|
+// $where = [];
|
|
|
+// if (!empty($params['code'])) {
|
|
|
+// if (!empty($params['search'])) {
|
|
|
+// $this->error('参数错误');
|
|
|
+// }
|
|
|
+// }
|
|
|
+// if (!empty($params['date'])) {
|
|
|
+// if (!empty($params['search'])) {
|
|
|
+// $this->error('参数错误');
|
|
|
+// }
|
|
|
+// $date_year = substr($params['date'],0,4);
|
|
|
+// $date_mon = substr($params['date'],4);
|
|
|
+// $date = $date_year.'-'.$date_mon;
|
|
|
+// $where['a.jjcp_sj' ] = array('like',$date.'%');
|
|
|
+// }
|
|
|
+// if (!empty($params['search'])) {
|
|
|
+// if (!empty($params['date']) || !empty($params['code'])) {
|
|
|
+// $this->error('参数错误');
|
|
|
+// }
|
|
|
+// $where['a.jjcp_gdbh|a.成品名称|a.jjcp_cpmc'] = array('like','%'.$params['search'].'%');
|
|
|
+// }
|
|
|
+// $where['a.jjcp_smb' ] = array('IN', array('末 板', '末板'));
|
|
|
+// $limit = $params['limit'];
|
|
|
+// if (empty($limit)){
|
|
|
+// $limit = 15;
|
|
|
+// }
|
|
|
+// $pages = $params['page'];
|
|
|
+// if (empty($pages)){
|
|
|
+// $pages = 1;
|
|
|
+// }
|
|
|
+// $is_have_cache = false;
|
|
|
+// $num = config('product_code_digit');
|
|
|
+// if ($is_have_cache === false){
|
|
|
+// if (!empty($params['code'])){
|
|
|
+// $sql= db('物料_收发记录')
|
|
|
+// ->alias('d')
|
|
|
+// ->where('d.仓库编号', 'Y101')
|
|
|
+// ->whereOr('d.仓库编号', '101')
|
|
|
+// ->group('d.st_gdbh, d.cpdh')
|
|
|
+// ->field('d.st_gdbh, d.cpdh,d.st_rq, SUM(d.st_sl) as 实际投料,d.仓库编号')
|
|
|
+// ->buildSql();
|
|
|
+// $data = db('成品入仓')->alias('a')
|
|
|
+// ->join('工单_基本资料 b', 'a.jjcp_gdbh = b.Gd_gdbh', 'left')
|
|
|
+// ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh AND a.jjcp_cpdh = c.yj_Yjdh', 'left')
|
|
|
+// ->join([$sql => 'd'], 'a.jjcp_gdbh = d.st_gdbh AND a.jjcp_cpdh = d.cpdh', 'left')
|
|
|
+// ->where($where)
|
|
|
+// ->where(function($query) {
|
|
|
+// $query->where('d.仓库编号', '101')
|
|
|
+// ->whereOr('d.仓库编号', 'Y101');})
|
|
|
+// ->whereRaw('LEFT(a.成品编码, CASE WHEN a.成品编码 REGEXP "[a-zA-Z]" THEN 5 ELSE 4 END) = ?', [$params['code']])
|
|
|
+// ->field('a.jjcp_gdbh as Gd_gdbh, a.jjcp_yjno, rtrim(a.jjcp_cpdh) as 成品编码, rtrim(a.jjcp_cpmc) as 成品名称,
|
|
|
+// a.jjcp_sj, a.jjcp_smb, b.计量单位, b.Gd_khdh, d.实际投料, c.yj_Yjno, c.yj_ls, c.yj_ks, c.质量考核')
|
|
|
+// ->group('a.jjcp_gdbh, a.jjcp_yjno')
|
|
|
+// ->order('b.Gd_khdh, a.成品编码 asc, a.jjcp_yjno,d.st_rq desc')
|
|
|
+// ->page($pages)
|
|
|
+// ->limit($limit)
|
|
|
+// ->select();
|
|
|
+// $total = db('成品入仓')->alias('a')
|
|
|
+// ->join('工单_基本资料 b', 'a.jjcp_gdbh = b.Gd_gdbh','left')
|
|
|
+// ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh','left')
|
|
|
+// ->where($where)
|
|
|
+// ->whereRaw('LEFT(a.成品编码, CASE WHEN a.成品编码 REGEXP "[a-zA-Z]" THEN 5 ELSE 4 END) = ?', [$params['code']])
|
|
|
+// ->count();
|
|
|
+// }else{
|
|
|
+// $sql= db('物料_收发记录')
|
|
|
+// ->alias('d')
|
|
|
+// ->where('d.仓库编号', 'Y101')
|
|
|
+// ->whereOr('d.仓库编号', '101')
|
|
|
+// ->group('d.st_gdbh, d.cpdh')
|
|
|
+// ->field('d.st_gdbh, d.cpdh,d.st_rq, SUM(d.st_sl) as 实际投料,d.仓库编号')
|
|
|
+// ->buildSql();
|
|
|
+// $data = db('成品入仓')->alias('a')
|
|
|
+// ->join('工单_基本资料 b', 'a.jjcp_gdbh = b.Gd_gdbh', 'left')
|
|
|
+// ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh AND a.jjcp_cpdh = c.yj_Yjdh', 'left')
|
|
|
+// ->join([$sql => 'd'], 'a.jjcp_gdbh = d.st_gdbh AND a.jjcp_cpdh = d.cpdh', 'left')
|
|
|
+// ->where($where)
|
|
|
+// ->field('a.jjcp_gdbh as Gd_gdbh, a.jjcp_yjno, rtrim(a.jjcp_cpdh) as 成品编码, rtrim(a.jjcp_cpmc) as 成品名称,
|
|
|
+// a.jjcp_sj, a.jjcp_smb, b.计量单位, b.Gd_khdh, d.实际投料, c.yj_Yjno, c.yj_ls, c.yj_ks, c.质量考核')
|
|
|
+// ->group('a.jjcp_gdbh, a.jjcp_yjno')
|
|
|
+// ->order('b.Gd_khdh, a.成品编码 asc, a.jjcp_yjno, d.st_rq desc')
|
|
|
+// ->page($pages)
|
|
|
+// ->limit($limit)
|
|
|
+// ->select();
|
|
|
+// $total = db('成品入仓')->alias('a')
|
|
|
+// ->join('工单_基本资料 b', 'a.jjcp_gdbh = b.Gd_gdbh','left')
|
|
|
+// ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh','left')
|
|
|
+// ->where($where)
|
|
|
+// ->count();
|
|
|
+// }
|
|
|
+// foreach ($data as $key => $value){
|
|
|
+// //查出成品数量及日期
|
|
|
+// $cp_sql = "SELECT SUM(jjcp_sl) as cp_sl,MAX(jjcp_sj) as jjcp_sj FROM `成品入仓` WHERE jjcp_gdbh = '{$value['Gd_gdbh']}' AND jjcp_yjno = '{$value['jjcp_yjno']}' GROUP BY jjcp_gdbh,jjcp_yjno";
|
|
|
+// $cp_data = Db::query($cp_sql);
|
|
|
+// //入仓总数
|
|
|
+// $data[$key]['warehousing_num'] = $cp_data[0]['cp_sl'];
|
|
|
+// $data[$key]['warehousing_date'] = substr($cp_data[0]['jjcp_sj'],0,10);
|
|
|
+// //查出进入超节损的工序,有上报产量的工序就进入超节损
|
|
|
+// $gxh_sql = "SELECT sczl_gxh FROM
|
|
|
+// (SELECT sczl_gxh FROM 设备_产量计酬 WHERE sczl_gdbh = '{$value['Gd_gdbh']}' AND sczl_yjno = '{$value['jjcp_yjno']}'
|
|
|
+// UNION SELECT sczl_gxh FROM db_sczl WHERE sczl_gdbh = '{$value['Gd_gdbh']}' AND sczl_yjno = '{$value['jjcp_yjno']}') AS combined_result";
|
|
|
+// $gxh_arr = Db::query($gxh_sql);
|
|
|
+// $gxh_values = array_column($gxh_arr, 'sczl_gxh');
|
|
|
+// $gy_data =db('工单_工艺资料')
|
|
|
+// ->alias('a')
|
|
|
+// ->field([
|
|
|
+// 'a.Gy0_yjno', 'a.Gy0_gxh', 'RTRIM(a.Gy0_gxmc) as Gy0_gxmc','RTRIM(a.Add_gxmc) as Add_gxmc','a.Gy0_ks', 'a.Gy0_ls', 'a.Gy0_计划接货数',
|
|
|
+// 'a.Gy0_计划损耗', 'a.超节损承担比例','SUM(b.sczl_zcfp) as total_fp','SUM(b.sczl_cl) as total_cl','SUM(c.sczl_cl) as cl','SUM(c.sczl_fp) as fp',
|
|
|
+// ])
|
|
|
+// ->join('设备_产量计酬 b', 'a.Gy0_gdbh = b.sczl_gdbh AND a.Gy0_yjno = b.sczl_yjno AND a.Gy0_gxh = b.sczl_gxh','left')
|
|
|
+// ->join('db_sczl c', 'a.Gy0_gdbh = c.sczl_gdbh AND a.Gy0_yjno = c.sczl_yjno AND a.Gy0_gxh = c.sczl_gxh','left')
|
|
|
+// ->where([
|
|
|
+// 'a.Gy0_gdbh' => $value['Gd_gdbh'],
|
|
|
+// 'a.Gy0_yjno' =>$value['jjcp_yjno'],
|
|
|
+// 'a.Gy0_gxh' => ['in', $gxh_values]
|
|
|
+// ])
|
|
|
+// ->group('a.Gy0_yjno,a.Gy0_gxh')
|
|
|
+// ->select();
|
|
|
+// $arr = [];
|
|
|
+// $plan_loss = [];//工单计划损耗
|
|
|
+// $machine_plan_loss = 0;//机检计划损耗
|
|
|
+// foreach ($gy_data as $k=>$v){
|
|
|
+// if (strpos($v['Gy0_gxmc'],'检') === false){
|
|
|
+// if ($v['Gy0_计划接货数'] > 0){
|
|
|
+// $rate = round($v['Gy0_计划损耗'] / $v['Gy0_计划接货数'],5);
|
|
|
+// }else{
|
|
|
+// $rate = 0;
|
|
|
+// }
|
|
|
+// $arr[$k] = floor($rate * 10000) /10000;
|
|
|
+// $plan_loss[$k] = $v['Gy0_计划损耗']*$v['Gy0_ls']*$value['yj_ks'];
|
|
|
+// }
|
|
|
+// }
|
|
|
+// if ((int)$value['yj_ls'] > 0){
|
|
|
+// $value['实际投料'] = number_format(((int)$value['实际投料']/10000)*$value['yj_ls']*$value['yj_ks'],4);
|
|
|
+// }else{
|
|
|
+// $value['实际投料'] = number_format($value['实际投料']/10000,4);
|
|
|
+// }
|
|
|
+// $data[$key]['实际投料'] = $value['实际投料'];
|
|
|
+// if ($value['实际投料'] >0 ){
|
|
|
+// $target_rate = (1-array_sum($arr))*100;
|
|
|
+// $data[$key]['target_rate'] =$target_rate.'%'; //目标合格率
|
|
|
+// $real_rate = $cp_data[0]['cp_sl'] / ((float)str_replace(',', '', $value['实际投料']) * 10000) *100;
|
|
|
+// $data[$key]['real_rate'] = number_format($real_rate,2) . '%';//实际合格率
|
|
|
+// }else{
|
|
|
+// $data[$key]['target_rate'] = ''; //目标合格率
|
|
|
+// $data[$key]['real_rate'] = '';//实际合格率
|
|
|
+// }
|
|
|
+//
|
|
|
+// //制程废品
|
|
|
+// $zzfp_data =db('设备_产量计酬')->where('sczl_gdbh',$value['Gd_gdbh'])->where('sczl_yjno',$value['jjcp_yjno'])->value('SUM(sczl_zcfp) as sczl_zcfp');
|
|
|
+// $data[$key]['zcfp'] = $zzfp_data * $value['yj_ls'];//制程废品
|
|
|
+// //废品合计
|
|
|
+// $wasteTotal = db('db_qczl')->where('qczl_gdbh',$value['Gd_gdbh'])->where('qczl_yjno',$value['jjcp_yjno'])->sum('qczl_fp');
|
|
|
+// if (empty($wasteTotal)){
|
|
|
+// $wasteTotal = 0;
|
|
|
+// }
|
|
|
+// $data[$key]['废品合计'] = $wasteTotal + $data[$key]['zcfp'];//废品合计
|
|
|
+// $data[$key]['工单无形损'] = (int)((float)str_replace(',', '', $value['实际投料']) *10000) - $cp_data[0]['cp_sl'] - $data[$key]['废品合计'];//工单无形损
|
|
|
+// $out_sql = "SELECT fp_sl1,fp_sl2,fp_sl3,fp_sl4,fp_sl5,fp_sl6,fp_sl7,fp_sl8,fp_sl9,fp_sl10,fp_sl11,fp_sl12,fp_sl13,
|
|
|
+// fp_lb1,fp_lb2,fp_lb3,fp_lb4,fp_lb5,fp_lb6,fp_lb7,fp_lb8,fp_lb9,fp_lb10,fp_lb11,fp_lb12,fp_lb13,
|
|
|
+// fp_bh1,fp_bh2,fp_bh3,fp_bh4,fp_bh5,fp_bh6,fp_bh7,fp_bh8,fp_bh9,fp_bh10,fp_bh11,fp_bh12,fp_bh13,
|
|
|
+// fp_gxmc1,fp_gxmc2,fp_gxmc3,fp_gxmc4,fp_gxmc5,fp_gxmc6,fp_gxmc7,fp_gxmc8,fp_gxmc9,fp_gxmc10,fp_gxmc11,fp_gxmc12,fp_gxmc13
|
|
|
+// FROM db_qczl WHERE qczl_gdbh = '{$value['Gd_gdbh']}' AND qczl_yjno = '{$value['jjcp_yjno']}'";
|
|
|
+// $waste_out = Db::query($out_sql);
|
|
|
+// $list = []; //外发废数组
|
|
|
+// $quality = [];//质检废数组
|
|
|
+// $material = [];//材料废数组
|
|
|
+// $change = [];//零头处理数组
|
|
|
+// $machine = [];//机检废品数组
|
|
|
+// $j = 0;
|
|
|
+// $m = 0;
|
|
|
+// $n = 0;
|
|
|
+// $l = 0;
|
|
|
+// $o = 0;
|
|
|
+// foreach ($waste_out as $entry) {
|
|
|
+// for ($i = 1; $i <= 13; $i++) {
|
|
|
+// $labelKey = "fp_lb" . $i;
|
|
|
+// $bhKey = "fp_bh" . $i;
|
|
|
+// $gxmcKey = "fp_gxmc" . $i;
|
|
|
+// $slKey = "fp_sl" . $i;
|
|
|
+// if (!empty($entry[$labelKey])) {
|
|
|
+// //外发加工废
|
|
|
+// if (substr($entry[$labelKey],0,3) == 'M04'){
|
|
|
+// $list[$j]= $entry[$slKey];
|
|
|
+// $j++;
|
|
|
+// }
|
|
|
+// //材料废
|
|
|
+// if (substr($entry[$labelKey],0,1) == 'L' ){
|
|
|
+// $material[$n]= $entry[$slKey];
|
|
|
+// $n++;
|
|
|
+// }
|
|
|
+// //零头处理
|
|
|
+// if (substr($entry[$labelKey],0,3) == 'M01' ){
|
|
|
+// $change[$l]= $entry[$slKey];
|
|
|
+// $l++;
|
|
|
+// }
|
|
|
+//
|
|
|
+// //机检废品
|
|
|
+// if (substr($entry[$labelKey],0,1) == 'K' ){
|
|
|
+// $machine[$o]= $entry[$slKey];
|
|
|
+// $o++;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// $quality[$m]= $entry[$slKey];
|
|
|
+// $m++;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// $machine_waste = array_sum($machine);//机检废品
|
|
|
+// if ($data[$key]['Gd_gdbh'] == '2401746'){
|
|
|
+// halt($machine_waste);
|
|
|
+// }
|
|
|
+// $data[$key]['工单计划损耗'] = array_sum($plan_loss);//工单计划损耗
|
|
|
+// /**
|
|
|
+// * 奖惩系数及金额
|
|
|
+// * 奖惩金额 = 工单节损数 * 0.02(0.09)
|
|
|
+// * 工单节损数 = 工单计划损耗 - 废品总数 - 机检节损数
|
|
|
+// * 机检节损数 = 机检计划损耗 - 机检质检废品
|
|
|
+// */
|
|
|
+// $machine_loss = $machine_plan_loss - $machine_waste;
|
|
|
+// $order_loss = $data[$key]['工单计划损耗'] - ($data[$key]['废品合计'] - array_sum($list) - array_sum($material)+$data[$key]['工单无形损'] - $machine_waste);
|
|
|
+// $guige = \db('物料_存货编码')
|
|
|
+// ->where('物料代码',$data[$key]['成品编码'])
|
|
|
+// ->value('rtrim(规格)');
|
|
|
+// //工序超节损金额
|
|
|
+// if ($guige === '小盒'){
|
|
|
+// $moneyRate = 0.02;
|
|
|
+// }else{
|
|
|
+// $moneyRate = 0.09;
|
|
|
+// }
|
|
|
+// $reward = $order_loss * $moneyRate;
|
|
|
+// $data[$key]['reward_rate'] = '1';
|
|
|
+// if ($data[$key]['质量考核'] === 0){
|
|
|
+// $data[$key]['reward_money'] = number_format($reward,2);
|
|
|
+// $data[$key]['考核'] = '是';
|
|
|
+// }else{
|
|
|
+// $data[$key]['reward_money'] = '';
|
|
|
+// $data[$key]['考核'] = '否';
|
|
|
+// }
|
|
|
+// $data[$key]['材料废'] = array_sum($material); //材料废
|
|
|
+// $data[$key]['零头处理'] = array_sum($change); //零头处理
|
|
|
+// $data[$key]['外发废'] = array_sum($list);//外发废
|
|
|
+// $data[$key]['分摊废'] = '';//分摊废
|
|
|
+// $data[$key]['工单质检废'] = array_sum($quality); //质检废
|
|
|
+// $data[$key]['机检废'] = $machine_waste;
|
|
|
+// }
|
|
|
+// $res = [
|
|
|
+// 'data'=>$data,
|
|
|
+// 'total' => $total
|
|
|
+// ];
|
|
|
+//
|
|
|
+// }
|
|
|
+// $this->success('请求成功',$res);
|
|
|
+// }
|
|
|
/**
|
|
|
* 获取工单超节损工艺
|
|
|
* @ApiMethod GET
|
|
|
@@ -1222,10 +1222,11 @@ class OrderSuperLoss extends Api
|
|
|
*/
|
|
|
public function OneOrderSuperLoss($gdbh,$yjno)
|
|
|
{
|
|
|
- $param = [
|
|
|
- 'gdbh' => $gdbh,
|
|
|
- 'yjno' => $yjno
|
|
|
- ];
|
|
|
+ $param = $this->request->param();
|
|
|
+// $param = [
|
|
|
+// 'gdbh' => $gdbh,
|
|
|
+// 'yjno' => $yjno
|
|
|
+// ];
|
|
|
//查询工单入仓数据
|
|
|
$workOrderData = \db('成品入仓')
|
|
|
->where('jjcp_gdbh', $param['gdbh'])
|
|
|
@@ -1316,10 +1317,12 @@ class OrderSuperLoss extends Api
|
|
|
$quality = [];//质检废数组
|
|
|
$material = [];//材料废数组
|
|
|
$change = [];//零头处理数组
|
|
|
+ $machine = [];//机检废品数组
|
|
|
$j = 0;
|
|
|
$m = 0;
|
|
|
$n = 0;
|
|
|
$l = 0;
|
|
|
+ $o = 0;
|
|
|
foreach ($waste_out as $entry) {
|
|
|
for ($i = 1; $i <= 13; $i++) {
|
|
|
$labelKey = "fp_lb" . $i;
|
|
|
@@ -1328,23 +1331,28 @@ class OrderSuperLoss extends Api
|
|
|
$slKey = "fp_sl" . $i;
|
|
|
if (!empty($entry[$labelKey])) {
|
|
|
//外发加工废
|
|
|
- if (substr($entry[$labelKey], 0, 3) == 'M04') {
|
|
|
- $list[$j] = $entry[$slKey];
|
|
|
+ if (substr($entry[$labelKey],0,3) == 'M04'){
|
|
|
+ $list[$j]= $entry[$slKey];
|
|
|
$j++;
|
|
|
}
|
|
|
//材料废
|
|
|
- if (substr($entry[$labelKey], 0, 1) == 'L') {
|
|
|
- $material[$n] = $entry[$slKey];
|
|
|
+ if (substr($entry[$labelKey],0,1) == 'L' ){
|
|
|
+ $material[$n]= $entry[$slKey];
|
|
|
$n++;
|
|
|
}
|
|
|
//零头处理
|
|
|
- if (substr($entry[$labelKey], 0, 3) == 'M01') {
|
|
|
- $change[$l] = $entry[$slKey];
|
|
|
+ if (substr($entry[$labelKey],0,3) == 'M01' ){
|
|
|
+ $change[$l]= $entry[$slKey];
|
|
|
$l++;
|
|
|
}
|
|
|
+
|
|
|
+ //机检废品
|
|
|
+ if (substr($entry[$labelKey],0,1) == 'K' ){
|
|
|
+ $machine[$o]= $entry[$slKey];
|
|
|
+ $o++;
|
|
|
+ }
|
|
|
}
|
|
|
- //质检废
|
|
|
- $quality[$m] = $entry[$slKey];
|
|
|
+ $quality[$m]= $entry[$slKey];
|
|
|
$m++;
|
|
|
}
|
|
|
}
|
|
|
@@ -1352,6 +1360,7 @@ class OrderSuperLoss extends Api
|
|
|
$data['零头处理'] = array_sum($change); //零头处理
|
|
|
$data['外发废'] = array_sum($list);//外发废
|
|
|
$data['工单质检废'] = array_sum($quality);//质检废
|
|
|
+ $data['机检废'] = array_sum($machine);//机检废
|
|
|
//查询计划损耗
|
|
|
$plan_total = db('工单_工艺资料')
|
|
|
->where(['Gy0_gdbh' => $workOrderData['jjcp_gdbh'], 'Gy0_yjno' => $workOrderData['jjcp_yjno'], 'Gy0_gxh' => ['in', $gxh_values]])
|
|
|
@@ -1443,11 +1452,16 @@ class OrderSuperLoss extends Api
|
|
|
foreach ($waste_out as $entry) {
|
|
|
for ($i = 1; $i <= 13; $i++) {
|
|
|
$gxmcKey = "fp_gxmc" . $i;
|
|
|
+ $gxlbKey = "fp_lb" . $i;
|
|
|
$slKey = "fp_sl" . $i;
|
|
|
$bhKey = "fp_bh" . $i;
|
|
|
if ((int)substr($entry[$gxmcKey], 0, 2) == $vv['Gy0_gxh'] && $entry[$bhKey] == $vv['sczl_bh1']) {
|
|
|
$gy_data[$kk]['质检废'] += $entry[$slKey];
|
|
|
}
|
|
|
+// if (substr($entry[$gxlbKey], 0, 1) == 'K'){
|
|
|
+// $gy_data[$kk]['质检废'] = $data['机检废'];
|
|
|
+// echo $entry[$slKey];
|
|
|
+// }
|
|
|
}
|
|
|
}
|
|
|
//无形损分摊
|
|
|
@@ -1518,6 +1532,7 @@ class OrderSuperLoss extends Api
|
|
|
}
|
|
|
//整合数据
|
|
|
$result = [];
|
|
|
+// halt($gy_data);
|
|
|
foreach ($gy_data as $key => $value) {
|
|
|
$result[$key] = [
|
|
|
'sys_ny' => $value['sys_ny'],
|
|
|
@@ -1537,7 +1552,7 @@ class OrderSuperLoss extends Api
|
|
|
'班组产量' => $value['total_cl'],
|
|
|
'班组制程废品' => $value['sczl_zcfp'],
|
|
|
'班组质检废品' => $value['质检废'],
|
|
|
- '班组分摊质检废品' => $total['waste_quality'],
|
|
|
+ '班组分摊质检废品' => $data['工单质检废'],
|
|
|
'无班组废品' => 0,
|
|
|
'外发废' => $data['外发废'],
|
|
|
'材料废' => $data['材料废'],
|
|
|
@@ -1589,13 +1604,302 @@ class OrderSuperLoss extends Api
|
|
|
'入仓数量' => $total_number[0],
|
|
|
'入仓日期' => $workOrderData['jjcp_sj'],
|
|
|
'大箱数' => $value['投料大箱'],
|
|
|
- '废品合计' => $data['intangible_loss'],
|
|
|
+ '废品合计' => $data['工单质检废'] + $data['zcfp'],
|
|
|
'sys_id' => '',
|
|
|
'sys_rq' => date('Y-m-d H:i:s', time()),
|
|
|
'车间名称' => $value['Gy0_SITE']
|
|
|
];
|
|
|
}
|
|
|
- return $result;
|
|
|
+// return $result;
|
|
|
+ $sql = \db('工单_质量考核汇总')
|
|
|
+ ->fetchSql(true)
|
|
|
+ ->insertAll($result);
|
|
|
+ $res = \db()->query($sql);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //超节损列表
|
|
|
+ public function getList()
|
|
|
+ {
|
|
|
+ if (Request::instance()->isGet() == false) {
|
|
|
+ $this->error('非法请求');
|
|
|
+ }
|
|
|
+ $params = Request::instance()->param();
|
|
|
+ $where = [];
|
|
|
+ if (!empty($params['code'])) {
|
|
|
+ if (!empty($params['search'])) {
|
|
|
+ $this->error('参数错误');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!empty($params['date'])) {
|
|
|
+ if (!empty($params['search'])) {
|
|
|
+ $this->error('参数错误');
|
|
|
+ }
|
|
|
+ $where['sys_ny' ] = $params['date'];
|
|
|
+ }
|
|
|
+ if (!empty($params['search'])) {
|
|
|
+ if (!empty($params['date']) || !empty($params['code'])) {
|
|
|
+ $this->error('参数错误');
|
|
|
+ }
|
|
|
+ $where['Gy0_gdbh|产品名称|产品代号'] = array('like','%'.$params['search'].'%');
|
|
|
+ }
|
|
|
+ $limit = $params['limit'];
|
|
|
+ if (empty($limit)){
|
|
|
+ $limit = 15;
|
|
|
+ }
|
|
|
+ $pages = $params['page'];
|
|
|
+ if (empty($pages)){
|
|
|
+ $pages = 1;
|
|
|
+ }
|
|
|
+ // 定义字段
|
|
|
+ $field = '
|
|
|
+ sys_ny,
|
|
|
+ Gy0_gdbh,
|
|
|
+ `印件及工序`,
|
|
|
+ `联数`,
|
|
|
+ `产品代号`,
|
|
|
+ `产品名称`,
|
|
|
+ `实际投料`,
|
|
|
+ `计量单位`,
|
|
|
+ `入仓日期`,
|
|
|
+ `入仓数量`,
|
|
|
+ SUM(DISTINCT `计划损耗`) AS `计划损耗`,
|
|
|
+ `废品合计`,
|
|
|
+ SUM(`CjsJe`) AS `奖惩金额合计`,
|
|
|
+ `印件无形损`,
|
|
|
+ `材料废`,
|
|
|
+ `零头处理`,
|
|
|
+ `外发废`,
|
|
|
+ SUM(`班组制程废品`) AS `工单制程废`,
|
|
|
+ `班组分摊质检废品`
|
|
|
+ ';
|
|
|
+ $list = \db('工单_质量考核汇总')
|
|
|
+ ->field($field)
|
|
|
+ ->where($where)
|
|
|
+ ->group('Gy0_gdbh, `印件及工序`')
|
|
|
+ ->order('sys_rq DESC')
|
|
|
+ ->page($pages)
|
|
|
+ ->limit($limit)
|
|
|
+ ->select();
|
|
|
+ foreach ($list as $key=>$value){
|
|
|
+ $value['实际投料'] = $value['实际投料']*10000;
|
|
|
+ //目标合格率
|
|
|
+ $list[$key]['目标合格率'] = ($value['实际投料']-$value['计划损耗'])/$value['实际投料']*100;
|
|
|
+ $list[$key]['目标合格率'] = number_format($list[$key]['目标合格率'],2);
|
|
|
+ $list[$key]['目标合格率'] = $list[$key]['目标合格率'].'%';
|
|
|
+ //实际合格率
|
|
|
+ $list[$key]['实际合格率'] = ($value['实际投料']-$value['废品合计'])/$value['实际投料']*100;
|
|
|
+ $list[$key]['实际合格率'] = number_format($list[$key]['实际合格率'],2);
|
|
|
+ $list[$key]['实际合格率'] = $list[$key]['实际合格率'].'%';
|
|
|
+ }
|
|
|
+ if (!empty($list)){
|
|
|
+ $this->success('成功',$list);
|
|
|
+ }else{
|
|
|
+ $this->error('未找到数据');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //工序超节损
|
|
|
+ public function ProcessLoss()
|
|
|
+ {
|
|
|
+ if ($this->request->isGet() === false){
|
|
|
+ $this->error('请求错误');
|
|
|
+ }
|
|
|
+ $param = $this->request->param();
|
|
|
+ if (empty($param) || empty($param['order']) || empty($param['yjno'])){
|
|
|
+ $this->error('参数错误');
|
|
|
+ }
|
|
|
+ $where = ['Gy0_gdbh'=>$param['order'],'印件及工序'=>$param['yjno']];
|
|
|
+ //查询订单印件数据
|
|
|
+ $field = '
|
|
|
+ Gy0_gdbh AS Gd_gdbh,
|
|
|
+ `印件及工序` AS yjno,
|
|
|
+ `联数` AS ls,
|
|
|
+ `产品代号` AS `成品代号`,
|
|
|
+ `产品名称` AS `成品名称`,
|
|
|
+ `实际投料`,
|
|
|
+ `计量单位`,
|
|
|
+ `入仓日期` AS warehousing_date,
|
|
|
+ `入仓数量` AS warehousing_num,
|
|
|
+ SUM(DISTINCT `计划损耗`) AS `计划损耗`,
|
|
|
+ `废品合计`,
|
|
|
+ `印件无形损` as intangible_loss,
|
|
|
+ `材料废`,
|
|
|
+ `零头处理`,
|
|
|
+ `外发废`,
|
|
|
+ SUM(`班组制程废品`) AS `zcfp`,
|
|
|
+ `班组分摊质检废品`,
|
|
|
+ `订单数量`,
|
|
|
+ `销售订单号`
|
|
|
+
|
|
|
+ ';
|
|
|
+ $list = \db('工单_质量考核汇总')
|
|
|
+ ->field($field)
|
|
|
+ ->where($where)
|
|
|
+ ->group('Gy0_gdbh, `印件及工序`')
|
|
|
+ ->order('sys_rq DESC')
|
|
|
+ ->find();
|
|
|
+
|
|
|
+ $list['实际投料'] = $list['实际投料']*10000;
|
|
|
+ //目标合格率
|
|
|
+ $list['target_rate'] = ($list['实际投料']-$list['计划损耗'])/$list['实际投料']*100;
|
|
|
+ $list['target_rate'] = number_format($list['target_rate'],2);
|
|
|
+ $list['target_rate'] = $list['target_rate'].'%';
|
|
|
+ //实际合格率
|
|
|
+ $list['real_rate'] = ($list['实际投料']-$list['废品合计'])/$list['实际投料']*100;
|
|
|
+ $list['real_rate'] = number_format($list['real_rate'],2);
|
|
|
+ $list['real_rate'] = $list['real_rate'].'%';
|
|
|
+
|
|
|
+ //查询工序数据
|
|
|
+ $gy_field = '
|
|
|
+ `工序` AS Gy0_gxh,
|
|
|
+ `工序名称` AS Gy0_gxmc,
|
|
|
+ `印件及工序` AS Gy0_yjno,
|
|
|
+ `联数` AS Gy0_ls,
|
|
|
+ SUM(`计划损耗`) AS Gy0_计划损耗,
|
|
|
+ `计划产量` AS Gy0_计划接货数,
|
|
|
+ SUM(`班组分摊无形损`) AS Gy0_无形损,
|
|
|
+ `CjsSl` AS loss,
|
|
|
+ `印件工序产量` AS total_cl,
|
|
|
+ `班组制程废品` AS total_fp,
|
|
|
+ `班组质检废品` AS waste_quality,
|
|
|
+ SUM(`CjsJe`) AS 工序超节损金额,
|
|
|
+ `无形损承担比例`,
|
|
|
+ `超节损承担比例`
|
|
|
+ ';
|
|
|
+ $gy_data = \db('工单_质量考核汇总')
|
|
|
+ ->field($gy_field)
|
|
|
+ ->where($where)
|
|
|
+ ->group('Gy0_gxh')
|
|
|
+ ->select();
|
|
|
+ foreach ($gy_data as $key=>$value){
|
|
|
+
|
|
|
+ //报废合计
|
|
|
+ $gy_data[$key]['total_waste'] = $value['Gy0_无形损'] + $value['total_fp'] + $value['waste_quality'];
|
|
|
+ //工序实际报废率
|
|
|
+ $gy_data[$key]['actual_loss_rate'] = ((number_format($gy_data[$key]['total_waste']/$value['Gy0_计划接货数'],4))*100).'%';
|
|
|
+ //占投料报废率
|
|
|
+ $gy_data[$key]['loss_rate'] = ((number_format(($value['Gy0_计划损耗']-$gy_data[$key]['total_waste'])/$value['Gy0_计划接货数'],4))*100).'%';
|
|
|
+ //工序目标报废率
|
|
|
+ $gy_data[$key]['target_loss_rate'] = ((number_format($value['Gy0_计划损耗']/$value['Gy0_计划接货数'],4))*100).'%';
|
|
|
+ }
|
|
|
+ $list['gy_data'] = $gy_data;
|
|
|
+ //工单节损数据
|
|
|
+ $total_field = '
|
|
|
+ `班组分摊质检废品` as total_waste,
|
|
|
+ SUM(`班组质检废品`) as total_zjfp,
|
|
|
+ SUM(`班组制程废品`) as total_fp,
|
|
|
+ SUM(DISTINCT `计划损耗`) AS plan_loss,
|
|
|
+ `材料废`,
|
|
|
+ `印件无形损` as waste_intangible,
|
|
|
+ SUM(CjsSl) as loss,
|
|
|
+ SUM(CjsJe) as reward
|
|
|
+ ';
|
|
|
+ $total = \db('工单_质量考核汇总')
|
|
|
+ ->where($where)
|
|
|
+ ->field($total_field)
|
|
|
+ ->find();
|
|
|
+ $list['total'] = $total;
|
|
|
+ $this->success('成功',$list);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //班组超节损数据
|
|
|
+ public function ClassLossData()
|
|
|
+ {
|
|
|
+ if ($this->request->isGet() === false){
|
|
|
+ $this->error('请求错误');
|
|
|
+ }
|
|
|
+ $param = $this->request->param();
|
|
|
+ if (empty($param) || empty($param['order']) || empty($param['yjno'])){
|
|
|
+ $this->error('参数错误');
|
|
|
+ }
|
|
|
+ $where = ['Gy0_gdbh'=>$param['order'],'印件及工序'=>$param['yjno']];
|
|
|
+ //查询订单印件数据
|
|
|
+ $field = '
|
|
|
+ Gy0_gdbh AS Gd_gdbh,
|
|
|
+ `印件及工序` AS yjno,
|
|
|
+ `联数` AS ls,
|
|
|
+ `产品代号` AS `成品代号`,
|
|
|
+ `产品名称` AS `成品名称`,
|
|
|
+ `实际投料`,
|
|
|
+ `计量单位`,
|
|
|
+ `入仓日期` AS warehousing_date,
|
|
|
+ `入仓数量` AS warehousing_num,
|
|
|
+ SUM(DISTINCT `计划损耗`) AS `计划损耗`,
|
|
|
+ `废品合计`,
|
|
|
+ `印件无形损` as intangible_loss,
|
|
|
+ `材料废`,
|
|
|
+ `零头处理`,
|
|
|
+ `外发废`,
|
|
|
+ SUM(`班组制程废品`) AS `zcfp`,
|
|
|
+ `班组分摊质检废品`,
|
|
|
+ `订单数量`,
|
|
|
+ `销售订单号`
|
|
|
+
|
|
|
+ ';
|
|
|
+ $list = \db('工单_质量考核汇总')
|
|
|
+ ->field($field)
|
|
|
+ ->where($where)
|
|
|
+ ->group('Gy0_gdbh, `印件及工序`')
|
|
|
+ ->order('sys_rq DESC')
|
|
|
+ ->find();
|
|
|
+
|
|
|
+ $list['实际投料'] = $list['实际投料']*10000;
|
|
|
+ //目标合格率
|
|
|
+ $list['target_rate'] = ($list['实际投料']-$list['计划损耗'])/$list['实际投料']*100;
|
|
|
+ $list['target_rate'] = number_format($list['target_rate'],2);
|
|
|
+ $list['target_rate'] = $list['target_rate'].'%';
|
|
|
+ //实际合格率
|
|
|
+ $list['real_rate'] = ($list['实际投料']-$list['废品合计'])/$list['实际投料']*100;
|
|
|
+ $list['real_rate'] = number_format($list['real_rate'],2);
|
|
|
+ $list['real_rate'] = $list['real_rate'].'%';
|
|
|
+ //班组数据
|
|
|
+ $gy_data = \db('工单_质量考核汇总')
|
|
|
+ ->where($where)
|
|
|
+ ->select();
|
|
|
+ $class_data = [];
|
|
|
+ foreach ($gy_data as $item){
|
|
|
+ $name = '';
|
|
|
+ for ($i=1;$i<9;$i++){
|
|
|
+ if ($item['Xm'.$i] !== ''){
|
|
|
+ $name = $name.' '.$item['Xm'.$i];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $data = [
|
|
|
+ 'member' => $name,
|
|
|
+ 'sczl_gxmc' => $item['工序名称'],
|
|
|
+ 'total_cl' => $item['班组产量'],
|
|
|
+ '计划损耗' => $item['班组分摊计划损耗'],
|
|
|
+ '无形损分摊' => $item['班组分摊无形损'],
|
|
|
+ '节损奖' => $item['CjsJe'],
|
|
|
+ '节损数量' => $item['CjsSl'],
|
|
|
+ 'sczl_zcfp' => $item['班组制程废品'],
|
|
|
+ '质检废' => $item['班组质检废品'],
|
|
|
+ '超节损承担比例' => ($item['超节损承担比例']*100).'%',
|
|
|
+ ];
|
|
|
+ array_push($class_data,$data);
|
|
|
+ }
|
|
|
+ $list['gy_data'] = $class_data;
|
|
|
+ //工单节损数据
|
|
|
+ $total_field = '
|
|
|
+ `班组分摊质检废品` as total_waste,
|
|
|
+ SUM(`班组质检废品`) as total_zjfp,
|
|
|
+ SUM(`班组制程废品`) as total_fp,
|
|
|
+ SUM(DISTINCT `计划损耗`) AS plan_loss,
|
|
|
+ `材料废`,
|
|
|
+ `印件无形损` as waste_intangible,
|
|
|
+ SUM(CjsSl) as loss,
|
|
|
+ SUM(CjsJe) as reward
|
|
|
+ ';
|
|
|
+ $total = \db('工单_质量考核汇总')
|
|
|
+ ->where($where)
|
|
|
+ ->field($total_field)
|
|
|
+ ->find();
|
|
|
+ $list['total'] = $total;
|
|
|
+ $this->success('成功',$list);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|