using HH.WMS.BLL; using HH.WMS.BLL.Basic; using HH.WMS.Common; using HH.WMS.Entitys; using HH.WMS.Entitys.Basic; using HH.WMS.Utils; using HH.WMS.WebApi.Areas.Common.Controllers; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Web; using System.Web.Http; namespace HH.WMS.WebApi.Areas.Basic { /// /// 打印模板控制器 /// public class PrintTempletController : BaseController { #region 获取打印模板 /// /// 获取打印模板 /// /// mac地址 /// /// [Hanhe(DBS)] created 2018/12/1 public OperateResult GetPrintTemplet(string mac) { return ValidateToken(k => { List list = BLLCreator.Create().GetAllowOperationList(mac); list.FindAll(x=>x.CN_S_MAC!=mac && x.CN_C_IS_TOOL_PRINT=="Y").ForEach(x=>{ x.CN_S_PRINTER = ""; }); List templetNames = list.GroupBy(x => x.CN_S_TEMPLET_NAME).Select(x=>x.Key).ToList(); foreach (string s in templetNames) { //存在多个模板名相同的模板 if (list.FindAll(x => x.CN_S_TEMPLET_NAME.Equals(s)).Count > 1) { list.RemoveAll(x => x.CN_C_IS_FIRST.Equals("Y") && x.CN_S_TEMPLET_NAME == s); } } return OperateResult.Succeed("", list); }); } #endregion #region 查询打印任务 /// /// 查询打印任务 /// /// 机器MAC地址 /// 是否查询已打印记录(Y/N) /// 模糊搜索的打印任务 /// 开始时间 /// 结束时间 /// /// [Hanhe(DBS)] created 2018/12/12 public OperateResult GetPrintTask(string mac, string isHistory, string key, string startDate, string endDate) { return ValidateToken(m => { List list = BLLCreator.Create().GetList(mac,isHistory,key,startDate,endDate); return OperateResult.Succeed("", list); }); } #endregion //#region 保存打印模板 ///// ///// 保存打印模板 ///// ///// 打印模板接口 ///// ///// [Hanhe(DBS)] created 2018/12/11 //[HttpPost] //public OperateResult Save(List list) //{ // return ValidateToken(list[0].TokenId, m => // { // OperateResult result = BLLCreator.Create().Save(list); // return OperateResult.Succeed("", result); // }); //} //#endregion #region 更新打印任务标识 /// /// 更新打印任务标识 /// /// 打印任务guid,多个用逗号隔开 /// /// [Hanhe(DBS)] created 2018/12/12 [HttpGet] public OperateResult UpdatePrintFlag(string guids) { return ValidateToken(m => { return BLLCreator.Create().UpdatePrintFlag(guids); }); } #endregion #region 创建模板 /// /// 创建模板 /// /// mac地址 /// 仓库号 /// 模板类型 /// 模板名称 /// /// [Hanhe(DBS)] created 2018/12/1 [HttpGet] public OperateResult CreateTemplet(string mac,string ip, string stockCode, string type, string name) { return ValidateToken(m => { TN_WM_PRINT_TEMPLETEntity model = new TN_WM_PRINT_TEMPLETEntity() { CN_S_MAC = mac, CN_S_STOCK_CODE = stockCode, CN_S_PRINTER = "", CN_S_TEMPLET_NAME = name, CN_S_TEMPLET_TYPE = type, CN_S_IP = ip, CN_GUID = Guid.NewGuid().ToString(), CN_C_IS_UPLOADED = "N", //CN_S_UPLOADOR = m.CN_S_NAME, CN_T_UPLOAD_TIME = DateTime.Now, CN_C_IS_FIRST="Y" }; if (type.Equals("物料标签") || type.Equals("装箱标签")) model.CN_C_IS_TOOL_PRINT = "Y"; else model.CN_C_IS_TOOL_PRINT = "N"; return BLLCreator.Create>().Add(model); }); } #endregion #region 更新文件名 /// /// 更新文件名 /// /// guid /// 模板文件名 /// /// [Hanhe(DBS)] created 2018/12/1 [HttpGet] public OperateResult UpdateTempletName(string guid, string fileName) { return ValidateToken(m => { return BLLCreator.Create>().Update(new { CN_S_TEMPLET_NAME = fileName }, new { CN_GUID = guid }); }); } #endregion #region 更新模板打印机 /// /// 更新模板打印机 /// /// guid /// 打印机 /// /// [Hanhe(lt)] created 2018/12/28 /// [Hanhe(dbs)] created 2019/3/6 public OperateResult UpdateTempletPrinter(TN_WM_PRINT_TEMPLETEntity model) { return ValidateToken(model.TokenId,m => { return BLLCreator.Create>().Update(new { CN_S_TEMPLET_NAME = model.CN_S_TEMPLET_NAME }, new { CN_GUID = model.CN_GUID }); }); } public OperateResult CreateTempletPrinter(TN_WM_PRINT_TEMPLETEntity model) { TN_WM_PRINT_TEMPLETEntity templet = BLLCreator.Create>().GetSingleEntity(new { CN_GUID = model.CN_GUID }); templet.CN_S_MAC = model.CN_S_MAC; templet.CN_GUID = Guid.NewGuid().ToString(); templet.CN_T_UPLOAD_TIME = DateTime.Now; templet.CN_C_IS_FIRST = "N"; return ValidateToken(model.TokenId, m => { return BLLCreator.Create>().Add(templet); }); } #endregion #region 删除模板 /// /// 删除模板 /// /// guid /// /// [Hanhe(DBS)] created 2018/12/1 [HttpGet] public OperateResult DeleteTemplet(string guid) { return ValidateToken(m => { return BLLCreator.Create>().Delete(new { CN_GUID = guid }); }); } #endregion #region 查询打印模版 /// /// 查询打印模版 /// /// 模版类型 /// /// [Hanhe(lt)] created 2018/12/28 public OperateResult GetPrintTempletByType(string type) { return ValidateToken(m => { List list = BLLCreator.Create>().GetList( new { CN_S_TEMPLET_TYPE = type }).GroupBy(x => new { CN_S_TEMPLET_NAME = x.CN_S_TEMPLET_NAME }).Select(y => new TN_WM_PRINT_TEMPLETEntity() { CN_S_TEMPLET_NAME = y.Key.CN_S_TEMPLET_NAME}).ToList(); return OperateResult.Succeed("", list); }); } #endregion #region 模板上传 [HttpPost] public string UploadTemplet([FromBody] dynamic res) { try { string tokenId = res.tokenId.ToString(); return ValidateToken(tokenId ,m => { string savePath = Constants.SysConfig.UI_ROOT_PATH.Replace('*','\\') + @"\ActiveReport\Template"; string fileName = res.fileName.ToString(); string guid = res.guid.ToString(); var filePath = string.Format(@"{0}\{1}", savePath, fileName); if (File.Exists(filePath)) { ////服务器中已存在该模板,则找该模板的最新版本号 //List temps = BLLCreator.Create>().GetList(new { CN_S_TEMPLET_NAME = fileName }).OrderByDescending(x=>x.CN_N_VERSION).ToList(); //if (temps.Count > 0) //{ //} if (File.Exists(filePath)) { File.Delete(filePath); } } FileUtils.SaveFile((byte[])res.file, savePath, res.fileName.ToString()); OperateResult or = BLLCreator.Create>().Update(new { CN_C_IS_UPLOADED = "Y", CN_S_UPLOADOR = m.CN_S_NAME, CN_T_UPLOAD_TIME = DateTime.Now }, new { CN_S_TEMPLET_NAME = fileName,CN_C_IS_FIRST="Y" }); return JsonConvert.SerializeObject(or); }); } catch (Exception ex) { return JsonConvert.SerializeObject(OperateResult.Error(ex.Message)); } } #endregion #region 下载文件 /// /// 下载文件 /// /// 文件名 /// [HttpGet] public HttpResponseMessage DownLoadTemplet(string fileName) { FileStream stream=null; try { string filePath = Constants.SysConfig.UI_ROOT_PATH.Replace('*', '\\') + @"\ActiveReport\Template\" + fileName; if (!File.Exists(filePath)) { return new HttpResponseMessage(); } stream = new FileStream(filePath, FileMode.Open); HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StreamContent(stream); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = HttpUtility.UrlEncode(fileName) }; response.Headers.Add("Access-Control-Expose-Headers", "FileName"); response.Headers.Add("FileName", HttpUtility.UrlEncode(fileName)); return response; } catch (Exception ex) { if (stream != null) { stream.Close(); stream.Dispose(); } } return new HttpResponseMessage(); } #endregion } }