request->isGet()) { $this->error('请求方法错误'); } $params = $this->request->param(); if (empty($params['workorder'])) { $this->error('工单编号不能为空'); } $list = db('工单_工艺资料') ->where('订单编号', $params['workorder']) ->field('工序编号,工序名称,工序备注') ->distinct('工序名称') ->select(); if(empty($list)){ $this->error('该工单没有大工序'); } $this->success('成功', $list); } /** * 工单部件列表 * @param workorder 工单编号 */ public function PartList() { if (!$this->request->isGet()) { $this->error('请求方法错误'); } $params = $this->request->param(); if (empty($params['workorder'])) { $this->error('工单编号不能为空'); } $list = db('工单_部件资料') ->where('work_order', $params['workorder']) ->where('del_rq', null) ->field('part_code as 部件编号,part_name as 部件名称,remark as 部件备注,part_type as 部件类型,status as 状态, sys_id as 操作人,sys_rq as 操作时间,mod_rq as 修改时间,mod_id as 修改人,id as 部件ID') ->order('part_code') ->select(); if(empty($list)){ $this->error('该工单没有部件,请先添加部件'); } $this->success('成功', $list); } /** * 新增工单部件 * @param workorder 工单编号 * @param part_code 部件编号 * @param part_name 部件名称 * @param remark 部件备注 * @param part_type 部件类型 * @param sys_id 操作人 */ public function AddPart() { if (!$this->request->isPost()) { $this->error('请求方法错误'); } $params = $this->request->post(); if (empty($params['workorder'])) { $this->error('工单编号不能为空'); } if (empty($params['part_name'])) { $this->error('部件名称不能为空'); } // 检查是否传入了part_code if (!empty($params['part_code'])) { $code = $params['part_code']; // 检查是否存在冲突 $exists = db('工单_部件资料') ->where('work_order', $params['workorder']) ->where('part_code', '>=', $code) ->count(); if ($exists > 0) { // 如果存在冲突,将后续编号自动加1 db('工单_部件资料') ->where('work_order', $params['workorder']) ->where('part_code', '>=', $code) ->setInc('part_code'); } } else { // 如果没有传入part_code,按照原来的逻辑生成 $code = db('工单_部件资料') ->where('work_order', $params['workorder']) ->max('part_code'); $code = $code ? $code + 1 : 1; } $data = [ 'work_order' => $params['workorder'], 'part_code' => $code, 'part_name' => $params['part_name'], 'remark' => $params['remark'], 'part_type' => $params['part_type'], 'status' => 1, 'sys_id' => $params['sys_id'], 'sys_rq' => date('Y-m-d H:i:s'), ]; $result = db('工单_部件资料')->insert($data); if (!$result) { $this->error('新增失败'); } $this->success('新增成功'); } /** * 修改部件状态 * @param id 部件ID * @param status 状态 */ public function UpdatePartStatus() { if (!$this->request->isPost()) { $this->error('请求方法错误'); } $params = $this->request->post(); if (empty($params['id'])) { $this->error('部件ID不能为空'); } if (!isset($params['status'])) { $this->error('状态不能为空'); } $result = db('工单_部件资料') ->where('id', $params['id']) ->update(['status' => $params['status']]); if (!$result) { $this->error('修改失败'); } $this->success('修改成功'); } /** * 修改部件信息 * @param workorder 工单编号 * @param part_code 部件编号 * @param part_name 部件名称 * @param remark 部件备注 * @param part_type 部件类型 */ public function UpdatePartInfo() { if (!$this->request->isPost()) { $this->error('请求方法错误'); } $params = $this->request->post(); if (empty($params['part_name'])) { $this->error('部件名称不能为空'); } if (empty($params['remark'])) { $this->error('部件备注不能为空'); } if (empty($params['part_type'])) { $this->error('部件类型不能为空'); } if(empty($params['mod_id'])){ $this->error('修改人不能为空'); } if(empty($params['id'])){ $this->error('部件ID不能为空'); } $result = db('工单_部件资料') ->where('id', $params['id']) ->update([ 'part_name' => $params['part_name'], 'remark' => $params['remark'], 'part_type' => $params['part_type'], 'mod_id' => $params['mod_id'], 'mod_rq' => date('Y-m-d H:i:s'), ]); if (!$result) { $this->error('修改失败'); } $this->success('修改成功'); } /** 软删除部件信息 * @param id 部件ID */ public function DeletePart() { if (!$this->request->isPost()) { $this->error('请求方法错误'); } $params = $this->request->post(); if (empty($params['id'])) { $this->error('部件ID不能为空'); } $ids = explode(',', $params['id']); $ids = array_filter(array_map('intval', $ids)); if (empty($ids)) { $this->error('无效的部件ID'); } $result = db('工单_部件资料') ->whereIn('id', $ids) ->whereNull('del_rq') ->update(['del_rq' => date('Y-m-d H:i:s')]); if ($result === false) { $this->error('删除失败'); } if ($result === 0) { $this->error('未找到可删除的部件'); } $this->success('删除成功'); } /** * 工单工艺列表 * @param workorder 工单编号 */ public function GetProcessList() { if (!$this->request->isGet()) { $this->error('请求方法错误'); } $params = $this->request->param(); if (empty($params['workorder'])) { $this->error('工单编号不能为空'); } $list = db('工单_基础工艺资料') ->alias('a') ->join('工单_部件资料 b', 'a.part_code = b.part_code and a.work_order = b.work_order') ->where('a.del_rq', null) ->where('a.work_order', $params['workorder']) ->where('b.del_rq', null) ->field('a.id,a.part_code as 部件编号,b.part_name as 部件名称,a.process_code as 工艺编号, a.process_name as 工艺名称,a.big_process as 大工艺,a.standard_hour as 标准工时, a.standard_score as 标准公分,a.remark as 备注,a.coefficient as 系数,a.sys_id as 系统人,a.sys_rq as 系统时间,a.mod_id as 修改人, a.mod_rq as 修改时间') ->order('process_code') ->select(); $this->success('成功', $list); } /** * 获取部件列表 * @param workorder 工单编号 */ public function getpartlist() { if(!$this->request->isGet()){ $this->error('请求方法错误'); } $params = $this->request->get(); if (empty($params['workorder'])) { $this->error('工单编号不能为空'); } $list = db('工单_部件资料') ->where('work_order', $params['workorder']) ->where('del_rq', null) ->field('part_code as 部件编号,part_name as 部件名称') ->order('part_code') ->select(); if(empty($list)){ $this->error('该工单没有部件,请先添加部件'); } $this->success('成功', $list); } /** * 新增工单工艺资料 * @param workorder 工单编号 * @param part_code 部件编号 * @param process_code 工艺编号 * @param process_name 工艺名称 * @param big_process 大工艺 * @param standard_hour 标准工时 * @param standard_score 标准公分 * @param sys_id 系统人 * @param coefficient 系数 * @param remark 备注 */ public function AddProcess() { if (!$this->request->isPost()) { $this->error('请求方法错误'); } $params = $this->request->post(); if (empty($params['workorder'])) { $this->error('工单编号不能为空'); } if (empty($params['part_code'])) { $this->error('部件编号不能为空'); } if (empty($params['process_name'])) { $this->error('工艺名称不能为空'); } if (empty($params['big_process'])) { $this->error('大工艺不能为空'); } if (empty($params['standard_hour'])) { $this->error('标准工时不能为空'); } if (empty($params['standard_score'])) { $this->error('标准公分不能为空'); } if (empty($params['coefficient'])) { $params['coefficient'] = 1; } if (empty($params['sys_id'])) { $this->error('系统人不能为空'); } // 检查是否传入了process_code if (!empty($params['process_code'])) { $code = $params['process_code']; // 检查是否存在冲突 $exists = db('工单_基础工艺资料') ->where('work_order', $params['workorder']) ->where('part_code', $params['part_code']) ->where('process_code', '>=', $code) ->count(); if ($exists > 0) { // 如果存在冲突,将后续编号自动加1 db('工单_基础工艺资料') ->where('work_order', $params['workorder']) ->where('part_code', $params['part_code']) ->where('process_code', '>=', $code) ->setInc('process_code'); } } else { // 如果没有传入process_code,按照原来的逻辑生成 $code = db('工单_基础工艺资料') ->where('work_order', $params['workorder']) ->where('part_code', $params['part_code']) ->max('process_code'); $code = $code ? $code + 1 : 1; } $data = [ 'work_order' => $params['workorder'], 'part_code' => $params['part_code'], 'process_code' => $code, 'process_name' => $params['process_name'], 'big_process' => $params['big_process'], 'standard_hour' => $params['standard_hour'], 'standard_score' => $params['standard_score'], 'coefficient' => $params['coefficient'], 'remark' => $params['remark'], 'sys_id' => $params['sys_id'], 'sys_rq' => date('Y-m-d H:i:s'), ]; $result = db('工单_基础工艺资料')->insert($data); if ($result === false) { $this->error('新增失败'); } $this->success('新增成功'); } /** * 更新工单工艺资料 * @param id 工艺ID * @param mod_id 修改人 * @param process_name 工艺名称 * @param big_process 大工艺 * @param standard_hour 标准工时 * @param standard_score 标准公分 * @param coefficient 系数 * @param remark 备注 */ public function UpdateProcess() { if (!$this->request->isPost()) { $this->error('请求方法错误'); } $params = $this->request->post(); if (empty($params['id'])) { $this->error('工艺ID不能为空'); } if (empty($params['mod_id'])) { $this->error('修改人不能为空'); } if (empty($params['process_name'])) { $this->error('工艺名称不能为空'); } if (empty($params['big_process'])) { $this->error('大工艺不能为空'); } if (empty($params['standard_hour'])) { $this->error('标准工时不能为空'); } if (empty($params['standard_score'])) { $this->error('标准公分不能为空'); } if (!isset($params['coefficient']) || $params['coefficient'] === '') { $params['coefficient'] = 1; } $data = [ 'process_name' => $params['process_name'], 'big_process' => $params['big_process'], 'standard_hour' => $params['standard_hour'], 'standard_score' => $params['standard_score'], 'coefficient' => $params['coefficient'], 'remark' => $params['remark'], 'mod_id' => $params['mod_id'], 'mod_rq' => date('Y-m-d H:i:s'), ]; $result = db('工单_基础工艺资料') ->where('id', intval($params['id'])) ->whereNull('del_rq') ->update($data); if ($result === false) { $this->error('更新失败'); } if ($result === 0) { $this->error('未找到可更新的工艺或数据无变化'); } $this->success('更新成功'); } /** * 工单工艺资料软删除 * @param id 工艺ID */ public function DeleteProcess() { if (!$this->request->isPost()) { $this->error('请求方法错误'); } $params = $this->request->post(); if (empty($params['id'])) { $this->error('工艺ID不能为空'); } $ids = explode(',', $params['id']); $ids = array_filter(array_map('intval', $ids)); if (empty($ids)) { $this->error('无效的工艺ID'); } $result = db('工单_基础工艺资料') ->whereIn('id', $ids) ->whereNull('del_rq') ->update(['del_rq' => date('Y-m-d H:i:s')]); if ($result === false) { $this->error('删除失败'); } if ($result === 0) { $this->error('未找到可删除的工艺'); } $this->success('删除成功'); } /** * 工单工艺复制 * @param workorder 工单编号 * @param product_code 产品编号 * @param sys_id 操作人 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * @throws \think\exception\PDOException */ public function workorderprocessCopy() { if (!$this->request->isGet()) { $this->error('请求方法错误'); } $params = $this->request->param(); if (empty($params['workorder'])) { $this->error('工单编号不能为空'); } if (empty($params['product_code'])) { $this->error('产品编号不能为空'); } if (empty($params['sys_id'])) { $this->error('操作人不能为空'); } $now = date('Y-m-d H:i:s'); $productParts = db('产品_部件资料') ->where('product_code', $params['product_code']) ->where('mod_rq', null) ->field('part_sort as part_code,part_name') ->select(); if (empty($productParts)) { $this->error('该产品没有有效的部件'); } $productProcesses = db('产品_工艺资料') ->where('product_code', $params['product_code']) ->field('part_sort as part_code,part_name,gy_sort as process_code,gy_name as process_name, big_process,standard_hour,standard_score,difficulty_coef as coefficient') ->select(); if (empty($productProcesses)) { $this->error('该产品没有工艺'); } $workOrderParts = []; //配置工单部件数据 foreach ($productParts as $value) { $workOrderParts[] = [ 'work_order' => $params['workorder'], 'part_code' => $value['part_code'], 'part_name' => $value['part_name'], 'part_type' => '', 'remark' => '', 'status' => 1, 'sys_id' => $params['sys_id'], 'sys_rq' => $now, ]; } $workOrderProcesses = []; //配置工单工艺数据 foreach ($productProcesses as $value) { $workOrderProcesses[] = [ 'work_order' => $params['workorder'], 'part_code' => $value['part_code'], 'part_name' => $value['part_name'], 'process_code' => $value['process_code'], 'process_name' => $value['process_name'], 'big_process' => $value['big_process'], 'standard_hour' => $value['standard_hour'], 'standard_score' => $value['standard_score'], 'coefficient' => $value['coefficient'], 'remark' => '', 'sys_id' => $params['sys_id'], 'sys_rq' => $now, ]; } Db::startTrans(); try { //删除数据库现有的工单部件数据 Db::name('工单_部件资料')->where('work_order', $params['workorder'])->delete(); //删除数据库现有的工单工艺数据 Db::name('工单_基础工艺资料')->where('work_order', $params['workorder'])->delete(); //插入工单部件数据 $partInsertCount = Db::name('工单_部件资料')->insertAll($workOrderParts); if ($partInsertCount === false) { throw new \Exception('工单部件复制失败'); } //插入工单工艺数据 $processInsertCount = Db::name('工单_基础工艺资料')->insertAll($workOrderProcesses); if ($processInsertCount === false) { throw new \Exception('工单工艺复制失败'); } //提交事务 Db::commit(); } catch (\Exception $e) { Db::rollback(); $this->error('复制失败'); } $this->success('复制成功'); } /** * 查询产品类型 * @ApiMethod (GET) * @param string $workorder 工单编号 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function getproducttype() { if(!$this->request->isGet()){ $this->error('请求方法错误'); } $params = $this->request->get(); if (empty($params['product'])) { $this->error('产品类型不能为空'); } $list = db('产品_基本资料') ->where('product_type', $params['product']) ->where('status', 1) ->field('product_code as 产品编号,product_type as 产品类型,product_name as 产品名称') ->select(); if(empty($list)){ $this->error('该产品类型没有产品'); } $this->success('成功', $list); } }