4a25a07ad80c83a89a837d54f03c1679a376ce14.svn-base 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468
  1. BemsWebApplication.DailyCheckReport = function (params, viewInfo) {
  2. "use strict";
  3. var initialized = false,
  4. shouldReload = false,
  5. dataSource;
  6. var CODE = $Code,
  7. FuelType = CODE.FuelType,
  8. FacilityType = CODE.FacilityType,
  9. FacilityCode = CODE.FacilityCode,
  10. F = CODE.Formula,
  11. TIT = CODE.TimeIntervalType;
  12. var visiblePopup = ko.observable(false);
  13. //var barDataArray = [];
  14. var works = ko.observableArray();
  15. var works2 = ko.observableArray();
  16. var works3 = ko.observableArray(); // bar chart용
  17. var works4 = ko.observableArray(); // bar chart용
  18. var eq = BWA.DataUtil.constructEqualFilter,
  19. and = BWA.DataUtil.andFilter;
  20. //or = BWA.DataUtil.orFilter;
  21. var BFDataSource = BemsWebApplication.db.createDataSource('CmBusinessField'),
  22. progressDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeProgress'),
  23. chartPieDay = BWA.Chart.Instance('chartPieDayDReport', 'dxPieChart'),
  24. chartBarDay = BWA.Chart.Instance('chartBarDayDReport', 'dxChart'),
  25. chartPieMonth = BWA.Chart.Instance('chartPieMonthDReport', 'dxPieChart'),
  26. chartBarMonth = BWA.Chart.Instance('chartBarMonthDReport', 'dxChart');
  27. var BF = ko.observableArray(),
  28. progresses = ko.observableArray();
  29. var LCCViewGet = new BWA.Chart.PointHistory_LCCViewGet(BWA.UserInfo.SiteId());
  30. var FmsHouseStockGet = new BWA.Chart.FmsHouseStockGet(BWA.UserInfo.SiteId());
  31. var timeBoxForSearch = BWA.SearchView.createDateTimeBox($G.TimeTypesForMonthOnly);
  32. var factorToe = null;
  33. var Toe = $Code.FuelType.WATER + 1;
  34. var fuelTypesDataSource = BemsWebApplication.db.createDataSource('BemsFuelType'),
  35. fuelTypesForSearch = ko.observableArray(),
  36. timeTypesForSearch = ko.observableArray(),
  37. timeTypeIdForSearch = ko.observable(0),
  38. fuelTypeIdForSearch = ko.observable(),
  39. deferredForSearch = new $.Deferred();
  40. var dataArray = ko.observableArray(),
  41. dataDayForPie = ko.observableArray(),
  42. dataMonthForPie = ko.observableArray(),
  43. dataDayForBar = ko.observableArray(),
  44. dataMonthForBar = ko.observableArray()
  45. ;
  46. var formulaGet = new BWA.Chart.FormulaGet(BWA.UserInfo.SiteId());
  47. timeTypesForSearch($G.TimeTypes);
  48. var m = moment();
  49. /*dataDayForBar([
  50. { DateTime: new Date(m.year(), m.month(), 1), PowerToe: 40, GasToe: 40, WaterToe: 40 },
  51. { DateTime: new Date(m.year(), m.month(), 2), Value: 50, PowerToe: 40, GasToe: 40, WaterToe: 40 },
  52. { DateTime: new Date(m.year(), m.month(), 3), Value: 60, PowerToe: 40, GasToe: 40, WaterToe: 40 },
  53. { DateTime: new Date(m.year(), m.month(), 4), Value: 80, PowerToe: 40, GasToe: 40, WaterToe: 40 },
  54. { DateTime: new Date(m.year(), m.month(), 5), Value: 100, PowerToe: 40, GasToe: 40, WaterToe: 40 },
  55. { DateTime: new Date(m.year(), m.month(), 6), Value: 40, PowerToe: 40, GasToe: 40, WaterToe: 40 },
  56. { DateTime: new Date(m.year(), m.month(), 7), Value: 120, PowerToe: 40, GasToe: 40, WaterToe: 40 },
  57. { DateTime: new Date(m.year(), m.month(), 31), Value: 120, PowerToe: 40, GasToe: 40, WaterToe: 40 }
  58. ]);
  59. dataMonthForBar(dataDayForBar());
  60. dataDayForPie([
  61. { FuelTypeName: '전기', Value: 320 },
  62. { FuelTypeName: '가스', Value: 350 },
  63. { FuelTypeName: '수도', Value: 360 },
  64. ]);
  65. dataMonthForPie(dataDayForPie());
  66. */
  67. var InOutDataSource = BWA.DataUtil.createDataSource({
  68. dataSourceOptions: {
  69. store: BemsWebApplication.odata.FmsMaterialStockHistoryDaily,
  70. select: [
  71. 'HistoryId',
  72. 'SiteId',
  73. 'BusinessFieldId',
  74. 'MaterialId',
  75. 'MaterialCode',
  76. 'MaterialName',
  77. 'Unit',
  78. 'YearMonth',
  79. 'YearMonthDate',
  80. 'StoredCount',
  81. 'ReleaseCount',
  82. 'ReleaseLossCount',
  83. 'ReleaseReturnCount',
  84. 'FirstClassId',
  85. 'SecondClassId',
  86. 'ThirdClassId',
  87. 'WarehouseId',
  88. 'StockCount',
  89. 'StockAmount',
  90. 'FirstClassId',
  91. 'SecondClassId',
  92. 'ThirdClassId',
  93. 'Standard'
  94. ],
  95. filter: [eq('SiteId', BWA.UserInfo.SiteId())],
  96. },
  97. }, 'FmsMaterialStockHistoryDaily');
  98. var workDataSource = BWA.DataUtil.createDataSource({
  99. dataSourceOptions: {
  100. store: BemsWebApplication.odata.FmsMaterialEx,
  101. select: [
  102. 'SiteId',
  103. 'BusinessFieldId',
  104. 'MaterialId',
  105. 'MaterialCode',
  106. 'Name',
  107. 'FirstClassId',
  108. 'SecondClassId',
  109. 'ThirdClassId',
  110. 'LocationId',
  111. 'MaterialTypeId',
  112. 'TradeCompanyId',
  113. 'WarehouseId',
  114. 'WHouseName',
  115. 'Rfid',
  116. 'Unit',
  117. 'DurableYears',
  118. 'ReasonableStockCount',
  119. 'Manufacturer',
  120. 'Standard',
  121. 'FinalPrice',
  122. 'ImageFileId',
  123. 'Note',
  124. 'IsDiscontinued',
  125. 'IsUse',
  126. 'FinalStockCount',
  127. 'FinalTotalStockAmount',
  128. 'StockCount',
  129. 'StockAmount',
  130. ],
  131. //expand: ['CmSite', 'FmsMaterialWarehouse' ],
  132. filter: [
  133. //['BusinessFieldId', '=', BWA.UserInfo.BusinessFieldId()],
  134. //'or',
  135. //['BusinessFieldId', '=', 1]
  136. ['SiteId', '=', BWA.UserInfo.SiteId()],
  137. 'and',
  138. ['WarehouseId', '<>', 0],
  139. ]
  140. },
  141. });
  142. //}, 'FmsWorkRequest');
  143. /*
  144. var workDataSource2 = BWA.DataUtil.createDataSource({
  145. dataSourceOptions: {
  146. select: [
  147. 'SiteId', 'WorkRequestId', 'WorkProgressId',
  148. 'CmBusinessField/Name', 'FmsWorkResult/'
  149. ],
  150. expand: [
  151. 'FmsWorkResult',
  152. 'FmsWorkResult/CmUser',
  153. 'FmsWorkResult/IsConfirmed',
  154. 'FmsWorkResult/ConfirmedDate',
  155. 'FmsWorkRequest/FmsWorkCodeType',
  156. 'FmsWorkRequest/FmsWorkCodeProgress',
  157. 'CmBusinessField', 'CmUser'],
  158. extendOptions: {
  159. forceOriginalField: true,
  160. },
  161. },
  162. }, 'FmsWorkRequest'); */
  163. /*
  164. var searchViewOptions = {
  165. searchViewItems: [
  166. { id: 'TimeTypeId', defaultValue: 0, value: timeTypeIdForSearch, dataSource: timeTypesForSearch },
  167. { id: 'FuelTypeId', ignoreValue: 0, defaultValue: 1, value: fuelTypeIdForSearch, dataSource: fuelTypesForSearch },
  168. { id: 'DateForHour', type: 'dateRange' },
  169. { id: 'TimeForHour', type: 'dateRange' },
  170. ],
  171. promiseDataInSearchView: deferredForSearch.promise()
  172. };*/
  173. function handleViewShown() {
  174. if (initialized === false) {
  175. //var chartOption = BWA.ChartOptions.LCCView;
  176. $.when(
  177. BFDataSource.load(),
  178. progressDataSource.load()
  179. ).done(function (BFResult, progressResult) {
  180. BF = BFResult[0];
  181. progresses = progressResult[0];
  182. BWA.ChartOptions.DailyCheckReport.MakeSeries(progresses);
  183. chartPieDay = chartPieDay(BWA.ChartOptions.DailyCheckReport.getPieChartDayOptions());
  184. chartBarDay = chartBarDay(BWA.ChartOptions.DailyCheckReport.getBarChartDayOptions());
  185. //chartPieMonth = chartPieMonth(BWA.ChartOptions.FacilityTaskReport.getPieChartMonthOptions());
  186. //chartBarMonth = chartBarMonth(BWA.ChartOptions.FacilityTaskReport.getBarChartMonthOptions());
  187. handleSearchInSearchView();
  188. //loadMonthlyEnergyUsage();
  189. //loadDailyEnergyUsage();
  190. });
  191. //$('#chartPieDay').dxPieChart(chartOption.getPieChartDayOptions(dataDayForPie));
  192. //$('#chartBarDay').dxChart(chartOption.getBarChartDayOptions(dataDayForBar));
  193. //$('#chartPieMonth').dxPieChart(chartOption.getPieChartMonthOptions(dataMonthForPie));
  194. //$('#chartBarMonth').dxChart(chartOption.getBarChartMonthOptions(dataMonthForBar));
  195. initialized = true;
  196. }
  197. else
  198. handleSearchInSearchView();
  199. }
  200. function handleSearchInSearchView() {
  201. //visiblePopup(true);
  202. /* var filterA = [];
  203. filterA.push(['FacilityCode', "<>", 0]);
  204. filterA.push(['ValueType', ">", 0]);
  205. _.each(filter, function (x) {
  206. filterA.push(x);
  207. });
  208. workDataSource.filter(filterA); */
  209. //workDataSource._storeLoadOptions.filter.push(filter);
  210. //workDataSource._paginate = false;
  211. var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName)
  212. /*
  213. var param = {
  214. SiteId: BWA.UserInfo.SiteId(),
  215. BusinessId: BWA.UserInfo.BusinessFieldId(),
  216. //TimeIntervalType: timeType,
  217. //StartDate: date.startDate,
  218. //EndDate: date.endDate,
  219. };
  220. var promises = [];
  221. promises.push(FmsHouseStockGet.apiGet(_.extend(param)));
  222. $.when.apply(this, promises).done(function (predata) {
  223. var i;
  224. i = predata[0];
  225. works2(predata);
  226. }); */
  227. InOutDataSource.load().done(function (workResult) {
  228. works(workResult);
  229. });
  230. workDataSource.load().done(function (workResult) {
  231. works2(workResult);
  232. });
  233. /*
  234. workDataSource.filter([
  235. eq('SiteId', BWA.UserInfo.SiteId()),
  236. and,
  237. eq('FmsWorkRequest/WorkProgressId', 4)
  238. ]);
  239. workDataSource.load().done(function (workResult) {
  240. //works2(workResult);
  241. });
  242. workDataSource.filter([
  243. eq('SiteId', BWA.UserInfo.SiteId()),
  244. and,
  245. eq('FmsWorkRequest/WorkProgressId', 3),
  246. 'or',
  247. eq('FmsWorkRequest/WorkProgressId', 4),
  248. 'or',
  249. eq('FmsWorkRequest/WorkProgressId', 5),
  250. ]);
  251. workDataSource.load().done(function (workResult) {
  252. works3(workResult);
  253. var now = new Date();
  254. now = new Date(now.getFullYear(), now.getMonth(), now.getDay(), 0, 0, 0);
  255. //now = new Date(2015, 8, 1, 0, 0, 0);
  256. workDataSource.filter([
  257. eq('SiteId', BWA.UserInfo.SiteId()),
  258. and,
  259. eq('FmsWorkRequest/WorkProgressId', 6),
  260. and,
  261. eq('FmsWorkResult/IsConfirmed', true),
  262. and,
  263. ['FmsWorkResult/ConfirmedDate', ">=", now]
  264. ]);
  265. workDataSource.load().done(function (workResult2) {
  266. works4(workResult2);
  267. var pieDataArray = [];
  268. var barDataArray = [];
  269. _.each(BF, function (x) {
  270. barDataArray.push({
  271. PType: x.Name(),
  272. 작업대기: getWorkProcessCount(workResult, 3, x.BusinessFieldId()),
  273. 작업진행중: getWorkProcessCount(workResult, 4, x.BusinessFieldId()),
  274. 작업완료: getWorkProcessCount(workResult, 5, x.BusinessFieldId()),
  275. 완료승인: getWorkProcessCount(workResult2, 6, x.BusinessFieldId()),
  276. });
  277. });
  278. chartBarDay().option('dataSource', barDataArray);
  279. //MakeMonthClickChart(date.endDate.getMonth() + 1);
  280. _.each(progresses, function (x) {
  281. if (x.WorkProgressId() >= 3)
  282. pieDataArray.push({
  283. FuelTypeName: x.Name(),
  284. Value: (x.WorkProgressId() == 6) ? workResult2.length : getWorkProcessCount(workResult, x.WorkProgressId(), null)
  285. })
  286. });
  287. chartPieDay().option('dataSource', pieDataArray);
  288. });
  289. });*/
  290. $("#large-indicator").dxLoadIndicator({
  291. height: 60,
  292. width: 60
  293. });
  294. }
  295. //var fuelTypes = [FuelType.ELECTRICITY, FuelType.GAS, FuelType.WATER];
  296. function handleViewHidden() {
  297. visiblePopup(false);
  298. //hideOverlay();
  299. // var dataGrid = $('#gridContainer').dxDataGrid('instance');
  300. // dataGrid.clearSelection();
  301. }
  302. function handleViewShowing() {
  303. }
  304. function getWorkProcessCount(datas, type, bf) {
  305. var cnt = 0;
  306. _.each(datas, function (x) {
  307. if (x['FmsWorkRequest/WorkProgressId']() == type && (bf == null || x.BusinessFieldId() == bf))
  308. //alert(x.BusinessFieldId());
  309. //alert(x['FmsWorkRequest/WorkProgressId']());
  310. //if (x.FmsWorkRequest/WorkProgressId() == type && x.BusinessFieldId() == bf)
  311. cnt++;
  312. });
  313. return cnt;
  314. }
  315. function refreshList() {
  316. //dataSource.pageIndex(0);
  317. //dataSource.load();
  318. }
  319. //var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null, handleSearchInSearchView), {
  320. var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, null, ko.observable(null), handleViewShown), {
  321. refreshList: refreshList,
  322. viewShowing: handleViewShowing,
  323. workDataGridOptions: utils.datagrid.defaultOptions({
  324. rowClick: function (row) {
  325. //selData = row.data;
  326. /*fName(row.values[1]);
  327. Name(row.values[2]);
  328. Energy(row.values[3]);
  329. Type(row.values[4]);
  330. getValue(row.values[5]);
  331. setValue(row.values[6]);
  332. visiblePopup(true);*/
  333. },
  334. rowAlternationEnabled: true,
  335. dataSource: works,
  336. columns: [
  337. { dataField: 'MaterialCode', caption: '자재코드', width: '25%', alignment: 'right' },
  338. { dataField: 'MaterialName', caption: '자재명', width: '25%', alignment: 'left' },
  339. {
  340. dataField: 'YearMonthDate', caption: '날짜', width: '20%', alignment: 'center', sortOrder: 'desc',
  341. customizeText: function (cellInfo) {
  342. return $G.date(cellInfo.value);
  343. }
  344. },
  345. { dataField: 'StoredCount', caption: '입고수량', width: '15%', alignment: 'center', format: 'currency' },
  346. { dataField: 'ReleaseCount', caption: '정상출고', width: '15%', alignment: 'center', format: 'currency' },
  347. { dataField: 'ReleaseLossCount', caption: '조정출고손실', width: '20%', alignment: 'center', format: 'currency' },
  348. { dataField: 'ReleaseReturnCount', caption: '조정출고반납', width: '20%', alignment: 'center', format: 'currency' },
  349. { dataField: 'StockCount', caption: '재고수량', width: '20%', alignment: 'center', format: 'currency' },
  350. ],
  351. }),
  352. workDataGridOptions2: utils.datagrid.defaultOptions({
  353. rowClick: function (row) {
  354. //selData = row.data;
  355. /*fName(row.values[1]);
  356. Name(row.values[2]);
  357. Energy(row.values[3]);
  358. Type(row.values[4]);
  359. getValue(row.values[5]);
  360. setValue(row.values[6]);
  361. visiblePopup(true);*/
  362. },
  363. groupPanel: {
  364. visible: true
  365. },
  366. rowAlternationEnabled: true,
  367. dataSource: works2,
  368. columns: [
  369. //{ dataField: 'WorkRequestId', caption: $G('number'), width: '8%', alignment: 'center' },
  370. //{ dataField: 'CmBusinessField/Name', caption: $G('businessFieldName'), width: '10%', alignment: 'center' },
  371. /* { dataField: 'HouseName', caption: '창고명', width: '30%', alignment: 'center' },*/
  372. {
  373. dataField: 'WHouseName', caption: '창고명', alignment: 'right',
  374. groupIndex: 0
  375. },
  376. { dataField: 'MaterialCode', caption: '자재코드', width: '30%', alignment: 'right' },
  377. { dataField: 'Name', caption: '자재명', width: '40%', alignment: 'left' },
  378. { dataField: 'StockCount', caption: '재고량', width: '30%', alignment: 'center' },
  379. ],
  380. summary: {
  381. groupItems: [{
  382. column: 'StockCount',
  383. summaryType: 'sum',
  384. displayFormat: '창고재고량 : {0} ',
  385. }]
  386. }
  387. }),
  388. });
  389. viewModel.timeBoxForSearch = timeBoxForSearch;
  390. viewModel.popupOptions = {
  391. width: 300,
  392. height: 100,
  393. contentTemplate: "info",
  394. showTitle: false,
  395. title: "메세지",
  396. visible: visiblePopup,
  397. dragEnabled: false,
  398. shading: false,
  399. closeOnOutsideClick: false
  400. };
  401. return viewModel;
  402. };