using DBUtility; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using System.Web.Script.Serialization; using ViewAPI; using WebAPI.Models; namespace WebAPI.Controllers.博日自动扫码线 { public class ScanlineAPIController : ApiController { private jsonScanline objJsonResult = new jsonScanline(); public DataSet ds = new DataSet(); public DataSet ds0 = new DataSet(); SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); #region 生成箱码接口 [Route("packagebarcode/create")] [HttpGet] public object create(int num) { try { objJsonResult.data = new List(); for (int i = 0; i < num; i++) { barcode jsn = new barcode(); //string prefix = "ZM"; //string date = DateTime.Now.ToString("yyMMddhh"); //string custom = "12"; //int nm = i; //string result = prefix + date + custom + nm.ToString().PadLeft(4, '0'); //条码前缀 = 箱码前缀 + 年 + 月 + 日 string sDate = DateTime.Now.ToString("yyyy-MM-dd"); string sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2); string sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString(); sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2); string sDay = "0" + ClsPub.isDate(sDate).Day.ToString(); sDay = sDay.Substring(sDay.Length - 2, 2); string sTMNumber = "ZX" + sYear + sPeriod + sDay; ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo"); //获取最大流水号 int LSH = ClsPub.isInt(ds.Tables[0].Rows[0][0]) + 1; //流水号加1 string TM = sTMNumber + LSH; jsn.packagebarcode = TM; oCN.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'"); objJsonResult.data.Add(jsn); } objJsonResult.status = 0; objJsonResult.msg = "查询数据成功!"; objJsonResult.data = objJsonResult.data; return objJsonResult; } catch (Exception e) { LogService.Write("错误:" + e.Message.ToString()); objJsonResult.status = -1; objJsonResult.msg = "生成箱条码失败!"; objJsonResult.data = null; return objJsonResult; } } #endregion #region 箱条码绑定关系提交接口 [Route("packagebarcode/pack")] [HttpPost] public object pack([FromBody] JObject msg) { try { Log.LogInfo(msg.ToString()); //记录提交数据 JavaScriptSerializer js = new JavaScriptSerializer(); //实例化一个能够序列化数据的类 ScanLineCode list = js.Deserialize(msg.ToString()); //将json数据转化为对象类型并赋值给list if (list.billno != "" && list.billno != null) //任务单号,非必须,非空则校验barcodes里barcode是否由此任务单制作生成的 { ds = oCN.RunProcReturn("Select HBarCode barcode,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType from Gy_BarCodeBill where HSourceBillNo='" + list.billno.ToString().Trim() + "' Order by HItemID ", "Gy_BarCodeBill"); if (ds == null || ds.Tables[0].Rows.Count == 0) { objJsonResult.status = -1; objJsonResult.msg = "当前订单无绑定条码!"; objJsonResult.data = null; return objJsonResult; } List NameList = (from r in ds.Tables[0].AsEnumerable() select r.Field("barcode")).ToList(); List NameList1 = list.barcodes.Select(t => t.barcode).ToList(); var strList = NameList1.Except(NameList).ToList(); //判断提交数据中条码是否存在于订单中 if (strList.Count > 0) { string Str = String.Join(",", strList.ToArray()); objJsonResult.status = -1; objJsonResult.msg = "条码:" + Str.ToString() + " 不包含在订单:" + list.billno + "中!"; objJsonResult.data = null; return objJsonResult; } } DLL.ClsSc_PackUnionBill oBill = new DLL.ClsSc_PackUnionBill(); //判断箱码是否存在 bool IsBarCodePack = oBill.IsBarCodePack(list.packagebarcode); if (IsBarCodePack == false) { objJsonResult.status = -1; objJsonResult.msg = "箱码已存在,不能重复绑定!"; objJsonResult.data = null; return objJsonResult; } ds = oCN.RunProcReturn("Select * from Gy_BarCodeBill where HBarCode='" + list.packagebarcode.ToString().Trim() + "' and HStopflag='1'", "Gy_BarCodeBill"); if (ds != null && ds.Tables[0].Rows.Count > 0) { objJsonResult.status = -1; objJsonResult.msg = "此箱条码已作废"; objJsonResult.data = null; return objJsonResult; } Models.ClsSc_PackUnionBillMain oItem = new ClsSc_PackUnionBillMain(); oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year); oItem.HPeriod = DBUtility.ClsPub.isLong(DateTime.Now.Month); oItem.HBillType = "3783"; oItem.HBillSubType = "3783"; oItem.HDate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); oItem.HBillNo = DBUtility.ClsPub.CreateBillCode(oItem.HBillType, ref DBUtility.ClsPub.sExeReturnInfo, true); oItem.HBillStatus = 1; oItem.HCheckItemNowID = 0; oItem.HCheckItemNextID = 0; oItem.HCheckFlowID = 0; oItem.HRemark = "自动包装线生成箱条码"; oItem.HBacker = ""; oItem.HBackDate = ""; oItem.HMaker = ""; oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd")); oItem.HChecker = ""; oItem.HCheckDate = ""; oItem.HUpDater = ""; oItem.HUpDateDate = ""; oItem.HCloseMan = ""; oItem.HCloseDate = ""; oItem.HCloseType = false; oItem.HDeleteMan = ""; oItem.HDeleteDate = ""; oItem.HICMOInterID = 0; oItem.HICMOBillNo = ""; oItem.HBarCode_Pack = list.packagebarcode; oItem.HMaterID = 0; oItem.HUnitID = 0; oItem.HUseFlag = false; //有效状态 oBill.omodel = oItem; for (int i = 0; i < list.barcodes.Count; i++) { //判断条码是否存在 bool IsBarCode = oBill.IsBarCodePack(list.barcodes[i].barcode); if (IsBarCodePack == false) { objJsonResult.status = -1; objJsonResult.msg = "条码已存在,不能重复绑定!"; objJsonResult.data = null; return objJsonResult; } Models.ClsSc_PackUnionBillSub oItemSub = new ClsSc_PackUnionBillSub(); ds0 = oCN.RunProcReturn("Select HBarCode,HMaterID,HUnitID,HQty,HSourceID,HGroupID,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType from Gy_BarCodeBill where HSourceBillNo='" + list.billno.ToString().Trim() + "' and HBarCode='" + list.barcodes[i].barcode + "' Order by HItemID ", "Gy_BarCodeBill"); oItemSub.HEntryID = i + 1; oItemSub.HMaterID = DBUtility.ClsPub.isLong(ds0.Tables[0].Rows[0]["HMaterID"].ToString()); oItemSub.HUnitID = DBUtility.ClsPub.isLong(ds0.Tables[0].Rows[0]["HUnitID"].ToString()); oItemSub.HQty = DBUtility.ClsPub.isDoule(ds0.Tables[0].Rows[0]["HQty"].ToString()); oItemSub.HSourceID = DBUtility.ClsPub.isLong(ds0.Tables[0].Rows[0]["HSourceID"].ToString()); oItemSub.HEquipID = 0; oItemSub.HGroupID = DBUtility.ClsPub.isLong(ds0.Tables[0].Rows[0]["HGroupID"].ToString()); oItemSub.HWorkerID = 0; oItemSub.HBarCode = list.barcodes[i].barcode; oItemSub.HBarCode_Pack = list.packagebarcode; oItemSub.HCloseMan = ""; oItemSub.HCloseType = false; oItemSub.HRemark = ""; oItemSub.HSourceInterID = DBUtility.ClsPub.isLong(ds0.Tables[0].Rows[0]["HSourceInterID"].ToString()); oItemSub.HSourceEntryID = DBUtility.ClsPub.isLong(ds0.Tables[0].Rows[0]["HSourceEntryID"].ToString()); oItemSub.HSourceBillNo = DBUtility.ClsPub.isStrNull(ds0.Tables[0].Rows[0]["HSourceBillNo"].ToString()); oItemSub.HSourceBillType = DBUtility.ClsPub.isStrNull(ds0.Tables[0].Rows[0]["HSourceBillType"].ToString()); oItemSub.HRelationQty = 0; oItemSub.HRelationMoney = 0; oBill.DetailColl.Add(oItemSub); } //保存 //保存完毕后处理 bool bResult; if (oBill.omodel.HInterID == 0) { // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); } else { bResult = oBill.ModifyBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo); } if (bResult) { objJsonResult.status = 0; objJsonResult.msg = "success"; objJsonResult.data = null; Log.LogSaveInfo("提交成功箱条码:" + list.packagebarcode); //记录提交数据 return objJsonResult; } else { objJsonResult.status = -1; objJsonResult.msg = "保存失败!" + DBUtility.ClsPub.sExeReturnInfo; objJsonResult.data = null; return objJsonResult; } } catch (Exception e) { LogService.Write("箱条码绑定关系提交接口 抛出异常" + e.Message.ToString()); objJsonResult.status = -1; objJsonResult.msg = e.Message; objJsonResult.data = null; return objJsonResult; } } #endregion #region 箱条码取消绑定关系 [Route("packagebarcode/cancel")] [HttpPost] public object cancel(string packagebarcode) { try { //判断是否入库 ds = oCN.RunProcReturn("select * from Sc_ScanLineInStock where HBarCode_Pack='" + packagebarcode + "'", "Sc_ScanLineInStock"); if (ds != null && ds.Tables[0].Rows.Count > 0) { objJsonResult.status = -1; objJsonResult.msg = "该箱条码已入库不允许取消!"; objJsonResult.data = null; return objJsonResult; } ds = oCN.RunProcReturn("Select 1 from Gy_BarCodeBill where HBarCode='" + packagebarcode.ToString().Trim() + "'", "Gy_BarCodeBill"); if (ds == null && ds.Tables[0].Rows.Count == 0) { objJsonResult.status = -1; objJsonResult.msg = "无效箱条码"; objJsonResult.data = null; return objJsonResult; } ds = oCN.RunProcReturn("Select 1 from Gy_BarCodeBill where HBarCode='" + packagebarcode.ToString().Trim() + "' and HStopflag='1'", "Gy_BarCodeBill"); if (ds != null && ds.Tables[0].Rows.Count > 0) { objJsonResult.status = -1; objJsonResult.msg = "此箱条码已作废"; objJsonResult.data = null; return objJsonResult; } // oCN.BeginTran(); //删除SUM主表 oCN.RunProc("Delete From Sc_PackUnionBillSub_Sum where HBarCode_Pack='" + packagebarcode.ToString() + "'"); //删除子表 oCN.RunProc("Delete From Sc_PackUnionBillSub where HBarCode_Pack='" + packagebarcode.ToString() + "'"); //删除主表 oCN.RunProc("Delete From Sc_PackUnionBillMain where HBarCode_Pack='" + packagebarcode.ToString() + "'"); //作废条码档案表 oCN.RunProc("Update Gy_BarCodeBill set HStopflag='1' where HBarCode='" + packagebarcode.ToString() + "'"); oCN.Commit(); objJsonResult.status = 0; objJsonResult.msg = "success"; objJsonResult.data = null; return objJsonResult; } catch (Exception e) { objJsonResult.status = -1; objJsonResult.msg = e.Message; objJsonResult.data = null; return objJsonResult; } } #endregion [Route("packagebarcode/week")] [HttpPost] public object week(string tim) { try { GetWeekList list = new GetWeekList(); //string aa=list.getWeek(Convert.ToDateTime(tim)); string aa = list.GetCodeDateStr(Convert.ToDateTime(tim)); objJsonResult.status = 0; objJsonResult.msg = aa.ToString(); objJsonResult.data = null; return objJsonResult; } catch (Exception e) { objJsonResult.status = -1; objJsonResult.msg = e.Message; objJsonResult.data = null; return objJsonResult; } } } }