private DataItem getCYReadDataAskItem(byte[] buffer) { IdentityCode identityCode = MyDataConvert.get数据表示符(buffer); DataItem item = null; switch (identityCode) { case IdentityCode.读时钟: item = new DataItem_C200(buffer); break; case IdentityCode.读切断报警参数: item = new DataItem_C201(buffer); break; case IdentityCode.读服务器信息: item = new DataItem_C202(buffer); break; case IdentityCode.读上传周期: item = new DataItem_C203(buffer); break; case IdentityCode.读公称流量: item = new DataItem_C204(buffer); break; } return(item); }
private DataItem getCYWriteDataAskItem(byte[] buffer) { IdentityCode identityCode = MyDataConvert.get数据表示符(buffer); DataItem item = null; switch (identityCode) { case IdentityCode.设置服务器信息: item = new DataItem_C104(buffer); break; case IdentityCode.设置上传周期: item = new DataItem_C105(buffer); break; case IdentityCode.设置切断报警参数: item = new DataItem_C103(buffer); break; case IdentityCode.修正表数据: item = new DataItem_C102(buffer); break; case IdentityCode.设置公称流量: item = new DataItem_C101(buffer); break; case IdentityCode.换表: item = new DataItem_C107(buffer); break; } return(item); }
public DataItem_ReadHistoryData(IdentityCode identityCode, byte ser) { this.dataUnits = new byte[3]; this.dataUnits[0] = (byte)((UInt16)identityCode >> 8); this.dataUnits[1] = (byte)(((UInt16)identityCode) & 0xff); this.dataUnits[2] = ser; }
public DataItem_Answer(byte ser, IdentityCode identityCode) { Init(); this.dataUnits[2] = ser; this.dataUnits[0] = (byte)(((ushort)identityCode) >> 8); this.dataUnits[1] = (byte)(((ushort)identityCode) & 0xff); }
public static IdentityCode get数据表示符(byte[] buffer) { IdentityCode ident = IdentityCode.出厂启用; byte[] b = { buffer[1], buffer[0] }; ident = (IdentityCode)BitConverter.ToUInt16(b, 0); return(ident); }
/// <summary> /// 主站请求写数据对象 /// </summary> /// <param name="buffer"></param> /// <returns></returns> private DataItem getWriteDataAskItem(byte[] buffer) { IdentityCode identityCode = MyDataConvert.get数据表示符(buffer); DataItem item = null; switch (identityCode) { case IdentityCode.写价格表: item = new DataItem_A010(buffer); break; case IdentityCode.写结算日: item = new DataItem_A011(buffer); break; case IdentityCode.写购入金额: item = new DataItem_A013(buffer); break; case IdentityCode.写新密钥: item = new DataItem_A014(buffer); break; case IdentityCode.写标准时间: item = new DataItem_A015(buffer); break; case IdentityCode.写阀门控制: item = new DataItem_A017(buffer); break; case IdentityCode.出厂启用: item = new DataItem_A019(buffer); break; case IdentityCode.写地址: item = new DataItem_A018(buffer); break; case IdentityCode.写表底数: item = new DataItem_A016(buffer); break; default: break; } return(item); }
/// <summary> /// 处理主站请求的创源参数设置操作并返回应答数据 /// </summary> /// <param name="identityCode"></param> /// <param name="ser"></param> /// <param name="oldItem"></param> /// <returns></returns> private DataItem DowithCYWriteData(IdentityCode identityCode, byte ser, DataItem oldItem) { DataItem item = null; switch (identityCode) { case IdentityCode.设置上传周期: item = new DataItem_C105_Answer(ser); break; case IdentityCode.设置切断报警参数: item = new DataItem_C103_Answer(ser, this._st1, this._st2); break; case IdentityCode.设置服务器信息: item = new DataItem_C104_Answer(ser); break; case IdentityCode.修正表数据: item = new DataItem_C102_Answer(ser); DataItem_C102 item_C102 = oldItem as DataItem_C102; this.TotalTopUp = item_C102.CurrentDaySYMoney + item_C102.CurrentLJMoney; //总充值金额 this.LJMoney = item_C102.CurrentLJMoney; //累计金额 this.LastTotal = item_C102.SettlementDayLJGas; //上次结算日表底 this.CurrentBalance = item_C102.CurrentDaySYMoney; break; case IdentityCode.换表: item = new DataItem_C107_Answer(ser); DataItem_C107 item_C107 = oldItem as DataItem_C107; //本阶梯周期已使用累计用量 //当前剩余金额 this.LastTotal = this.TotalAmount - item_C107.LJGas; //计算气费,将价格调整的合适的阶梯 this.ChangeCalculate(this, item_C107.SYMoney); this.TotalTopUp = item_C107.SYMoney; this.CurrentBalance = item_C107.SYMoney; break; } Update(); return(item); }
/// <summary> /// 处理主站请求的写操作,并返回应答数据对象 /// </summary> /// <param name="identityCode"></param> /// <param name="ser"></param> /// <param name="oldItem"></param> /// <returns></returns> private DataItem DowithWriteData(IdentityCode identityCode, byte ser, DataItem oldItem) { //在该方法中将写入数据设置到响应变量中 DataItem item = null; switch (identityCode) { case IdentityCode.写价格表: DataItem_A010 item_10 = oldItem as DataItem_A010; this.MeterType = ((byte)item_10.CT.CTMeterType).ToString().PadLeft(2, '0'); if (出厂状态 && item_10.CT.CTMeterType == Common.Item.MeterType.金额表) { this.出厂状态 = false; this.IsUsedLadder = item_10.CT.CTIsLadder; this.Ladder = item_10.CT.CTLadderNum; this.Price1 = item_10.Price1; this.Gas1 = item_10.UseGas1; this.Price2 = item_10.Price2; this.Gas2 = item_10.UseGas2; this.Price3 = item_10.Price3; this.Gas3 = item_10.UseGas3; this.Price4 = item_10.Price4; this.Gas4 = item_10.UseGas4; this.Price5 = item_10.Price5; this.SettlementType = ((byte)item_10.CT.CTJieSuanType).ToString().PadLeft(2, '0'); //结算类型 //设置初次转换为金额表的当前计价参数 this.CurrentLadder = 1; this.CurrentPrice = this.Price1; this.LastGasPoint = 0; //上次结算时表底 if (this.IsUsedLadder && this.Ladder > this.CurrentLadder) { //计算下一个结算点 this.NextSettlementPointGas = this.Gas1; this.SetNextSettlementDateTime(); } else { //非阶梯价或无阶梯,-1表示正无穷大 this.NextSettlementPointGas = -1; } } else if (!出厂状态 && item_10.CT.CTMeterType == Common.Item.MeterType.金额表) { //调价 PricingPlan plan = new PricingPlan(); plan.IsUsedLadder = item_10.CT.CTIsLadder; plan.Ladder = item_10.CT.CTLadderNum; plan.Price1 = item_10.Price1; plan.Gas1 = item_10.UseGas1; plan.Price2 = item_10.Price2; plan.Gas2 = item_10.UseGas2; plan.Price3 = item_10.Price3; plan.Gas3 = item_10.UseGas3; plan.Price4 = item_10.Price4; plan.Gas4 = item_10.UseGas4; plan.Price5 = item_10.Price5; plan.UseDate = item_10.StartDate.ToString(); plan.MeterType = ((byte)item_10.CT.CTMeterType).ToString(); plan.SettlementType = ((byte)item_10.CT.CTJieSuanType).ToString().PadLeft(2, '0'); //结算类型 plan.MeterNo = this.Mac; this.AddPlan(plan); } item = new DataItem_A010_Answer(ser, _st1); break; case IdentityCode.写结算日: DataItem_A011 item_11 = oldItem as DataItem_A011; this.SettlementDay = item_11.JieSuanDay; this.SettlementMonth = item_11.JieSuanMonth; SetNextSettlementDateTime(); item = new DataItem_A011_Answer(ser); break; case IdentityCode.写购入金额: DataItem_A013 item_13 = oldItem as DataItem_A013; if (this.lastBuySer != ser) { if (this.lastBuySer != ser) { this.LastSettlementAmount += item_13.BuyMoney; //写入购买金额 this.TotalTopUp += item_13.BuyMoney; this.CurrentBalance += item_13.BuyMoney; this.lastBuySer = ser; } } item = new DataItem_A013_ASK(ser, item_13.BuyIndex, item_13.BuyMoney); break; case IdentityCode.写新密钥: DataItem_A014 item_14 = oldItem as DataItem_A014; this.Key = item_14.Key; this.MKeyVer = item_14.Version; item = new DataItem_A014_ASK(ser, item_14.Version); break; case IdentityCode.写标准时间: item = new DataItem_A015_ASK(ser); break; case IdentityCode.写阀门控制: DataItem_A017 item_17 = oldItem as DataItem_A017; this.ValveState = item_17.IsOpen == true ? "0" : "1"; this._st1.ValveStatu = item_17.IsOpen; item = new DataItem_A017_ASK(ser, this._st1); break; case IdentityCode.出厂启用: item = new DataItem_A019(ser); break; case IdentityCode.写地址: item = new DataItem_A018_Answer(ser); break; default: break; } Update(); return(item); }
/// <summary> /// 处理主站的读数据请求,并返回应答数据 /// </summary> /// <param name="identityCode"></param> /// <param name="ser"></param> /// <returns></returns> private DataItem DowithReadData(IdentityCode identityCode, byte ser) { DataItem item = null; switch (identityCode) { case IdentityCode.读计量数据: item = new DataItem_901F_ANSWER(ser, DateTime.Now, this.TotalAmount, this.LJMoney, this.CurrentBalance, this.LastTotal, _st1, _st2); break; case IdentityCode.历史计量数据1: item = this._item_01; item.SER = ser; break; case IdentityCode.历史计量数据2: item = this._item_02; item.SER = ser; break; case IdentityCode.历史计量数据3: item = this._item_03; item.SER = ser; break; case IdentityCode.历史计量数据4: item = this._item_04; item.SER = ser; break; case IdentityCode.历史计量数据5: item = this._item_05; item.SER = ser; break; case IdentityCode.历史计量数据6: item = this._item_06; item.SER = ser; break; case IdentityCode.历史计量数据7: item = this._item_07; item.SER = ser; break; case IdentityCode.历史计量数据8: item = this._item_08; item.SER = ser; break; case IdentityCode.历史计量数据9: item = this._item_09; item.SER = ser; break; case IdentityCode.历史计量数据10: item = this._item_10; item.SER = ser; break; case IdentityCode.历史计量数据11: item = this._item_11; item.SER = ser; break; case IdentityCode.历史计量数据12: item = this._item_12; item.SER = ser; break; default: break; } return(item); }
public override async Task <GenerateTaskDto> Create(CreateGenerateTaskDto input) { int currentUserId = (int)(base.AbpSession.UserId ?? 0); var isExist = _generateTaskRepository.GetAll().AsNoTracking().Any(x => x.Remark.Equals(input.Remark, StringComparison.OrdinalIgnoreCase)); if (isExist) { throw new UserFriendlyException("任务名重复!"); } var currentUser = await _userRepository.GetAsync(currentUserId); var generateCount = input.GenerateCount; if (currentUser.TotalCountCount + generateCount > currentUser.AllowCodeCount) { throw new UserFriendlyException($"当前用户只允许生成{currentUser.AllowCodeCount}个码,请联系管理员!"); } //generate the task input.Created = DateTime.Now; input.TaskStatu = (int)TaskStatu.Init; input.UserId = (int)(base.AbpSession.UserId ?? 0); //input.IsAntiFake = input.AFCodeLength.HasValue && input.AFCodeLength.Value > 0; input.IsAntiFake = true; input.IsSuccess = false; input.AntiFackCodeType = (int)AntiFackCodeType.Letter; var generateTask = ObjectMapper.Map <GenerateTask>(input); var taskId = await _generateTaskRepository.InsertAndGetIdAsync(generateTask); var currentTask = await _generateTaskRepository.GetAsync(taskId); try { var maxOne = await _identityCodeRepository.GetAll().AsNoTracking().OrderByDescending(x => x.Id).FirstOrDefaultAsync(); long maxIndex = maxOne == null ? 0 : maxOne.Id; long startIndex = maxIndex; List <IdentityCode> codes = new List <IdentityCode>(); //run the task for (int i = 0; i < input.GenerateCount; i++) { var random = RandomHelper.GenerateRandomCode(12); maxIndex++; IdentityCode code = new IdentityCode() { Id = maxIndex, ComfuseCode = random, AntiFakeCode = input.IsAntiFake ? RandomHelper.GenerateAntiCode() : string.Empty, Created = input.Created, IsActived = true, ProductId = input.ProductId, ScanTimes = 0, TaskId = taskId, Code = $"{random.Substring(0, 6)}{maxIndex.ToString().PadLeft(8, '0')}{random.Substring(6)}", }; codes.Add(code); } var codeNums = codes.Select(x => $"{_defaultUrl}{x.Code}"); var fileUrl = await this.GenerateFile(input.Remark, codeNums); int count = await _identityCodeRepository.BatchInsert(codes); currentTask.StartOne = startIndex + 1; currentTask.EndOne = maxIndex; currentTask.TaskStatu = TaskStatu.Completed; currentTask.IsSuccess = true; currentTask.DataFilePath = fileUrl; currentUser.TotalCountCount += count; await _userRepository.UpdateAsync(currentUser); } catch (Exception ex) { currentTask.IsSuccess = false; currentTask.TaskStatu = TaskStatu.Completed; currentTask.FailReason = ex.Message; } var result = await _generateTaskRepository.UpdateAsync(currentTask); return(ObjectMapper.Map <GenerateTaskDto>(result)); }
public ExcuteState() { m_State = IdentityCode.Fail; m_description = "初始化"; }