|
|
@@ -3,6 +3,8 @@
|
|
|
namespace app\api\controller;
|
|
|
|
|
|
use app\common\controller\Api;
|
|
|
+use think\db\exception\BindParamException;
|
|
|
+use think\exception\PDOException;
|
|
|
use \think\Request;
|
|
|
use \think\Db;
|
|
|
/**
|
|
|
@@ -343,117 +345,410 @@ class ReportingWork extends Api
|
|
|
* @ApiMethod POST
|
|
|
* @params array data
|
|
|
*/
|
|
|
- public function submitDailyProduction(){
|
|
|
- if (Request::instance()->isPost() == false){
|
|
|
+// public function submitDailyProduction(){
|
|
|
+// if (Request::instance()->isPost() == false){
|
|
|
+// $this->error('非法请求');
|
|
|
+// }
|
|
|
+// $params = Request::instance()->post();
|
|
|
+// $time = date('Y-m-d 00:00:00',time()-86400);
|
|
|
+// if ($params['sczl_sj2']<date('Y-m-d 08:30:00',time()) && $params['sczl_sj2']>date('Y-m-d 00:00:00')){
|
|
|
+// $params['sczl_rq'] = $time;
|
|
|
+// }
|
|
|
+// $machine = $params['sczl_jtbh'].'#';
|
|
|
+// $batchData = []; //批次追踪数据
|
|
|
+// $batch = $params['bom'];
|
|
|
+// $data = $params;//产量数据
|
|
|
+// $data['sczl_type'] = $params['sczl_gxmc'];
|
|
|
+// $data['sczl_前工序废'] = $params['last_fp'];
|
|
|
+// $data['sczl_来料少数'] = $params['less_sl'];
|
|
|
+// $data['sczl_装版总工时'] = $params['zb_time'];
|
|
|
+// $data['sczl_打样总工时'] = $params['dy_time'];
|
|
|
+// $data['sczl_设备运行工时'] = $params['run_time'];
|
|
|
+// $data['sczl_jtbh'] = $machine;
|
|
|
+// $data['码包'] = $params['code'];
|
|
|
+// $data['主电表'] = $params['main_meter'];
|
|
|
+// $data['辅电表'] = $params['auxiliary_meter'];
|
|
|
+// unset($data['last_fp']);
|
|
|
+// unset($data['less_sl']);
|
|
|
+// unset($data['zb_time']);
|
|
|
+// unset($data['dy_time']);
|
|
|
+// unset($data['run_time']);
|
|
|
+// unset($data['code']);
|
|
|
+// unset($data['main_meter']);
|
|
|
+// unset($data['auxiliary_meter']);
|
|
|
+// unset($data['bom']);
|
|
|
+// $start_time = \db('设备_产量采集')->where('设备编号',$machine)->order('UniqId desc')->find();
|
|
|
+// if (!empty($start_time)){
|
|
|
+// $data['开工时间'] = $start_time['开工时间'];
|
|
|
+// }else{
|
|
|
+// $data['开工时间'] = '';
|
|
|
+// }
|
|
|
+// $sys_id = \db('设备_基本资料')->where('设备编号',$machine)->value('sys_sbID');
|
|
|
+// $data['sys_id'] = '['.$sys_id.'/'.$machine.']';
|
|
|
+// $UniqId = \db('设备_产量计酬')->order('UniqId desc')->value('UniqId');
|
|
|
+// if ($UniqId < 10000000){
|
|
|
+// $data['UniqId'] = 10000000;
|
|
|
+// }else{
|
|
|
+// $data['UniqId'] = $UniqId + 1;
|
|
|
+// }
|
|
|
+// $data['sczl_Pgcl'] = 0;
|
|
|
+// $data['sczl_oil'] = 0;
|
|
|
+// $data['sczl_计产系数'] = 0;
|
|
|
+// $data['sczl_工价系数'] = 0;
|
|
|
+// $data['sczl_装版工时'] = 0;
|
|
|
+// $data['sczl_保养工时'] = 0;
|
|
|
+// $data['sczl_打样工时'] = 0;
|
|
|
+// $data['sczl_异常停机工时'] = 0;
|
|
|
+// $data['sczl_异常工时1'] = 0;
|
|
|
+// $data['sczl_异常类型1'] = '';
|
|
|
+// $data['sczl_废品率系数'] = '';
|
|
|
+// $data['sczl_desc'] = '';
|
|
|
+// $data['sczl_wgsj'] = '1900-01-01 00:00:00';
|
|
|
+// $data['码开始行'] = $params['ma_start'];
|
|
|
+// $data['码结束行'] = $params['ma_end'];
|
|
|
+// $data['mod_rq'] = '1900-01-01 00:00:00';
|
|
|
+// $data['sys_rq'] = date('Y-m-d H:i:s');
|
|
|
+// unset($data['ma_start']);
|
|
|
+// unset($data['ma_end']);
|
|
|
+// if (!empty($batch)){
|
|
|
+// $batchData = explode(',',$batch);
|
|
|
+// $newData = [];
|
|
|
+// $batchUniqId = \db('物料_批次跟踪')->order('UniqId desc')->value('UniqId');
|
|
|
+// if ($batchUniqId < 10000000){
|
|
|
+// $batchUniqId = 10000000;
|
|
|
+// }
|
|
|
+// foreach ($batchData as $key=>$item){
|
|
|
+// $batchUniqId++;
|
|
|
+// $val = explode('-',$item);
|
|
|
+// $newData[$key]['wlbh'] = $val[0];
|
|
|
+// $newData[$key]['wlBatch'] = $val[1];
|
|
|
+// $newData[$key]['sczl_gdbh'] = $data['sczl_gdbh'];
|
|
|
+// $newData[$key]['sczl_yjno'] = $data['sczl_yjno'];
|
|
|
+// $newData[$key]['sczl_gxh'] = $data['sczl_gxh'];
|
|
|
+// $newData[$key]['sczl_gxmc'] = $data['sczl_gxmc'];
|
|
|
+// $newData[$key]['sczl_num'] = $data['sczl_num'];
|
|
|
+// $newData[$key]['sys_id'] = $data['sys_id'];
|
|
|
+// $newData[$key]['sys_rq'] = $data['sys_rq'];
|
|
|
+// $newData[$key]['UniqID'] = $batchUniqId;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// if (!empty($data['sczl_装版总工时']) && $data['sczl_装版总工时'] !== 0){
|
|
|
+// $priData = [
|
|
|
+// 'gdbh' => $data['sczl_gdbh'] ?? '',
|
|
|
+// 'yjno' => $data['sczl_yjno'] ?? '',
|
|
|
+// 'gxh' => $data['sczl_gxh'] ?? '',
|
|
|
+// 'jtbh' => $data['sczl_jtbh'] ?? '',
|
|
|
+// 'startTime' => $data['sczl_sj1'] ?? '',
|
|
|
+// 'endTime' => $data['sczl_sj2'] ?? '',
|
|
|
+// '换版总工时' => $data['sczl_装版总工时'],
|
|
|
+// '换版联拼数' => $data['sczl_换版联拼数'] ?? 0,
|
|
|
+// '换版类型' => $data['换版类型'] ?? ''
|
|
|
+// ];
|
|
|
+// $priSql = \db('设备_装版工时')->fetchSql(true)->insert($priData);
|
|
|
+// $priRes = \db()->query($priSql);
|
|
|
+// }
|
|
|
+// unset($data['sczl_换版联拼数']);
|
|
|
+// unset($data['换版类型']);
|
|
|
+// $res = false;
|
|
|
+// $batch_res = false;
|
|
|
+// Db::startTrans();
|
|
|
+// try {
|
|
|
+// $sql = \db('设备_产量计酬')->fetchSql(true)->insert($data);
|
|
|
+// $res = Db::query($sql);
|
|
|
+// if (!empty($batch)){
|
|
|
+// $batch_sql = \db('物料_批次跟踪')->fetchSql(true)->insertAll($newData);
|
|
|
+// $batch_res = Db::query($batch_sql);
|
|
|
+// }else{
|
|
|
+// $batch_res = true;
|
|
|
+// }
|
|
|
+//
|
|
|
+// Db::commit();
|
|
|
+// cache('MachineProductReport-getList',null);
|
|
|
+// }catch (\Exception $e){
|
|
|
+// Db::rollback();
|
|
|
+// }
|
|
|
+// if ($res === false || $batch_res === false){
|
|
|
+// $this->error('报工失败');
|
|
|
+// }else{
|
|
|
+// $this->success('报工成功');
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+
|
|
|
+ public function submitDailyProduction()
|
|
|
+ {
|
|
|
+ // 1. 请求验证优化
|
|
|
+ if (!Request::instance()->isPost()) {
|
|
|
$this->error('非法请求');
|
|
|
}
|
|
|
+
|
|
|
$params = Request::instance()->post();
|
|
|
- $time = date('Y-m-d 00:00:00',time()-86400);
|
|
|
- if ($params['sczl_sj2']<date('Y-m-d 08:30:00',time()) && $params['sczl_sj2']>date('Y-m-d 00:00:00')){
|
|
|
- $params['sczl_rq'] = $time;
|
|
|
- }
|
|
|
- $machine = $params['sczl_jtbh'].'#';
|
|
|
- $batchData = []; //批次追踪数据
|
|
|
- $batch = $params['bom'];
|
|
|
- $data = $params;//产量数据
|
|
|
- $data['sczl_type'] = $params['sczl_gxmc'];
|
|
|
- $data['sczl_前工序废'] = $params['last_fp'];
|
|
|
- $data['sczl_来料少数'] = $params['less_sl'];
|
|
|
- $data['sczl_装版总工时'] = $params['zb_time'];
|
|
|
- $data['sczl_打样总工时'] = $params['dy_time'];
|
|
|
- $data['sczl_设备运行工时'] = $params['run_time'];
|
|
|
- $data['sczl_jtbh'] = $machine;
|
|
|
- $data['码包'] = $params['code'];
|
|
|
- $data['主电表'] = $params['main_meter'];
|
|
|
- $data['辅电表'] = $params['auxiliary_meter'];
|
|
|
- unset($data['last_fp']);
|
|
|
- unset($data['less_sl']);
|
|
|
- unset($data['zb_time']);
|
|
|
- unset($data['dy_time']);
|
|
|
- unset($data['run_time']);
|
|
|
- unset($data['code']);
|
|
|
- unset($data['main_meter']);
|
|
|
- unset($data['auxiliary_meter']);
|
|
|
- unset($data['bom']);
|
|
|
- $start_time = \db('设备_产量采集')->where('设备编号',$machine)->order('UniqId desc')->find();
|
|
|
- if (!empty($start_time)){
|
|
|
- $data['开工时间'] = $start_time['开工时间'];
|
|
|
- }else{
|
|
|
- $data['开工时间'] = '';
|
|
|
+
|
|
|
+ // 2. 数据预处理
|
|
|
+ $processedData = $this->preprocessData($params);
|
|
|
+
|
|
|
+ // 3. 数据验证
|
|
|
+ if (!$this->validateData($processedData)) {
|
|
|
+ $this->error('数据验证失败');
|
|
|
}
|
|
|
- $sys_id = \db('设备_基本资料')->where('设备编号',$machine)->value('sys_sbID');
|
|
|
- $data['sys_id'] = '['.$sys_id.'/'.$machine.']';
|
|
|
- $UniqId = \db('设备_产量计酬')->order('UniqId desc')->value('UniqId');
|
|
|
- if ($UniqId < 10000000){
|
|
|
- $data['UniqId'] = 10000000;
|
|
|
- }else{
|
|
|
- $data['UniqId'] = $UniqId + 1;
|
|
|
+
|
|
|
+ // 4. 数据库操作
|
|
|
+ $result = $this->saveProductionData($processedData);
|
|
|
+
|
|
|
+ if ($result) {
|
|
|
+ // 5. 清理缓存
|
|
|
+ cache('MachineProductReport-getList', null);
|
|
|
+ $this->success('报工成功');
|
|
|
+ } else {
|
|
|
+ $this->error('报工失败');
|
|
|
}
|
|
|
- $data['sczl_Pgcl'] = 0;
|
|
|
- $data['sczl_oil'] = 0;
|
|
|
- $data['sczl_计产系数'] = 0;
|
|
|
- $data['sczl_工价系数'] = 0;
|
|
|
- $data['sczl_装版工时'] = 0;
|
|
|
- $data['sczl_保养工时'] = 0;
|
|
|
- $data['sczl_打样工时'] = 0;
|
|
|
- $data['sczl_异常停机工时'] = 0;
|
|
|
- $data['sczl_异常工时1'] = 0;
|
|
|
- $data['sczl_异常类型1'] = '';
|
|
|
- $data['sczl_废品率系数'] = '';
|
|
|
- $data['sczl_desc'] = '';
|
|
|
- $data['sczl_wgsj'] = '1900-01-01 00:00:00';
|
|
|
- $data['码开始行'] = $params['ma_start'];
|
|
|
- $data['码结束行'] = $params['ma_end'];
|
|
|
- $data['mod_rq'] = '1900-01-01 00:00:00';
|
|
|
- $data['sys_rq'] = date('Y-m-d H:i:s');
|
|
|
- unset($data['ma_start']);
|
|
|
- unset($data['ma_end']);
|
|
|
- if (!empty($batch)){
|
|
|
- $batchData = explode(',',$batch);
|
|
|
- $newData = [];
|
|
|
- $batchUniqId = \db('物料_批次跟踪')->order('UniqId desc')->value('UniqId');
|
|
|
- if ($batchUniqId < 10000000){
|
|
|
- $batchUniqId = 10000000;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 数据预处理
|
|
|
+ */
|
|
|
+ private function preprocessData($params)
|
|
|
+ {
|
|
|
+ $currentTime = time();
|
|
|
+
|
|
|
+ // 处理日期逻辑
|
|
|
+ if ($this->isEarlyMorningProduction($params['sczl_sj2'], $currentTime)) {
|
|
|
+ $params['sczl_rq'] = date('Y-m-d 00:00:00', $currentTime - 86400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $machine = $params['sczl_jtbh'] . '#';
|
|
|
+
|
|
|
+ // 构建基础数据
|
|
|
+ $data = [
|
|
|
+ // 字段映射
|
|
|
+ 'sczl_type' => $params['sczl_gxmc'],
|
|
|
+ 'sczl_前工序废' => $params['last_fp'],
|
|
|
+ 'sczl_来料少数' => $params['less_sl'],
|
|
|
+ 'sczl_装版总工时' => $params['zb_time'],
|
|
|
+ 'sczl_打样总工时' => $params['dy_time'],
|
|
|
+ 'sczl_设备运行工时' => $params['run_time'],
|
|
|
+ 'sczl_jtbh' => $machine,
|
|
|
+ '码包' => $params['code'],
|
|
|
+ '主电表' => $params['main_meter'],
|
|
|
+ '辅电表' => $params['auxiliary_meter'],
|
|
|
+ '码开始行' => $params['ma_start'],
|
|
|
+ '码结束行' => $params['ma_end'],
|
|
|
+
|
|
|
+ // 系统字段
|
|
|
+ 'sys_rq' => date('Y-m-d H:i:s'),
|
|
|
+ 'mod_rq' => '1900-01-01 00:00:00',
|
|
|
+ 'sczl_wgsj' => '1900-01-01 00:00:00',
|
|
|
+
|
|
|
+ // 默认值字段
|
|
|
+ 'sczl_Pgcl' => 0,
|
|
|
+ 'sczl_oil' => 0,
|
|
|
+ 'sczl_计产系数' => 0,
|
|
|
+ 'sczl_工价系数' => 0,
|
|
|
+ 'sczl_装版工时' => 0,
|
|
|
+ 'sczl_保养工时' => 0,
|
|
|
+ 'sczl_打样工时' => 0,
|
|
|
+ 'sczl_异常停机工时' => 0,
|
|
|
+ 'sczl_异常工时1' => 0,
|
|
|
+ 'sczl_异常类型1' => '',
|
|
|
+ 'sczl_废品率系数' => '',
|
|
|
+ 'sczl_desc' => '',
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 保留原始参数中的相关字段
|
|
|
+ $preserveFields = [
|
|
|
+ 'sczl_gdbh', 'sczl_yjno', 'sczl_gxh', 'sczl_gxmc',
|
|
|
+ 'sczl_num', 'sczl_sj1', 'sczl_sj2', 'sczl_rq'
|
|
|
+ ];
|
|
|
+
|
|
|
+ foreach ($preserveFields as $field) {
|
|
|
+ if (isset($params[$field])) {
|
|
|
+ $data[$field] = $params[$field];
|
|
|
}
|
|
|
- foreach ($batchData as $key=>$item){
|
|
|
- $batchUniqId++;
|
|
|
- $val = explode('-',$item);
|
|
|
- $newData[$key]['wlbh'] = $val[0];
|
|
|
- $newData[$key]['wlBatch'] = $val[1];
|
|
|
- $newData[$key]['sczl_gdbh'] = $data['sczl_gdbh'];
|
|
|
- $newData[$key]['sczl_yjno'] = $data['sczl_yjno'];
|
|
|
- $newData[$key]['sczl_gxh'] = $data['sczl_gxh'];
|
|
|
- $newData[$key]['sczl_gxmc'] = $data['sczl_gxmc'];
|
|
|
- $newData[$key]['sczl_num'] = $data['sczl_num'];
|
|
|
- $newData[$key]['sys_id'] = $data['sys_id'];
|
|
|
- $newData[$key]['sys_rq'] = $data['sys_rq'];
|
|
|
- $newData[$key]['UniqID'] = $batchUniqId;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取开工时间
|
|
|
+ $data['开工时间'] = $this->getMachineStartTime($machine);
|
|
|
+
|
|
|
+ // 生成唯一ID
|
|
|
+ $data['UniqId'] = $this->generateUniqId();
|
|
|
+
|
|
|
+ // 设置系统ID
|
|
|
+ $data['sys_id'] = $this->getSystemId($machine);
|
|
|
+
|
|
|
+ return [
|
|
|
+ 'data' => $data,
|
|
|
+ 'batch' => $params['bom'] ?? '',
|
|
|
+ 'plateChangeData' => $this->preparePlateChangeData($data, $params)
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断是否为凌晨生产
|
|
|
+ */
|
|
|
+ private function isEarlyMorningProduction($productionTime, $currentTime)
|
|
|
+ {
|
|
|
+ $productionTimestamp = strtotime($productionTime);
|
|
|
+ $startOfDay = strtotime(date('Y-m-d 00:00:00', $currentTime));
|
|
|
+ $morningTime = strtotime(date('Y-m-d 08:30:00', $currentTime));
|
|
|
+
|
|
|
+ return $productionTimestamp < $morningTime && $productionTimestamp > $startOfDay;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取设备开工时间
|
|
|
+ */
|
|
|
+ private function getMachineStartTime($machine)
|
|
|
+ {
|
|
|
+ $startTimeRecord = \db('设备_产量采集')
|
|
|
+ ->where('设备编号', $machine)
|
|
|
+ ->order('UniqId desc')
|
|
|
+ ->find();
|
|
|
+
|
|
|
+ return $startTimeRecord['开工时间'] ?? '';
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成唯一ID
|
|
|
+ */
|
|
|
+ private function generateUniqId()
|
|
|
+ {
|
|
|
+ $lastUniqId = \db('设备_产量计酬')->order('UniqId desc')->value('UniqId');
|
|
|
+ return ($lastUniqId < 10000000) ? 10000000 : $lastUniqId + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取系统ID
|
|
|
+ */
|
|
|
+ private function getSystemId($machine)
|
|
|
+ {
|
|
|
+ $sysId = \db('设备_基本资料')->where('设备编号', $machine)->value('sys_sbID');
|
|
|
+ return '[' . $sysId . '/' . $machine . ']';
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 准备装版数据
|
|
|
+ */
|
|
|
+ private function preparePlateChangeData($data, $params)
|
|
|
+ {
|
|
|
+ if (empty($data['sczl_装版总工时']) || $data['sczl_装版总工时'] == 0) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ return [
|
|
|
+ 'gdbh' => $data['sczl_gdbh'] ?? '',
|
|
|
+ 'yjno' => $data['sczl_yjno'] ?? '',
|
|
|
+ 'gxh' => $data['sczl_gxh'] ?? '',
|
|
|
+ 'jtbh' => $data['sczl_jtbh'] ?? '',
|
|
|
+ 'startTime' => $data['sczl_sj1'] ?? '',
|
|
|
+ 'endTime' => $data['sczl_sj2'] ?? '',
|
|
|
+ '换版总工时' => $data['sczl_装版总工时'],
|
|
|
+ '换版联拼数' => $params['sczl_换版联拼数'] ?? 0,
|
|
|
+ '换版类型' => $params['换版类型'] ?? '',
|
|
|
+ 'yieldUid' => $this->generateUniqId(),
|
|
|
+ 'sys_rq' => date('Y-m-d H:i:s'),
|
|
|
+ 'sys_id' => $this->getSystemId($data['sczl_jtbh'])
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 准备批次数据
|
|
|
+ */
|
|
|
+ private function prepareBatchData($batch, $baseData)
|
|
|
+ {
|
|
|
+ if (empty($batch)) {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+
|
|
|
+ $batchData = explode(',', $batch);
|
|
|
+ $batchUniqId = \db('物料_批次跟踪')->order('UniqId desc')->value('UniqId');
|
|
|
+ $batchUniqId = ($batchUniqId < 10000000) ? 10000000 : $batchUniqId;
|
|
|
+
|
|
|
+ $newData = [];
|
|
|
+ foreach ($batchData as $item) {
|
|
|
+ $batchUniqId++;
|
|
|
+ $val = explode('-', $item);
|
|
|
+
|
|
|
+ $newData[] = [
|
|
|
+ 'wlbh' => $val[0],
|
|
|
+ 'wlBatch' => $val[1],
|
|
|
+ 'sczl_gdbh' => $baseData['sczl_gdbh'],
|
|
|
+ 'sczl_yjno' => $baseData['sczl_yjno'],
|
|
|
+ 'sczl_gxh' => $baseData['sczl_gxh'],
|
|
|
+ 'sczl_gxmc' => $baseData['sczl_gxmc'],
|
|
|
+ 'sczl_num' => $baseData['sczl_num'],
|
|
|
+ 'sys_id' => $baseData['sys_id'],
|
|
|
+ 'sys_rq' => $baseData['sys_rq'],
|
|
|
+ 'UniqID' => $batchUniqId
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ return $newData;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 数据验证
|
|
|
+ */
|
|
|
+ private function validateData($data)
|
|
|
+ {
|
|
|
+ // 必要的字段验证
|
|
|
+ $requiredFields = ['sczl_gdbh', 'sczl_jtbh', 'sczl_sj1', 'sczl_sj2'];
|
|
|
+
|
|
|
+ foreach ($requiredFields as $field) {
|
|
|
+ if (empty($data['data'][$field])) {
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|
|
|
- $res = false;
|
|
|
- $batch_res = false;
|
|
|
+
|
|
|
+ // 时间逻辑验证
|
|
|
+ if (strtotime($data['data']['sczl_sj1']) > strtotime($data['data']['sczl_sj2'])) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存生产数据
|
|
|
+ */
|
|
|
+ private function saveProductionData($processedData)
|
|
|
+ {
|
|
|
Db::startTrans();
|
|
|
+
|
|
|
try {
|
|
|
- $sql = \db('设备_产量计酬')->fetchSql(true)->insert($data);
|
|
|
- $res = Db::query($sql);
|
|
|
- if (!empty($batch)){
|
|
|
- $batch_sql = \db('物料_批次跟踪')->fetchSql(true)->insertAll($newData);
|
|
|
- $batch_res = Db::query($batch_sql);
|
|
|
- }else{
|
|
|
- $batch_res = true;
|
|
|
+ // 保存主数据
|
|
|
+ $mainSql = \db('设备_产量计酬')->fetchSql(true)->insert($processedData['data']);
|
|
|
+ $mainResult = \db()->query($mainSql);
|
|
|
+
|
|
|
+ // 保存批次数据
|
|
|
+ $batchData = $this->prepareBatchData($processedData['batch'], $processedData['data']);
|
|
|
+ $batchResult = true;
|
|
|
+
|
|
|
+ if (!empty($batchData)) {
|
|
|
+ $batchResult = \db('物料_批次跟踪')->insertAll($batchData);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 保存装版数据
|
|
|
+ $plateResult = true;
|
|
|
+
|
|
|
+ if (!empty($processedData['plateChangeData'])) {
|
|
|
+ $plateSql = \db('设备_装版工时')->fetchSql(true)->insert($processedData['plateChangeData']);
|
|
|
+ $plateResult = \db()->query($plateSql);
|
|
|
}
|
|
|
|
|
|
- Db::commit();
|
|
|
- cache('MachineProductReport-getList',null);
|
|
|
- }catch (\Exception $e){
|
|
|
+ if ($mainResult !== false && $batchResult !== false && $plateResult !== false) {
|
|
|
+ Db::commit();
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ Db::rollback();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (\Exception $e) {
|
|
|
Db::rollback();
|
|
|
+ // 记录日志
|
|
|
+ \think\Log::error('生产数据保存失败: ' . $e->getMessage());
|
|
|
+ return false;
|
|
|
}
|
|
|
- if ($res === false || $batch_res === false){
|
|
|
- $this->error('报工失败');
|
|
|
- }else{
|
|
|
- $this->success('报工成功');
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
/**
|
|
|
* 获取机台编号
|