|
|
using Common.Logging;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Web;
|
|
|
using System.Web.Mvc;
|
|
|
using System.Configuration;
|
|
|
using DSWeb.Areas.Dispatch.Helper;
|
|
|
using Newtonsoft.Json;
|
|
|
using System.Runtime.Caching;
|
|
|
using System.Text;
|
|
|
using System.IO;
|
|
|
using DSWeb.Areas.Dispatch.DB;
|
|
|
using DSWeb.Areas.Dispatch.DB_Wx;
|
|
|
using DSWeb.Areas.CommMng.DAL;
|
|
|
using HcUtility.Comm;
|
|
|
|
|
|
|
|
|
namespace DSWeb.Areas.Dispatch.Controllers
|
|
|
{
|
|
|
public class repobj {
|
|
|
public string openid { get; set; }
|
|
|
public int errcode { get; set; }
|
|
|
}
|
|
|
|
|
|
public class LoginInfo {
|
|
|
public string codename { get; set; }
|
|
|
|
|
|
public string password { get; set; }
|
|
|
|
|
|
public string AuthCode { get; set; }
|
|
|
}
|
|
|
|
|
|
//微信小程序专用接口控制器
|
|
|
public class WxAppController : Controller
|
|
|
{
|
|
|
private ILog log = LogManager.GetLogger("WxAppController");
|
|
|
|
|
|
private WxAppDataContext dbc = new WxAppDataContext();
|
|
|
|
|
|
private string filepath = ConfigurationManager.AppSettings["DSWMSFilePath"];
|
|
|
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
private repobj getOpenId(string code) {
|
|
|
var appid = ConfigurationManager.AppSettings["WechatAppId"];
|
|
|
var appsecret = ConfigurationManager.AppSettings["WechatAppSecret"];
|
|
|
var url = $"https://api.weixin.qq.com/sns/jscode2session?appid={appid}&secret={appsecret}&js_code={code}&grant_type=authorization_code";
|
|
|
log.Debug("获取openid:" + url);
|
|
|
string resp = WebRequestHelper.DoGet(url);
|
|
|
repobj result = JsonConvert.DeserializeAnonymousType(resp, new repobj { openid = "", errcode = 0 });
|
|
|
log.Debug("返回:" + resp);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public String getDataStr(DateTime? dt) {
|
|
|
return dt == null ? "" : ((DateTime)dt).ToString("yyyy-MM-dd");
|
|
|
}
|
|
|
|
|
|
public String getDataLongStr(DateTime? dt)
|
|
|
{
|
|
|
return dt == null ? "" : ((DateTime)dt).ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
}
|
|
|
//#region 裕龙集团用小程序
|
|
|
|
|
|
|
|
|
//校验用户是否存在,并获取用户信息
|
|
|
[HttpGet]
|
|
|
public ActionResult GetUserInfo(string code)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
var obj = getOpenId(code);
|
|
|
//BasicDataRefDAL.SaveLog("获得openid", obj.openid, "wxapp", "获取用户信息");
|
|
|
var userWx = dbc.Users.FirstOrDefault(x => x.OPENID == obj.openid);
|
|
|
|
|
|
if (userWx != null)
|
|
|
{
|
|
|
|
|
|
var userinfo = dbc.vw_user.First(x => x.USERID == userWx.GID);
|
|
|
//BasicDataRefDAL.SaveLog("", "", "wxapp", "获取用户信息1");
|
|
|
return Json(new
|
|
|
{
|
|
|
ErrorCode = 0,
|
|
|
Message = "获取成功",
|
|
|
BaseInfo = new { userinfo.SHOWNAME, userWx.CODENAME, userinfo.companyname, userWx.OPENID, userinfo.Role_Id , userinfo.COMPANYID, userinfo.USERID }
|
|
|
},
|
|
|
JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//BasicDataRefDAL.SaveLog("", "", "wxapp", "获取用户信息2");
|
|
|
return Json(new { ErrorCode = -1, Message = "用户不存在" }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
//BasicDataRefDAL.SaveLog("", "", "wxapp", "获取用户信息3");
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误" }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
catch (Exception e) {
|
|
|
//log.Debug("获取信息错误" + e.Message);
|
|
|
//BasicDataRefDAL.SaveLog("错误", e.Message, "wxapp", "获取用户信息");
|
|
|
return Json(new { ErrorCode = 500, Message = e.Message }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 用户登陆 使用系统用户名和密码登陆
|
|
|
/// </summary>
|
|
|
/// <param name="code"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost]
|
|
|
public ActionResult FirstLogin(LoginInfo logininfo)
|
|
|
{
|
|
|
var obj = getOpenId(logininfo.AuthCode);
|
|
|
BasicDataRefDAL.SaveLog("获得openid", obj.openid, "wxapp", "登录");
|
|
|
try
|
|
|
{
|
|
|
if (obj.errcode == 0)
|
|
|
{
|
|
|
BasicDataRefDAL.SaveLog("", obj.openid, "wxapp", "登录1");
|
|
|
var userWxList = dbc.Users.Where(x => x.OPENID == obj.openid).ToList();
|
|
|
|
|
|
if (userWxList.Count > 0)
|
|
|
{
|
|
|
//将所有使用这个openid的user数据的openid置为‘’ 然后继续正常操作
|
|
|
|
|
|
foreach (var item in userWxList)
|
|
|
{
|
|
|
item.OPENID = "";
|
|
|
}
|
|
|
}
|
|
|
BasicDataRefDAL.SaveLog($"codename[{logininfo.codename}],password[{logininfo.password}]", obj.openid, "wxapp", "登录2");
|
|
|
//将正确的用户名和密码的那条user数据 的openid修改为传入的
|
|
|
var userWx = dbc.Users.FirstOrDefault(x => x.CODENAME.ToUpper() == logininfo.codename.ToUpper() && x.PASSWORD == logininfo.password);
|
|
|
|
|
|
if (userWx != null)
|
|
|
{
|
|
|
userWx.OPENID = obj.openid;
|
|
|
|
|
|
dbc.SaveChanges();
|
|
|
}
|
|
|
else {
|
|
|
BasicDataRefDAL.SaveLog("用户名、密码错误", obj.openid, "wxapp", "登录2.1");
|
|
|
}
|
|
|
|
|
|
var userinfo = dbc.vw_user.First(x => x.USERID == userWx.GID);
|
|
|
BasicDataRefDAL.SaveLog("", obj.openid, "wxapp", "登录3");
|
|
|
return Json(new
|
|
|
{
|
|
|
ErrorCode = 0,
|
|
|
Message = "获取成功",
|
|
|
BaseInfo = new { userinfo.SHOWNAME, userWx.CODENAME, userinfo.companyname, userWx.OPENID }
|
|
|
},
|
|
|
JsonRequestBehavior.AllowGet);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e) {
|
|
|
BasicDataRefDAL.SaveLog("", e.Message, "wxapp", "登陆错误");
|
|
|
//log.Debug("wxapp登陆错误:" + e.Message);
|
|
|
}
|
|
|
BasicDataRefDAL.SaveLog("", obj.openid, "wxapp", "登录f");
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误" }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取进行中的入库执行单
|
|
|
/// </summary>
|
|
|
/// <param name="logininfo"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet]
|
|
|
public ActionResult GetINDOList(string CODENAME)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
var userinfo = dbc.vw_user.First(x => x.CODENAME == CODENAME);
|
|
|
|
|
|
var limit = dbc.Sys_Role_Core.First(x => x.Role_Id == userinfo.Role_Id).LimitCompanyRange;
|
|
|
|
|
|
var indoList = new List<VW_OP_WMS_IN_DO>();
|
|
|
|
|
|
//寻找 本公司的“入库执行 1001”的入库执行单列表
|
|
|
if (limit)
|
|
|
{
|
|
|
indoList = dbc.VW_OP_WMS_IN_DO.Where(x => x.CORPID == userinfo.COMPANYID && x.BILLSTATUS == "1001" && (x.CUSTOMERNAME!=null && x.CUSTOMERNAME != "")).ToList();
|
|
|
}
|
|
|
else {
|
|
|
indoList = dbc.VW_OP_WMS_IN_DO.Where(x => x.BILLSTATUS == "1001" && (x.CUSTOMERNAME != null && x.CUSTOMERNAME != "")).ToList();
|
|
|
}
|
|
|
|
|
|
indoList.Sort((x, y) => 4 * x.CUSTOMERNAME.CompareTo(y.CUSTOMERNAME)+2*x.MBLNO.CompareTo(y.MBLNO));
|
|
|
|
|
|
return Json(new { ErrorCode = 0, data = indoList }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
catch (Exception e) {
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:"+e.Message }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取入库执行明细
|
|
|
/// </summary>
|
|
|
/// <param name="logininfo"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet]
|
|
|
public ActionResult GetINDODetailList(string WMSDOID)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
//var userinfo = dbc.vw_user.First(x => x.CODENAME == CODENAME);
|
|
|
|
|
|
//寻找 本公司的“入库执行 1001”的入库执行单列表
|
|
|
var indoList = dbc.VW_OP_WMS_IN_DO_GOODS.Where(x => x.WMSDOID == new Guid(WMSDOID)).ToList();
|
|
|
|
|
|
return Json(new { ErrorCode = 0, data = indoList }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:" + e.Message }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取进行中的出库作业单列表
|
|
|
/// </summary>
|
|
|
/// <param name="logininfo"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet]
|
|
|
public ActionResult GetOUTDOList(string CODENAME)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
var userinfo = dbc.vw_user.First(x => x.CODENAME == CODENAME);
|
|
|
|
|
|
//寻找 本公司的“出库执行 1010”的出库作业单列表
|
|
|
var outdoList = dbc.VW_OP_WMS_OUT_DO.Where(x => x.CORPID == userinfo.COMPANYID && (x.BILLSTATUS == "1010")).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
var resultdata = outdoList.Select(x => new
|
|
|
{
|
|
|
WMSDOID = x.WMSDOID,
|
|
|
WMSNO = x.WMSNO,
|
|
|
MBLNO = x.MBLNO==null?"": x.MBLNO,
|
|
|
CORPID = x.CORPID,
|
|
|
CUSTOMERNAME = x.CUSTOMERNAME,
|
|
|
DODATE = getDataStr(x.DODATE),
|
|
|
REMARK = x.REMARK,
|
|
|
TRUCKNO = x.TRUCKNO,
|
|
|
CNTRNO = x.CNTRNO,
|
|
|
}).ToList();
|
|
|
|
|
|
resultdata.Sort((x, y) => 8 * x.DODATE.CompareTo(y.DODATE) + 4 * x.CUSTOMERNAME.CompareTo(y.CUSTOMERNAME) + 2 * x.MBLNO.CompareTo(y.MBLNO) );
|
|
|
|
|
|
return Json(new { ErrorCode = 0, data = resultdata }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:" + e.Message }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取用指定gid和指定箱号共同关联的电子文档
|
|
|
///
|
|
|
/// </summary>
|
|
|
/// <param name="logininfo"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet]
|
|
|
public ActionResult GetInfoFileList(string PID,string CNTRNO)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
|
|
|
var indoList = dbc.VW_INFO_FILES.Where(x => x.PID == new Guid(PID) && x.CNTRNO== CNTRNO).ToList();
|
|
|
|
|
|
|
|
|
var fileList = indoList.Select(x =>
|
|
|
new
|
|
|
{
|
|
|
GID = x.GID,
|
|
|
CNTRNO = x.CNTRNO,
|
|
|
IMAGES = x.IMGPATH.Split(',').ToList(),
|
|
|
ModifyDate = getDataLongStr(x.ModifyDate)
|
|
|
}).ToList();
|
|
|
|
|
|
var resultlist = new List<INFO_FILES_TEMP>();
|
|
|
|
|
|
foreach (var infofile in fileList) {
|
|
|
|
|
|
var newlist = new List<IMG>();
|
|
|
foreach (var imgpath in infofile.IMAGES) {
|
|
|
//var _newpath = "/DSWMSPIC/" + imgpath;
|
|
|
var _newpath = new IMG();
|
|
|
_newpath.IMGPATH = imgpath;
|
|
|
newlist.Add(_newpath);
|
|
|
}
|
|
|
|
|
|
var newresultfile = new INFO_FILES_TEMP();
|
|
|
newresultfile.GID = infofile.GID;
|
|
|
newresultfile.CNTRNO = infofile.CNTRNO;
|
|
|
newresultfile.IMGPATHLIST = newlist;
|
|
|
newresultfile.ModifyDate = infofile.ModifyDate;
|
|
|
resultlist.Add(newresultfile);
|
|
|
}
|
|
|
|
|
|
fileList.Sort((x, y) => -x.ModifyDate.CompareTo(y.ModifyDate));
|
|
|
|
|
|
return Json(new { ErrorCode = 0, data = resultlist }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:" + e.Message }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取全部电子文档
|
|
|
/// </summary>
|
|
|
/// <param name="logininfo"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet]
|
|
|
public ActionResult GetInfoFileList_ALL(string ROLE_ID,string COMPANYID,string MBLNO, string CNTRNO)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
if (string.IsNullOrWhiteSpace(MBLNO) && string.IsNullOrWhiteSpace(CNTRNO)) {
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:提单号和箱号至少要填写一个" }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
|
|
|
if(!string.IsNullOrWhiteSpace(MBLNO) && MBLNO.Length<3)
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:提单号至少要填三位" }, JsonRequestBehavior.AllowGet);
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(CNTRNO) && CNTRNO.Length < 3)
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:箱号至少要填三位" }, JsonRequestBehavior.AllowGet);
|
|
|
|
|
|
var limit = dbc.Sys_Role_Core.First(x => x.Role_Id == ROLE_ID).LimitCompanyRange;
|
|
|
|
|
|
var indoList = new List<VW_INFO_FILES>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (limit)
|
|
|
{
|
|
|
//var companyuserid = dbc.vw_user.Where(x => x.COMPANYID == COMPANYID).Select(s => new Guid(s.USERID)).ToList();
|
|
|
indoList = dbc.VW_INFO_FILES.Where(x => x.CORPID == COMPANYID).ToList();
|
|
|
if (!string.IsNullOrWhiteSpace(MBLNO)) {
|
|
|
indoList= indoList.Where(x => x.MBLNO.Contains(MBLNO)).ToList();
|
|
|
}
|
|
|
if (!string.IsNullOrWhiteSpace(CNTRNO))
|
|
|
{
|
|
|
indoList=indoList.Where(x => x.CNTRNO.Contains(CNTRNO)).ToList();
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
if (!string.IsNullOrWhiteSpace(MBLNO))
|
|
|
{
|
|
|
indoList = dbc.VW_INFO_FILES.Where(x => x.MBLNO.Contains( MBLNO)).ToList();
|
|
|
if (!string.IsNullOrWhiteSpace(CNTRNO))
|
|
|
{
|
|
|
indoList= indoList.Where(x => x.CNTRNO.Contains(CNTRNO)).ToList();
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
if (!string.IsNullOrWhiteSpace(CNTRNO))
|
|
|
{
|
|
|
indoList = dbc.VW_INFO_FILES.Where(x => x.CNTRNO.Contains(CNTRNO)).ToList();
|
|
|
}
|
|
|
//indoList = dbc.VW_INFO_FILES.Where(x => (x.MBLNO.Contains(MBLNO) )).ToList();
|
|
|
}
|
|
|
|
|
|
indoList = indoList.Where(x => x.IMGPATH != null && x.IMGPATH != "").ToList();
|
|
|
|
|
|
var fileList = indoList.Select(x =>
|
|
|
new
|
|
|
{
|
|
|
GID = x.GID,
|
|
|
PWORKTYPE = x.PWORKTYPE,
|
|
|
MBLNO = x.MBLNO,
|
|
|
CNTRNO = x.CNTRNO,
|
|
|
Modifier = x.Modifier,
|
|
|
ModifyDate = getDataLongStr(x.ModifyDate),
|
|
|
IMAGES = x.IMGPATH.Split(',').ToList()
|
|
|
}).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
var resultlist = new List<INFO_FILES_TEMP2>();
|
|
|
|
|
|
foreach (var infofile in fileList)
|
|
|
{
|
|
|
|
|
|
var newlist = new List<IMG>();
|
|
|
foreach (var imgpath in infofile.IMAGES)
|
|
|
{
|
|
|
//var _newpath = "/DSWMSPIC/" + imgpath;
|
|
|
var _newpath = new IMG();
|
|
|
_newpath.IMGPATH = imgpath;
|
|
|
newlist.Add(_newpath);
|
|
|
}
|
|
|
|
|
|
var newresultfile = new INFO_FILES_TEMP2();
|
|
|
newresultfile.GID = infofile.GID;
|
|
|
newresultfile.CNTRNO = infofile.CNTRNO == null ? "" : infofile.CNTRNO;
|
|
|
newresultfile.MBLNO = infofile.MBLNO==null?"": infofile.MBLNO;
|
|
|
newresultfile.PWORKTYPE = infofile.PWORKTYPE;
|
|
|
newresultfile.IMGPATHLIST = newlist;
|
|
|
newresultfile.ModifyDate = infofile.ModifyDate;
|
|
|
resultlist.Add(newresultfile);
|
|
|
}
|
|
|
|
|
|
resultlist.Sort((x, y) => 4 * x.MBLNO.CompareTo(y.MBLNO) + 2 * x.CNTRNO.CompareTo(y.CNTRNO) + x.ModifyDate.CompareTo(y.ModifyDate));
|
|
|
|
|
|
return Json(new { ErrorCode = 0, data = resultlist }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:" + e.Message }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取货物库位信息
|
|
|
/// </summary>
|
|
|
/// <param name="logininfo"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet]
|
|
|
public ActionResult GetAREAGOODS(string ROLE_ID, string COMPANYID, string MBLNO, string CNTRNO)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
if (string.IsNullOrWhiteSpace(MBLNO) && string.IsNullOrWhiteSpace(CNTRNO))
|
|
|
{
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:提单号和箱号至少要填写一个" }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(MBLNO) && MBLNO.Length < 3)
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:提单号至少要填三位" }, JsonRequestBehavior.AllowGet);
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(CNTRNO) && CNTRNO.Length < 3)
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:箱号至少要填三位" }, JsonRequestBehavior.AllowGet);
|
|
|
|
|
|
var limit = dbc.Sys_Role_Core.First(x => x.Role_Id == ROLE_ID).LimitCompanyRange;
|
|
|
|
|
|
var resultList = new List<VW_OP_WMS_AREAGOODS>();
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(MBLNO))
|
|
|
{
|
|
|
resultList = dbc.VW_OP_WMS_AREAGOODS.Where(x => x.MBLNO.Contains(MBLNO)).ToList();
|
|
|
if (!string.IsNullOrWhiteSpace(CNTRNO)) {
|
|
|
resultList = resultList.Where(x => x.CNTRNO.Contains(CNTRNO)).ToList();
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
resultList = dbc.VW_OP_WMS_AREAGOODS.Where(x => (x.CNTRNO.Contains(CNTRNO))).ToList();
|
|
|
}
|
|
|
|
|
|
if (limit)
|
|
|
{
|
|
|
|
|
|
resultList = resultList.Where(x => x.CORPID==COMPANYID).ToList();
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
if(resultList!=null)
|
|
|
resultList.Sort((x, y) => 4 * x.MBLNO.CompareTo(y.MBLNO) + 2 * x.CNTRNO.CompareTo(y.CNTRNO) + x.AREANAME.CompareTo(y.AREANAME));
|
|
|
|
|
|
|
|
|
return Json(new { ErrorCode = 0, data = resultList }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:" + e.Message }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
[HttpPost]
|
|
|
public ActionResult UploadFile()
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
if (Request.Files.Count > 0)
|
|
|
{
|
|
|
var pid = Request.Form["pid"].ToString().Trim();
|
|
|
var mblno = Request.Form["mblno"].ToString().Trim();
|
|
|
var cntrno = Request.Form["cntrno"].ToString().Trim();
|
|
|
var codename = Request.Form["codename"].ToString().Trim();
|
|
|
var pworktype = Request.Form["pworktype"].ToString().Trim();
|
|
|
|
|
|
var userinfo = dbc.vw_user.First(x => x.CODENAME == codename);
|
|
|
|
|
|
var dayfilepath = DateTime.Today.ToString("yyyyMMdd");
|
|
|
|
|
|
var InfoFilesPath = "Upload/Tables/VW_INFO_FILES/" + dayfilepath;//保存到数据库info_files表的路径
|
|
|
|
|
|
|
|
|
string upDir = Path.Combine(ConfigurationManager.AppSettings["DSWMSPICPATH"], InfoFilesPath);
|
|
|
if (!Directory.Exists(upDir))
|
|
|
{
|
|
|
Directory.CreateDirectory(upDir);
|
|
|
}
|
|
|
//H:\DSWMS\Vue.Net\VOL.WebApi\wwwroot\Upload/Tables/VW_INFO_FILES/202012100909412467/1.jpg
|
|
|
|
|
|
|
|
|
//新增一条电子档案info_files
|
|
|
var newInfoFiles = new INFO_FILES(new Guid(pid), pworktype, mblno, cntrno);
|
|
|
|
|
|
newInfoFiles.setuser(userinfo);
|
|
|
|
|
|
for (int c = 0; c < Request.Files.Count; c++)
|
|
|
{
|
|
|
var uploadFile = Request.Files[c];
|
|
|
if (uploadFile.ContentLength == 0)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
var extension = Path.GetExtension(uploadFile.FileName);
|
|
|
var timename = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "_" + new Random().Next(100, 999) + extension;
|
|
|
var filepath = "\\" + timename;//随机生成文件名
|
|
|
var infofilepath = InfoFilesPath +"/"+ timename;
|
|
|
|
|
|
var savePath = upDir + filepath;
|
|
|
uploadFile.SaveAs(savePath);
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(newInfoFiles.IMGPATH))
|
|
|
{
|
|
|
newInfoFiles.IMGPATH += ",";
|
|
|
}
|
|
|
newInfoFiles.IMGPATH += infofilepath;
|
|
|
|
|
|
//InfoFileList.Add(new { id = DateTime.Now.Ticks, url = relativepath + filepath, size = uploadFile.ContentLength });
|
|
|
}
|
|
|
dbc.INFO_FILES.Add(newInfoFiles);
|
|
|
dbc.SaveChanges();
|
|
|
return Json(new { Success = true, Message = "上传成功", Data = JsonConvert.SerializeObject(newInfoFiles) });
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e) {
|
|
|
return Json(new { Success = false, Message = e.Message });
|
|
|
}
|
|
|
|
|
|
return Json(new { Success = false, Message = "没有文件" });
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 删除电子文档
|
|
|
/// 如果关联的入库执行没有处于1001状态,则不允许删除
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet]
|
|
|
public ActionResult DelInfoFiles(string GID)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
//1首先找到这条电子文档
|
|
|
var infofile = dbc.INFO_FILES.FirstOrDefault(x => x.GID == new Guid(GID));
|
|
|
if (infofile == null) return ErrorResult("没有可以删除的文件");
|
|
|
|
|
|
//2判断关联业务的状态 看能否删除
|
|
|
if (infofile.PWORKTYPE == "入库执行") {
|
|
|
var indo = dbc.VW_OP_WMS_IN_DO.FirstOrDefault(x => x.WMSDOID == infofile.PID);
|
|
|
|
|
|
if(indo==null) return ErrorResult("没有可以删除的文件");
|
|
|
|
|
|
if(indo.BILLSTATUS!="1001") return ErrorResult("业务完成,不可删除");
|
|
|
}
|
|
|
|
|
|
//3执行删除
|
|
|
CommMng.DAL.BasicDataRefDAL.ExecSql($"delete from info_files where gid='{GID}'");
|
|
|
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
return ErrorResult(e.Message);
|
|
|
}
|
|
|
|
|
|
return ErrorResult("没有可以删除的文件");
|
|
|
}
|
|
|
|
|
|
private ActionResult ErrorResult(string msg) {
|
|
|
return Json(new { Success = false, Message = "msg" });
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 虎鲸 小程序
|
|
|
/// 获取该用户需要执行的业务
|
|
|
/// </summary>
|
|
|
/// <param name="logininfo"></param>
|
|
|
/// <returns></returns>
|
|
|
//[HttpGet]
|
|
|
/*
|
|
|
public ActionResult GetCTNMNGList(string USERID)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
var resultList = new List<OP_YARD_CTNMNG>();
|
|
|
|
|
|
var cdc = new CommonDataContext();
|
|
|
var wx = new WxAppDataContext();
|
|
|
//寻找这个人需要执行的业务内容
|
|
|
|
|
|
//寻找OP_YARD_CTNMNG_WORK当中OP=这个人 ,且WORKSTATUS为空或为未处理的
|
|
|
|
|
|
//将这些OP_YARD_CTNMNG_WORK的父节点返回
|
|
|
|
|
|
//var _user = cdc.Users.FirstOrDefault(x => x.CODENAME == CODENAME);
|
|
|
|
|
|
var detailList = wx.OP_YARD_CTNMNG_WORK.Where(x => x.OP.ToString().ToUpper() == USERID.ToUpper() && (x.WORKSTATUS==""|| x.WORKSTATUS == null || x.WORKSTATUS=="未处理")).ToList();
|
|
|
|
|
|
if (detailList != null && detailList.Count > 0) {
|
|
|
|
|
|
var bsnoList = detailList.Select(s => s.BSNO).ToList();
|
|
|
|
|
|
var headlist = wx.OP_YARD_CTNMNG.Where(x => bsnoList.Contains(x.GID)).ToList();
|
|
|
|
|
|
if (headlist != null && headlist.Count > 0) {
|
|
|
resultList = headlist;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return Json(new { ErrorCode = 0, data = resultList }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:" + e.Message }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
}
|
|
|
*/
|
|
|
|
|
|
|
|
|
private string 获得角色对应的工作内容名前缀(string USERID) {
|
|
|
var wx = new WxAppDataContext();
|
|
|
var userinfo = wx.vw_user.First(x => x.USERID == USERID);
|
|
|
|
|
|
var userrole = wx.Sys_Role_Core.First(x => x.Role_Id == userinfo.Role_Id);
|
|
|
|
|
|
var worktype_startstr = "";
|
|
|
if (userrole.RoleName == "调度")
|
|
|
{
|
|
|
worktype_startstr = "调度";
|
|
|
}
|
|
|
if (userrole.RoleName == "场站")
|
|
|
{
|
|
|
worktype_startstr = "场站";
|
|
|
}
|
|
|
return worktype_startstr;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 虎鲸 小程序
|
|
|
/// 获取该用户需要执行的业务列表
|
|
|
/// </summary>
|
|
|
/// <param name="logininfo"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet]
|
|
|
public ActionResult GetCTNMNGList(string USERID)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
var resultList = new List<VW_OP_YARD_CTNMNG_HUJINGWXHeadList>();
|
|
|
|
|
|
var cdc = new CommonDataContext();
|
|
|
var wx = new WxAppDataContext();
|
|
|
//寻找这个人需要执行的业务内容
|
|
|
|
|
|
//寻找标准1 预计入场日期小于等于今天的预约业务
|
|
|
//寻找标准2 根据用户角色定义查询范围
|
|
|
//如果用户角色名为调度 则只显示 调度开头的worktype
|
|
|
|
|
|
//将这些OP_YARD_CTNMNG_WORK的父节点OP_YARD_CTNMNG返回
|
|
|
|
|
|
//var _user = cdc.Users.FirstOrDefault(x => x.CODENAME == CODENAME);
|
|
|
|
|
|
var worktype_startstr = 获得角色对应的工作内容名前缀(USERID);
|
|
|
|
|
|
//今天
|
|
|
var endTime = DateTime.Today.AddDays(1).AddSeconds(-1);//.ToUniversalTime().ToString();
|
|
|
|
|
|
var 预约idlist = wx.OP_YARD_CTNMNG.Where(x => x.ENTERDATE <= endTime).Select(s=>s.GID).ToList();
|
|
|
//BasicDataRefDAL.SaveLog(headidlist, "", "wxapp", "虎鲸列表1");
|
|
|
|
|
|
var detailList = wx.OP_YARD_CTNMNG_WORK.Where(x => 预约idlist.Contains(x.BSNO) && x.WORKTYPE.StartsWith(worktype_startstr) && ( x.WORKSTATUS == "未处理")).ToList();
|
|
|
//BasicDataRefDAL.SaveLog(detailList, "", "wxapp", "虎鲸列表2");
|
|
|
|
|
|
var userloadport = GetLoadPortList(USERID);
|
|
|
//BasicDataRefDAL.SaveLog(userloadport, "", "wxapp", "虎鲸列表3");
|
|
|
if (detailList != null && detailList.Count > 0)
|
|
|
{
|
|
|
|
|
|
List<Guid> 需处理的预约idList = detailList.Select(s => s.BSNO).Distinct().ToList();
|
|
|
|
|
|
|
|
|
var tempList = wx.VW_OP_YARD_CTNMNG_HUJINGWXHeadList.Where(x =>
|
|
|
需处理的预约idList.Contains(x.GID)
|
|
|
&& userloadport.Contains(x.LOADPORT)
|
|
|
).ToList();
|
|
|
|
|
|
List<Guid> 需处理的台账IDList = tempList.Select(s => (Guid)s.BlockTrainOrderGid).ToList();
|
|
|
|
|
|
|
|
|
string get出库车号(Guid BlockTrainOrderGid)
|
|
|
{
|
|
|
return detailList.FirstOrDefault(x => x.BSNO== get待处理业务(BlockTrainOrderGid).GID).TRUCKNO;
|
|
|
}
|
|
|
VW_OP_YARD_CTNMNG_HUJINGWXHeadList get待处理业务(Guid BlockTrainOrderGid)
|
|
|
{
|
|
|
return tempList.FirstOrDefault(x => x.BlockTrainOrderGid == BlockTrainOrderGid);
|
|
|
}
|
|
|
|
|
|
//如果同时有堆场和保税预约 则只返回堆场预约
|
|
|
//且将BILLTYPE设定为 堆场预约/保税预约
|
|
|
foreach (var bsno in 需处理的台账IDList) {
|
|
|
if (tempList.Exists(x => x.BlockTrainOrderGid == bsno && x.AppointType=="yard"))
|
|
|
{
|
|
|
var newrec = tempList.First(x => x.BlockTrainOrderGid == bsno && x.AppointType == "yard");
|
|
|
newrec.BILLTYPE = "堆场预约";
|
|
|
if (tempList.Exists(x => x.BlockTrainOrderGid == bsno && x.AppointType == "yard")) {
|
|
|
newrec.BILLTYPE += "/保税预约";
|
|
|
}
|
|
|
if (resultList.Exists(x => x.BlockTrainOrderGid == bsno))
|
|
|
continue;
|
|
|
|
|
|
if (get待处理业务(bsno).BILLSTATUS_CUST == "待出场") {
|
|
|
newrec.TRUCKNO = get出库车号(bsno);
|
|
|
}
|
|
|
|
|
|
resultList.Add(newrec);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var newrec = tempList.First(x => x.BlockTrainOrderGid == bsno && x.AppointType == "bond");
|
|
|
newrec.BILLTYPE = "保税预约";
|
|
|
|
|
|
if (get待处理业务(bsno).BILLSTATUS_CUST == "待出场")
|
|
|
{
|
|
|
newrec.TRUCKNO = get出库车号(bsno);
|
|
|
}
|
|
|
|
|
|
resultList.Add(newrec);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//BasicDataRefDAL.SaveLog(resultList, "", "wxapp", "虎鲸列表4");
|
|
|
//foreach (var item in resultList) {
|
|
|
// item.BILLTYPE = detailList.FirstOrDefault(x => x.BSNO == item.GID).WORKTYPE;
|
|
|
//}
|
|
|
|
|
|
//resultList = wx.VW_OP_YARD_CTNMNG_HUJINGWXHeadList.Where(x => 1 == 1).ToList();
|
|
|
|
|
|
}
|
|
|
|
|
|
return Json(new { ErrorCode = 0, data = resultList }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
BasicDataRefDAL.SaveLog(e.Message, "", "wxapp", "虎鲸列表e");
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:" + e.Message }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 虎鲸 小程序
|
|
|
/// 点击待执行业务进行的查询
|
|
|
/// </summary>
|
|
|
/// <param name="GID"></param>
|
|
|
/// <param name="USERID"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet]
|
|
|
public ActionResult GetCTNMNGWORK_NeedDo(string GID, string USERID )
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
var result = new OP_YARD_CTNMNG_WORK();
|
|
|
|
|
|
var cdc = new CommonDataContext();
|
|
|
var wx = new WxAppDataContext();
|
|
|
//寻找这个人在这项业务中需要执行的业务内容,并返回其中orderno最小的一项
|
|
|
var head = wx.OP_YARD_CTNMNG.FirstOrDefault(x => x.GID.ToString().ToUpper() == GID.ToUpper());
|
|
|
|
|
|
var order = wx.tb_BlockTrainOrder.FirstOrDefault(x => x.Gid == head.BlockTrainOrderGid);
|
|
|
|
|
|
var worktype_startstr = 获得角色对应的工作内容名前缀(USERID);
|
|
|
|
|
|
var detailList = wx.OP_YARD_CTNMNG_WORK.Where(x => x.BSNO==new Guid(GID) && x.WORKTYPE.StartsWith(worktype_startstr) && (x.WORKSTATUS == "未处理")).ToList();
|
|
|
|
|
|
if (detailList != null && detailList.Count > 0)
|
|
|
{
|
|
|
detailList = detailList.OrderBy(o => o.ORDERNO).ToList();
|
|
|
result = detailList[0];
|
|
|
}
|
|
|
|
|
|
var ImgList = new List<string>();
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(result.IMGPATH)) {
|
|
|
ImgList = result.IMGPATH.Split(',').ToList();
|
|
|
}
|
|
|
|
|
|
var headlistrec = wx.VW_OP_YARD_CTNMNG_HUJINGWXHeadList.FirstOrDefault(x => x.GID == result.BSNO);
|
|
|
|
|
|
var truckno = head.TRUCKNO;
|
|
|
|
|
|
if (result.WORKTYPE == "场站出场")
|
|
|
{
|
|
|
truckno = result.TRUCKNO;
|
|
|
}
|
|
|
|
|
|
var _result = new { result.GID,BILLTYPE= head.AppointType_STR, CNTRNO= order.BoxCode , head.BILLSTATUS_CUST, CTNSTATUS= order.BoxStatus, result.WORKTYPE, result.WORKSTATUS, TRUCKNO= truckno, AREACODE= headlistrec.AREACODE, AREANAME = headlistrec.AREANAME, ImgList };
|
|
|
|
|
|
return Json(new { ErrorCode = 0, data = _result }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
BasicDataRefDAL.SaveLog(e.Message, "", "wxapp", "工作明细");
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:" + e.Message }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[HttpGet]
|
|
|
public ActionResult GetCTNMNGWORK(string GID )
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
//var result = new OP_YARD_CTNMNG_WORK();
|
|
|
|
|
|
var cdc = new CommonDataContext();
|
|
|
var wx = new WxAppDataContext();
|
|
|
|
|
|
var result = wx.OP_YARD_CTNMNG_WORK.FirstOrDefault(x => x.GID==new Guid(GID));
|
|
|
|
|
|
|
|
|
var head = wx.OP_YARD_CTNMNG.FirstOrDefault(x => x.GID == result.BSNO);
|
|
|
var order = wx.tb_BlockTrainOrder.FirstOrDefault(x => x.Gid == head.BlockTrainOrderGid);
|
|
|
|
|
|
var ImgList = new List<string>();
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(result.IMGPATH))
|
|
|
{
|
|
|
ImgList = result.IMGPATH.Split(',').ToList();
|
|
|
}
|
|
|
|
|
|
var _result = new { result.GID, BILLTYPE = head.AppointType_STR, CNTRNO = order.BoxCode, head.BILLSTATUS_CUST, CTNSTATUS = order.BoxStatus, result.WORKTYPE, result.WORKSTATUS, TRUCKNO = head.TRUCKNO, ImgList };
|
|
|
|
|
|
return Json(new { ErrorCode = 0, data = _result }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:" + e.Message }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
[HttpGet]
|
|
|
public ActionResult GetCanUseAreaCode(string USERID)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
var result = new List<VW_OP_YARD_CTNMNG_STOREAREA_CANUSE>();
|
|
|
|
|
|
var wx = new WxAppDataContext();
|
|
|
|
|
|
var AreaCodeHeadList = GetAreaCodeHeadList(USERID);
|
|
|
|
|
|
var _r = wx.VW_OP_YARD_CTNMNG_STOREAREA_CANUSE.Where(x=>1==1).ToList();
|
|
|
|
|
|
|
|
|
if (AreaCodeHeadList != null && AreaCodeHeadList.Count > 0) {
|
|
|
foreach (var item in _r)
|
|
|
foreach(var headstr in AreaCodeHeadList)
|
|
|
{
|
|
|
if (item.AREACODE.StartsWith(headstr)) {
|
|
|
result.Add(item);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
result.Sort(delegate (VW_OP_YARD_CTNMNG_STOREAREA_CANUSE p1, VW_OP_YARD_CTNMNG_STOREAREA_CANUSE p2)
|
|
|
{
|
|
|
return p1.AREACODE.CompareTo(p2.AREACODE);
|
|
|
});
|
|
|
|
|
|
return Json(new { ErrorCode = 0, data = result }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
return Json(new { ErrorCode = 500, Message = "发生错误:" + e.Message }, JsonRequestBehavior.AllowGet);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
|
public ActionResult UploadFile_CTNMNG()
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
|
|
|
var GID = Request.Form["GID"].ToString().Trim();
|
|
|
|
|
|
var ISEND = Request.Form["ISEND"].ToString().Trim() == "true";
|
|
|
|
|
|
var TRUCKNO = Request.Form["TRUCKNO"].ToString().Trim();
|
|
|
|
|
|
var CNTRNO = Request.Form["CNTRNO"].ToString().Trim();
|
|
|
|
|
|
var USERID = Request.Form["USERID"].ToString().Trim();
|
|
|
|
|
|
var AREACODE = Request.Form["AREACODE"].ToString().Trim();
|
|
|
|
|
|
var DODATE = Request.Form["DODATE"].ToString().Trim();
|
|
|
|
|
|
var dayfilepath = DateTime.Today.ToString("yyyyMMdd");
|
|
|
|
|
|
var InfoFilesPath = "Upload/Tables/VW_INFO_FILES/" + dayfilepath;//保存到数据库info_files表的路径
|
|
|
|
|
|
BasicDataRefDAL.SaveLog(new { GID, ISEND, TRUCKNO, CNTRNO, USERID, AREACODE, DODATE }, USERID, "wxapp", "虎鲸app02");
|
|
|
string upDir = Path.Combine(ConfigurationManager.AppSettings["DSWMSPICPATH"], InfoFilesPath);
|
|
|
if (!Directory.Exists(upDir))
|
|
|
{
|
|
|
Directory.CreateDirectory(upDir);
|
|
|
}
|
|
|
//H:\DSWMS\Vue.Net\VOL.WebApi\wwwroot\Upload/Tables/VW_INFO_FILES/202012100909412467/1.jpg
|
|
|
|
|
|
|
|
|
//向OP_YARD_CTNMNG_WORK的IMGPATH中追加图片地址。
|
|
|
var wx = new WxAppDataContext();
|
|
|
var workdetail = wx.OP_YARD_CTNMNG_WORK.FirstOrDefault(x => x.GID.ToString().ToUpper() == GID.ToUpper());
|
|
|
|
|
|
//判断此次上传图片数量加上现有图片是否超6张 如果是则返回错误
|
|
|
//改为app端判断
|
|
|
//var CurrentImgCount = workdetail.IMGPATH.Split(',').ToList().Count();
|
|
|
|
|
|
//var updcount = Request.Files.Count;
|
|
|
|
|
|
//if (CurrentImgCount + updcount > 6) {
|
|
|
// return Json(new { Success = false, Message = "图片数量超过6张,请确认后重新上传" });
|
|
|
//}
|
|
|
if (Request.Files.Count > 0)
|
|
|
{
|
|
|
for (int c = 0; c < Request.Files.Count; c++)
|
|
|
{
|
|
|
var uploadFile = Request.Files[c];
|
|
|
if (uploadFile.ContentLength == 0)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
var extension = Path.GetExtension(uploadFile.FileName);
|
|
|
var timename = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "_" + new Random().Next(100, 999) + extension;
|
|
|
var filepath = "\\" + timename;//随机生成文件名
|
|
|
var infofilepath = InfoFilesPath + "/" + timename;
|
|
|
|
|
|
var savePath = upDir + filepath;
|
|
|
uploadFile.SaveAs(savePath);
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(workdetail.IMGPATH))
|
|
|
{
|
|
|
workdetail.IMGPATH += ",";
|
|
|
}
|
|
|
workdetail.IMGPATH += infofilepath;
|
|
|
|
|
|
//InfoFileList.Add(new { id = DateTime.Now.Ticks, url = relativepath + filepath, size = uploadFile.ContentLength });
|
|
|
}
|
|
|
wx.SaveChanges();
|
|
|
}
|
|
|
|
|
|
if (ISEND) {
|
|
|
workdetail.WORKSTATUS = "已处理";
|
|
|
|
|
|
//重新计算业务状态和集装箱状态
|
|
|
//var _r = DealStatus(workdetail,TRUCKNO,CNTRNO);
|
|
|
//if (!_r.Success) {
|
|
|
// return Json(new { Success = false, Message = "状态处理失败", Data = _r.Message });
|
|
|
//}
|
|
|
//20220114 箱状态和预约状态变更 改为在后台系统中实现
|
|
|
//此处改为调用
|
|
|
SetStatus(workdetail, USERID,TRUCKNO,AREACODE,DODATE);
|
|
|
}
|
|
|
return Json(new { Success = true, Message = "上传成功", Data = JsonConvert.SerializeObject(workdetail.IMGPATH) });
|
|
|
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
return Json(new { Success = false, Message = e.Message });
|
|
|
}
|
|
|
|
|
|
return Json(new { Success = false, Message = "没有文件" });
|
|
|
}
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
|
public ActionResult CTNMNG_WorkDo()
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
|
|
|
var GID = Request.Form["GID"].ToString().Trim();
|
|
|
|
|
|
var ISEND = Request.Form["ISEND"].ToString().Trim() == "true";
|
|
|
|
|
|
var TRUCKNO = Request.Form["TRUCKNO"].ToString().Trim();
|
|
|
|
|
|
var CNTRNO = Request.Form["CNTRNO"].ToString().Trim();
|
|
|
|
|
|
var USERID = Request.Form["USERID"].ToString().Trim();
|
|
|
|
|
|
var AREACODE = Request.Form["AREACODE"].ToString().Trim();
|
|
|
|
|
|
var DODATE = Request.Form["DODATE"].ToString().Trim();
|
|
|
BasicDataRefDAL.SaveLog(new{ GID , ISEND , TRUCKNO, CNTRNO, USERID, AREACODE, DODATE }, USERID, "wxapp", "虎鲸app01");
|
|
|
var wx = new WxAppDataContext();
|
|
|
var workdetail = wx.OP_YARD_CTNMNG_WORK.FirstOrDefault(x => x.GID.ToString().ToUpper() == GID.ToUpper());
|
|
|
|
|
|
if (ISEND)
|
|
|
{
|
|
|
workdetail.WORKSTATUS = "已处理";
|
|
|
|
|
|
SetStatus(workdetail, USERID,TRUCKNO,AREACODE,DODATE);
|
|
|
}
|
|
|
//return GetCTNMNGWORK(GID);
|
|
|
return Json(new { Success = true, Message = "执行成功", Data = ""});
|
|
|
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
return Json(new { Success = false, Message = e.Message });
|
|
|
}
|
|
|
|
|
|
return Json(new { Success = false, Message = "没有文件" });
|
|
|
}
|
|
|
|
|
|
public string SetStatus(OP_YARD_CTNMNG_WORK workdetail,string USERID,string TRUCKNO,string AREACODE,string DODATE) {
|
|
|
var result = "";
|
|
|
|
|
|
var wx = new WxAppDataContext();
|
|
|
|
|
|
var head = wx.OP_YARD_CTNMNG.FirstOrDefault(x => x.GID == workdetail.BSNO);
|
|
|
|
|
|
var dswmsurl = ConfigurationManager.AppSettings["DSWMSURL"] + "OP_YARD_CTNMNG/PublicFunc";
|
|
|
|
|
|
var dic = new Dictionary<string, string>();
|
|
|
dic.Add("TYPENAME", "CTNMNGDOWORK");
|
|
|
dic.Add("GID", workdetail.BSNO.ToString());
|
|
|
dic.Add("WORKTYPE", workdetail.WORKTYPE);
|
|
|
dic.Add("USERID", USERID);
|
|
|
dic.Add("AREACODE", AREACODE);
|
|
|
dic.Add("TRUCKNO", TRUCKNO);
|
|
|
dic.Add("DODATE", DODATE);
|
|
|
//BasicDataRefDAL.SaveLog(dic, USERID, "wxapp", "虎鲸app1");
|
|
|
var rtn = WebRequestHelper.DoPost_DSWMS(dswmsurl, dic, 50000);
|
|
|
BasicDataRefDAL.SaveLog("SetStatus:"+ rtn, USERID, "wxapp", "虎鲸app2");
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
public class UserLoadPortListmb
|
|
|
{
|
|
|
public bool Status { get; set; }
|
|
|
public List<string> Data { get; set; }
|
|
|
}
|
|
|
public List<string> GetLoadPortList(string USERID) {
|
|
|
var dswmsurl = ConfigurationManager.AppSettings["DSWMSURL"] + "OP_YARD_CTNMNG/PublicFunc";
|
|
|
|
|
|
var dic = new Dictionary<string, string>();
|
|
|
dic.Add("TYPENAME", "GetUserLoadPort");
|
|
|
dic.Add("GID", "");
|
|
|
dic.Add("WORKTYPE", "");
|
|
|
dic.Add("USERID", USERID);
|
|
|
dic.Add("AREACODE", "");
|
|
|
dic.Add("TRUCKNO", "");
|
|
|
dic.Add("DODATE", "");
|
|
|
|
|
|
var rtn = WebRequestHelper.DoPost_DSWMS(dswmsurl, dic, 50000);
|
|
|
BasicDataRefDAL.SaveLog("GetLoadPortList:" + rtn, USERID, "wxapp", "虎鲸app");
|
|
|
UserLoadPortListmb pt = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoadPortListmb>(rtn);
|
|
|
|
|
|
return pt.Data;
|
|
|
}
|
|
|
public List<string> GetAreaCodeHeadList(string USERID)
|
|
|
{
|
|
|
var dswmsurl = ConfigurationManager.AppSettings["DSWMSURL"] + "OP_YARD_CTNMNG/PublicFunc";
|
|
|
|
|
|
var dic = new Dictionary<string, string>();
|
|
|
dic.Add("TYPENAME", "GetAreaCodeHeadList");
|
|
|
dic.Add("GID", "");
|
|
|
dic.Add("WORKTYPE", "");
|
|
|
dic.Add("USERID", USERID);
|
|
|
dic.Add("AREACODE", "");
|
|
|
dic.Add("TRUCKNO", "");
|
|
|
dic.Add("DODATE", "");
|
|
|
|
|
|
var rtn = WebRequestHelper.DoPost_DSWMS(dswmsurl, dic, 50000);
|
|
|
BasicDataRefDAL.SaveLog("GetAreaCodeHeadList:" + rtn, USERID, "wxapp", "虎鲸app");
|
|
|
UserLoadPortListmb pt = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoadPortListmb>(rtn);
|
|
|
|
|
|
return pt.Data;
|
|
|
}
|
|
|
//[HttpGet]
|
|
|
//public ActionResult GetAreacode_canuse() {
|
|
|
|
|
|
//}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 删除图片
|
|
|
/// 如果关联的入库执行没有处于1001状态,则不允许删除
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet]
|
|
|
public ActionResult DelFile_CTNMNG(string GID,string PICSRC)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
var wx = new WxAppDataContext();
|
|
|
//1首先找到这条业务明细 和它的父节点业务
|
|
|
var workdetail = wx.OP_YARD_CTNMNG_WORK.FirstOrDefault(x => x.GID == new Guid(GID));
|
|
|
var head = wx.OP_YARD_CTNMNG.FirstOrDefault(x => x.GID == workdetail.BSNO);
|
|
|
|
|
|
//2判断关联业务的状态 看能否删除
|
|
|
if (head.BILLSTATUS_CUST == "待发运")
|
|
|
{
|
|
|
return ErrorResult("业务完成,不可删除图片");
|
|
|
}
|
|
|
|
|
|
//3执行删除 即将workdetail当中的imgpath里面,指定名称的图片路径去除。
|
|
|
|
|
|
var imgList = workdetail.IMGPATH.Split(',').ToList();
|
|
|
|
|
|
foreach (var img in imgList) {
|
|
|
if (PICSRC.IndexOf(img) > 0) {
|
|
|
workdetail.IMGPATH=workdetail.IMGPATH.Replace("," + img,"");
|
|
|
workdetail.IMGPATH=workdetail.IMGPATH.Replace(img+ ",", "");
|
|
|
workdetail.IMGPATH=workdetail.IMGPATH.Replace( img, "");
|
|
|
}
|
|
|
}
|
|
|
wx.SaveChanges();
|
|
|
|
|
|
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
return ErrorResult(e.Message);
|
|
|
}
|
|
|
|
|
|
return ErrorResult("没有可以删除的文件");
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
public class 箱状态factory
|
|
|
{
|
|
|
|
|
|
public static 箱状态 Get箱业务(OP_YARD_CTNMNG_WORK workdetail)
|
|
|
{
|
|
|
var wx = new WxAppDataContext();
|
|
|
|
|
|
var head = wx.OP_YARD_CTNMNG.FirstOrDefault(x => x.GID == workdetail.BSNO);
|
|
|
|
|
|
if (head.BILLTYPE == "保税转入")
|
|
|
{
|
|
|
return new 箱状态_保税转入(head);
|
|
|
}
|
|
|
if (head.BILLTYPE == "保税落箱" || head.BILLTYPE == "分类监管")
|
|
|
{
|
|
|
return new 箱状态_保税落箱分类监管(head);
|
|
|
}
|
|
|
if (head.BILLTYPE == "拼箱集运")
|
|
|
{
|
|
|
return new 箱状态_拼箱集运(head);
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public abstract class 箱状态
|
|
|
{
|
|
|
public OP_YARD_CTNMNG head { get; set; }
|
|
|
public List<OP_YARD_CTNMNG_WORK> worklist { get; set; }
|
|
|
|
|
|
public 箱状态() { }
|
|
|
|
|
|
public abstract string Get箱状态();
|
|
|
}
|
|
|
|
|
|
public class 箱状态_保税转入 : 箱状态
|
|
|
{
|
|
|
|
|
|
public 箱状态_保税转入(OP_YARD_CTNMNG _head)
|
|
|
{
|
|
|
var wx = new WxAppDataContext();
|
|
|
head = _head;
|
|
|
//worklist = OP_YARD_CTNMNG_WORKRepository.Instance.FindAsIQueryable(x => x.BSNO == head.GID).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
worklist = wx.OP_YARD_CTNMNG_WORK.Where(x => x.BSNO == head.GID).ToList();
|
|
|
}
|
|
|
public override string Get箱状态()
|
|
|
{
|
|
|
worklist = worklist.OrderBy(o => o.ORDERNO).ToList();
|
|
|
|
|
|
foreach (var item in worklist)
|
|
|
{
|
|
|
if (item.WORKSTATUS == "已处理")
|
|
|
{
|
|
|
if (item.WORKTYPE == "调度入区") head.CTNSTATUS = "待入区";
|
|
|
if (item.WORKTYPE == "调度出区") head.CTNSTATUS = "正在申报出区";
|
|
|
if (item.WORKTYPE == "卡口作业") head.CTNSTATUS = "正在前往铁路货场";
|
|
|
if (item.WORKTYPE == "铁路验查作业") head.CTNSTATUS = "等待铁路查验";
|
|
|
if (item.WORKTYPE == "铁路发运作业") head.CTNSTATUS = "待发运";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return head.CTNSTATUS;
|
|
|
//throw new global::System.NotImplementedException();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public class 箱状态_保税落箱分类监管 : 箱状态
|
|
|
{
|
|
|
public 箱状态_保税落箱分类监管(OP_YARD_CTNMNG _head)
|
|
|
{
|
|
|
head = _head;
|
|
|
|
|
|
var wx = new WxAppDataContext();
|
|
|
|
|
|
worklist = wx.OP_YARD_CTNMNG_WORK.Where(x => x.BSNO == head.GID).ToList();
|
|
|
}
|
|
|
public override string Get箱状态()
|
|
|
{
|
|
|
worklist = worklist.OrderBy(o => o.ORDERNO).ToList();
|
|
|
|
|
|
foreach (var item in worklist)
|
|
|
{
|
|
|
if (item.WORKSTATUS == "已处理")
|
|
|
{
|
|
|
if (item.WORKTYPE == "调度入区") head.CTNSTATUS = "待入区";
|
|
|
if (item.WORKTYPE == "仓库作业") head.CTNSTATUS = "已入区落箱";
|
|
|
if (item.WORKTYPE == "调度出区") head.CTNSTATUS = "正在申报出区";
|
|
|
if (item.WORKTYPE == "卡口作业") head.CTNSTATUS = "正在前往铁路货场";
|
|
|
if (item.WORKTYPE == "铁路验查作业") head.CTNSTATUS = "等待铁路查验";
|
|
|
if (item.WORKTYPE == "铁路发运作业") head.CTNSTATUS = "待发运";
|
|
|
}
|
|
|
}
|
|
|
return head.CTNSTATUS;
|
|
|
//throw new global::System.NotImplementedException();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public class 箱状态_拼箱集运 : 箱状态
|
|
|
{
|
|
|
public 箱状态_拼箱集运(OP_YARD_CTNMNG _head)
|
|
|
{
|
|
|
head = _head;
|
|
|
var wx = new WxAppDataContext();
|
|
|
|
|
|
worklist = wx.OP_YARD_CTNMNG_WORK.Where(x => x.BSNO == head.GID).ToList();
|
|
|
}
|
|
|
public override string Get箱状态()
|
|
|
{
|
|
|
worklist = worklist.OrderBy(o => o.ORDERNO).ToList();
|
|
|
|
|
|
foreach (var item in worklist)
|
|
|
{
|
|
|
if (item.WORKSTATUS == "已处理")
|
|
|
{
|
|
|
if (item.WORKTYPE == "仓库作业") head.CTNSTATUS = "正在装箱";
|
|
|
if (item.WORKTYPE == "调度入区") head.CTNSTATUS = "待入区";
|
|
|
if (item.WORKTYPE == "调度出区") head.CTNSTATUS = "正在申报出区";
|
|
|
if (item.WORKTYPE == "卡口作业") head.CTNSTATUS = "正在前往铁路货场";
|
|
|
if (item.WORKTYPE == "铁路验查作业") head.CTNSTATUS = "等待铁路查验";
|
|
|
if (item.WORKTYPE == "铁路发运作业") head.CTNSTATUS = "待发运";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return head.CTNSTATUS;
|
|
|
//throw new global::System.NotImplementedException();
|
|
|
}
|
|
|
}
|
|
|
*/
|
|
|
/// <summary>
|
|
|
/// 用于微信小程序修改车号和箱号
|
|
|
/// </summary>
|
|
|
/// <param name="workdetail"></param>
|
|
|
/// <param name="TRUCKNO"></param>
|
|
|
/// <param name="CNTRNO"></param>
|
|
|
/// <returns></returns>
|
|
|
///
|
|
|
/*
|
|
|
public DBResult DealStatus(OP_YARD_CTNMNG_WORK workdetail,string TRUCKNO,string CNTRNO) {
|
|
|
var wx = new WxAppDataContext();
|
|
|
//只有 调度入区 作业允许修改箱号
|
|
|
if (workdetail.WORKTYPE == "调度入区") {
|
|
|
var head = wx.OP_YARD_CTNMNG.FirstOrDefault(x => x.GID == workdetail.BSNO);
|
|
|
head.CNTRNO = CNTRNO;
|
|
|
wx.SaveChanges();
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//只有 调度入区/调度出区/卡口作业 允许修改工作明细的车号
|
|
|
if (workdetail.WORKTYPE == "调度入区"|| workdetail.WORKTYPE == "调度出区" || workdetail.WORKTYPE == "卡口作业")
|
|
|
{
|
|
|
//workdetail.TRUCKNO = TRUCKNO;
|
|
|
var changerecord = wx.OP_YARD_CTNMNG_WORK.FirstOrDefault(x => x.GID == workdetail.GID);
|
|
|
|
|
|
changerecord.TRUCKNO = TRUCKNO;
|
|
|
|
|
|
if (workdetail.WORKTYPE == "调度入区") {
|
|
|
var head = wx.OP_YARD_CTNMNG.FirstOrDefault(x => x.GID == workdetail.BSNO);
|
|
|
head.TRUCKNO_IN = TRUCKNO;
|
|
|
}
|
|
|
if (workdetail.WORKTYPE == "调度出区")
|
|
|
{
|
|
|
var head = wx.OP_YARD_CTNMNG.FirstOrDefault(x => x.GID == workdetail.BSNO);
|
|
|
head.TRUCKNO_OUT = TRUCKNO;
|
|
|
}
|
|
|
|
|
|
wx.SaveChanges();
|
|
|
}
|
|
|
|
|
|
return DealStatus( workdetail);
|
|
|
}
|
|
|
|
|
|
public DBResult DealStatus(OP_YARD_CTNMNG_WORK workdetail)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
try
|
|
|
{
|
|
|
var wx = new WxAppDataContext();
|
|
|
|
|
|
//分为两部分。一部分是更改顺序号较低业务的状态,由空改为未执行
|
|
|
//二部分是根据目前该业务的各明细的执行状态(状态为已处理的那条明细),修改该业务的箱状态
|
|
|
|
|
|
//《1》业务逻辑如下:查找所有顺序小于该明细的业务明细,如果WORKSTATUS="",将之更新为 "未处理"
|
|
|
result = DelOldDetail(workdetail);
|
|
|
if (!result.Success) return result;
|
|
|
//《2》业务逻辑如下:查找状态为“已处理”的最大顺序号业务,配合其“引入方式”,获取其对应的箱状态 并写入主表
|
|
|
//var f = new 箱状态factory();
|
|
|
|
|
|
var 箱业务 = 箱状态factory.Get箱业务(workdetail);
|
|
|
|
|
|
var head = wx.OP_YARD_CTNMNG.FirstOrDefault(x => x.GID == workdetail.BSNO);
|
|
|
|
|
|
head.CTNSTATUS = 箱业务.Get箱状态();
|
|
|
|
|
|
|
|
|
wx.SaveChanges();
|
|
|
result.OK();
|
|
|
return result;
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
result.SetErrorInfo(e.Message);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
private static DBResult DelOldDetail(OP_YARD_CTNMNG_WORK workdetail)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
|
|
|
var wx = new WxAppDataContext();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var oldDetailList = wx.OP_YARD_CTNMNG_WORK.Where(x => x.BSNO == workdetail.BSNO && x.ORDERNO < workdetail.ORDERNO).ToList();
|
|
|
if (oldDetailList == null || oldDetailList.Count == 0) {
|
|
|
result.OK();
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
//var updList = new List<OP_YARD_CTNMNG_WORK>();
|
|
|
var needupd = false;
|
|
|
foreach (var item in oldDetailList)
|
|
|
{
|
|
|
if (item.WORKSTATUS == "")
|
|
|
{
|
|
|
item.WORKSTATUS = "未处理";
|
|
|
//updList.Add(item);
|
|
|
needupd = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (needupd)
|
|
|
{
|
|
|
//var i = OP_YARD_CTNMNG_WORKRepository.Instance.UpdateRange(updList, true);
|
|
|
wx.SaveChanges();
|
|
|
}
|
|
|
|
|
|
result.OK();
|
|
|
return result;
|
|
|
|
|
|
}
|
|
|
*/
|
|
|
}
|
|
|
} |