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<barcode>();
|
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)
|
{
|
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<ScanLineCode>(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<string> NameList = (from r in ds.Tables[0].AsEnumerable() select r.Field<string>("barcode")).ToList();
|
List<string> 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)
|
{
|
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;
|
}
|
}
|
}
|
}
|