MStocktaking.Class.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583
  1. <?php
  2. /**
  3. * 盘点库存管理Model
  4. * Created by PhpStorm.
  5. * User: 小威
  6. * Date: 2019/12/04
  7. * Time: 12:00
  8. */
  9. namespace JinDouYun\Model\Stock;
  10. use Exception;
  11. use Mall\Framework\Core\ErrorCode;
  12. use Mall\Framework\Core\StatusCode;
  13. use Mall\Framework\Core\ResultWrapper;
  14. use JinDouYun\Cache\InventoryCache;
  15. use JinDouYun\Dao\Stock\DStocktaking;
  16. use JinDouYun\Dao\Stock\DStocktakingDetails;
  17. use JinDouYun\Dao\Stock\DInventory;
  18. use JinDouYun\Dao\Stock\DInventoryDetails;
  19. use JinDouYun\Model\MBaseModel;
  20. use JinDouYun\Model\GoodsManage\MSku;
  21. use JinDouYun\Model\Stock\MInventory;
  22. use JinDouYun\Model\Common\MCommon;
  23. class MStocktaking extends MBaseModel
  24. {
  25. private $objDStocktaking;
  26. private $objDStocktakingDetails;
  27. private $enterpriseId;
  28. private $userCenterId;
  29. public function __construct($enterpriseId, $userCenterId)
  30. {
  31. $this->userCenterId = $userCenterId;
  32. $this->enterpriseId = $enterpriseId;
  33. $this->objDStocktaking = new DStocktaking('stock');
  34. $this->objDStocktakingDetails = new DStocktakingDetails('stock');
  35. $this->objDStocktaking->setTable($this->objDStocktaking->get_Table() . '_' . $enterpriseId);
  36. $this->objDStocktakingDetails->setTable($this->objDStocktakingDetails->get_Table() . '_' . $enterpriseId);
  37. $this->objDStocktaking->setSearchIndex('stocktaking_search')->setType('stocktaking');
  38. }
  39. /**
  40. * 盘点库存添加
  41. * @param $params
  42. * @return ResultWrapper
  43. */
  44. public function addStocktaking($params)
  45. {
  46. $details = $params['details'];
  47. unset($params['details']);
  48. unset($params['deleteArray']);
  49. $beginStatus = $this->objDStocktaking->beginTransaction();
  50. // 生成编号
  51. $dbResult = $this->objDStocktaking->get('createTime >='.strtotime(date('Ymd'.'0:0:0')), 'no', 'createTime desc');
  52. if ($dbResult === false) {
  53. return ResultWrapper::fail($this->objDStocktaking->error(), ErrorCode::$dberror);
  54. }
  55. if(empty($dbResult)){
  56. $params['no'] = createSerialNumberByDate('');
  57. }else{
  58. $params['no'] = createSerialNumberByDate($dbResult['no']);
  59. }
  60. //$params['no'] = createOrderSn(StatusCode::$source['manage'], StatusCode::$orderType['stocktaking'], $this->enterpriseId);
  61. $params['auditId'] = null;
  62. $params['auditName'] = null;
  63. $params['deleteStatus'] = StatusCode::$standard;
  64. $params['auditStatus'] = StatusCode::$auditStatus['auditing'];
  65. $params['auditTime'] = null;
  66. $params['createTime'] = time();
  67. $dbResult = $this->objDStocktaking->insert($params);
  68. if($dbResult === false){
  69. $this->objDStocktaking->rollBack();
  70. return ResultWrapper::fail($this->objDStocktaking->error(), ErrorCode::$dberror);
  71. }
  72. $returnData = $dbResult;
  73. unset($dbResult);
  74. foreach ($details as &$value){
  75. $value['linkId'] = $returnData;
  76. $value['linkNo'] = $params['no'];
  77. $value['deleteStatus'] = StatusCode::$standard;
  78. if($value['currentInventoryNum'] < 0){
  79. return ResultWrapper::fail('实盘库存不能小于0', ErrorCode::$paramError);
  80. }
  81. if(bccomp($value['documentInventoryNum'] , $value['currentInventoryNum']) == 1){
  82. //账面 > 实盘
  83. //亏
  84. $value['differenceStatus'] = StatusCode::$delete;
  85. $value['differenceNum'] = bcsub($value['documentInventoryNum'] , $value['currentInventoryNum'], 8);
  86. }elseif(bccomp($value['documentInventoryNum'] , $value['currentInventoryNum']) == -1){
  87. //账面 < 实盘
  88. //盈
  89. $value['differenceStatus'] = StatusCode::$standard;
  90. $value['differenceNum'] = bcsub($value['currentInventoryNum'] , $value['documentInventoryNum'], 8);
  91. }elseif(bccomp($value['documentInventoryNum'] , $value['currentInventoryNum']) == 0){
  92. $value['differenceStatus'] = 0;
  93. $value['differenceNum'] = bcsub($value['currentInventoryNum'] , $value['documentInventoryNum'], 8);
  94. }else{
  95. return ResultWrapper::fail('盈亏计算错误', ErrorCode::$paramError);
  96. }
  97. }
  98. $dbResult = $this->objDStocktakingDetails->insert($details, true);
  99. if($dbResult === false){
  100. $this->objDStocktaking->rollBack();
  101. return ResultWrapper::fail($this->objDStocktaking->error(), ErrorCode::$dberror);
  102. }
  103. //增加es搜索
  104. /*$modelResult = self::updateEsData($params, $returnData);
  105. if(!$modelResult->isSuccess()){
  106. $this->objDStocktaking->rollBack();
  107. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  108. }*/
  109. $beginStatus && $this->objDStocktaking->commit();
  110. return ResultWrapper::success($returnData);
  111. }
  112. /**
  113. * 盘点库存审核
  114. * @param $params
  115. * @return ResultWrapper
  116. * @throws Exception
  117. */
  118. public function auditStocktaking($params)
  119. {
  120. $id = $params['id'];
  121. unset($params['id']);
  122. $params['auditStatus'] = StatusCode::$auditStatus['auditPass'];
  123. $params['auditTime'] = time();
  124. // 查询盘点单数据
  125. $dbResult = $this->objDStocktaking->get($id);
  126. if($dbResult === false){
  127. return ResultWrapper::fail($this->objDStocktaking->error(), ErrorCode::$dberror);
  128. }
  129. if($dbResult['auditStatus'] == StatusCode::$auditStatus['auditPass']) {
  130. return ResultWrapper::fail('该单据已审核', ErrorCode::$paramError);
  131. }
  132. $stocktakingData = $dbResult;
  133. unset($dbResult);
  134. $stocktakingData['originId'] = $stocktakingData['id'];
  135. $stocktakingData['originNo'] = $stocktakingData['no'];
  136. $stocktakingData['auditId'] = $params['auditId'];
  137. $stocktakingData['auditName'] = $params['auditName'];
  138. $stocktakingData['sourceId'] = $stocktakingData['id'];
  139. $stocktakingData['sourceNo'] = $stocktakingData['no'];
  140. $stocktakingData['type'] = StatusCode::$orderType['stocktaking'];
  141. // 查询盘点单明细数据
  142. $dbResult = $this->objDStocktakingDetails->select(['linkId' => $id]);
  143. if($dbResult === false){
  144. return ResultWrapper::fail($this->objDStocktakingDetails->error(), ErrorCode::$dberror);
  145. }
  146. $details = $dbResult;
  147. unset($dbResult);
  148. $addInventoryParams = $stocktakingData;
  149. $delInventoryParams = $stocktakingData;
  150. //组装数据
  151. foreach($details as $value){
  152. //如果盘点盈亏状态为0 没有盈亏 不操作库存
  153. if($value['differenceStatus'] == 0){
  154. continue;
  155. }
  156. $value['num'] = $value['differenceNum'];
  157. if($value['differenceStatus'] == StatusCode::$standard){
  158. //盈 加
  159. $addInventoryParams['details'][] = $value;
  160. }else{
  161. //亏 减
  162. $delInventoryParams['details'][] = $value;
  163. }
  164. }
  165. $beginStatus = $this->objDStocktaking->beginTransaction();
  166. //修改库存
  167. $objMInventory = new MInventory($this->enterpriseId, $this->userCenterId);
  168. //加库存
  169. if(!empty($addInventoryParams['details'])){
  170. $modelResult = $objMInventory->updateIncInventoryNum($addInventoryParams);
  171. if(!$modelResult->isSuccess()){
  172. $this->objDStocktaking->rollBack();
  173. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  174. }
  175. }
  176. //减库存
  177. if(!empty($delInventoryParams['details'])){
  178. $modelResult = $objMInventory->updatedecInventoryNum($delInventoryParams);
  179. if(!$modelResult->isSuccess()){
  180. $this->objDStocktaking->rollBack();
  181. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  182. }
  183. }
  184. //修改盘点单
  185. $dbResult = $this->objDStocktaking->update($params,['id'=>$id]);
  186. if($dbResult === false){
  187. $this->objDStocktaking->rollBack();
  188. return ResultWrapper::fail($this->objDStocktaking->error(), ErrorCode::$dberror);
  189. }
  190. $returnData = $dbResult;
  191. unset($dbResult);
  192. $beginStatus && $this->objDStocktaking->commit();
  193. return ResultWrapper::success($returnData);
  194. }
  195. /**
  196. * 盘点库存修改
  197. * @param $updateData
  198. * @return ResultWrapper
  199. */
  200. public function updateStocktaking($updateData)
  201. {
  202. $where['id'] = $updateData['id'];
  203. unset($updateData['id']);
  204. unset($updateData['no']);
  205. $details = $updateData['details'];
  206. unset($updateData['details']);
  207. $deleteArray = $updateData['deleteArray'];
  208. unset($updateData['deleteArray']);
  209. $dbResult = $this->objDStocktaking->get($where);
  210. if($dbResult === false){
  211. return ResultWrapper::fail($this->objDStocktaking->error(), ErrorCode::$dberror);
  212. }
  213. $stocktaking = $dbResult;
  214. unset($dbResult);
  215. if(empty($stocktaking)){
  216. return ResultWrapper::fail('单据不存在', ErrorCode::$paramError);
  217. }
  218. $beginStatus = $this->objDStocktaking->beginTransaction();
  219. if(isset($updateData['extend'])) unset($updateData['extend']);
  220. $dbResult = $this->objDStocktaking->update($updateData,$where);
  221. if($dbResult === false){
  222. $this->objDStocktaking->rollBack();
  223. return ResultWrapper::fail($this->objDStocktaking->error(), ErrorCode::$dberror);
  224. }
  225. $returnData = $dbResult;
  226. unset($dbResult);
  227. if(!empty($deleteArray)){
  228. $dbResult = $this->objDStocktakingDetails->update(['deleteStatus' => StatusCode::$delete],['id'=>$deleteArray]);
  229. if($dbResult === false){
  230. $this->objDStocktaking->rollBack();
  231. return ResultWrapper::fail($this->objDStocktakingDetails->error(), ErrorCode::$dberror);
  232. }
  233. unset($dbResult);
  234. }
  235. $addDetails = [];
  236. foreach ($details as &$value){
  237. if(bccomp($value['documentInventoryNum'] , $value['currentInventoryNum']) == 1){
  238. //账面 > 实盘
  239. //亏
  240. $value['differenceStatus'] = StatusCode::$delete;
  241. $value['differenceNum'] = bcsub($value['documentInventoryNum'] , $value['currentInventoryNum'], 8);
  242. }elseif(bccomp($value['documentInventoryNum'] , $value['currentInventoryNum']) == -1){
  243. //账面 < 实盘
  244. //盈
  245. $value['differenceStatus'] = StatusCode::$standard;
  246. $value['differenceNum'] = bcsub($value['currentInventoryNum'] , $value['documentInventoryNum'], 8);
  247. }elseif(bccomp($value['documentInventoryNum'] , $value['currentInventoryNum']) == 0){
  248. $value['differenceStatus'] = 0;
  249. $value['differenceNum'] = bcsub($value['currentInventoryNum'] , $value['documentInventoryNum'], 8);
  250. }else{
  251. return ResultWrapper::fail('盈亏计算错误', ErrorCode::$paramError);
  252. }
  253. if(isset($value['id']) && !empty($value['id'])){
  254. //修改
  255. $id = $value['id'];
  256. unset($value['id']);
  257. $dbResult = $this->objDStocktakingDetails->update($value,['id'=>$id]);
  258. if($dbResult === false){
  259. $this->objDStocktaking->rollBack();
  260. return ResultWrapper::fail($this->objDStocktakingDetails->error(), ErrorCode::$dberror);
  261. }
  262. unset($dbResult);
  263. }else{
  264. //新增
  265. $data['linkId'] = $stocktaking['id'];
  266. $data['linkNo'] = $stocktaking['no'];
  267. $data['materielId'] = $value['materielId'];
  268. $data['materielCode'] = $value['materielCode'];
  269. $data['materielName'] = $value['materielName'];
  270. $data['skuId'] = $value['skuId'];
  271. $data['documentInventoryNum'] = $value['documentInventoryNum'];
  272. $data['currentInventoryNum'] = $value['currentInventoryNum'];
  273. $data['differenceNum'] = $value['differenceNum'];
  274. $data['otherNum'] = $value['otherNum'];
  275. $data['remark'] = $value['remark'];
  276. $data['differenceStatus'] = $value['differenceStatus'];
  277. $data['deleteStatus'] = StatusCode::$standard;
  278. $data['createTime'] = time();
  279. $data['updateTime'] = time();
  280. $addDetails[] = $data;
  281. }
  282. }
  283. if(!empty($addDetails)){
  284. $dbResult = $this->objDStocktakingDetails->insert($addDetails, true);
  285. if($dbResult === false){
  286. $this->objDStocktaking->rollBack();
  287. return ResultWrapper::fail($this->objDStocktakingDetails->error(), ErrorCode::$dberror);
  288. }
  289. }
  290. $beginStatus && $this->objDStocktaking->commit();
  291. return ResultWrapper::success($returnData);
  292. }
  293. /**
  294. * 盘点库存列表
  295. * @param $selectParams
  296. * @param $export
  297. * @return ResultWrapper
  298. */
  299. public function getAllStocktaking($selectParams, $export)
  300. {
  301. $limit = $selectParams['limit'];
  302. unset($selectParams['limit']);
  303. $offset = $selectParams['offset'];
  304. unset($selectParams['offset']);
  305. if($export){
  306. $limit = null;
  307. $offset = null;
  308. }
  309. $selectParams['deleteStatus'] = StatusCode::$standard;
  310. // if($export){
  311. // $selectParams['auditStatus'] = StatusCode::$auditStatus['auditPass'];
  312. // $dbResult = $this->objDStocktaking->select($selectParams);
  313. // if($dbResult === false){
  314. // return ResultWrapper::fail($this->objDStocktaking->error(), ErrorCode::$dberror);
  315. // }
  316. // $modelResult = self::export($dbResult);
  317. // if(!$modelResult->isSuccess()){
  318. // return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  319. // }
  320. // exit;
  321. // }
  322. $dbResult = $this->objDStocktaking->select($selectParams, '*', 'createTime desc', $limit, $offset);
  323. if ($dbResult === false) {
  324. return ResultWrapper::fail($this->objDStocktaking->error(), ErrorCode::$dberror);
  325. }
  326. $total = $this->objDStocktaking->count($selectParams);
  327. $formatData = parent::formatOrderMan($this->enterpriseId, $dbResult);
  328. foreach ($formatData as $key => $value){
  329. if( isset($value['no']) && !empty($value['no']) ){
  330. $formatData[$key]['no'] = StatusCode::$noPrefix[13].'-'.$value['no'];
  331. }
  332. }
  333. $return = [
  334. 'data' => $formatData,
  335. 'total' => ($total) ? intval($total) : 0,
  336. ];
  337. if($export){
  338. self::export($return['data']);
  339. exit;
  340. }
  341. if($return === false){
  342. return ResultWrapper::fail($this->objDStocktaking->error(), ErrorCode::$dberror);
  343. }else{
  344. return ResultWrapper::success($return);
  345. }
  346. }
  347. /**
  348. * 盘点搜索
  349. * @param $params
  350. * @param $export
  351. * @return ResultWrapper
  352. */
  353. public function searchAllStocktaking($params, $export)
  354. {
  355. $defaultDSL = ['from' => $params['offset'],'size' => $params['limit'],'sort' => ['createTime' => ['order' => 'desc']]];
  356. $selectParams = [];
  357. // !empty($params['warehouseId']) && $selectParams[] = ['term' => ['warehouseId' => $params['warehouseId']]];
  358. $selectParams[] = ['term' => ['enterpriseId' => $this->enterpriseId]];
  359. (!empty($params['start']) && !empty($params['end'])) && $selectParams[] = ['range' => ['createTime' => ['gte' => $params['start'],'lte' => $params['end']]]];
  360. !empty($params['search']) && $selectParams[] = ['multi_match' => ['fields' => ['no', 'operatorName'],'query' => $params['search'],'fuzziness' => 'AUTO']];
  361. $dsl = [];
  362. !empty($selectParams) && $dsl['query']['bool']['must'][] = $selectParams;
  363. $dsl = array_merge($defaultDSL, $dsl);
  364. if($export){
  365. $dbResult = $this->objDStocktaking->getScrollSearchQueryDsl($dsl);
  366. if(isset($dbResult['error'])){
  367. return ResultWrapper::fail($dbResult, ErrorCode::$dberror);
  368. }
  369. $returnData = parent::formatEsSelectData($dbResult);
  370. $formatIds = [];
  371. $formatData = [];
  372. foreach($returnData['data'] as $value){
  373. $formatIds[] = $value['id'];
  374. $formatData[$value['id']] = $value;
  375. }
  376. unset($dbResult);
  377. $dbResult = $this->objDStocktakingDetails->exportSelect(['linkId'=>$formatIds, 'deleteStatus' => StatusCode::$standard]);
  378. if($dbResult === false){
  379. return ResultWrapper::fail($this->objDStocktakingDetails->error(), ErrorCode::$dberror);
  380. }
  381. $modelResult = self::export($dbResult);
  382. if(!$modelResult->isSuccess()){
  383. return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
  384. }
  385. exit;
  386. }
  387. $dbResult = $this->objDStocktaking->getSearchQueryDsl($dsl);
  388. if(isset($dbResult['error'])){
  389. return ResultWrapper::fail($dbResult, ErrorCode::$dberror);
  390. }
  391. $returnData = parent::formatEsSelectData($dbResult, $this->enterpriseId);
  392. return ResultWrapper::success($returnData);
  393. }
  394. /**
  395. * 盘点导出方法
  396. * @param $result
  397. * @return ResultWrapper
  398. */
  399. public function export($result)
  400. {
  401. $formatIds = [];
  402. $formatData = [];
  403. foreach($result as $value){
  404. $formatIds[] = $value['id'];
  405. $formatData[$value['id']] = $value;
  406. }
  407. unset($dbResult);
  408. $details = $this->objDStocktakingDetails->select(['linkId'=>$formatIds, 'deleteStatus' => StatusCode::$standard]);
  409. if($details === false){
  410. return ResultWrapper::fail($this->objDStocktakingDetails->error(), ErrorCode::$dberror);
  411. }
  412. //导出到本地
  413. header ( "Content-type:application/vnd.ms-excel" );
  414. header ( "Content-Disposition:filename=盘点记录表.csv" );
  415. header ('Cache-Control: max-age=0');
  416. $fp = fopen('php://output', 'a');
  417. $head = ['盘点单号','仓库/门店','制单人','商品名称', '商品编码', '单位','属性', '账面库存', '实盘库存', '盈亏数量','盈亏状态','盘点日期'];//定义标题
  418. foreach ($head as $i => $v) {
  419. $head[$i] = mb_convert_encoding($v, 'GBK', 'utf-8'); //将中文标题转换编码,否则乱码
  420. }
  421. fputcsv($fp, $head);
  422. $limit = 10000;
  423. $num = 0; //计数器
  424. foreach ( $details as $value ) { //循环数据
  425. $num++;
  426. if($num == $limit){
  427. ob_flush(); //释放内存
  428. flush();
  429. }
  430. $value = parent::formatOrderMan($this->enterpriseId, $value);
  431. $v = parent::formatOrderMan($this->enterpriseId,$formatData[$value['linkId']]);
  432. $rows['no'] = isset($v['no']) ? $v['no'] : null;
  433. // $rows['auditStatus'] = $v['auditStatus'] == StatusCode::$auditStatus['auditPass'] ? '已审核' : '未审核';
  434. $rows['warehouseName'] = isset($v['warehouseName']) ? $v['warehouseName'] : null;
  435. // $rows['num'] = isset($v['num']) ? $v['num'] : null;
  436. $rows['operatorName'] = isset($v['operatorName']) ? $v['operatorName'] : null;
  437. $rows['materielName'] = isset($value['materielName']) ? $value['materielName'] : null;
  438. $rows['materielCode'] = isset($value['materielCode']) ? $value['materielCode'] : null;
  439. $rows['unitName'] = isset($value['unitName']) ? $value['unitName'] : null;
  440. $rows['skuName'] = isset($value['skuName']) ? $value['skuName'] : null;
  441. $rows['documentInventoryNum'] = isset($value['documentInventoryNum']) ? $value['documentInventoryNum'] : null;
  442. $rows['currentInventoryNum'] = isset($value['currentInventoryNum']) ? $value['currentInventoryNum'] : null;
  443. $icon = $value['differenceStatus'] == StatusCode::$standard ? '+' : '-';
  444. $differenceNum = isset($value['differenceNum']) ? $value['differenceNum'] : null;
  445. $rows['differenceNum'] = $icon.$differenceNum;
  446. $rows['differenceStatus'] = $value['differenceStatus'] == StatusCode::$standard ? '盈' : '亏';
  447. $rows['stocktakingTime'] = date('Y-m-d H:i:s', $v['stocktakingTime']);
  448. foreach ( $rows as $kk => $vv){
  449. $rs[$kk] = mb_convert_encoding($vv, 'GBK', 'utf-8'); //转译编码
  450. }
  451. fputcsv($fp, $rs);
  452. $rows = [];
  453. }
  454. return ResultWrapper::success('成功');
  455. }
  456. /**
  457. * 盘点库存详情
  458. * @param $params
  459. * @return ResultWrapper
  460. * @throws Exception
  461. */
  462. public function getStocktakingInfo($params)
  463. {
  464. $params['deleteStatus'] = StatusCode::$standard;
  465. $dbResult = $this->objDStocktaking->get($params);
  466. if($dbResult === false){
  467. return ResultWrapper::fail($this->objDStocktaking->error(), ErrorCode::$dberror);
  468. }
  469. $returnData = $dbResult;
  470. unset($dbResult);
  471. $dbResult = $this->objDStocktakingDetails->select(['linkId' => $returnData['id'],'deleteStatus'=>StatusCode::$standard]);
  472. if($dbResult === false){
  473. return ResultWrapper::fail($this->objDStocktakingDetails->error(), ErrorCode::$dberror);
  474. }
  475. $returnData['details'] = $dbResult;
  476. $returnData = parent::formatOrderMan($this->enterpriseId, $returnData);
  477. return ResultWrapper::success($returnData);
  478. }
  479. /**
  480. * 添加es
  481. * @param $id
  482. * @param $data
  483. * @return ResultWrapper
  484. */
  485. public function updateEsData($data,$id)
  486. {
  487. $addEsData = [
  488. //采购入库信息
  489. 'id' => $id,
  490. 'enterpriseId' => $this->enterpriseId,
  491. 'no' => $data['no'],
  492. 'num' => $data['num'],
  493. 'warehouseId' => $data['warehouseId'],
  494. 'warehouseName' => $data['warehouseName'],
  495. 'operatorId' => $data['operatorId'],
  496. 'operatorName' => $data['operatorName'],
  497. 'auditId' => $data['auditId'],
  498. 'auditName' => $data['auditName'],
  499. 'remark' => $data['remark'],
  500. 'stocktakingTime' => $data['stocktakingTime'],
  501. 'deleteStatus' => $data['deleteStatus'],
  502. 'auditStatus' => $data['auditStatus'],
  503. 'auditTime' => $data['auditTime'],
  504. 'createTime' => $data['createTime'],
  505. 'updateTime' => $data['updateTime'],
  506. ];
  507. //创建es id
  508. $esId = self::esId($id);
  509. $result = $this->objDStocktaking->addUpSearchIndexDocument($addEsData, $esId);
  510. if (isset($result['_shards']) && isset($result['_shards']['successful']) && $result['_shards']['successful'] == 1) {
  511. return ResultWrapper::success(isset($result['_id']) ? $result['_id'] : false);
  512. }
  513. return ResultWrapper::fail($result['error']['reason'], ErrorCode::$paramError);
  514. }
  515. /**
  516. * 拼接es id
  517. * @param $id
  518. * @return string
  519. */
  520. public function esId($id)
  521. {
  522. return 'EnterpriseId_' . $this->enterpriseId . '_stocktakingId_' . $id;
  523. }
  524. }