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
}
}