ration_glj_facade.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724
  1. /**
  2. * Created by chen on 2017/6/29.
  3. */
  4. let mongoose = require('mongoose');
  5. const uuidV1 = require('uuid/v1');
  6. let consts = require('../../main/models/project_consts')
  7. let commonConsts = consts.commonConst;
  8. let _=require("lodash");
  9. let ration_glj = mongoose.model('ration_glj');
  10. import GLJListModel from '../../glj/models/glj_list_model';
  11. let std_glj_lib_gljList_model = mongoose.model('std_glj_lib_gljList');
  12. let async_n = require("async");
  13. let ration = mongoose.model('ration');
  14. let ration_coe_facade = require('./ration_coe_facade');
  15. let ration_coe = mongoose.model('ration_coe');
  16. let std_ration_lib_ration_items = mongoose.model('std_ration_lib_ration_items');
  17. let glj_calculate_facade = require('./glj_calculate_facade');
  18. let quantity_detail_facade = require('./quantity_detail_facade');
  19. let logger = require("../../../logs/log_helper").logger;
  20. import stdgljutil from "../../../public/cache/std_glj_type_util";
  21. import EngineeringLibModel from "../../users/models/engineering_lib_model";
  22. import GljDao from "../../complementary_glj_lib/models/gljModel";
  23. module.exports={
  24. save:save,
  25. getData:getData,
  26. deleteByRation:deleteByRation,
  27. getQuantityByProjectGLJ:getQuantityByProjectGLJ,
  28. getLibInfo:getLibInfo,
  29. getGLJData:getGLJData,
  30. addGLJ:addGLJ,
  31. replaceGLJ:replaceGLJ,
  32. mReplaceGLJ:mReplaceGLJ
  33. }
  34. let operationMap={
  35. 'ut_create':create_ration_glj,
  36. 'ut_update':update_ration_glj,
  37. 'ut_delete':delete_ration_glj
  38. };
  39. let updateFunctionMap = {
  40. 'normalUpdate':normalUpdate,
  41. 'marketPriceAdjustUpdate':marketPriceAdjustUpdate,
  42. 'customQuantityUpdate':customQuantityUpdate
  43. };
  44. /**
  45. * 根据项目工料机ID和项目ID取消耗量
  46. *
  47. * @param {object} condition
  48. * @return Array
  49. */
  50. async function getQuantityByProjectGLJ(condition) {
  51. let query ={
  52. $and:[
  53. {'projectID':condition.projectID},
  54. {'projectGLJID':{$in:condition.projectGLJIDList}}
  55. ]
  56. }
  57. let results = await ration_glj.find(query,['projectGLJID','quantity','rationID'],{sort: {projectGLJID: 1}});
  58. let rationList = _.uniq(_.map(results,'rationID'));
  59. let rationQuery={
  60. $and:[
  61. {'projectID':condition.projectID},
  62. {'ID':{$in:rationList}},
  63. {'deleteInfo': null}
  64. ]
  65. }
  66. let rations = await ration.find(rationQuery,['ID','quantity']);
  67. return combineQuantity(results,rations);
  68. }
  69. function combineQuantity(results,rations) {
  70. let resultList=[];
  71. _.forEach(results,function (data) {
  72. let tmp = {
  73. projectGLJID:data.projectGLJID,
  74. quantity: data.quantity
  75. }
  76. let ration=_.find(rations,{ID:data.rationID});
  77. if(ration){
  78. tmp.rationID=ration.ID;
  79. tmp.rationQuantity=ration.quantity?Number(ration.quantity):undefined;
  80. }
  81. resultList.push(tmp);
  82. /* if(resultMap.hasOwnProperty(data.projectGLJID)){
  83. resultMap[data.projectGLJID] += data.quantity;
  84. }else {
  85. resultMap[data.projectGLJID] = data.quantity;
  86. }*/
  87. });
  88. /* var resultList =[];
  89. for(let key in resultMap){
  90. let newObject = {
  91. 'projectGLJID':key,
  92. 'quantity':resultMap[key]
  93. }
  94. resultList.push(newObject)
  95. }*/
  96. return resultList;
  97. }
  98. function get_lib_glj_info(ration_glj) {
  99. return function (result,cb) {
  100. std_glj_lib_gljList_model.findOne({'ID':ration_glj.GLJID},(err,glj)=>{
  101. if(err){
  102. cb(err,'')
  103. }else if(glj){
  104. ration_glj.name = glj.name;
  105. ration_glj.code = glj.code;
  106. ration_glj.unit = glj.unit;
  107. ration_glj.specs = glj.specs;
  108. ration_glj.basePrice = glj.basePrice;
  109. ration_glj.shortName = glj.shortName;
  110. ration_glj.type = glj.gljType;
  111. ration_glj.repositoryId = glj.repositoryId;
  112. getInfoFromProjectGLJ(ration_glj).then(function (info) {
  113. if(info){
  114. let tem={};
  115. tem.newRecode=createNewRecord(info);
  116. tem.showData=info;
  117. result.datas.push(tem);
  118. cb(null,result);
  119. }else {
  120. cb(new Error('get project glj error'),null);
  121. }
  122. });
  123. }else {
  124. cb(null,null);
  125. }
  126. })
  127. }
  128. }
  129. function createNewRecord(ration_glj) {
  130. let newRecoed={};
  131. newRecoed.ID=ration_glj.ID;
  132. newRecoed.projectID=ration_glj.projectID;
  133. newRecoed.GLJID=ration_glj.GLJID;
  134. newRecoed.rationID=ration_glj.rationID;
  135. newRecoed.rationItemQuantity=ration_glj.rationItemQuantity;
  136. newRecoed.quantity=ration_glj.quantity;
  137. newRecoed.name = ration_glj.name;
  138. newRecoed.code = ration_glj.code;
  139. newRecoed.unit = ration_glj.unit;
  140. newRecoed.specs = ration_glj.specs;
  141. newRecoed.from=ration_glj.from?ration_glj.from:undefined;
  142. newRecoed.createType=ration_glj.createType?ration_glj.createType:undefined;
  143. newRecoed.shortName = ration_glj.shortName;
  144. newRecoed.type = ration_glj.type;
  145. newRecoed.repositoryId = ration_glj.repositoryId;
  146. newRecoed.projectGLJID=ration_glj.projectGLJID;
  147. return newRecoed
  148. }
  149. async function getInfoFromProjectGLJ(ration_glj) {
  150. let data = getGLJSearchInfo(ration_glj);
  151. try {
  152. let projectGljModel = new GLJListModel();
  153. let result = await projectGljModel.addList(data);
  154. ration_glj.marketPrice=result.unit_price.market_price;
  155. ration_glj.adjustPrice=result.unit_price.base_price;
  156. ration_glj.basePrice=result.unit_price.base_price;
  157. ration_glj.projectGLJID=result.id;
  158. ration_glj.isEstimate=result.is_evaluate;
  159. return ration_glj;
  160. } catch (err) {
  161. logger.err(err);
  162. return null;
  163. }
  164. }
  165. function create_ration_glj(user_id,datas) {
  166. return function (callback) {
  167. let ration_glj_list=datas.ration_glj_list;
  168. var tasks=[];
  169. tasks.push(startingTask("get glj info"))
  170. for(let i =0;i<ration_glj_list.length;i++){
  171. ration_glj_list[i].ID = uuidV1();
  172. tasks.push(get_lib_glj_info(ration_glj_list[i]))
  173. }
  174. async_n.waterfall(tasks,(err,results)=>{
  175. if(err){
  176. callback(err,results)
  177. }else {
  178. let newRecords =[];
  179. let showDatas=[];
  180. for (let r of results.datas){
  181. if(r){
  182. newRecords.push(r.newRecode);
  183. showDatas.push(r.showData);
  184. }
  185. }
  186. if(newRecords.length>0){
  187. ration_glj.insertMany(newRecords,(err,doc)=>{
  188. if(err){
  189. callback(err,null);
  190. }else {
  191. let returndata ={
  192. updateTpye:commonConsts.UT_CREATE,
  193. moduleName:'ration_glj',
  194. data:{
  195. newRecords:newRecords,
  196. showDatas:showDatas
  197. }
  198. }
  199. callback(null,returndata)
  200. }
  201. });
  202. }else {
  203. logger.info("can't find gljs")
  204. callback(null,null)
  205. }
  206. }
  207. })
  208. }
  209. }
  210. function update_ration_glj(user_id,datas) {
  211. if(datas.updateFunction){
  212. return updateFunctionMap[datas.updateFunction](user_id,datas);
  213. }else {
  214. return normalUpdate(user_id,datas);
  215. }
  216. }
  217. function normalUpdate(user_id,datas){
  218. return function(callback) {
  219. ration_glj.update(datas.query,datas.doc,(err,result)=>{
  220. if(err){
  221. callback(err,'');
  222. }else {
  223. let returndata ={
  224. moduleName:'ration_glj',
  225. data:{
  226. updateTpye:commonConsts.UT_UPDATE,
  227. query:datas.query,
  228. doc:datas.doc
  229. }
  230. }
  231. callback(null,returndata)
  232. }
  233. })
  234. }
  235. }
  236. function customQuantityUpdate(user_id,datas){
  237. return function(callback) {
  238. doCustomQuantityUpdate(datas).then((result)=>{
  239. if(result.err){
  240. callback(result.err,'');
  241. }else {
  242. let ration_glj_data ={
  243. moduleName:'ration_glj',
  244. data:{
  245. updateTpye:commonConsts.UT_UPDATE,
  246. quantityRefresh:true,
  247. glj_result:result.cal_result.glj_result
  248. }
  249. };
  250. let ration_data ={
  251. moduleName:'ration',
  252. data:{
  253. updateTpye:commonConsts.UT_UPDATE,
  254. stateRefresh:true,
  255. rationID:result.cal_result.rationID,
  256. adjustState:result.cal_result.adjustState
  257. }
  258. };
  259. callback(null,[ration_glj_data,ration_data]);
  260. }
  261. })
  262. }
  263. }
  264. async function doCustomQuantityUpdate(datas){
  265. let result = {
  266. err:null
  267. }
  268. try{
  269. await ration_glj.update(datas.query,datas.doc);
  270. let cal_result = await glj_calculate_facade.calculateQuantity({projectID:datas.query.projectID,rationID:datas.query.rationID});
  271. cal_result.glj_result.forEach(function (item) {
  272. if(!item.doc.hasOwnProperty('customQuantity')){
  273. item.doc.customQuantity=null;
  274. }
  275. });
  276. result.cal_result =cal_result;
  277. console.log(result);
  278. return result;
  279. }catch (err){
  280. result.err = err;
  281. console.log(err);
  282. return result;
  283. }
  284. }
  285. function marketPriceAdjustUpdate(user_id,datas) {
  286. return function (callback) {
  287. updateprojectGljAndRationGLJ(datas.query,datas.doc).then((result)=>{
  288. if(result.err){
  289. callback(result.err,'');
  290. }else {
  291. let returndata ={
  292. moduleName:'ration_glj',
  293. data:{
  294. updateTpye:commonConsts.UT_UPDATE,
  295. query:datas.query,
  296. doc:result.doc
  297. }
  298. };
  299. let ration_data ={
  300. moduleName:'ration',
  301. data:{
  302. updateTpye:commonConsts.UT_UPDATE,
  303. stateRefresh:true,
  304. rationID:datas.query.rationID,
  305. adjustState:result.adjustState
  306. }
  307. }
  308. callback(null,[returndata,ration_data]);
  309. }
  310. })
  311. }
  312. }
  313. async function updateprojectGljAndRationGLJ(query,doc) {
  314. let returnresult={};
  315. try {
  316. let gljListModel = new GLJListModel();
  317. let temp = doc.market_price;
  318. if(doc.market_price==null){
  319. doc.market_price = doc.base_price;
  320. }
  321. delete doc.base_price;
  322. let result = await gljListModel.modifyMarketPrice(doc);
  323. let updateDoc ={
  324. marketPrice:result.unit_price.market_price,
  325. marketPriceAdjust:temp,
  326. projectGLJID:result.id,
  327. isEstimate:result.is_evaluate,
  328. name : result.name,
  329. code:result.code
  330. };
  331. let updateresult = await ration_glj.findOneAndUpdate(query, updateDoc);
  332. let stateResult = await glj_calculate_facade.calculateQuantity({projectID:query.projectID,rationID:query.rationID},true);
  333. returnresult ={
  334. err:null,
  335. doc :updateDoc,
  336. adjustState:stateResult.adjustState
  337. }
  338. return returnresult;
  339. } catch (error) {
  340. returnresult.err = error;
  341. console.log(error);
  342. return returnresult
  343. }
  344. }
  345. function delete_ration_glj(user_id,datas) {
  346. return function (callback) {
  347. if(datas.deleteType=="RATION"){
  348. deleteByRation(datas,callback);
  349. }else if(datas.deleteType=="BILL"){
  350. deleteByBill(user_id,datas,callback);
  351. } else{
  352. deleteByID(datas,callback);
  353. }
  354. }
  355. }
  356. function deleteByRation(datas,callback) {
  357. let data = datas.updateData;
  358. let tasks=[];
  359. tasks.push(deleteGLJList(data));
  360. tasks.push(ration_coe_facade.delete_ration_coe(data));
  361. tasks.push(quantity_detail_facade.deleteByRation(data));
  362. async_n.parallel(tasks,function (err,result) {
  363. commonCallback(callback,result,err)
  364. })
  365. }
  366. function deleteGLJList(data) {
  367. return function (callback) {
  368. ration_glj.deleteMany({projectID: data.projectID, rationID: data.ID},(err,result)=>{
  369. commonCallback(callback,result,err)
  370. });
  371. }
  372. }
  373. function deleteByBill(user_id,datas,callback) {
  374. let tasks = [];
  375. tasks.push(startingTask("deleteByBill"));
  376. tasks.push(getRationsByBill(datas));
  377. tasks.push(deleteRationsbyBill(user_id,datas));
  378. tasks.push(deleteByMultiRations(datas));
  379. async_n.waterfall(tasks,function (err,results) {
  380. if(err){
  381. callback(err,'');
  382. }else {
  383. callback(null,results);
  384. }
  385. })
  386. }
  387. function deleteByID(datas,callback){
  388. deleteAndUpdateState(datas).then(function (result) {
  389. if(result.err){
  390. callback(result.err,'');
  391. }else {
  392. let returndata ={
  393. moduleName:'ration_glj',
  394. data:{
  395. updateTpye:commonConsts.UT_DELETE,
  396. query:datas.query,
  397. adjustState:result.adjustState
  398. }
  399. }
  400. callback(null,returndata)
  401. }
  402. })
  403. }
  404. async function deleteAndUpdateState(datas) {
  405. let result={
  406. err:null
  407. }
  408. try {
  409. await ration_glj.deleteOne(datas.query);
  410. let stateResult = await glj_calculate_facade.calculateQuantity({projectID:datas.query.projectID,rationID:datas.doc.rationID});
  411. result.adjustState=stateResult.adjustState;
  412. }catch (err){
  413. result.err=err;
  414. }
  415. return result;
  416. }
  417. function startingTask(processName){
  418. return function(asyncCallBack){
  419. var result = {
  420. processName : processName,
  421. datas:[]
  422. };
  423. asyncCallBack(null, result);
  424. };
  425. }
  426. function getRationsByBill(datas) {
  427. return function (results,callback) {
  428. ration.find({projectID:datas.updateData.projectID,billsItemID:datas.updateData.ID,deleteInfo: null},function (err,rations) {
  429. if(err){
  430. callback(err,'')
  431. }else {
  432. results.rations=rations;
  433. callback(null,results)
  434. }
  435. })
  436. }
  437. }
  438. function deleteRationsbyBill (user_id,datas){
  439. return function (results,callback) {
  440. let deleteInfo ={
  441. deleteInfo :{deleted: true, deleteDateTime: new Date(), deleteBy: user_id}
  442. };
  443. ration.update({projectID: datas.updateData.projectID, billsItemID:datas.updateData.ID},deleteInfo,{multi: true},(err,deleteresults)=>{
  444. if(err){
  445. callback(err,'');
  446. }else {
  447. callback(null,results);
  448. }
  449. });
  450. }
  451. }
  452. function deleteByMultiRations(datas) {
  453. return function (results,deleteCallBack) {
  454. var delete_tasks = [];
  455. var deleteOne=function (ration) {
  456. return function (callback) {
  457. ration_glj.deleteMany({projectID: ration.projectID, rationID: ration.ID},function (err,result) {
  458. commonCallback(callback,result,err)
  459. });
  460. }
  461. }
  462. let rations = results.rations;
  463. for(let i=0;i<rations.length;i++){
  464. delete_tasks.push(deleteOne(rations[i]._doc));
  465. delete_tasks.push(ration_coe_facade.delete_ration_coe(rations[i]._doc));
  466. delete_tasks.push(quantity_detail_facade.deleteByRation(rations[i]._doc));
  467. }
  468. delete_tasks.push(quantity_detail_facade.deleteByBill(datas.updateData));
  469. async_n.parallel(delete_tasks,(err,results)=>{
  470. if (err){
  471. deleteCallBack(err,'')
  472. }else {
  473. deleteCallBack(null,results)
  474. }
  475. })
  476. }
  477. }
  478. /*
  479. function deleteByRation(doc) {
  480. return function (callback){
  481. ration_glj.deleteMany({projectID: doc.updateData.projectID, rationID: doc.updateData.ID},callback);
  482. }
  483. }
  484. */
  485. function save (user_id, datas, callback) {
  486. let operations=[];
  487. if(_.isArray(datas)){
  488. for(let i=0;i<datas.length;i++){
  489. operations.push(operationMap[datas[i].updateType](user_id,datas[i]));
  490. }
  491. }else {
  492. operations.push(operationMap[datas.updateType](user_id,datas));
  493. }
  494. async_n.parallel(operations,function (err,results) {
  495. if(err){
  496. callback(err,'');
  497. }else {
  498. if(results.length==1){
  499. callback(null,results[0])
  500. }else {
  501. callback(null,results)
  502. }
  503. }
  504. })
  505. }
  506. async function getLibInfo(req){
  507. let gljLibId = null, engineeringId, sessionCompilation = req.session.sessionCompilation,
  508. rationValuation = sessionCompilation.ration_valuation,
  509. billValuation = sessionCompilation.bill_valuation,
  510. engineeringLibModel = new EngineeringLibModel();
  511. if(rationValuation[0]){
  512. let engineeringList = rationValuation[0].engineering_list;
  513. engineeringId = engineeringList.length > 0 ? engineeringList[0].engineering_id : null;
  514. let engineeringInfo = await engineeringLibModel.getEngineering(engineeringId);
  515. gljLibId = engineeringInfo.glj_lib.length > 0 && typeof engineeringInfo.glj_lib !== 'undefined' ? engineeringInfo.glj_lib[0].id : null;
  516. }
  517. else if(billValuation[0]){
  518. let engineeringList = billValuation[0].engineering_list;
  519. engineeringId = engineeringList.length > 0 ? engineeringList[0].engineering_id : null;
  520. let engineeringInfo = await engineeringLibModel.getEngineering(engineeringId);
  521. gljLibId = engineeringInfo.glj_lib.length > 0 && typeof engineeringInfo.glj_lib !== 'undefined' ? engineeringInfo.glj_lib[0].id : null;
  522. }
  523. let data = {
  524. userID: req.session.sessionUser.ssoId,
  525. gljLibId: gljLibId,
  526. compilationId: sessionCompilation._id
  527. };
  528. return data;
  529. }
  530. function getGLJData(info,callback) {
  531. let gljDao = new GljDao();
  532. let datas={};
  533. let gljDistTypeCache = stdgljutil.getStdGljTypeCacheObj().toArray();
  534. datas.distTypeTree=gljDistTypeCache;
  535. async_n.parallel([
  536. function (cb) {
  537. gljDao.getGljTypes(info.gljLibId,function (err,data) {
  538. if(err){
  539. cb(err);
  540. }else {
  541. datas.treeData=data;
  542. cb(null);
  543. }
  544. })
  545. },
  546. function (cb) {
  547. gljDao.getGljItems(info.gljLibId,info.userID,info.compilationId, function (err,data) {
  548. if(err){
  549. cb(err);
  550. }else {
  551. datas.stdGLJ=data.stdGljs;
  552. datas.complementaryGLJs=data.complementaryGljs;
  553. cb(null);
  554. }
  555. });
  556. }
  557. ], function (err) {
  558. if(err){
  559. callback(true, null);
  560. }
  561. else{
  562. callback(false, datas);
  563. }
  564. })
  565. }
  566. function getGLJSearchInfo(ration_glj) {
  567. let data = {
  568. glj_id: ration_glj.GLJID,
  569. project_id: ration_glj.projectID,
  570. code: ration_glj.code,
  571. name: ration_glj.name,
  572. specs: ration_glj.specs,
  573. unit: ration_glj.unit,
  574. type: ration_glj.type,
  575. type_of_work: ration_glj.type,
  576. base_price: ration_glj.basePrice,
  577. market_price: ration_glj.basePrice,
  578. repositoryId:ration_glj.repositoryId,
  579. from:ration_glj.from?ration_glj.from:'std'//std:标准工料机库, cpt:补充工料机库
  580. };
  581. return data;
  582. }
  583. async function addGLJ(rgList) {
  584. let newRecodes = [];
  585. for(let g of rgList){
  586. let projectGljModel = new GLJListModel();
  587. let result = await projectGljModel.addList(getGLJSearchInfo(g));
  588. g.marketPrice=result.unit_price.market_price;
  589. g.adjustPrice=result.unit_price.base_price;
  590. g.basePrice=result.unit_price.base_price;
  591. g.projectGLJID=result.id;
  592. g.isEstimate=result.is_evaluate;
  593. g.ID=uuidV1();
  594. newRecodes.push(createNewRecord(g));
  595. }
  596. await ration_glj.insertMany(newRecodes);
  597. let stateResult = await glj_calculate_facade.calculateQuantity({projectID:rgList[0].projectID,rationID:rgList[0].rationID});
  598. let result={
  599. newRecodes:newRecodes,
  600. showData:rgList,
  601. adjustState:stateResult.adjustState
  602. }
  603. return result;
  604. }
  605. async function replaceGLJ(data) {
  606. let rdata={};
  607. let projectGljModel = new GLJListModel();
  608. let result = await projectGljModel.addList(getGLJSearchInfo(data));
  609. data.marketPrice=result.unit_price.market_price;
  610. data.adjustPrice=result.unit_price.base_price;
  611. data.basePrice=result.unit_price.base_price;
  612. data.projectGLJID=result.id;
  613. data.isEstimate=result.is_evaluate;
  614. let updateResult=await ration_glj.findOneAndUpdate({ID:data.ID,projectID:data.projectID},data);
  615. let stateResult = await glj_calculate_facade.calculateQuantity({projectID:data.projectID,rationID:data.rationID});
  616. rdata.data=data;
  617. rdata.adjustState=stateResult.adjustState;
  618. return rdata;
  619. }
  620. async function mReplaceGLJ(data) {
  621. let mresult={};
  622. let projectGljModel = new GLJListModel();
  623. let result = await projectGljModel.addList(getGLJSearchInfo(data.doc));
  624. data.doc.marketPrice=result.unit_price.market_price;
  625. data.doc.adjustPrice=result.unit_price.base_price;
  626. data.doc.basePrice=result.unit_price.base_price;
  627. data.doc.projectGLJID=result.id;
  628. data.doc.isEstimate=result.is_evaluate;
  629. let rationList=await ration_glj.distinct('rationID',data.query);
  630. let updateResult=await ration_glj.update(data.query,data.doc,{multi: true});
  631. let stateList= await changAdjustState(data,rationList);
  632. mresult.data=data;
  633. mresult.stateList=stateList;
  634. return mresult
  635. }
  636. async function changAdjustState(data,rationList) {
  637. let stateList=[];
  638. for(let r of rationList){
  639. let stateResult = await glj_calculate_facade.calculateQuantity({projectID:data.query.projectID,rationID:r});
  640. stateList.push({rationID:r,adjustState:stateResult.adjustState});
  641. }
  642. return stateList;
  643. }
  644. async function testError() {
  645. throw new Error('test Error');
  646. }
  647. function getData(projectID, callback) {
  648. ration_glj.find({'projectID':projectID},(err,datas)=>{
  649. if(err){
  650. callback(1, '', null);
  651. }else {
  652. callback(0, consts.projectConst.RATION_GLJ, datas);
  653. }
  654. })
  655. }
  656. function commonCallback(callback,result,err) {
  657. if(err){
  658. callback(err,'');
  659. }else {
  660. callback(null,result);
  661. }
  662. }