function act_addWhRecManageDetail($jsonArr) { if (empty($jsonArr)) { self::$errCode = 0101; self::$errMsg = 'empty jsonArr'; return 0; } if (!is_array($jsonArr)) { self::$errCode = 0201; self::$errMsg = 'error array'; return 0; } $sku = $jsonArr['sku']; //sku $nums = $jsonArr['nums']; //到货数量 $userId = $jsonArr['userId']; //添加人id $batchNum = $jsonArr['batchNum']; //到货批次 $now = time(); $flag = 0; //标识变量,用来判断是否要进行采购未订单; try { TransactionBaseModel::begin(); if (empty($sku)) { //sku不能为空 self::$errCode = 0101; self::$errMsg = 'empty sku'; throw new Exception('empty sku'); } if (empty($nums)) { //到货数量不能为空 self::$errCode = 0201; self::$errMsg = 'empty nums'; throw new Exception('empty nums'); } if (intval($nums) == 0) { //数量不能为0 self::$errCode = 0311; self::$errMsg = 'error nums'; throw new Exception('error nums'); } if (empty($userId)) { //操作人id不能为空 self::$errCode = 0301; self::$errMsg = 'empty userId'; throw new Exception('empty userId'); } // if (empty ($batchNum)) { //批次不能为空 // self :: $errCode = 0302; // self :: $errMsg = 'empty $atchNum'; // throw new Exception('empty batchNum'); // } $tName = 'wh_receipt_management'; $select = '*'; $where = "WHERE reStatus=0 AND sku='{$sku}' ORDER BY createdTime"; //reStatus为0,且sku符合的收货表记录 $whRecManageList = WhRecManageModel::getTNameList($tName, $select, $where); if (empty($whRecManageList)) { //没有找到该sku对应的记录时,直接全部未订单 self::$errCode = 222; self::$errMsg = 'success'; $resupplyOrder = array(); //采购未订单数组 $resupplyOrder['sku'] = $sku; $resupplyOrder['nums'] = $nums; return $resupplyOrder; } $diffNums = $whRecManageList[0]['amount'] - $whRecManageList[0]['arrivedNums']; //该记录中能插入的最大到货数量 if ($nums <= $diffNums) { //nums小于本条记录能支持的最大到货数量 $tName = 'wh_receipt_management_details'; $set = "SET rmId='{$whRecManageList[0]['id']}',nums='{$nums}',userId='{$userId}',batchNum='{$batchNum}',insertTime='{$now}'"; $affectRowAdd = WhRecManageModel::addTNameRow($tName, $set); if (!$affectRowAdd) { //未插入成功报错 self::$errCode = 0501; self::$errMsg = 'affectRowAdd error'; throw new Exception('affectRowAdd error'); } //同时更新匹配记录的字段,arrivedNums和reStatus $tName = 'wh_receipt_management'; $set = "SET arrivedNums=arrivedNums+'{$nums}' "; if ($nums == $diffNums) { $set .= ",reStatus=1 "; } $where = "WHERE id='{$whRecManageList[0]['id']}'"; $affectRowUp = WhRecManageModel::updateTNameRow($tName, $set, $where); if (!$affectRowUp) { //未插入成功报错 self::$errCode = 0501; self::$errMsg = 'affectRowUp error'; throw new Exception('affectRowUp error'); } $flag = 1; } else { //如果nums大于本条记录能支持的最大到货数量 foreach ($whRecManageList as $value) { $diffNums = $value['amount'] - $value['arrivedNums']; //该记录中能插入的最大到货数量,此时第一次循环是,$num一定是>diffnums的 if ($nums <= $diffNums) { //本次到货数量小于本条记录能支持的最大到货数量 $tName = 'wh_receipt_management_details'; $set = "SET rmId='{$value['id']}',nums='{$nums}',userId='{$userId}',batchNum='{$batchNum}',insertTime='{$now}'"; $affectRowAdd = WhRecManageModel::addTNameRow($tName, $set); if (!$affectRowAdd) { //未插入成功报错 self::$errCode = 0501; self::$errMsg = 'affectRowAdd error'; throw new Exception('affectRowAdd error'); } //同时更新匹配记录的字段,arrivedNums和reStatus $tName = 'wh_receipt_management'; $set = "SET arrivedNums=arrivedNums+'{$nums}' "; if ($nums == $diffNums) { $set .= ",reStatus=1 "; } $where = "WHERE id='{$value['id']}'"; $affectRowUp = WhRecManageModel::updateTNameRow($tName, $set, $where); if (!$affectRowUp) { //未插入成功报错 self::$errCode = 0501; self::$errMsg = 'affectRowUp error'; throw new Exception('affectRowUp error'); } $flag = 1; break; //$nums <= $diffNums时,退出循环 } else { //直接先将第一条匹配记录的最大差值填入 $tName = 'wh_receipt_management_details'; $set = "SET rmId='{$value['id']}',nums='{$diffNums}',userId='{$userId}',batchNum='{$batchNum}',insertTime='{$now}'"; $affectRowAdd = WhRecManageModel::addTNameRow($tName, $set); if (!$affectRowAdd) { //未插入成功报错 self::$errCode = 0501; self::$errMsg = 'affectRowAdd error'; throw new Exception('affectRowAdd error'); } //同时更新匹配记录的字段,arrivedNums和reStatus $tName = 'wh_receipt_management'; $set = "SET arrivedNums=arrivedNums+'{$diffNums}',reStatus=1 "; $where = "WHERE id='{$value['id']}'"; $affectRowUp = WhRecManageModel::updateTNameRow($tName, $set, $where); if (!$affectRowUp) { //未插入成功报错 self::$errCode = 0501; self::$errMsg = 'affectRowUp error'; throw new Exception('affectRowUp error'); } $nums = $nums - $diffNums; //减去本次插入的数量,下次循环继续比对 } } } TransactionBaseModel::commit(); TransactionBaseModel::autoCommit(); if ($flag == 1) { //不需要采购未订单 self::$errCode = 200; self::$errMsg = 'success'; return 1; } else { //需要采购未订单 self::$errCode = 222; self::$errMsg = 'success'; $resupplyOrder = array(); //采购未订单数组 $resupplyOrder['sku'] = $sku; $resupplyOrder['nums'] = $nums; return $resupplyOrder; } } catch (Exception $e) { TransactionBaseModel::rollback(); TransactionBaseModel::autoCommit(); return 0; } }
/** *修改指定表记录 */ public static function updateTNameRow($tName, $set, $where) { self::initDB(); $sql = "UPDATE {$tName} {$set} {$where}"; $query = self::$dbConn->query($sql); if ($query) { $affectRows = self::$dbConn->affected_rows($query); return $affectRows; //成功, 返回列表数据 } else { self::$errCode = "003"; self::$errMsg = "修改失败"; return false; //失败则设置错误码和错误信息, 返回false } }