开发工具与关键技术:Visual Studio 2015 linq 正则
作者:孙水兵
撰写时间:2019年6月26
一、 功能
根据不同的类型的车辆型号,生成以车辆型号开头的车辆编号。
二、 达到的效果
用户选择了车辆型号之后,将对应的车辆编号填入车辆编号对应的input文本框中。
三、 代码
HTML代码
HTML代码很简单,大致就是两个input标签和label标签即可。
JS代码
由于我这里选择车辆型号用的方法是双击车辆型号input框,原来的模态框隐藏,弹出车辆型号的模态框。车辆型号的模态框中含有车辆型号的表格。而双击表中的一行数据就可以选中对应车辆型号并回填到车辆型号的input框中。因此我在车辆型号的表格上的监听事件上根据车辆型号来自动生成车辆编号的JS代码。
在车辆型号表的监听事件中获取到车辆型号,然后用post提交将车辆型号传入控制器,然后用PassengerCode接收控制器传过来的车辆编号。然后将车辆编号返回到车辆编号的input框中。然后让车辆型号的模态框隐藏,原来的模态框显示。
layuiTable.on('rowDouble(tabModelOfCar)', function (obj) {var ModelOfCar = obj.data.ModelOfCar; $.post("/BusinessManagement/StationInformation/ReturnPassengerCode", { ModelOfCar: ModelOfCar }, function (PassengerCode) {$("#PassengerCarCode").val(PassengerCode);})$("#OpenTabModelOfCar").modal('hide'); $("#PassengerCarModal").modal({ backdrop: 'static', keybord: false });})
控制器代码
一、从数据库获取到对应车型的编号最大的车辆编号
首先、先声明一个方法并接受控制器传递过来的车辆型号。声明一个string类型为空的变量returnPassengerCode用来接收返回页面的车辆编号并返回给页面。然后利用linq从数据库中的车辆表中查询出数据。在查询的时候利用group…by…在根据车辆表中的车辆型号ID来分组。然后查询出车辆型号的ID和其对应的车辆编号最大即车辆ID最大的数据。这里是根据车辆型号的ID来分组的,而key属性:返回进行分组的关键字段的值;所以这里的tbModalOfCar.Key指的就是车辆表车辆型号ID。分组之后根据车辆ID倒序排序并且第一条数据就是车辆ID最大的对应得数据。然后在从刚才查出来的数据并且连接车型表查询出车辆型号等于页面传递过来的车辆型号的数据,然后判断刚才查出来的数据的条数是否大于0,如果等于0,就说明数据库中不存在该车型对应得车辆编号,因此直接用车辆型号来拼接“00001”即可。如果大于0,就说明数据库中存在该车型对应的车辆编号。声明两个int类型的编号用来接收foreach循坏的车辆型号ID和车辆型号的长度。然后根据车辆型号ID从第一次查询出来的数据中查询出对用车辆型号的车辆编号。
二、处理查询出来的车辆编号并返回最后的车辆编号
根据上面查询出来的车辆型号的长度在刚才查询出来的车辆编号中利用Substring来提取出除了车辆型号的其他数据并用变量passengerCodeEnd来接收。然后利用正则提取出passengerCodeEnd的每一个数字并分别用变量来接收这些数字。返回的车辆编号的构成大致为车辆编号+五个相对应得数字。因此要来分别判断这五个数字,如果最后一个数字小于9,则说明车辆编号+1之后倒数第二位不会变,但是如果最后一个数字等于9并且倒数第二个数字小于9,说明车辆编号+1之后改变的数字是倒数第二个数字,然后会变得数字自增,等于9的数字为0即可,后面的一次类推。
代码
public ActionResult ReturnPassengerCode(string ModelOfCar){string returnPassengerCode = "";try{var PassengerCodeType = from tbPassengerCar in myModals.SYS_PassengerCargroup tbPassengerCar by tbPassengerCar.ModelOfCarID into tbModalOfCarselect new{ModelIfCarID = tbModalOfCar.Key,PassengerCode = tbModalOfCar.OrderByDescending(m => m.PassengerCarID).FirstOrDefault().PassengerCarCode,};var selectModelOfCar = (from tbPassengerCodeType in PassengerCodeTypejoin tbModeOfCar in myModals.SYS_ModelOfCar on tbPassengerCodeType.ModelIfCarID equals tbModeOfCar.ModelOfCarIDwhere tbModeOfCar.ModelOfCar == ModelOfCarselect tbModeOfCar).ToList();if (selectModelOfCar.Count>0){int ModelOfCarID = 0;int ModelOfCarLength = 0;foreach (var item in selectModelOfCar){ModelOfCarID = item.ModelOfCarID;ModelOfCarLength = item.ModelOfCar.Length;}var PassengerCode = (from tbPassengerCodeType in PassengerCodeTypewhere tbPassengerCodeType.ModelIfCarID == ModelOfCarIDselect tbPassengerCodeType.PassengerCode).Single();string passengerCodeEnd = PassengerCode.Substring(ModelOfCarLength);MatchCollection passengerCode = Regex.Matches(passengerCodeEnd, "\\d{1}");int LastPassengerCode = Convert.ToInt32(passengerCode[4].Value);int FourPassengerCode = Convert.ToInt32(passengerCode[3].Value);int ThreePassengerCode = Convert.ToInt32(passengerCode[2].Value);int TwoPassengerCode = Convert.ToInt32(passengerCode[1].Value);int FirstPassengerCode = Convert.ToInt32(passengerCode[0].Value);if (LastPassengerCode < 9){LastPassengerCode++;returnPassengerCode = ModelOfCar + FirstPassengerCode + TwoPassengerCode + ThreePassengerCode + FourPassengerCode + LastPassengerCode;}else if (FourPassengerCode < 9 && LastPassengerCode == 9){LastPassengerCode = 0;FourPassengerCode++;returnPassengerCode = ModelOfCar + FirstPassengerCode + TwoPassengerCode + ThreePassengerCode + FourPassengerCode + LastPassengerCode;}else if (ThreePassengerCode < 9 && FourPassengerCode == 9 && LastPassengerCode == 9){LastPassengerCode = 0;FourPassengerCode = 0;ThreePassengerCode++;returnPassengerCode = ModelOfCar + FirstPassengerCode + TwoPassengerCode + ThreePassengerCode + FourPassengerCode + LastPassengerCode;}else if (TwoPassengerCode < 9 && ThreePassengerCode == 9 && LastPassengerCode == 9 && FourPassengerCode == 9){LastPassengerCode = 0;FourPassengerCode = 0;ThreePassengerCode = 0;TwoPassengerCode++;returnPassengerCode = ModelOfCar + FirstPassengerCode + TwoPassengerCode + ThreePassengerCode + FourPassengerCode + LastPassengerCode;}else if (FirstPassengerCode < 9 && TwoPassengerCode == 9 && ThreePassengerCode == 9 && LastPassengerCode == 9 && FourPassengerCode == 9) {LastPassengerCode = 0;FourPassengerCode = 0;ThreePassengerCode = 0;TwoPassengerCode = 0;FirstPassengerCode++;returnPassengerCode = ModelOfCar + FirstPassengerCode + TwoPassengerCode + ThreePassengerCode + FourPassengerCode + LastPassengerCode;}else{return Content("每一类车型最多只能添加到99999条数据");}}else{returnPassengerCode = ModelOfCar + "00001";}}catch (Exception e){return Content("数据异常!");}return Json(returnPassengerCode,JsonRequestBehavior.AllowGet);}