| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- <?php
- namespace app\api\controller;
- use app\common\controller\Api;
- use think\Config;
- use think\Db;
- use think\Request;
- /**
- * 工单资料管理
- */
- class SubWorkorderStatus extends Api
- {
- protected $noNeedLogin = ['*'];
- protected $noNeedRight = ['*'];
- public function _initialize()
- {
- if (isset($_SERVER['HTTP_ORIGIN'])) {
- header('Access-Control-Expose-Headers: __token__');//跨域让客户端获取到
- }
- //跨域检测
- check_cors_request();
- if (!isset($_COOKIE['PHPSESSID'])) {
- Config::set('session.id', $this->request->server("HTTP_SID"));
- }
- parent::_initialize();
- }
- /**
- * 子订单状态查询
- * @return void
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function SubWorkOrderStatusList()
- {
- if (!$this->request->isGet()) {
- $this->error('请求错误');
- }
- $param = $this->request->param();
- if (empty($param) || empty($param['order'])) {
- $this->error('参数错误');
- }
- $orderNo = $param['order'];
- $isSubOrder = strpos($orderNo, '-') !== false;
- $colour_id = substr($orderNo, 0, 12);
- // 条件构造
- $where = ['a.Mod_rq' => null];
- if ($isSubOrder) {
- $where['a.子订单编号'] = $orderNo;
- } else {
- $where['a.订单编号'] = $orderNo;
- }
- // 获取所有工单数据(订单或子订单)
- $workOrderList = \db('工单_印件资料')
- ->alias('a')
- ->join('工单_基本资料 b', 'a.订单编号 = b.订单编号')
- ->where($where)
- ->field('a.订单编号,a.子订单编号,a.款号,b.款式,b.客户编号,a.zdtotal,
- cm1,cm2,cm3,cm4,cm5,cm6,cm7,cm8,cm9,cm10,
- cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10')
- ->select();
- if (empty($workOrderList)) {
- $this->error('未找到相关工单数据');
- }
- // 初始化变量
- $sizeList = [];
- $result = [
- '工序名称' => '制单',
- 'total' => 0,
- '制单数' => 0
- ];
- foreach ($workOrderList as $workOrder) {
- $result['制单数'] += $workOrder['zdtotal'];
- for ($i = 1; $i <= 10; $i++) {
- $cmKey = 'cm' . $i;
- $cmslKey = 'cmsl' . $i;
- if (!empty($workOrder[$cmKey])) {
- $size = $workOrder[$cmKey];
- $qty = (int)($workOrder[$cmslKey] ?? 0);
- $sizeList[] = $size;
- if (!isset($result[$size])) {
- $result[$size] = 0;
- }
- $result[$size] += $qty;
- }
- }
- }
- $sizeList = array_unique($sizeList);
- sort($sizeList);
- // 获取设备产量数据
- $list = \db('设备_产量计酬')
- ->where($isSubOrder ? ['子订单编号' => $orderNo] : ['订单编号' => $orderNo])
- ->where('mod_rq', null)
- ->select();
- $processes = ['裁剪', '车缝', '手工', '大烫', '总检', '包装'];
- $data['data'] = [];
- $data['data'][] = $result;
- foreach ($processes as $process) {
- $processData = array_fill_keys($sizeList, 0);
- foreach ($list as $item) {
- if ($item['工序名称'] === $process && in_array($item['尺码'], $sizeList)) {
- $qty = ($process === '裁剪' || $process === '车缝') ? $item['数量'] : $item['s_num'];
- $processData[$item['尺码']] += $qty;
- }
- }
- $processData['total'] = array_sum($processData);
- $processData['工序名称'] = $process;
- $data['data'][] = $processData;
- }
- // 计算百分比
- foreach ($data['data'] as &$val) {
- if ($val['工序名称'] === '制单') {
- $val['scale'] = '';
- } else {
- $val['scale'] = $result['制单数'] > 0
- ? number_format(($val['total'] / $result['制单数']) * 100, 2) . '%'
- : '0%';
- }
- }
- $data['arr'] = $sizeList;
- if ($isSubOrder) {
- // 查询的是子订单,直接取第一条完整数据
- $data['workOrderData'] = $workOrderList[0];
- } else {
- // 查询的是订单编号,保留第一条数据但去掉 "子订单编号"
- $workOrderData = $workOrderList[0];
- unset($workOrderData['子订单编号']); // 去掉子订单编号
- $data['workOrderData'] = $workOrderData;
- }
- $this->success('成功', $data);
- }
- /**
- * 码包号接口
- * @return void
- */
- public function Mabaolist()
- {
- if ($this->request->isGet() === false){
- $this->error('参数错误');
- }
- $param = $this->request->param();
- if (empty($param)){
- $this->error('参数错误');
- }
- if (!isset($param['process']) || $param['process'] === '') {
- $param['process'] = '车缝';
- }
- //车缝码包号
- $chefeng = \db('设备_产量计酬')
- // ->where('子订单编号','like',substr($param['order'],0,12).'%')
- ->where('子订单编号',$param['order'])
- ->where('工序名称','车缝')
- ->column('serial');
- //查询工序码包号
- $complete = \db('设备_产量计酬')
- // ->where('子订单编号','like',substr($param['order'],0,12).'%')
- ->where('子订单编号',$param['order'])
- ->where('工序名称',$param['process'])
- ->where('mod_rq',null)
- ->column('serial');
- //查询删除码包号
- $delete = \db('设备_产量计酬')
- // ->where('子订单编号','like',substr($param['order'],0,12).'%')
- ->where('子订单编号',$param['order'])
- ->where('工序名称','车缝')
- ->whereNotNull('mod_rq')
- ->column('serial');
- $delete = array_unique($delete);
- $data['chefeng'] = $chefeng;
- $data['complete'] = $complete;
- $data['delete'] = $delete;
- $this->success('成功',$data);
- }
- }
|