using HH.AutoBom.Core; using HH.WMS.Common; using HH.WMS.Entitys; using HH.WMS.Entitys.Check; using HH.WMS.Entitys.Common; using HH.WMS.WebUI.Controllers; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.Mvc; namespace HH.WMS.WebUI.Areas.Check.Controllers { public class CheckController : BaseController { // // GET: /Check/Check/ public ActionResult Index() { return View(); } /// /// 新增 /// /// public ActionResult CheckAdd() { return View(); } public ActionResult Batch() { return View(); } public ActionResult CheckCount() { return View(); } #region 获取盘点主表数据 /// /// 获取盘点主表数据 /// /// 盘点单号 /// 仓库编码 /// 库区 /// 物料编码 /// 盘点日期 /// 类型 /// /// [HanHe(LT)] CREATED 2018/7/4 public string GetCheckMst(int pageIndex, int pageSize, string CN_S_OP_NO, string CN_S_TYPE, string CN_S_STOCK_CODE, string CHECKTIME, string CN_S_STATE, string valueDate) { string sqlWhere = "WHERE 1=1"; //仓库编码 if (!string.IsNullOrEmpty(CN_S_OP_NO)) { sqlWhere += " AND CN_S_OP_NO like '%" + CN_S_OP_NO.Trim() + "%'"; } //仓库编码 if (!string.IsNullOrEmpty(CN_S_STOCK_CODE)) { sqlWhere += " AND CN_S_STOCK_CODE = '" + CN_S_STOCK_CODE + "'"; } //类型 if (!string.IsNullOrEmpty(CN_S_TYPE)) { sqlWhere += " AND CN_S_TYPE = '" + CN_S_TYPE + "' "; } string[] date = new string[2]; if (!string.IsNullOrEmpty(valueDate)) { date = JsonConvert.DeserializeObject(valueDate); ////开始时间 if (!string.IsNullOrEmpty(date[0])) { sqlWhere += " AND CN_T_CREATE >= '" + date[0] + "' "; } //结束时间 if (!string.IsNullOrEmpty(date[1])) { sqlWhere += " AND CN_T_CREATE <= DateAdd(dd, 1, '" + date[1] + "')"; } } ////开始时间 //if (!string.IsNullOrEmpty(STARTTIME)) //{ // sqlWhere += " AND CN_T_CREATE >= '" + STARTTIME + "' "; //} ////结束时间 //if (!string.IsNullOrEmpty(ENDTIME)) //{ // sqlWhere += " AND CN_T_CREATE <= DateAdd(dd, 1, '" + ENDTIME + "')"; //} //状态 if (!string.IsNullOrEmpty(CN_S_STATE)) { sqlWhere += " AND CN_S_STATE = '" + CN_S_STATE + "'"; } string OrdeBy = " order by CN_T_CREATE DESC"; var loginer = FormsAuth.GetUserData(); var entity = new { tokenId = loginer.Extend1, OrdeBy = OrdeBy, sqlWhere = sqlWhere, pageSize = pageSize, pageIndex = pageIndex }; string stringjson = JsonConvert.SerializeObject(entity); string list = HttpWMS_Post("Api/Check/GetDataTable", stringjson); return list; } /// /// 获取盘点明细数据 /// /// 仓库编码 /// /// [HanHe(LT)] CREATED 2018/7/4 /// [HanHe(dbs)] CREATED 2019/3/18 public string GetCheckDtl(string opNo) { string list = HttpWMS_Get("Api/Check/GetCheckDtl?opNo=" + opNo); return list; } /// /// 获取盘点明细表数据 /// /// 仓库编码 /// /// [HanHe(LT)] CREATED 2018/7/4 public string GetCheckList(string opNo) { return HttpWMS_Get("Api/Check/GetCheckList?opNo=" + opNo); } #endregion public string GetModel(string opNo) { return HttpWMS_Get("Api/Check/GetModel?opNo=" + opNo); } #region 获取盘点子表数据 /// /// 获取盘点主表数据 /// /// 仓库编码 /// /// [HanHe(LT)] CREATED 2018/7/4 public string GetDataTableDtls(string CN_S_OP_NO, string ps, string pg) { string sqlWhere = "WHERE 1=1"; //业务号 if (!string.IsNullOrEmpty(CN_S_OP_NO)) { sqlWhere += " AND CN_S_OP_NO = '" + CN_S_OP_NO + "'"; } string OrdeBy = " order by CN_S_OP_NO DESC"; var loginer = FormsAuth.GetUserData(); var TokenId = loginer.Extend1;//TokenId var entity = new { tokenId = TokenId, OrdeBy = OrdeBy, sqlWhere = sqlWhere, pageSize = ps, pageIndex = pg }; string stringjson = JsonConvert.SerializeObject(entity); string list = HttpWMS_Post("Api/Check/GetDataTableDtl", stringjson); return list; } /// /// 获取子表数据 /// /// 盘点数据 /// /// [HanHe(LT)] CREATED 2018/7/13 public string GetCheckMstDtlBywhere(string CN_S_OP_NO) { string sqlwhere = ""; if (!string.IsNullOrEmpty(CN_S_OP_NO)) { sqlwhere += "AND a.CN_S_OP_NO='" + CN_S_OP_NO + "'"; } string list = HttpWMS_Get("Api/Check/GetCheckMstDtlBywhere?sqlwhere=" + sqlwhere); return list; } #endregion #region 获取盘点明细表数据 /// /// 获取盘点明细表数据 /// /// 仓库编码 /// /// [HanHe(LT)] CREATED 2018/7/4 public string GetDataTableCheckLists(string CN_S_OP_NO, string ps, string pg) { string sqlWhere = "WHERE 1=1"; //业务号 if (!string.IsNullOrEmpty(CN_S_OP_NO)) { sqlWhere += " AND CN_S_OP_NO = '" + CN_S_OP_NO + "'"; } string OrdeBy = " order by CN_S_OP_NO DESC"; var loginer = FormsAuth.GetUserData(); var TokenId = loginer.Extend1;//TokenId var entity = new { tokenId = TokenId, OrdeBy = OrdeBy, sqlWhere = sqlWhere, pageSize = ps, pageIndex = pg }; string stringjson = JsonConvert.SerializeObject(entity); string list = HttpWMS_Post("Api/Check/GetGroupDataTable", stringjson); return list; } public string GetDataTableCheckLists(string CN_S_OP_NO, string CN_S_STOCK_CODE, string CN_S_STOCK_AREA, string CN_S_ITEM_CODE, string ps, string pg) { string sqlWhere = "WHERE 1=1"; //盘点号 if (!string.IsNullOrEmpty(CN_S_OP_NO)) { sqlWhere += " AND CN_S_OP_NO = '" + CN_S_OP_NO + "'"; } //仓库 if (!string.IsNullOrEmpty(CN_S_STOCK_CODE)) { sqlWhere += " AND CN_S_STOCK_CODE = '" + CN_S_STOCK_CODE + "'"; } //库区 if (!string.IsNullOrEmpty(CN_S_STOCK_AREA)) { sqlWhere += " AND CN_S_STOCK_AREA = '" + CN_S_STOCK_AREA + "'"; } //物料编码 if (!string.IsNullOrEmpty(CN_S_ITEM_CODE)) { sqlWhere += " AND CN_S_ITEM_CODE = '" + CN_S_ITEM_CODE + "'"; } string OrdeBy = " order by CN_S_OP_NO DESC"; var entity = new { OrdeBy = OrdeBy, sqlWhere = sqlWhere, pageSize = ps, pageIndex = pg }; string stringjson = JsonConvert.SerializeObject(entity); string list = HttpWMS_Post("Api/Check/GetGroupDataTable", stringjson); return list; } #endregion #region 获取盘点货位物料数据 /// /// 获取盘点货位物料数据 /// /// 盘点类型 /// 仓库号 /// 库区 /// 物料编号 /// 货主 /// 到货批次 /// 货位 /// /// /// /// [HanHe(DBS)] CREATED 2019/3/14 public string GetTrayLocation(string checkType, string stockCode, string stockArea, string itemCode, string owner, string lotNo, string locationCode, int pageIndex, int pageSize) { var loginer = FormsAuth.GetUserData(); SearchModel searchModel = new SearchModel() { TokenId = loginer.Extend1, PageIndex = pageIndex, PageSize = pageSize, SearchCondition = new { CN_S_TYPE = checkType, CN_S_STOCK_CODE = stockCode, CN_S_STOCK_AREA = stockArea, CN_S_ITEM_CODE = itemCode, CN_S_OWNER = owner, CN_S_LOT_NO = lotNo, CN_S_LOCATION_CODE = locationCode } }; return HttpWMS_Post("Api/Check/GetTrayLocation", JsonConvert.SerializeObject(searchModel)); } #endregion #region 新增 /// /// 新增 /// /// /// /// [HanHe(LT)] CREATED 2018/7/12 /// [HanHe(DBS)] CREATED 2019/3/18 public string Add(JObject obj) { var loginer = FormsAuth.GetUserData(); string code = GetCode(Constants.CheckCode); var time = DateTime.Now; TN_WM_CHECK_MSTEntity entitymst = new TN_WM_CHECK_MSTEntity() { TokenId = ViewConstants.TokenId, CN_S_OP_NO = code, CN_S_STOCK_CODE = obj.Value("stockcode"), CN_T_OP_TIME = time, CN_S_STATE = obj.Value("state"), CN_S_TYPE = obj.Value("type"), CN_S_CREATOR = ViewConstants.UserData.UserCode, CN_S_CREATOR_BY = ViewConstants.UserData.UserName, CN_T_CREATE = time, CN_S_MODIFY = ViewConstants.UserData.UserCode, CN_S_MODIFY_BY = ViewConstants.UserData.UserName, CN_T_MODIFY = time, dtls = JsonConvert.DeserializeObject>(obj["rows"].ToString()) }; for(int i=0;i< entitymst.dtls.Count;i++) { entitymst.dtls[i].CN_S_OP_NO = code; entitymst.dtls[i].CN_N_ROW_NO = i + 1; }; string jsonentity = JsonConvert.SerializeObject(entitymst); var str = HttpWMS_Post("Api/Check/AddCheck", jsonentity); return str; } #endregion #region 提交 /// /// 提交 /// /// /// /// [HanHe(LT)] CREATED 2018/8/24 public string Submit(JObject obj) { var loginer = FormsAuth.GetUserData(); var entity = new { opNo = obj.Value("opNo"), //type = obj.Value("type"), tokenid = loginer.Extend1 }; string jsonentity = JsonConvert.SerializeObject(entity); string returnstr = HttpWMS_Post("Api/Check/Submit", jsonentity); return returnstr; } #endregion #region 根据盘点单号删除 /// /// 根据盘点单号删除 /// /// /// /// [HanHe(LT)] CREATED 2018/8/24 public string Delete(string opNo) { return HttpWMS_Get("Api/Check/Delete?opNo=" + opNo); } #endregion #region 新增批量 /// /// 新增 /// /// /// /// [HanHe(LT)] CREATED 2018/7/12 public string AddBatch(JObject obj) { var loginer = FormsAuth.GetUserData();; string code = GetCode(Constants.CheckCode); TN_WM_CHECK_MSTEntity entitymst = new TN_WM_CHECK_MSTEntity(); //TN_WM_CHECK_DTLEntity entity = JsonHelper.ParseFormJson(obj.ToString()); string CN_S_STOCK_CODE = obj.Value("CN_S_STOCK_CODE"); string CN_S_STOCK_AREA = obj.Value("CN_S_STOCK_AREA"); string CN_S_ITEM_CODE = obj.Value("CN_S_ITEM_CODE"); string CN_S_OWNER = obj.Value("CN_S_OWNER"); string CN_S_LOT_NO = obj.Value("CN_S_LOT_NO"); string CN_S_LOCATION_CODE = obj.Value("CN_S_LOCATION_CODE"); var time = DateTime.Now; entitymst.CN_S_OP_NO = code; entitymst.CN_S_STOCK_CODE = obj.Value("CN_S_STOCK_CODE"); entitymst.CN_T_OP_TIME = time; entitymst.CN_S_STATE = "新建"; entitymst.CN_S_TYPE = "自定义盘点"; entitymst.CN_S_CREATOR = loginer.UserCode; entitymst.CN_S_CREATOR_BY = loginer.UserName; entitymst.CN_T_CREATE = time; entitymst.CN_S_MODIFY = loginer.UserCode; entitymst.CN_S_MODIFY_BY = loginer.UserName; entitymst.CN_T_MODIFY = time; string sqlWhere = "WHERE 1=1"; //仓库编码 if (!string.IsNullOrEmpty(CN_S_STOCK_CODE)) { sqlWhere += " AND CN_S_STOCK_CODE = '" + CN_S_STOCK_CODE + "'"; } //库区 if (!string.IsNullOrEmpty(CN_S_STOCK_AREA)) { sqlWhere += " AND CN_S_STOCK_AREA = '" + CN_S_STOCK_AREA + "' "; } //物料编码 if (!string.IsNullOrEmpty(CN_S_ITEM_CODE)) { sqlWhere += " AND CN_S_ITEM_CODE LIKE '%" + CN_S_ITEM_CODE.Trim() + "%' "; } //货主 if (!string.IsNullOrEmpty(CN_S_OWNER)) { sqlWhere += " AND CN_S_OWNER = '" + CN_S_OWNER + "' "; } //批次号 if (!string.IsNullOrEmpty(CN_S_LOT_NO)) { sqlWhere += " AND CN_S_LOT_NO like '%" + CN_S_LOT_NO.Trim() + "%' "; } //货位编码 if (!string.IsNullOrEmpty(CN_S_LOCATION_CODE)) { sqlWhere += " AND CN_S_LOCATION_CODE like '%" + CN_S_LOCATION_CODE.ToUpper().Trim() + "%'"; } sqlWhere += " AND CN_F_QUANTITY>0"; var entity = new { entityMst = entitymst, sqlwhere = sqlWhere, type = "货位盘点", tokenId = loginer.Extend1 }; string jsonentity = JsonConvert.SerializeObject(entity); string returnstr = HttpWMS_Post("Api/Check/AddCheckBatch", jsonentity); return returnstr; } #endregion #region 修改 /// /// 修改 /// /// /// /// [HanHe(LT)] CREATED 2018/7/12 public string Update(JObject obj) { TN_WM_CHECK_MSTEntity entitymst = new TN_WM_CHECK_MSTEntity(); entitymst.TokenId = ViewConstants.TokenId; entitymst.CN_S_OP_NO = obj.Value("opNo"); entitymst.CN_S_MODIFY = ViewConstants.UserData.UserCode; entitymst.CN_S_MODIFY_BY = ViewConstants.UserData.UserName; entitymst.CN_T_MODIFY = DateTime.Now; entitymst.dtls =JsonConvert.DeserializeObject>(obj.Value("rows").ToString()); for (int i = 0; i < entitymst.dtls.Count; i++) { entitymst.dtls[i].CN_S_OP_NO = entitymst.CN_S_OP_NO; entitymst.dtls[i].CN_N_ROW_NO = i + 1; }; //var entity = new //{ // entityMst = entitymst, // entityDtl = entityDtls, // tokenId = loginer.Extend1 //}; string jsonentity = JsonConvert.SerializeObject(entitymst); return HttpWMS_Post("Api/Check/Update", jsonentity); } #endregion #region 获取盘点明细表数据 /// /// 获取盘点明细表数据 /// /// /// /// /// /// /// /// [HanHe(dbs)] CREATED 2019/3/22 public string CheckCounts(string opNo, string stockArea, string itemCode, int pageIndex, int pageSize) { var loginer = FormsAuth.GetUserData(); SearchModel entity = new SearchModel() { PageIndex = pageIndex, PageSize = pageSize, TokenId = loginer.Extend1, SearchCondition = new { CN_S_OP_NO = opNo, CN_S_STOCK_AREA=stockArea, CN_S_ITEM_CODE=itemCode } }; string stringjson = JsonConvert.SerializeObject(entity); string list = HttpWMS_Post("Api/Check/CheckResultShow", stringjson); return list; } #endregion #region 盘点单确认 /// /// 盘点单确认 /// /// 盘点单号 /// /// [HanHe(DBS)] CREATED 2019/3/22 public string confirm(string opNo) { return HttpWMS_Get("Api/Check/CheckConfirm?opNo="+opNo); } #endregion #region 执行盘点 /// /// 执行盘点 /// /// 执行盘点操作 /// /// [HanHe(LT)] CREATED 2018/8/31 public string implement(string opNo) { string info = HttpWMS_Get("Api/Check/implement?opNo=" + opNo); return info; } #endregion #region 导出盘点列表 /// /// 导出 /// ///实体 /// /// [HanHe(LT)] CREATED 2019/1/24 public string ExportCheckList(JObject obj) { string list = HttpWMS_Get("Api/Check/GetCheckList?opNo=" + obj["opNo"].ToString()); //string list = HttpWMS_Get("Api/Check/GetGroupDT?CN_S_OP_NO=" + obj["opNo"].ToString()); OperateResult or = JsonConvert.DeserializeObject(list); if (or.Status == ResultStatus.Success) { string s = ((dynamic)or.Data).ToString(); DataTable dt = HH.WMS.Utils.ZConvert.ToDataTableTwo(s); dt.Columns.Add("BREAKQUANTITY"); foreach (DataRow dr in dt.Rows) { dr["BREAKQUANTITY"] =Convert.ToDecimal(dr["CN_F_CHECK_QTY"]) - Convert.ToDecimal(dr["CN_F_QUANTITY"]); } dynamic columns = obj["columns"]; string title = "盘点单列表"; string fileName = title + "_" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".xls"; or = ExcelHelper.SaveTemp(columns, title, dt, fileName); if(or.Status == ResultStatus.Success) return JsonConvert.SerializeObject( OperateResult.Succeed("", new { fileName = fileName })); return JsonConvert.SerializeObject(or); } else { return JsonConvert.SerializeObject(or); } } /// /// 导出盈亏统计 /// ///实体 /// /// [HanHe(LT)] CREATED 2019/1/24 public string ExportCheckListCount(JObject obj) { JObject formData = (JObject)obj["formData"]; string sqlWhere = ""; var opNo = formData["CN_S_OP_NO"].ToString(); var stockCode =formData["CN_S_STOCK_CODE"].ToString(); var areaCode =formData["CN_S_STOCK_AREA"].ToString(); var itemCode = formData["CN_S_ITEM_CODE"].ToString(); //盘点号 if (!string.IsNullOrEmpty(opNo)) { sqlWhere += " AND CN_S_OP_NO = '" + opNo + "'"; } //仓库 if (!string.IsNullOrEmpty(stockCode)) { sqlWhere += " AND CN_S_STOCK_CODE = '" + stockCode + "'"; } //库区 if (!string.IsNullOrEmpty(areaCode)) { sqlWhere += " AND CN_S_STOCK_AREA = '" + areaCode + "'"; } //物料编码 if (!string.IsNullOrEmpty(itemCode)) { sqlWhere += " AND CN_S_ITEM_CODE like '%" + itemCode + "%'"; } string list = HttpWMS_Get("Api/Check/GetChecklistGroup?sqlWhere=" + sqlWhere); OperateResult or = JsonConvert.DeserializeObject(list); if (or.Status == ResultStatus.Success) { string s = ((dynamic)or.Data).ToString(); DataTable dt = HH.WMS.Utils.ZConvert.ToDataTableTwo(s); dynamic columns = obj["columns"]; string title = "盘点单列表"; string fileName = title + "_" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".xls"; or = ExcelHelper.SaveTemp(columns, title, dt, fileName); return JsonConvert.SerializeObject(OperateResult.Succeed("", new { fileName = fileName })); } else { return JsonConvert.SerializeObject(or); } } #endregion } }