| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 | 
							- /**
 
-  * Created by Mai on 2017/4/1.
 
-  */
 
- var Ration = {
 
-     createNew: function (project) {
 
-         // 用户定义private方法
 
-         var tools = {
 
-         };
 
-         // 所有通过this访问的属性,都不应在此单元外部进行写入操作
 
-         var ration = function (proj) {
 
-             this.project = proj;
 
-             this.datas = null;
 
-             var sourceType = ModuleNames.ration;
 
-             this.getSourceType = function () {
 
-                 return sourceType;
 
-             }
 
-             proj.registerModule(ModuleNames.ration, this);
 
-             var maxRationID = 0;
 
-             this.getNewRationID = function () {
 
-                 return maxRationID += 1;
 
-             };
 
-             this.maxRationID = function (maxID) {
 
-                 if (arguments.length === 0) {
 
-                     return maxRationID;
 
-                 } else {
 
-                     maxRationID = Math.max(maxID, maxRationID);
 
-                 }
 
-             };
 
-         };
 
-         // prototype用于定义public方法
 
-         ration.prototype.loadData = function (datas) {
 
-             var that = this;
 
-             this.datas = datas;
 
-             // generate Fees & Flags Index,For View & Calculate
 
-             this.datas.forEach(function (data) {
 
-                 data.FeesIndex = {};
 
-                 data.fees.forEach(function (fee) {
 
-                     data.FeesIndex[fee.fieldName] = fee;
 
-                 });
 
-                 data.FlagsIndex = {};
 
-                 data.flags.forEach(function (flag) {
 
-                     data.FlagsIndex[flag.fieldName] = flag;
 
-                 });
 
-                 that.maxRationID(data.ID);
 
-             });
 
-         };
 
-         ration.prototype.setMaxID = function (ID) {
 
-             this.maxRationID(ID);
 
-         }
 
-         // 提交数据后的错误处理方法
 
-         ration.prototype.doAfterUpdate = function(err, data){
 
-             // to do
 
-         };
 
-         ration.prototype.getTempRationData = function (id, billsID, serialNo) {
 
-             var newData = {'ID': id, 'serialNo': serialNo, projectID: this.project.ID()};
 
-             newData[project.masterField.ration] = billsID;
 
-             return newData;
 
-         };
 
-         ration.prototype.getBillsSortRation = function (billsID) {
 
-             var rations = this.datas.filter(function (data) {
 
-                 return data[project.masterField.ration] === billsID;
 
-             });
 
-             rations.sort(function (x, y) {
 
-                 return x.serialNo - y.serialNo;
 
-             });
 
-             return rations;
 
-         };
 
-         ration.prototype.getInsertRationData = function (billsID, preRation) {
 
-             var br = this.getBillsSortRation(billsID);
 
-             var updateData = [];
 
-             if (preRation) {
 
-                 var preIndex = br.indexOf(preRation), i;
 
-                 updateData.push({updateType: 'ut_create', updateData: this.getTempRationData(this.maxRationID() + 1, billsID, preIndex < br.length - 1 ? br[preIndex + 1].serialNo : br[preIndex].serialNo + 1)});
 
-                 for (i = preIndex + 1; i < br.length; i++) {
 
-                     updateData.push({updateType: 'ut_update', updateData: this.getTempRationData(br[i].ID, billsID, i < br.length - 1 ? br[i+1].serialNo : br[i].serialNo + 1)});
 
-                 }
 
-             } else {
 
-                 updateData.push({updateType: 'ut_create', updateData: this.getTempRationData(this.maxRationID() + 1, billsID, br.length > 0 ? br[br.length - 1].serialNo + 1 : 1)});
 
-             }
 
-             return updateData;
 
-         };
 
-         ration.prototype.getCounterData = function (count) {
 
-             var updateData = {'projectID': this.project.ID()};
 
-             if (count) {
 
-                 updateData[this.getSourceType()] = this.maxRationID() + count;
 
-             } else {
 
-                 updateData[this.getSourceType()] = this.maxRationID() + 1;
 
-             }
 
-             return updateData;
 
-         };
 
-         ration.prototype.insertRation = function (billsID, preRation) {
 
-             var br = this.getBillsSortRation(billsID);
 
-             this.project.pushNow('insertRation', [this.getSourceType(), this.project.projCounter()],
 
-                 [this.getInsertRationData(billsID, preRation), this.getCounterData()]);
 
-             //this.project.pushNow('insertRation', [this.getSourceType()], [this.getInsertRationData(billsID, preRation)]);
 
-             var newRation = null;
 
-             if (preRation) {
 
-                 var preIndex = br.indexOf(preRation), i;
 
-                 newRation = this.getTempRationData(this.getNewRationID(), billsID, preIndex < br.length - 1 ? br[preIndex + 1].serialNo : br[preIndex].serialNo + 1);
 
-                 this.datas.push(newRation);
 
-                 for (i = preIndex + 1; i < br.length; i++) {
 
-                     br[i].serialNo = i < br.length - 1 ? br [i + 1].serialNo : br[i].serialNo + 1;
 
-                 }
 
-             } else {
 
-                 newRation = this.getTempRationData(this.getNewRationID(), billsID, br.length > 0 ? br[br.length - 1].serialNo + 1 : 1);
 
-                 this.datas.push(newRation);
 
-             }
 
-             return newRation;
 
-         };
 
-         ration.prototype.insertStdRation = function (billsID, preRation, std) {
 
-             var br = this.getBillsSortRation(billsID), updateData = this.getInsertRationData(billsID, preRation), newRation = null;
 
-             updateData.forEach(function (data) {
 
-                 if (data.updateType === 'ut_create') {
 
-                     data.updateData.code = std.code;
 
-                     data.updateData.name = std.name;
 
-                     data.updateData.unit = std.unit;
 
-                     newRation = data.updateData;
 
-                 }
 
-             });
 
-             this.project.pushNow('insertRation', [this.getSourceType()], [updateData]);
 
-             newRation.ID = this.getNewRationID();
 
-             if (preRation) {
 
-                 var preIndex = br.indexOf(preRation), i;
 
-                 this.datas.push(newRation);
 
-                 for (i = preIndex + 1; i < br.length; i++) {
 
-                     br[i].serialNo = i < br.length - 1 ? br [i + 1].serialNo : br[i].serialNo + 1;
 
-                 }
 
-             } else {
 
-                 this.datas.push(newRation);
 
-             }
 
-             return newRation;
 
-         };
 
-         ration.prototype.getDeleteData = function (rationData) {
 
-             var updateData = [];
 
-             updateData.push({'updateType': 'ut_delete', 'updateData': {'ID': rationData.ID, 'projectID': this.project.ID()}});
 
-             return updateData;
 
-         };
 
-         ration.prototype.delete = function (ration) {
 
-             this.project.pushNow('deleteRation', [this.getSourceType()], [this.getDeleteData(ration)]);
 
-             this.datas.splice(this.datas.indexOf(ration), 1);
 
-         };
 
-         ration.prototype.getChangePosUpdateData = function (ration1, ration2) {
 
-             var updateData = [];
 
-             updateData.push({updateType: 'ut_update', updateData: this.getTempRationData(ration1.ID, ration1.billsItemID, ration2.serialNo)});
 
-             updateData.push({updateType: 'ut_update', updateData: this.getTempRationData(ration2.ID, ration2.billsItemID, ration1.serialNo)});
 
-             return updateData;
 
-         };
 
-         ration.prototype.changePos = function (ration1, ration2) {
 
-             var updateData = this.getChangePosUpdateData(ration1, ration2);
 
-             this.project.pushNow('insertRation', [this.getSourceType()], [updateData]);
 
-             var preSerialNo = ration1.serialNo;
 
-             ration1.serialNo = ration2.serialNo;
 
-             ration2.serialNo = preSerialNo;
 
-         };
 
-         return new ration(project);
 
-     }
 
- };
 
 
  |