|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.ComponentModel;
|
|
|
|
using System.Data;
|
|
|
|
using System.Drawing;
|
|
|
|
using System.Linq;
|
|
|
|
using System.Text;
|
|
|
|
using System.Windows.Forms;
|
|
|
|
using QM.Account;
|
|
|
|
using DCS.Common;
|
|
|
|
using Model;
|
|
|
|
using QM.Assist;
|
|
|
|
using DCS.Place;
|
|
|
|
using QMAPP.FJC.Entity.Operation;
|
|
|
|
using QMAPP.Entity;
|
|
|
|
using QMAPP.MD.Entity;
|
|
|
|
using QMAPP.FJC.Entity.Basic;
|
|
|
|
using QMAPP.FJC.Entity.TianJin;
|
|
|
|
using QMAPP.ServicesAgent;
|
|
|
|
using QMAPP.MD.Entity.TianJin;
|
|
|
|
using QMAPP.FJC.Entity.CompleteStatistics;
|
|
|
|
|
|
|
|
namespace QMAPP.WinForm.Forms.TianJin
|
|
|
|
{
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 工位终端FIS发货效验功能
|
|
|
|
/// 创建时间:2012-11-12
|
|
|
|
/// 创 建 人:pxbibm
|
|
|
|
/// H1:modified by sun g.q. on 20130330
|
|
|
|
/// 1)隐藏了rb_hx 和rb_dx,全部根据pFisType判断,生产线的设置使用按钮进行设置;
|
|
|
|
/// 2)增加 CreatePastecardNo(String lineNo)代替CreatePastecardNo(),贴车单流水号,根据生产线代码生成;
|
|
|
|
/// 3)校准功能进行了bug修改;
|
|
|
|
/// 4)20190325移植了成都DCS发运功能,同时保留原有发运,校验信息通过零件规则表判断//gzf。
|
|
|
|
/// 5)20190325成都存在东西厂情况,且未来要货可能都混线生产,现场操作者要讲求快速切换发货,将单选按钮恢复,且用此过滤发货计划。--gzf
|
|
|
|
/// </summary>
|
|
|
|
public partial class TJFrmPlace : Form
|
|
|
|
{
|
|
|
|
|
|
|
|
#region 常量
|
|
|
|
private const string DISPLAY_NAME = "工位终端";
|
|
|
|
private DataTable dt = null;
|
|
|
|
private DataTable dtmat = null;
|
|
|
|
private DataTable dtpro = null;
|
|
|
|
private BindingSource bs;
|
|
|
|
private bool setRedBackgroudFlag = false;//设置第一次设置背景颜色校验标识
|
|
|
|
//获取服务代理
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent _agent = ClientContext.GetServiceAgent();
|
|
|
|
List<BarcodeRules> _barcodeRules = null;
|
|
|
|
public delegate void myMethodDelegate();
|
|
|
|
|
|
|
|
private string PlaceFirstPositionType = string.Empty;
|
|
|
|
|
|
|
|
private string _TJFYPrintName = string.Empty; //打印机名称
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 变量
|
|
|
|
public string a = "1";
|
|
|
|
DateTime _dt = DateTime.Now;
|
|
|
|
//2016-01-07 增加车架的1号位置的扫描校验
|
|
|
|
private string placeFirstPosition = ""; //1号码标识
|
|
|
|
private DateTime placeFirstPositionTime = DateTime.MinValue;//获取1号码的时间
|
|
|
|
int BarcodeTime = 10000;
|
|
|
|
/// <summary>
|
|
|
|
/// 指令二次确认
|
|
|
|
/// </summary>
|
|
|
|
string _CMDConfirm = "";
|
|
|
|
|
|
|
|
public string WORKCENTER_CODE = "";//工作重心参数
|
|
|
|
public string ProMaterial = "";//扫描产品物料信息
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 界面初始化
|
|
|
|
public TJFrmPlace()
|
|
|
|
{
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
|
|
PlaceFirstPositionType = System.Configuration.ConfigurationManager.AppSettings["PlaceFirstPositionType"].ToString();
|
|
|
|
|
|
|
|
//_barcodeRules = _agent.InvokeServiceFunction<List<BarcodeRules>>("BarcodeRulesBLL_GetListForSend");
|
|
|
|
_barcodeRules = _agent.InvokeServiceFunction<List<BarcodeRules>>(B9BasicService.BarcodeRulesBLL_GetAllList.ToString());
|
|
|
|
|
|
|
|
_TJFYPrintName = GetAppConfigValue("FYPrintName"); //查找所有 需要自动填充的工位
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 绑定DataGridView
|
|
|
|
/// <summary>
|
|
|
|
/// 绑定DataGridView
|
|
|
|
/// </summary>
|
|
|
|
private DataTable BindDataGridView()
|
|
|
|
{
|
|
|
|
#region
|
|
|
|
return null;
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 字段
|
|
|
|
//主键
|
|
|
|
private string strFiskey;
|
|
|
|
//大众顺序号
|
|
|
|
private string strvwseq;
|
|
|
|
//位置
|
|
|
|
private string strmouldcode;
|
|
|
|
//车身号
|
|
|
|
private string strkin;
|
|
|
|
//底盘号
|
|
|
|
private string strvin;
|
|
|
|
//零件号
|
|
|
|
private string strprodno;
|
|
|
|
//总成描述
|
|
|
|
private string strcarsetdesc_cn;
|
|
|
|
//上线时间
|
|
|
|
private string strcp5a;
|
|
|
|
//车型
|
|
|
|
private string strlineno;
|
|
|
|
//扫描状态
|
|
|
|
private string strscanstat;
|
|
|
|
|
|
|
|
int nfindex = 0;
|
|
|
|
//int ncsindex = 0;
|
|
|
|
//int rowindex = 0;
|
|
|
|
/// <summary>
|
|
|
|
/// NF贴车单明细列表
|
|
|
|
/// </summary>
|
|
|
|
List<TJEPasteDetailsCard> nflist = null;
|
|
|
|
/// <summary>
|
|
|
|
/// NCS贴车单明细列表
|
|
|
|
/// </summary>
|
|
|
|
List<TJEPasteDetailsCard> ncslist = null;
|
|
|
|
/// <summary>
|
|
|
|
/// NF贴车单主键
|
|
|
|
/// </summary>
|
|
|
|
string nfpastcardkey = "";
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 当前guidview行号
|
|
|
|
/// </summary>
|
|
|
|
int dgvrowindex = 0;
|
|
|
|
/// <summary>
|
|
|
|
/// 正确的声音文件路径
|
|
|
|
/// </summary>
|
|
|
|
private string okSoundPath = null;
|
|
|
|
|
|
|
|
public string pFisType = "";
|
|
|
|
/// <summary>
|
|
|
|
/// 错误的声音文件路径
|
|
|
|
/// </summary>
|
|
|
|
private string errorSoundPath = null;
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region FIS数据列Post
|
|
|
|
/// <summary>
|
|
|
|
/// FIS数据列Post
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void dgvMATChange_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
|
|
|
|
{
|
|
|
|
#region
|
|
|
|
try
|
|
|
|
{
|
|
|
|
if (dgvMATChange.Rows.Count > 0)
|
|
|
|
{
|
|
|
|
e.Graphics.DrawString((e.RowIndex + 1).ToString(), dgvMATChange.RowHeadersDefaultCellStyle.Font,
|
|
|
|
new SolidBrush(dgvMATChange.RowHeadersDefaultCellStyle.ForeColor),
|
|
|
|
e.RowBounds.Location.X + 15, e.RowBounds.Y + 5);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
//MessageBox.Show(ex.Message);
|
|
|
|
lberror.Text = ex.Message;
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 获取混线,单线FIS数据
|
|
|
|
/// <summary>
|
|
|
|
/// 获取混线,单线FIS数据
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="pFisType"></param>
|
|
|
|
public void GetInitData()
|
|
|
|
{
|
|
|
|
#region
|
|
|
|
try
|
|
|
|
{
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
DataTable tbl = agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_GetList.ToString(), pFisType, WORKCENTER_CODE);
|
|
|
|
tbl.AcceptChanges();
|
|
|
|
|
|
|
|
DataTable tbz = new DataTable();
|
|
|
|
|
|
|
|
|
|
|
|
if (tbl.Rows.Count <= 0)
|
|
|
|
{
|
|
|
|
DataTable dt = (DataTable)dgvMATChange.DataSource;
|
|
|
|
if (dt != null)
|
|
|
|
{
|
|
|
|
dt.Rows.Clear();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
dgvMATChange.DataSource = tbl;
|
|
|
|
}
|
|
|
|
setRedBackgroudFlag = false;
|
|
|
|
SetRowColor();
|
|
|
|
computenfncs();
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
//MessageBox.Show(ex.Message);
|
|
|
|
lberror.Text = ex.Message;
|
|
|
|
}
|
|
|
|
finally
|
|
|
|
{
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 获取EPasteDetailsCard数据
|
|
|
|
/// <summary>
|
|
|
|
///
|
|
|
|
/// </summary>
|
|
|
|
public void GetInitData2()
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
dgvNF.DataSource = new List<EPasteDetailsCard>();
|
|
|
|
nfpastecard = null;
|
|
|
|
nflist = null;
|
|
|
|
nfindex = 0;
|
|
|
|
dgvrowindex = 0;
|
|
|
|
setRedBackgroudFlag = false;
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
//MessageBox.Show(ex.Message);
|
|
|
|
lberror.Text = ex.Message;
|
|
|
|
}
|
|
|
|
finally
|
|
|
|
{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 设置FIS数据颜色
|
|
|
|
/// <summary>
|
|
|
|
/// 设置FIS数据颜色
|
|
|
|
/// </summary>
|
|
|
|
private void SetRowColor()
|
|
|
|
{
|
|
|
|
if (setRedBackgroudFlag == true)
|
|
|
|
{
|
|
|
|
//return;
|
|
|
|
}
|
|
|
|
//底盘号
|
|
|
|
int vinNumber = 0;
|
|
|
|
int lastVinNumber = 0;
|
|
|
|
int num = 0;
|
|
|
|
int defaultNum = Convert.ToInt32(QMAPP.WinForm.Common.LocalSetting.Settings["ShowDataCount", "4"]);
|
|
|
|
for (int i = 0; i < this.dgvMATChange.Rows.Count; i++)
|
|
|
|
{
|
|
|
|
vinNumber = Convert.ToInt32(dgvMATChange.Rows[i].Cells["REQUESTID"].Value.ToString());
|
|
|
|
//vinNumber = Convert.ToInt32(dgvMATChange.Rows[i].Cells["PID"].Value.ToString());
|
|
|
|
//2016-01-21 wangqingnan 如果行变色则不重新刷颜色
|
|
|
|
var fispid = dgvMATChange.Rows[i].Cells[PID.Name].Value.ToString();
|
|
|
|
if (nflist != null && nflist.Exists(p => p.FIS_KEY == fispid))
|
|
|
|
{
|
|
|
|
this.dgvMATChange.Rows[i].Cells[clscanstate.Name].Value = "1";
|
|
|
|
}
|
|
|
|
|
|
|
|
//if (this.dgvMATChange.Rows[i].Cells[clscanstate.Name].Value.ToString() == "1")
|
|
|
|
//{
|
|
|
|
// this.dgvMATChange.Rows[i].DefaultCellStyle.BackColor = Color.White;
|
|
|
|
// continue;
|
|
|
|
//}
|
|
|
|
//2016-01-21 wangqingnan 如果行变色则不重新刷颜色
|
|
|
|
//int defaultNum = Convert.ToInt32(QM.Config.CustomConfig.GetItem("ShowDataCount"));
|
|
|
|
|
|
|
|
if (num == 0)
|
|
|
|
{
|
|
|
|
this.dgvMATChange.Rows[i].DefaultCellStyle.BackColor = Color.Yellow;
|
|
|
|
if ((i + 1) % defaultNum == 0)
|
|
|
|
{
|
|
|
|
num = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
this.dgvMATChange.Rows[i].DefaultCellStyle.BackColor = Color.YellowGreen;
|
|
|
|
if ((i + 1) % defaultNum == 0)
|
|
|
|
{
|
|
|
|
num = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//2016-10-31 闫永刚 如果出现该底盘号与上一条底盘号间断的情况,
|
|
|
|
//设置当前底盘号的颜色为红色
|
|
|
|
if (lastVinNumber > 0)
|
|
|
|
{
|
|
|
|
if ((vinNumber - lastVinNumber) > 1)
|
|
|
|
{
|
|
|
|
this.dgvMATChange.Rows[i - 1].DefaultCellStyle.BackColor = Color.Red;
|
|
|
|
this.dgvMATChange.Rows[i].DefaultCellStyle.BackColor = Color.Red;
|
|
|
|
setRedBackgroudFlag = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
lastVinNumber = vinNumber;
|
|
|
|
}
|
|
|
|
if (dgvMATChange.RowCount > 0)
|
|
|
|
{
|
|
|
|
dgvMATChange.FirstDisplayedScrollingRowIndex = nfindex - nfindex % 4;
|
|
|
|
}
|
|
|
|
dgvMATChange.Refresh();
|
|
|
|
dgvMATChange.ClearSelection();
|
|
|
|
txtCode.Focus();
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 处理扫描条码框设置焦点
|
|
|
|
/// <summary>
|
|
|
|
/// 处理扫描条码框设置焦点
|
|
|
|
/// </summary>
|
|
|
|
private void ArragetxtCode()
|
|
|
|
{
|
|
|
|
txtCode.Text = string.Empty;
|
|
|
|
//Activates the control.
|
|
|
|
txtCode.Select();
|
|
|
|
//Sets input focus to the control.
|
|
|
|
txtCode.Focus();
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 加载画面
|
|
|
|
/// <summary>
|
|
|
|
/// 加载画面
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void FrmElevateRequest_Load(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
timeRefew.Enabled = true;
|
|
|
|
//UserBuffer.Interval = CtlApp.GetInterval(QM.Convvvvvvvvvvvn'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'n'nfig.CustomConfig.GetItem("RefreshTime"));
|
|
|
|
UserBuffer.Interval = CtlApp.GetInterval(QMAPP.WinForm.Common.LocalSetting.Settings["RefreshTime","20"]);
|
|
|
|
timeRefew.Interval = UserBuffer.Interval;
|
|
|
|
//BarcodeTime = int.Parse(QM.Config.CustomConfig.GetItem("BarcodeTime"));
|
|
|
|
//BarcodeTime = int.Parse(QMAPP.WinForm.Common.LocalSetting.Settings["BarcodeTime","1"]);
|
|
|
|
okSoundPath = System.Configuration.ConfigurationManager.AppSettings["SaveFilePath"] + "Sound\\" + PlaySoundConst.strSoundOk;
|
|
|
|
errorSoundPath = System.Configuration.ConfigurationManager.AppSettings["SaveFilePath"] + "Sound\\" + PlaySoundConst.strSoundNg;
|
|
|
|
|
|
|
|
//隐藏了rb_hx 和rb_dx,全部根据pFisType判断,生产线的设置使用按钮进行设置;
|
|
|
|
//pFisType = "01";
|
|
|
|
//pFisType = QM.Config.CustomConfig.GetItem("FlashProCode");
|
|
|
|
//pFisType = QMAPP.WinForm.Common.LocalSetting.Settings["FlashProCode","01"];
|
|
|
|
|
|
|
|
|
|
|
|
pFisType = QMAPP.WinForm.Common.LocalSetting.Settings["FlashProCode", ""];
|
|
|
|
if (!string.IsNullOrEmpty(pFisType))
|
|
|
|
{
|
|
|
|
if (pFisType.Equals("01"))
|
|
|
|
{
|
|
|
|
rb_hx.Checked = true;
|
|
|
|
}
|
|
|
|
else if(pFisType.Equals("02"))
|
|
|
|
{
|
|
|
|
rb_dx.Checked = true;
|
|
|
|
}
|
|
|
|
else if (pFisType.Equals("03"))
|
|
|
|
{
|
|
|
|
ra_hx.Checked = true;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
ra_dx.Checked = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//发运信息直接用单选按钮过滤,工作中心字段用作打印功能格式使用
|
|
|
|
//WORKCENTER_CODE = QMAPP.WinForm.Common.LocalSetting.Settings["PlantNameConfig", ""];
|
|
|
|
WORKCENTER_CODE = "IPFY" + pFisType;
|
|
|
|
|
|
|
|
//发运框设置
|
|
|
|
InitContainer();
|
|
|
|
GetInitData();
|
|
|
|
//SetShowData();
|
|
|
|
//computenfncs();//lable1原有copy代码 这个功能注释掉了 崔法宝-20170905调整
|
|
|
|
dgvMATChange.ClearSelection();
|
|
|
|
dgvNF.AutoGenerateColumns = false;
|
|
|
|
|
|
|
|
SetPastNOConfirm(0);
|
|
|
|
GetLastPastCard();
|
|
|
|
//lblLastPastNO.Text = "";
|
|
|
|
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
|
|
|
|
//MessageBox.Show(ex.Message);
|
|
|
|
lberror.Text = ex.Message;
|
|
|
|
}
|
|
|
|
finally
|
|
|
|
{
|
|
|
|
ArragetxtCode();
|
|
|
|
dgvMATChange.ClearSelection();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 获取上一条发运单信息
|
|
|
|
/// <summary>
|
|
|
|
/// 获取上一条发运单信息
|
|
|
|
/// </summary>
|
|
|
|
private void GetLastPastCard()
|
|
|
|
{
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
var lastpastcard= agent.InvokeServiceFunction<FJC.Entity.SendManage.PastCard>("TJFrmPlaceBLL_GetLastPastCard", pFisType);
|
|
|
|
if (lastpastcard != null)
|
|
|
|
{
|
|
|
|
lblLastPastNO.Text = lastpastcard.PASTECARDNO;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 设置贴车单确认状态
|
|
|
|
/// <summary>
|
|
|
|
/// 设置贴车单确认状态
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="state">0:未确认 1:确认OK 2:确认失败</param>
|
|
|
|
private void SetPastNOConfirm(int state)
|
|
|
|
{
|
|
|
|
switch (state)
|
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
{
|
|
|
|
pbPastNoConfirmed.Enabled = false;
|
|
|
|
pbPastNoConfirmed.Image = global::QMAPP.WinForm.Resource1.help;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 1:
|
|
|
|
{
|
|
|
|
pbPastNoConfirmed.Enabled = true;
|
|
|
|
pbPastNoConfirmed.Image = global::QMAPP.WinForm.Resource1.ok;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 2:
|
|
|
|
{
|
|
|
|
pbPastNoConfirmed.Enabled = false;
|
|
|
|
pbPastNoConfirmed.Image = global::QMAPP.WinForm.Resource1.cancel;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
pbPastNoConfirmed.Enabled = false;
|
|
|
|
pbPastNoConfirmed.Image = global::QMAPP.WinForm.Resource1.stop;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 贴车单查询功能
|
|
|
|
/// <summary>
|
|
|
|
/// 贴车单查询功能
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void btnSearch_Click(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
TJFrmItemList frm = new TJFrmItemList();
|
|
|
|
frm.ShowDialog();
|
|
|
|
txtCode.Focus();
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 实现效验功能
|
|
|
|
/// <summary>
|
|
|
|
/// 实现效验功能
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void btnJZ_Click(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
if (MessageBox.Show("您确定要挂起当前计划吗吗?", "挂起提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
|
|
{
|
|
|
|
if (nfindex > 0)
|
|
|
|
{
|
|
|
|
MessageBox.Show("发运已开始扫描无法进行计划挂起!", "挂起提示");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
List<string> ids = new List<string>();
|
|
|
|
foreach (System.Windows.Forms.DataGridViewRow row in dgvMATChange.SelectedRows)
|
|
|
|
{
|
|
|
|
//var SS = row..DataBoundItem;
|
|
|
|
|
|
|
|
var pid = row.Cells["PID"].Value.ToString();
|
|
|
|
var state = row.Cells["STATE"].Value.ToString();
|
|
|
|
|
|
|
|
if (int.Equals(state, 1))
|
|
|
|
{
|
|
|
|
MessageBox.Show("只可挂起未扫描的计划!");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
ids.Add(pid);
|
|
|
|
}
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
agent.InvokeServiceFunction<int>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_UpdateWorkOrderState.ToString(), ids);
|
|
|
|
GetInitData();
|
|
|
|
//_agent.InvokeServiceFunction<int>(B9IPCService.WorkOrderBLL_CancelSuspend.ToString(), ids);
|
|
|
|
|
|
|
|
//if (dgvMATChange.Rows.Count > 0)
|
|
|
|
//{
|
|
|
|
// int i = dgvMATChange.CurrentRow.Index;
|
|
|
|
// string strvwseq = dgvMATChange.Rows[i].Cells["REQUESTID"].Value.ToString();
|
|
|
|
// //上线时间
|
|
|
|
// string strCP5A = dgvMATChange.Rows[i].Cells["CP5A"].Value.ToString();
|
|
|
|
|
|
|
|
// //BllFisOrder bllFisOrder = new BllFisOrder();
|
|
|
|
// //bllFisOrder.UpdateFisOrder(strvwseq, strCP5A);
|
|
|
|
|
|
|
|
// QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
// agent.InvokeServiceFunction(QMAPP.ServicesAgent.FrmPlaceManage.FrmPlaceBLL_UpdateFisOrder.ToString(), strvwseq, strCP5A, WORKCENTER_CODE);
|
|
|
|
// GetInitData();
|
|
|
|
//}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
finally
|
|
|
|
{
|
|
|
|
txtCode.Focus();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 获取FIS数据
|
|
|
|
/// <summary>
|
|
|
|
/// 获取FIS数据
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void btnGetFisData_Click(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
if (dgvNF.Rows.Count == 0)
|
|
|
|
{
|
|
|
|
GetInitData();
|
|
|
|
//computenfncs();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 手动刷新
|
|
|
|
/// <summary>
|
|
|
|
/// 手动刷新
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void btnRef_Click(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
GetInitData();
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 创建贴车单号
|
|
|
|
//EPasteCard nfpastecard = null;
|
|
|
|
/// <summary>
|
|
|
|
/// 创建贴车单号
|
|
|
|
/// 贴车单号的规则生成贴车单号,格式为“FB”(2位)+日期(8位,20121008)+流水号(4位);
|
|
|
|
/// </summary>
|
|
|
|
/// <returns></returns>
|
|
|
|
private string CreatePastecardNo()
|
|
|
|
{
|
|
|
|
#region
|
|
|
|
//BllFisOrder bllFisOrder = new BllFisOrder();
|
|
|
|
string strdate = DateTime.Now.ToString("yyyyMMdd");
|
|
|
|
// DataTable tbl = bllFisOrder.GetPastecardNo(DateTime.Now.ToShortDateString());
|
|
|
|
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
DataTable tbl = agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.FrmPlaceBLL_GetPastecardNo.ToString(), DateTime.Now.ToShortDateString());
|
|
|
|
string strindex = tbl.Rows[0][0].ToString().PadLeft(4, '0');
|
|
|
|
string pastecardno = string.Format("FB{0}{1}", strdate, strindex);
|
|
|
|
return pastecardno;
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 创建贴车单号(外来)
|
|
|
|
/// <summary>
|
|
|
|
/// 创建贴车单号
|
|
|
|
/// 贴车单号的规则生成贴车单号,格式为“生产线代码”(2位)+日期(8位,20121008)+流水号(4位);
|
|
|
|
/// 20190329--贴车单号的规则生成贴车单号,格式为“生产线代码”(工作中心)+日期(8位,20121008)+流水号(4位)
|
|
|
|
/// </summary>
|
|
|
|
/// <returns></returns>
|
|
|
|
private string CreatePastecardNo(String lineNo)
|
|
|
|
{
|
|
|
|
#region
|
|
|
|
String prefix = lineNo;
|
|
|
|
//BllFisOrder bllFisOrder = new BllFisOrder();
|
|
|
|
//2016-10-30闫永刚获取贴车单号修改
|
|
|
|
// DataTable dt = bllFisOrder.GetPastecardIndex();
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
//DataTable dt = agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.FrmPlaceBLL_GetPastecardIndex.ToString());
|
|
|
|
DataTable dt = agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.FrmPlaceBLL_GetDaspssteCarIndexByPlanName.ToString(), prefix);
|
|
|
|
string PASTECARDNO = "";
|
|
|
|
string OLD_PASTECARDNO = "";
|
|
|
|
string NEW_PASTECARDNO = "";
|
|
|
|
if (dt.Rows.Count == 0)
|
|
|
|
{
|
|
|
|
PASTECARDNO =lineNo+ DateTime.Now.ToString("yyyyMMdd") + "0001";
|
|
|
|
nfpastecard.PASTECARDNO = PASTECARDNO;
|
|
|
|
int delResult = agent.InvokeServiceFunction<int>(QMAPP.ServicesAgent.FrmPlaceManage.FrmPlaceBLL_InsertDaspssteCarIndexByPlanName.ToString(), nfpastecard);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
foreach (DataRow dr in dt.Rows)
|
|
|
|
{
|
|
|
|
//OLD_PASTECARDNO = dr["PASTECARDNO"].ToString();
|
|
|
|
//int Addvalue = Convert.ToInt32(OLD_PASTECARDNO.Substring(OLD_PASTECARDNO.Length - 1, 1)) + 1;
|
|
|
|
//NEW_PASTECARDNO = OLD_PASTECARDNO.Substring(lineNo.Length, OLD_PASTECARDNO.Length - lineNo.Length - 1) + Addvalue.ToString();
|
|
|
|
//20190314
|
|
|
|
PASTECARDNO = dr["PASTECARDNO"].ToString();
|
|
|
|
if ((Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString().Length < 4)
|
|
|
|
{
|
|
|
|
int num = 4 - (Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString().Length;
|
|
|
|
string value = (Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString();
|
|
|
|
string sumValue = "";
|
|
|
|
for (var i = 0; i < num; i++)
|
|
|
|
{
|
|
|
|
sumValue = sumValue + "0";
|
|
|
|
}
|
|
|
|
if (PASTECARDNO.Substring(lineNo.Length, PASTECARDNO.Length - lineNo.Length - 4).ToString() == DateTime.Now.ToString("yyyyMMdd"))
|
|
|
|
{
|
|
|
|
PASTECARDNO = PASTECARDNO.Substring(lineNo.Length, PASTECARDNO.Length - lineNo.Length - 4) + sumValue + value;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
PASTECARDNO = DateTime.Now.ToString("yyyyMMdd") + "0001";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (PASTECARDNO.Substring(lineNo.Length, 8).ToString() == DateTime.Now.ToString("yyyyMMdd"))
|
|
|
|
{
|
|
|
|
PASTECARDNO = PASTECARDNO.Substring(lineNo.Length, PASTECARDNO.Length - lineNo.Length - 2) + (Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
PASTECARDNO = DateTime.Now.ToString("yyyyMMdd") + "0001";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//nfpastecard.PASTECARDNO = PASTECARDNO;
|
|
|
|
//nfpastecard.OPERATOR = ClientContext.LoginInfo.UserName.ToString();
|
|
|
|
}
|
|
|
|
PASTECARDNO = lineNo + PASTECARDNO;
|
|
|
|
}
|
|
|
|
|
|
|
|
return PASTECARDNO;
|
|
|
|
#region XXX
|
|
|
|
//string pasteCardIndex = "";
|
|
|
|
//DateTime updateTime;
|
|
|
|
//foreach (DataRow dr in dt.Rows)
|
|
|
|
//{
|
|
|
|
// string lineNoRow = dr["PASTECARDNO"].ToString().Substring(0, 2);
|
|
|
|
|
|
|
|
// if (lineNo == lineNoRow)
|
|
|
|
// {
|
|
|
|
// pasteCardIndex = dr["PASTECARDNO"].ToString();
|
|
|
|
// updateTime = Convert.ToDateTime(dr["PASTECARDDATE"]);
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
//string strdate = DateTime.Now.ToString("yyyyMMdd");
|
|
|
|
//string strindex = "";
|
|
|
|
//if (pasteCardIndex.Substring(2, 8) == strdate)
|
|
|
|
//{
|
|
|
|
// strindex = (Convert.ToInt32(pasteCardIndex.Substring(10, 4)) + 1).ToString().PadLeft(4, '0');
|
|
|
|
//}
|
|
|
|
//else
|
|
|
|
//{
|
|
|
|
// strindex = "0001";
|
|
|
|
//}
|
|
|
|
|
|
|
|
//原来获取贴车单方式
|
|
|
|
//string strdate = DateTime.Now.ToString("yyyyMMdd");
|
|
|
|
//DataTable tbl = bllFisOrder.GetPastecardNo(DateTime.Now.ToShortDateString(), prefix);
|
|
|
|
//string strindex = tbl.Rows[0][0].ToString().PadLeft(4, '0');
|
|
|
|
//string pastecardno = string.Format("{0}{1}{2}", prefix, strdate, strindex);
|
|
|
|
//return pastecardno;
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 删除已经打印过的贴车单FIS列表
|
|
|
|
/// <summary>
|
|
|
|
/// 删除已经打印过的贴车单FIS列表
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="pnflist"></param>
|
|
|
|
/// <param name="pnflist2"></param>
|
|
|
|
private void DGVRemoveRow(List<TJEPasteDetailsCard> pnflist, ref List<TJEPasteDetailsCard> pnflist2)
|
|
|
|
{
|
|
|
|
#region
|
|
|
|
if (pnflist2 != null)
|
|
|
|
{
|
|
|
|
for (int rowindex = 0; rowindex < pnflist2.Count; rowindex++)
|
|
|
|
{
|
|
|
|
string tempfiskey2 = pnflist2[rowindex].FIS_KEY;
|
|
|
|
for (int rowindex1 = 0; rowindex1 < dgvMATChange.Rows.Count; rowindex1++)
|
|
|
|
{
|
|
|
|
string tempFiskey1 = dgvMATChange.Rows[rowindex1].Cells["clFiskey"].Value.ToString();
|
|
|
|
if (tempFiskey1 == tempfiskey2)
|
|
|
|
{
|
|
|
|
DataGridViewCellStyle ds = new DataGridViewCellStyle();
|
|
|
|
ds.BackColor = Color.Green;
|
|
|
|
this.dgvMATChange.Rows[rowindex1].DefaultCellStyle = ds;
|
|
|
|
//当删除了满6个的记录后,另一个数据集的行号需要重新排列。
|
|
|
|
dgvMATChange.Rows[rowindex1].Cells[clscanstate.Name].Value = "1";
|
|
|
|
pnflist2[rowindex].DGVROWINDEX = rowindex1;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region NF贴车单手动打印功能
|
|
|
|
/// <summary>
|
|
|
|
/// NF贴车单手动打印功能
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void btnPrint_NF_Click(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
#region
|
|
|
|
bool isprint = false;
|
|
|
|
try
|
|
|
|
{
|
|
|
|
if (nflist != null)
|
|
|
|
{
|
|
|
|
if (MessageBox.Show("您确定要提交并且打印数据吗?", "信息提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
|
|
|
|
{
|
|
|
|
//当点击了确定,则会执行删除操作
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
DataTable tbl = agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_GetDaspssteCarIndexByPlanName.ToString());
|
|
|
|
if (tbl.Rows.Count > 0)
|
|
|
|
{
|
|
|
|
nfpastecard.PASTECARDNO = tbl.Rows[0][0].ToString();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
MessageBox.Show("无法打印!");
|
|
|
|
}
|
|
|
|
EFailLog log = new EFailLog();
|
|
|
|
log.TID = Guid.NewGuid().ToString();
|
|
|
|
log.FCT_DATE = DateTime.Now;
|
|
|
|
log.FCT_NO = nfpastecard.PASTE_CARD_KEY;
|
|
|
|
log.FCT_OPER = UserBuffer.UserCode;
|
|
|
|
log.FCT_OPERTYPE = 1;
|
|
|
|
log.FCT_REASON = "NF手动打印贴车单操作";
|
|
|
|
nfpastecard.FailLog = log;
|
|
|
|
|
|
|
|
string strprodtype = "";
|
|
|
|
//#region "隐藏了rb_hx 和rb_dx,全部根据pFisType判断,生产线的设置使用按钮进行设置"
|
|
|
|
if (pFisType == "01")
|
|
|
|
{
|
|
|
|
strprodtype = "( 左 )";
|
|
|
|
}
|
|
|
|
else if (pFisType == "02")
|
|
|
|
{
|
|
|
|
strprodtype = "( 右 )";
|
|
|
|
}
|
|
|
|
else if (pFisType == "03")
|
|
|
|
{
|
|
|
|
strprodtype = "( 前 )";
|
|
|
|
}
|
|
|
|
else if (pFisType == "04")
|
|
|
|
{
|
|
|
|
strprodtype = "( 后 )";
|
|
|
|
}
|
|
|
|
//提交数据处理
|
|
|
|
foreach (DataRow dr in tbl.Rows)
|
|
|
|
{
|
|
|
|
string PASTECARDNO = dr["PASTECARDNO"].ToString();
|
|
|
|
if (PASTECARDNO.Substring(2, 8).ToString() == DateTime.Now.ToString("yyyyMMdd"))
|
|
|
|
{
|
|
|
|
if ((Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString().Length < 4)
|
|
|
|
{
|
|
|
|
int num = 4 - (Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString().Length;
|
|
|
|
string value = (Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString();
|
|
|
|
string sumValue = "";
|
|
|
|
for (var i = 0; i < num; i++)
|
|
|
|
{
|
|
|
|
sumValue = sumValue + "0";
|
|
|
|
}
|
|
|
|
if (PASTECARDNO.Substring(2, PASTECARDNO.Length - 6).ToString() == DateTime.Now.ToString("yyyyMMdd"))
|
|
|
|
{
|
|
|
|
PASTECARDNO = PASTECARDNO.Substring(2, PASTECARDNO.Length - 6) + sumValue + value;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
PASTECARDNO = DateTime.Now.ToString("yyyyMMdd") + "0001";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (PASTECARDNO.Substring(2, PASTECARDNO.Length - 6).ToString() == DateTime.Now.ToString("yyyyMMdd"))
|
|
|
|
{
|
|
|
|
PASTECARDNO = PASTECARDNO.Substring(2, PASTECARDNO.Length - 6) + (Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
PASTECARDNO = DateTime.Now.ToString("yyyyMMdd") + "0001";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
PASTECARDNO = DateTime.Now.ToString("yyyyMMdd") + "0001";
|
|
|
|
|
|
|
|
}
|
|
|
|
nfpastecard.PASTECARDNO = PASTECARDNO;
|
|
|
|
nfpastecard.OPERATOR = ClientContext.LoginInfo.UserName.ToString();
|
|
|
|
// nfpastecard.
|
|
|
|
}
|
|
|
|
int rowindex = agent.InvokeServiceFunction<int>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_AddNewPasteCard.ToString(), nfpastecard);
|
|
|
|
// 打印处理
|
|
|
|
TJFrmCarCardPrintShow frm = new TJFrmCarCardPrintShow(nfpastecard, strprodtype, "手动");
|
|
|
|
frm.Owner = this;
|
|
|
|
|
|
|
|
frm.ShowDialog();
|
|
|
|
isprint = frm.isprint;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
MessageBox.Show("无打印数据!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
finally
|
|
|
|
{
|
|
|
|
if (isprint)
|
|
|
|
{
|
|
|
|
nflist = null;
|
|
|
|
txtCode.Focus();
|
|
|
|
|
|
|
|
//2016-01-07 增加1号位校验 - 清空1号位
|
|
|
|
this.placeFirstPosition = "";
|
|
|
|
this.placeFirstPositionTime = DateTime.MinValue;
|
|
|
|
//2016-01-07 增加1号位校验
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 打印1号位的条码
|
|
|
|
/// <summary>
|
|
|
|
/// 打印1号位的条码
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void btnFirstPlace_Click(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
this.dgvMATChange.Rows[0].DefaultCellStyle.BackColor = Color.White;
|
|
|
|
#region 打印
|
|
|
|
DCS.Common.PrintCode printFun = new DCS.Common.PrintCode();
|
|
|
|
//执行打印
|
|
|
|
printFun.PinrtFirstPlaceHU();
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 判断当前扫描过的数据集合中是否有相同条码
|
|
|
|
TJEPasteCard ncspastecard = null;
|
|
|
|
/// <summary>
|
|
|
|
/// 判断当前扫描过的数据集合中是否有相同条码
|
|
|
|
/// 与右侧列表中校验,条码是否扫描过
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="strbarcode">扫描的条码</param>
|
|
|
|
private bool CheckDataSet(string strbarcode)
|
|
|
|
{
|
|
|
|
String teshucode = getTeShuBarcode(barcodeidentification);
|
|
|
|
if (nfpastecard != null)
|
|
|
|
{
|
|
|
|
foreach (TJEPasteDetailsCard pe in nfpastecard.DetailsCardlist)
|
|
|
|
{
|
|
|
|
if (teshucode == strbarcode)
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
if (strbarcode == pe.SANBARCODE)
|
|
|
|
{
|
|
|
|
Alert("条码重复:已扫描过的条码,不可以重复扫描。");
|
|
|
|
ArragetxtCode();
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (ncspastecard != null)
|
|
|
|
{
|
|
|
|
foreach (TJEPasteDetailsCard pe2 in ncspastecard.DetailsCardlist)
|
|
|
|
{
|
|
|
|
if (teshucode == strbarcode)
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
if (strbarcode == pe2.SANBARCODE)
|
|
|
|
{
|
|
|
|
Alert("条码重复:已扫描过的条码,不可以重复扫描。");
|
|
|
|
ArragetxtCode();
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 创建NF的贴车单以及明细(外来件)
|
|
|
|
/// <summary>
|
|
|
|
/// 创建NF的贴车单以及明细(NF开头)
|
|
|
|
/// </summary>
|
|
|
|
private void CreateNFPaste__()
|
|
|
|
{
|
|
|
|
#region
|
|
|
|
if (nfindex == 0)
|
|
|
|
{
|
|
|
|
nflist = new List<TJEPasteDetailsCard>();
|
|
|
|
nfpastcardkey = Guid.NewGuid().ToString();
|
|
|
|
nfpastecard = new TJEPasteCard();
|
|
|
|
nfpastecard.DetailsCardlist = new List<TJEPasteDetailsCard>();
|
|
|
|
nfpastecard.PASTE_CARD_KEY = nfpastcardkey;
|
|
|
|
|
|
|
|
//nfpastecard.PLANTNAME = WORKCENTER_CODE.ToString();
|
|
|
|
|
|
|
|
nfpastecard.PASTECARDNO = "";
|
|
|
|
nfpastecard.PRODUCTIONNAME = pFisType;
|
|
|
|
nfpastecard.PASTECARDDATE = DateTime.Now.ToString();
|
|
|
|
nfpastecard.OPERATOR = UserBuffer.UserCode;
|
|
|
|
nfpastecard.CREATETIME = DateTime.Now.ToString();
|
|
|
|
}
|
|
|
|
TJEPasteDetailsCard pastdetail = new TJEPasteDetailsCard();
|
|
|
|
pastdetail.PASTEDETAILED_CARD_KEY = Guid.NewGuid().ToString();
|
|
|
|
pastdetail.FIS_KEY = strFiskey;
|
|
|
|
pastdetail.PASTE_CARD_KEY = nfpastcardkey;
|
|
|
|
pastdetail.SANBARCODE = txtCode.Text.ToString();
|
|
|
|
pastdetail.SCANDATE = DateTime.Now.ToString();
|
|
|
|
pastdetail.PRODNO = strprodno;
|
|
|
|
pastdetail.CARSETDESC_CN = strcarsetdesc_cn;
|
|
|
|
pastdetail.VIN = strvin;
|
|
|
|
pastdetail.VWSEQ = strvwseq;
|
|
|
|
pastdetail.CP5A = strcp5a;
|
|
|
|
pastdetail.DGVROWINDEX = dgvrowindex;
|
|
|
|
pastdetail.LINENO = strlineno;
|
|
|
|
nfpastecard.DetailsCardlist.Add(pastdetail);
|
|
|
|
nflist.Add(pastdetail);
|
|
|
|
dgvNF.DataMember = null;
|
|
|
|
dgvNF.DataSource = nflist;
|
|
|
|
strprodno = "";
|
|
|
|
nfindex++;
|
|
|
|
int setdefaultSum = Convert.ToInt32(QMAPP.WinForm.Common.LocalSetting.Settings["ShowDataCount", ""]);
|
|
|
|
if (nfindex == setdefaultSum)
|
|
|
|
{
|
|
|
|
EFailLog log = new EFailLog();
|
|
|
|
log.TID = Guid.NewGuid().ToString();
|
|
|
|
log.FCT_DATE = DateTime.Now;
|
|
|
|
log.FCT_NO = nfpastecard.PASTE_CARD_KEY;
|
|
|
|
log.FCT_OPER = UserBuffer.UserCode;
|
|
|
|
log.FCT_OPERTYPE = 1;
|
|
|
|
log.FCT_REASON = "NF贴车单自动打印操作";
|
|
|
|
|
|
|
|
//nfpastecard.PLANTNAME = WORKCENTER_CODE.ToString();
|
|
|
|
nfpastecard.OPERATOR = ClientContext.LoginInfo.UserName.ToString();
|
|
|
|
nfpastecard.PASTECARDNO = CreatePastecardNo(WORKCENTER_CODE.ToString());
|
|
|
|
|
|
|
|
nfpastecard.DetailsCardlist = nflist;
|
|
|
|
nfpastecard.FailLog = log;
|
|
|
|
nfindex = 0;
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
int rowindex = agent.InvokeServiceFunction<int>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_AddNewPasteCard.ToString(), nfpastecard);
|
|
|
|
//BllFisOrder bllFisOrder = new BllFisOrder();
|
|
|
|
//int rowindex = bllFisOrder.AddPasteCard(nfpastecard);
|
|
|
|
TJPrintPasteCard prin = new TJPrintPasteCard();
|
|
|
|
string strprodtype = "";
|
|
|
|
//#region "隐藏了rb_hx 和rb_dx,全部根据pFisType判断,生产线的设置使用按钮进行设置"
|
|
|
|
if (pFisType == "01")
|
|
|
|
{
|
|
|
|
strprodtype = "( 左 )";
|
|
|
|
}
|
|
|
|
else if (pFisType == "02")
|
|
|
|
{
|
|
|
|
strprodtype = "( 右 )";
|
|
|
|
}
|
|
|
|
else if (pFisType == "03")
|
|
|
|
{
|
|
|
|
strprodtype = "( 前 )";
|
|
|
|
}
|
|
|
|
else if (pFisType == "04")
|
|
|
|
{
|
|
|
|
strprodtype = "( 后 )";
|
|
|
|
}
|
|
|
|
prin.Print(rowindex, nfpastecard, strprodtype);
|
|
|
|
ClearContainer();
|
|
|
|
GetInitData();
|
|
|
|
DGVRemoveRow(nflist, ref ncslist);
|
|
|
|
dgvNF.DataSource = new List<EPasteDetailsCard>();
|
|
|
|
nfpastecard = null;
|
|
|
|
nflist = null;
|
|
|
|
nfindex = 0;
|
|
|
|
dgvrowindex = 0;
|
|
|
|
computenfncs();
|
|
|
|
GetLastPastCard();
|
|
|
|
SetPastNOConfirm(0);
|
|
|
|
//2016-01-07 增加1号位校验 - 清空1号位
|
|
|
|
this.placeFirstPosition = "";
|
|
|
|
this.placeFirstPositionTime = DateTime.MinValue;
|
|
|
|
//2016-01-07 增加1号位校验
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 计算NF,NCS数量----每条产线的数量
|
|
|
|
/// <summary>
|
|
|
|
/// 计算NF,NCS数量
|
|
|
|
/// </summary>
|
|
|
|
private void computenfncs()
|
|
|
|
{
|
|
|
|
//BindingSource bin = (BindingSource)dgvMATChange.DataSource;
|
|
|
|
|
|
|
|
//DataTable tbl = (DataTable)dgvMATChange.DataSource;
|
|
|
|
//DataRow[] nfrows = tbl.Select("LINENO='NF'");
|
|
|
|
//DataRow[] ncsrows = tbl.Select("LINENO='NCS'");
|
|
|
|
//DataRow[] ncsnfrows = tbl.Select("LINENO='NCSNF'");
|
|
|
|
//DataRow[] ncsgprows = tbl.Select("LINENO='NCSGP'");
|
|
|
|
//lblCount.Text = "NCS: " + ncsrows.Length + " NF: " + nfrows.Length + " NCSNF: " + ncsnfrows.Length + " NCSGP: " + ncsgprows.Length;
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
private void Alert(string message, bool openConfirmDialog = true)
|
|
|
|
{
|
|
|
|
PlaySound.PlaySounds.Play(@errorSoundPath);
|
|
|
|
lberror.Text = message;
|
|
|
|
if (openConfirmDialog
|
|
|
|
&& string.Equals(QMAPP.WinForm.Common.LocalSetting.Settings["AlertConfirmEnable", "0"], "1"))
|
|
|
|
{
|
|
|
|
Common.frmAlertConfirm alertconfirm = new Common.frmAlertConfirm(message, "85010800");
|
|
|
|
alertconfirm.StartPosition = FormStartPosition.CenterScreen;
|
|
|
|
alertconfirm.ShowDialog();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#region 与FIS数据匹配
|
|
|
|
/// <summary>
|
|
|
|
/// 与FIS数据匹配
|
|
|
|
/// </summary>
|
|
|
|
private void FISDataCompare(string Code,string MATERIAL_CODE,string MOULD_CODE)
|
|
|
|
{
|
|
|
|
|
|
|
|
int temprowindex = 0;
|
|
|
|
|
|
|
|
int nflistCount = 0;
|
|
|
|
if (nflist != null && nflist.Count > 0)
|
|
|
|
{
|
|
|
|
nflistCount = nflist.Count;
|
|
|
|
}
|
|
|
|
int ncslistCount = 0;
|
|
|
|
if (ncslist != null && ncslist.Count > 0)
|
|
|
|
{
|
|
|
|
ncslistCount = ncslist.Count;
|
|
|
|
}
|
|
|
|
temprowindex = nflistCount + ncslistCount;
|
|
|
|
|
|
|
|
strprodno = dgvMATChange.Rows[temprowindex].Cells["MATERIAL_CODE"].Value.ToString();
|
|
|
|
string pstrprodcno = strprodno;
|
|
|
|
string strmoulecode = dgvMATChange.Rows[temprowindex].Cells["MOULD_CODE"].Value.ToString();
|
|
|
|
// Getmoulecodecode(strmoulecode);
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
//2.判断成品
|
|
|
|
//Product statusRuslt = agent.InvokeServiceFunction<Product>(QMAPP.ServicesAgent.FrmPlaceManage.FrmPlaceBLL_GetProductByAssembleCode.ToString(), Code);
|
|
|
|
if (strmoulecode != MOULD_CODE)
|
|
|
|
{
|
|
|
|
SetContainerItem(nfindex, false);
|
|
|
|
Alert("扫描的成品位置与计划位置不符!");
|
|
|
|
txtCode.Text = "";
|
|
|
|
txtCode.Focus();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (MATERIAL_CODE != pstrprodcno)
|
|
|
|
{
|
|
|
|
SetContainerItem(nfindex, false);
|
|
|
|
Alert("扫描的成品零件号与计划零件号不符!");
|
|
|
|
|
|
|
|
txtCode.Text = "";
|
|
|
|
txtCode.Focus();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
DataTable tblbarcode = agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_ExistBarcode.ToString(), BarcodeTime, Code);
|
|
|
|
|
|
|
|
if (tblbarcode.Rows.Count == 0)
|
|
|
|
{
|
|
|
|
for (; temprowindex < dgvMATChange.Rows.Count; temprowindex++)
|
|
|
|
{
|
|
|
|
//主键
|
|
|
|
strFiskey = dgvMATChange.Rows[temprowindex].Cells["PID"].Value.ToString();
|
|
|
|
//大众顺序号
|
|
|
|
strvwseq = dgvMATChange.Rows[temprowindex].Cells["REQUESTID"].Value.ToString();
|
|
|
|
//位置
|
|
|
|
strmouldcode = dgvMATChange.Rows[temprowindex].Cells["MOULD_CODE"].Value.ToString();
|
|
|
|
//零件号
|
|
|
|
strprodno = dgvMATChange.Rows[temprowindex].Cells["MATERIAL_CODE"].Value.ToString();
|
|
|
|
//总成描述
|
|
|
|
strcarsetdesc_cn = dgvMATChange.Rows[temprowindex].Cells["MATERIAL_NAME"].Value.ToString();
|
|
|
|
//车型
|
|
|
|
strlineno = dgvMATChange.Rows[temprowindex].Cells["LINENO"].Value.ToString();
|
|
|
|
strvin = Code;
|
|
|
|
//扫描状态
|
|
|
|
strscanstat = dgvMATChange.Rows[temprowindex].Cells["STATE"].Value.ToString();
|
|
|
|
dgvrowindex = temprowindex;
|
|
|
|
if (strscanstat == "0")
|
|
|
|
{
|
|
|
|
strprodno = strprodno.ToString().Trim();
|
|
|
|
pstrprodcno = pstrprodcno.ToString().Trim();
|
|
|
|
//if (strprodno == pstrprodcno)
|
|
|
|
if (pstrprodcno.ToUpper().Replace(".", "").Contains(strprodno.ToUpper().Replace(".", "")))
|
|
|
|
{
|
|
|
|
|
|
|
|
this.dgvMATChange.Rows[temprowindex].DefaultCellStyle.BackColor = Color.White;
|
|
|
|
|
|
|
|
dgvMATChange.Rows[temprowindex].Cells["STATE"].Value = "1";
|
|
|
|
|
|
|
|
temprowindex = dgvMATChange.Rows.Count;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
SetContainerItem(nfindex, false);
|
|
|
|
Alert("条码错误:条码的零件号与FIS队列零件号不符合。");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
SetContainerItem(nfindex, false);
|
|
|
|
Alert("条码错误:条码已扫描或车型不符合。");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Alert("扫描条码重复,请重新扫描。");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
CreateNFPaste(Code); //创建NF的贴车单以及明细
|
|
|
|
SetContainerItem(nfindex, true);
|
|
|
|
if (dgvMATChange.RowCount > 0)
|
|
|
|
{
|
|
|
|
dgvMATChange.FirstDisplayedScrollingRowIndex = nfindex - nfindex % 4;
|
|
|
|
}
|
|
|
|
lberror.Text = "";
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 扫描条码时触发事件
|
|
|
|
///// <summary>
|
|
|
|
///// 扫描条码时触发事件
|
|
|
|
///// </summary>
|
|
|
|
///// <param name="sender"></param>
|
|
|
|
///// <param name="e"></param> 崔法宝20170906
|
|
|
|
private void txtCode_KeyDown(object sender, KeyEventArgs e)
|
|
|
|
{
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
string inputstring = "";
|
|
|
|
try
|
|
|
|
{
|
|
|
|
if (e.KeyCode != Keys.Enter)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
inputstring = txtCode.Text.ToUpper();
|
|
|
|
this.lberror.Text = null;
|
|
|
|
|
|
|
|
if (inputstring.Substring(0, 4) == "FYJH")
|
|
|
|
{
|
|
|
|
//数量
|
|
|
|
int defaultNum = Convert.ToInt32(QMAPP.WinForm.Common.LocalSetting.Settings["ShowDataCount"]);
|
|
|
|
DialogResult dr = MessageBox.Show("是否确认创建计划?", "提示");
|
|
|
|
if (dr == DialogResult.OK)
|
|
|
|
{
|
|
|
|
//物料
|
|
|
|
var mach = inputstring.Substring(4, inputstring.Length - 4);
|
|
|
|
var plan = new TJOrderPlan();
|
|
|
|
|
|
|
|
plan.PLAN_DATE = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
|
|
|
|
plan.QTY = defaultNum/2;
|
|
|
|
if (mach.Substring(0, 3) == "770")
|
|
|
|
plan.LINENO = "770B";
|
|
|
|
else if(mach.Substring(0, 3) == "018")
|
|
|
|
plan.LINENO = "018D";
|
|
|
|
else if(mach.Substring(0, 3) == "493")
|
|
|
|
plan.LINENO = "493D";
|
|
|
|
else if (mach.Substring(0, 3) == "304")
|
|
|
|
plan.LINENO = "304D";
|
|
|
|
|
|
|
|
if (plan.LINENO == "770B"|| plan.LINENO == "304D")
|
|
|
|
{
|
|
|
|
foreach (var s in "R,F".Split(','))
|
|
|
|
{
|
|
|
|
plan.PID = Guid.NewGuid().ToString();
|
|
|
|
|
|
|
|
plan.MATERIAL_CODE = mach.Substring(0, mach.Length - 1) + s + mach.Substring(mach.Length - 1, 1);
|
|
|
|
|
|
|
|
foreach (var rule in _barcodeRules)
|
|
|
|
{
|
|
|
|
if (System.Text.RegularExpressions.Regex.IsMatch(plan.MATERIAL_CODE + "1", rule.REGEX))
|
|
|
|
{
|
|
|
|
plan.MATERIAL_CODE = rule.MATERIAL_CODE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var RESULT = agent.InvokeServiceFunction<DataResult<int>>("TJDoorPlankPlanBLL_Insert", plan);
|
|
|
|
if (RESULT.IsSuccess == true)
|
|
|
|
{
|
|
|
|
agent.InvokeServiceFunction<DataResult<int>>("TJDoorPlankPlanBLL_PutOut", plan.PID);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
foreach (var s in "L,R".Split(','))
|
|
|
|
{
|
|
|
|
plan.PID = Guid.NewGuid().ToString();
|
|
|
|
//plan.MATERIAL_CODE = mach.Substring(0, 4)+"-"+ mach.Substring(4,3)+"-" + mach.Substring(mach.Length - 1, 1) + s;
|
|
|
|
plan.MATERIAL_CODE = mach.Substring(0, mach.Length - 1) + mach.Substring(mach.Length - 1, 1) + s;
|
|
|
|
|
|
|
|
foreach (var rule in _barcodeRules)
|
|
|
|
{
|
|
|
|
if (System.Text.RegularExpressions.Regex.IsMatch(plan.MATERIAL_CODE + "1", rule.REGEX))
|
|
|
|
{
|
|
|
|
plan.MATERIAL_CODE = rule.MATERIAL_CODE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var RESULT = agent.InvokeServiceFunction<DataResult<int>>("TJDoorPlankPlanBLL_Insert", plan);
|
|
|
|
if (RESULT.IsSuccess == true)
|
|
|
|
{
|
|
|
|
agent.InvokeServiceFunction<DataResult<int>>("TJDoorPlankPlanBLL_PutOut", plan.PID);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
txtCode.Text = "";
|
|
|
|
txtCode.Focus();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
txtCode.Text = "";
|
|
|
|
txtCode.Focus();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#region 一号位校验是否扫描校验
|
|
|
|
|
|
|
|
//2016-01-07 增加1号位校验
|
|
|
|
if (this.dgvNF.Rows.Count == 0) //第一个码必须先扫描1号位
|
|
|
|
{
|
|
|
|
string placeCode = txtCode.Text.Trim();
|
|
|
|
if (placeCode.Equals(System.Configuration.ConfigurationManager.AppSettings["PlaceFirstPositionCode"].ToString()))
|
|
|
|
{
|
|
|
|
this.placeFirstPosition = placeCode;
|
|
|
|
this.placeFirstPositionTime = DateTime.Now;
|
|
|
|
this.txtCode.Text = "";
|
|
|
|
//处理条码扫描文本框
|
|
|
|
ArragetxtCode();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 请先扫描1号位
|
|
|
|
if (string.IsNullOrEmpty(this.placeFirstPosition))
|
|
|
|
{
|
|
|
|
this.placeFirstPosition = "";
|
|
|
|
this.txtCode.Text = "";
|
|
|
|
lberror.Text = "请先扫描1号位!";
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 计划外发运
|
|
|
|
|
|
|
|
if (inputstring.Equals("FIRSTPOSITIONTYPE"))
|
|
|
|
{
|
|
|
|
if (PlaceFirstPositionType == "False")
|
|
|
|
{
|
|
|
|
PlaceFirstPositionType = "True";
|
|
|
|
lberror.Text = "关闭验证!";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
PlaceFirstPositionType = "False";
|
|
|
|
lberror.Text = "打开验证!";
|
|
|
|
}
|
|
|
|
this.txtCode.Text = "";
|
|
|
|
//处理条码扫描文本框
|
|
|
|
ArragetxtCode();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
//inputstring += DateTime.Now.ToString("yyyyMMddHHmmssfff");
|
|
|
|
|
|
|
|
if (PlaceFirstPositionType == "True")
|
|
|
|
{
|
|
|
|
#region 校验是否有重复的扫过的条码
|
|
|
|
if (dgvNF.Rows.Count > 0)
|
|
|
|
{
|
|
|
|
for (var i = 0; i < dgvNF.Rows.Count; i++)
|
|
|
|
{
|
|
|
|
if (dgvNF.Rows[i].Cells[CODE_NF.Name].Value.ToString().ToUpper() == inputstring)
|
|
|
|
{
|
|
|
|
SetContainerItem(nfindex+1, false);
|
|
|
|
Alert("该条码已扫描!");
|
|
|
|
txtCode.Text = "";
|
|
|
|
txtCode.Focus();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
string msgs = "";
|
|
|
|
//CheckDataBase(inputstring,ref msgs); //检查T_PP_TJFY_WORKORDER 是否存在条码记录
|
|
|
|
//if (!string.IsNullOrEmpty(msgs))
|
|
|
|
//{
|
|
|
|
// Alert("该条码已扫描!");
|
|
|
|
// txtCode.Text = "";
|
|
|
|
// txtCode.Focus();
|
|
|
|
// return;
|
|
|
|
//}
|
|
|
|
foreach (var rule in _barcodeRules)
|
|
|
|
{
|
|
|
|
if (System.Text.RegularExpressions.Regex.IsMatch(inputstring, rule.REGEX))
|
|
|
|
{
|
|
|
|
strprodno = rule.MATERIAL_CODE;
|
|
|
|
strmouldcode = rule.REMARK;
|
|
|
|
strcarsetdesc_cn = rule.MATERIAL_TYPE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
List<Materiel> tbl = agent.InvokeServiceFunction<List<Materiel>>(QMAPP.ServicesAgent.FrmPlaceManage.TJDoorPlankPlanBLL_GetListMachine.ToString(), strprodno);
|
|
|
|
|
|
|
|
if (tbl.Count == 1)
|
|
|
|
strcarsetdesc_cn = tbl[0].MATERIALNAME;
|
|
|
|
|
|
|
|
strvin = inputstring;
|
|
|
|
CreateNFPaste(inputstring); //创建NF的贴车单以及明细
|
|
|
|
|
|
|
|
//CreateNFPaste__();
|
|
|
|
|
|
|
|
SetContainerItem(nfindex, true); //变更右下角位置颜色
|
|
|
|
|
|
|
|
txtCode.Text = "";
|
|
|
|
txtCode.Focus();
|
|
|
|
return;
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region fis区是否有记录
|
|
|
|
if (dgvMATChange.Rows.Count == 0)
|
|
|
|
{
|
|
|
|
Alert("当前没有发运计划,请先下计划后再扫描!");
|
|
|
|
ArragetxtCode();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region FIS区域数据全部扫描完成,请获取数据后再扫描
|
|
|
|
if (dgvNF.Rows.Count >= dgvMATChange.Rows.Count)
|
|
|
|
{
|
|
|
|
Alert("当前计划数据全部扫描完成,请下达计划后再扫描!");
|
|
|
|
ArragetxtCode();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 校验位计算
|
|
|
|
|
|
|
|
if (txtCode.Text.StartsWith("052"))
|
|
|
|
{
|
|
|
|
string codepart = txtCode.Text.Substring(0, txtCode.Text.Length - 1).ToUpper();
|
|
|
|
string checksum = txtCode.Text.Substring(txtCode.Text.Length-1,1).ToUpper();
|
|
|
|
if (!string.Equals(checksum, CalculateChecksum(codepart)))
|
|
|
|
{
|
|
|
|
Alert("条码错误:总成条码校验位错误!");
|
|
|
|
|
|
|
|
ArragetxtCode();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 判断扫描条形码是否存在 获取扫描条码
|
|
|
|
string Code = txtCode.Text.Trim().ToUpper();
|
|
|
|
|
|
|
|
#region 校验是否有重复的扫过的条码
|
|
|
|
if (dgvNF.Rows.Count > 0)
|
|
|
|
{
|
|
|
|
for (var i = 0; i < dgvNF.Rows.Count; i++)
|
|
|
|
{
|
|
|
|
if (dgvNF.Rows[i].Cells[CODE_NF.Name].Value.ToString().ToUpper() == Code)
|
|
|
|
{
|
|
|
|
SetContainerItem(nfindex + 1, false);
|
|
|
|
Alert("该条码已扫描!");
|
|
|
|
txtCode.Text = "";
|
|
|
|
txtCode.Focus();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#region 底盘号间隔校验
|
|
|
|
|
|
|
|
//2016-10-31 闫永刚
|
|
|
|
int scanSum = dgvNF.Rows.Count;
|
|
|
|
int lastvinNumber = 0;
|
|
|
|
int vinNumber = 0;
|
|
|
|
if (scanSum > 0)
|
|
|
|
{
|
|
|
|
lastvinNumber = Convert.ToInt32(dgvMATChange.Rows[scanSum - 1].Cells["REQUESTID"].Value.ToString());
|
|
|
|
vinNumber = Convert.ToInt32(dgvMATChange.Rows[scanSum].Cells["REQUESTID"].Value.ToString());
|
|
|
|
}
|
|
|
|
|
|
|
|
//if ((vinNumber - lastvinNumber) > 1)
|
|
|
|
//{
|
|
|
|
// var dresult = MessageBox.Show("出现顺序号间隔,是否继续发货?", "提示", MessageBoxButtons.YesNo);
|
|
|
|
// if (dresult == DialogResult.No)
|
|
|
|
// {
|
|
|
|
// ArragetxtCode();
|
|
|
|
// return;
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 判断当前扫描过的数据集合中是否有相同条码
|
|
|
|
|
|
|
|
//判断当前扫描过的数据集合中是否有相同条码
|
|
|
|
string msg = "";
|
|
|
|
//CheckDataBase(Code,ref msg);
|
|
|
|
//if (!string.IsNullOrEmpty(msg))
|
|
|
|
//{
|
|
|
|
// Alert("该条码已扫描!");
|
|
|
|
// txtCode.Text = "";
|
|
|
|
// txtCode.Focus();
|
|
|
|
// return;
|
|
|
|
//}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
//规则
|
|
|
|
bool signal = false;
|
|
|
|
|
|
|
|
string MOULD_CODE = "";
|
|
|
|
foreach (var rule in _barcodeRules)
|
|
|
|
{
|
|
|
|
if (System.Text.RegularExpressions.Regex.IsMatch(Code, rule.REGEX))
|
|
|
|
{
|
|
|
|
signal = true;
|
|
|
|
ProMaterial = rule.MATERIAL_CODE;
|
|
|
|
|
|
|
|
MOULD_CODE = rule.REMARK;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (signal != false)
|
|
|
|
{
|
|
|
|
#region 校验是否有重复的扫过的条码
|
|
|
|
//------------------校验是否有重复的扫过的条码------
|
|
|
|
|
|
|
|
if (dgvNF.Rows.Count > 0)
|
|
|
|
{
|
|
|
|
for (var i = 0; i < dgvNF.Rows.Count; i++)
|
|
|
|
{
|
|
|
|
if (dgvNF.Rows[i].Cells[CODE_NF.Name].Value.ToString() == Code)
|
|
|
|
{
|
|
|
|
SetContainerItem(nfindex + 1, false);
|
|
|
|
Alert("该条码已扫描!");
|
|
|
|
txtCode.Text = "";
|
|
|
|
txtCode.Focus();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//-------------------------End-----------
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 4.与FIS数据匹配
|
|
|
|
//4.与FIS数据匹配 匹配到计划后 开始生成贴车单
|
|
|
|
FISDataCompare(Code, ProMaterial, MOULD_CODE);
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Alert("条码正则未查询到零件号!");
|
|
|
|
txtCode.Text = "";
|
|
|
|
txtCode.Focus();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 处理条码扫描文本框
|
|
|
|
ArragetxtCode();
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
txtCode.Text = "";
|
|
|
|
txtCode.Focus();
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
//MessageBox.Show(ex.Message);
|
|
|
|
lberror.Text = ex.Message;
|
|
|
|
}
|
|
|
|
finally
|
|
|
|
{
|
|
|
|
if (!string.IsNullOrWhiteSpace(inputstring))
|
|
|
|
WriteLog.WriteShipmentLog(string.Format("{0}\t{1}\t{2}", DateTime.Now, inputstring, lberror.Text));
|
|
|
|
dgvMATChange.ClearSelection();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 执行CMD码
|
|
|
|
/// <summary>
|
|
|
|
/// 执行CMD码
|
|
|
|
/// </summary>
|
|
|
|
private void ExcuteCMDCode()
|
|
|
|
{
|
|
|
|
string cmd = txtCode.Text.Trim().Split(':')[1];
|
|
|
|
switch (cmd)
|
|
|
|
{
|
|
|
|
case "CLOSECART"://强制提交
|
|
|
|
{
|
|
|
|
CloseCart(cmd);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "RESETCART"://重扫器具
|
|
|
|
{
|
|
|
|
ResetCart();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "FORCESCAN"://强制扫描
|
|
|
|
{
|
|
|
|
ForceScan(cmd);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
Alert("未知指令!",false);
|
|
|
|
_CMDConfirm = "";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 强制扫描 将下一次扫描的物料验证
|
|
|
|
/// <summary>
|
|
|
|
/// 强制扫描 将下一次扫描的物料验证
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="cmd"></param>
|
|
|
|
private void ForceScan(string cmd)
|
|
|
|
{
|
|
|
|
if (_CMDConfirm == cmd)//指令二次确认
|
|
|
|
{
|
|
|
|
//CreatePaste();
|
|
|
|
lberror.Text = "";
|
|
|
|
_CMDConfirm = "";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Alert("确定要提交此贴车单?请再次扫描指令码确认。");
|
|
|
|
_CMDConfirm = cmd;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 手动提交贴车单-在器具未满情况下使用
|
|
|
|
/// <summary>
|
|
|
|
/// 手动提交贴车单-在器具未满情况下使用
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="cmd"></param>
|
|
|
|
private void CloseCart(string cmd)
|
|
|
|
{
|
|
|
|
if (!btnCloseCart.Enabled)
|
|
|
|
{
|
|
|
|
Alert("您没有进行此操作的权限!", false);
|
|
|
|
_CMDConfirm = "";
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (nflist == null)
|
|
|
|
{
|
|
|
|
Alert("需要至少扫描一件产品才能提交贴车单!",false);
|
|
|
|
_CMDConfirm = "";
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (_CMDConfirm == cmd)//指令二次确认
|
|
|
|
{
|
|
|
|
lberror.Text = "";
|
|
|
|
_CMDConfirm = "";
|
|
|
|
CreatePaste();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Alert("确定要提交此贴车单?请再次扫描指令码确认。",false);
|
|
|
|
_CMDConfirm = cmd;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 根据条码标识查询零件信息(无用)
|
|
|
|
/// <summary>
|
|
|
|
/// 根据条码标识查询零件信息
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="strbarcode"></param>
|
|
|
|
private DataTable GetSparepartsinfo(string strbarcode)
|
|
|
|
{
|
|
|
|
//根据条码前3位去零件表查询条码标识查找零件号。包括的数据有052、NF1、NF2、NF3、NF4。车型,指NF或NCS。
|
|
|
|
// BllFisOrder bllFisOrder = new BllFisOrder();
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
//----------2015-02-10 王丹丹 修改(条码规则变更,所以查询零件号的条件也变更)----------------
|
|
|
|
if (strbarcode.Substring(0, 3) != "052")
|
|
|
|
{
|
|
|
|
//如果前3位不是"052",截取条码前3位进行查询
|
|
|
|
//return bllFisOrder.GetSparepartsinfo(strbarcode.Substring(0, 3));
|
|
|
|
return agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.FrmPlaceBLL_GetSparepartsinfo.ToString(), strbarcode.Substring(0, 3));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
//如果前3位是"052",截取条码前8位进行查询
|
|
|
|
//return bllFisOrder.GetSparepartsinfo(strbarcode.Substring(0, 8));
|
|
|
|
return agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.FrmPlaceBLL_GetSparepartsinfo.ToString(), strbarcode.Substring(0, 8));
|
|
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 判断数据库中是否有相同的条码
|
|
|
|
//条码标识
|
|
|
|
string barcodeidentification = "";
|
|
|
|
/// <summary>
|
|
|
|
/// 判断数据库中是否有相同的条码
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="strbarcode">扫描条码</param>
|
|
|
|
private void CheckDataBase(string strbarcode,ref string messages)
|
|
|
|
{
|
|
|
|
var messagess = "";
|
|
|
|
barcodeidentification = "";
|
|
|
|
//特殊条码,当丢失条码或者条码损坏时,扫描一个特殊条码
|
|
|
|
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
DataTable tblbarcode = agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_ExistBarcode.ToString(), BarcodeTime, strbarcode);
|
|
|
|
|
|
|
|
if (tblbarcode.Rows.Count > 0)
|
|
|
|
{
|
|
|
|
messagess = "扫描条码重复,请重新扫描。";
|
|
|
|
Alert("扫描条码重复,请重新扫描。");
|
|
|
|
}
|
|
|
|
messages = messagess;
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 光标聚焦
|
|
|
|
/// <summary>
|
|
|
|
/// 光标聚焦
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void txtCode_Leave(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
if (string.IsNullOrEmpty(txtCode.Text))
|
|
|
|
{
|
|
|
|
txtCode.Focus();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 获取FIS发货数据的当前行
|
|
|
|
/// <summary>
|
|
|
|
/// 获取FIS发货数据的当前行
|
|
|
|
/// </summary>
|
|
|
|
private void GetCruentFisData(string pstrbarcode, string pstrprodcno, string ptemplineno, TJEPasteCard pnfpascard, TJEPasteCard pncspascard)
|
|
|
|
{
|
|
|
|
#region
|
|
|
|
if (dgvMATChange.Rows.Count != 0)
|
|
|
|
{
|
|
|
|
//if (ptemplineno == "NCS")
|
|
|
|
//{
|
|
|
|
// if (ncslist == null)
|
|
|
|
// {
|
|
|
|
// DGVCurrontRow(pstrprodcno, ptemplineno, 0);
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// int rowcount = ncslist.Count;
|
|
|
|
// int temprowindex = ncslist[rowcount - 1].DGVROWINDEX + 1;
|
|
|
|
// DGVCurrontRow(pstrprodcno, ptemplineno, temprowindex);
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
//if (ptemplineno == "NF")
|
|
|
|
//{
|
|
|
|
// if (nflist == null)
|
|
|
|
// {
|
|
|
|
// DGVCurrontRow(pstrprodcno, ptemplineno, 0);
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// int rowcount = nflist.Count;
|
|
|
|
// int temprowindex = nflist[rowcount - 1].DGVROWINDEX + 1;
|
|
|
|
// DGVCurrontRow(pstrprodcno, ptemplineno, temprowindex);
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
if (nflist == null)
|
|
|
|
{
|
|
|
|
DGVCurrontRow(pstrprodcno, ptemplineno, 0);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
int rowcount = nflist.Count;
|
|
|
|
int temprowindex = nflist[rowcount - 1].DGVROWINDEX + 1;
|
|
|
|
DGVCurrontRow(pstrprodcno, ptemplineno, temprowindex);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 根据零件号,车型获取当前要发货的FIS信息(外来件)
|
|
|
|
/// <summary>
|
|
|
|
/// 根据零件号,车型获取当前要发货的FIS信息
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="pstrprodcno"></param>
|
|
|
|
/// <param name="ptemplineno"></param>
|
|
|
|
/// <param name="rowindex"></param>
|
|
|
|
private void DGVCurrontRow(string pstrprodcno, string ptemplineno, int rowindex)
|
|
|
|
{
|
|
|
|
#region
|
|
|
|
|
|
|
|
for (; rowindex < dgvMATChange.Rows.Count; rowindex++)
|
|
|
|
{
|
|
|
|
//主键
|
|
|
|
//strFiskey = dgvMATChange.Rows[rowindex].Cells["clFiskey"].Value.ToString();
|
|
|
|
strFiskey = dgvMATChange.Rows[rowindex].Cells["PID"].Value.ToString();
|
|
|
|
//大众顺序号
|
|
|
|
strvwseq = dgvMATChange.Rows[rowindex].Cells["REQUESTID"].Value.ToString();
|
|
|
|
//零件号
|
|
|
|
strprodno = dgvMATChange.Rows[rowindex].Cells["PRODNO"].Value.ToString();
|
|
|
|
//总成描述
|
|
|
|
strcarsetdesc_cn = dgvMATChange.Rows[rowindex].Cells["CARSETDESC_CN"].Value.ToString();
|
|
|
|
//上线时间
|
|
|
|
strcp5a = dgvMATChange.Rows[rowindex].Cells["CP5A"].Value.ToString();
|
|
|
|
//车型
|
|
|
|
strlineno = dgvMATChange.Rows[rowindex].Cells["LINENO"].Value.ToString();
|
|
|
|
//车身号
|
|
|
|
strkin = dgvMATChange.Rows[rowindex].Cells["KIN"].Value.ToString();
|
|
|
|
//底盘号
|
|
|
|
strvin = dgvMATChange.Rows[rowindex].Cells["VIN"].Value.ToString();
|
|
|
|
|
|
|
|
|
|
|
|
//扫描状态
|
|
|
|
strscanstat = dgvMATChange.Rows[rowindex].Cells[clscanstate.Name].Value.ToString();
|
|
|
|
dgvrowindex = rowindex;
|
|
|
|
if (strscanstat == "0" )//&& strlineno == ptemplineno
|
|
|
|
{
|
|
|
|
strprodno = strprodno.ToString().Trim();
|
|
|
|
pstrprodcno = pstrprodcno.ToString().Trim();
|
|
|
|
//if (strprodno == pstrprodcno)
|
|
|
|
if (pstrprodcno.ToUpper().Replace(".", "").Contains(strprodno.ToUpper().Replace(".", "")))
|
|
|
|
{
|
|
|
|
//2016-01-21 wangqingnan 如果行变色则不重新刷颜色
|
|
|
|
//DataGridViewCellStyle ds = new DataGridViewCellStyle();
|
|
|
|
//ds.BackColor = Color.White;
|
|
|
|
//this.dgvMATChange.Rows[rowindex].DefaultCellStyle = ds;
|
|
|
|
this.dgvMATChange.Rows[rowindex].DefaultCellStyle.BackColor = Color.White;
|
|
|
|
//2016-01-21 wangqingnan 如果行变色则不重新刷颜色
|
|
|
|
dgvMATChange.Rows[rowindex].Cells[clscanstate.Name].Value = "1";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Alert("条码错误:条码的零件号与FIS队列零件号不符合。");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Alert("条码错误:条码已扫描或车型不符合。");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 创建NF的贴车单以及明细(vw371)
|
|
|
|
TJEPasteCard nfpastecard = null;
|
|
|
|
/// <summary>
|
|
|
|
/// 创建NF的贴车单以及明细
|
|
|
|
/// </summary>
|
|
|
|
private void CreateNFPaste(string barcode)
|
|
|
|
{
|
|
|
|
#region
|
|
|
|
if (nfindex == 0)
|
|
|
|
{
|
|
|
|
nflist = new List<TJEPasteDetailsCard>();
|
|
|
|
nfpastcardkey = Guid.NewGuid().ToString();
|
|
|
|
nfpastecard = new TJEPasteCard();
|
|
|
|
nfpastecard.DetailsCardlist = new List<TJEPasteDetailsCard>();
|
|
|
|
nfpastecard.PASTE_CARD_KEY = nfpastcardkey;
|
|
|
|
nfpastecard.PASTECARDNO = "";
|
|
|
|
nfpastecard.PRODUCTIONNAME = "DPFY" + pFisType;
|
|
|
|
nfpastecard.PASTECARDDATE = DateTime.Now.ToString();
|
|
|
|
nfpastecard.OPERATOR = UserBuffer.UserCode;
|
|
|
|
nfpastecard.CREATETIME = DateTime.Now.ToString();
|
|
|
|
nfpastecard.PLANTNAME = "DPFY"+pFisType.ToString();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
TJEPasteDetailsCard pastdetail = new TJEPasteDetailsCard();
|
|
|
|
pastdetail.PASTEDETAILED_CARD_KEY = Guid.NewGuid().ToString();
|
|
|
|
pastdetail.FIS_KEY = strFiskey;
|
|
|
|
pastdetail.PASTE_CARD_KEY = nfpastcardkey;
|
|
|
|
//为扫描记录关联产品主键 张鹏 2018-3-8
|
|
|
|
pastdetail.SANBARCODE = barcode;// txtCode.Text.ToString();
|
|
|
|
//pastdetail.PRODUCT_PID = product.PID;
|
|
|
|
|
|
|
|
pastdetail.SCANDATE = DateTime.Now.ToString();
|
|
|
|
pastdetail.PRODNO = strprodno;
|
|
|
|
pastdetail.CARSETDESC_CN = strcarsetdesc_cn;
|
|
|
|
pastdetail.VIN = strvin;
|
|
|
|
pastdetail.VWSEQ = strvwseq;
|
|
|
|
//pastdetail.CP5A = strcp5a;
|
|
|
|
//pastdetail.KIN = strkin;
|
|
|
|
|
|
|
|
pastdetail.DGVROWINDEX = dgvrowindex;
|
|
|
|
pastdetail.LINENO = strvin.Substring(0,3);
|
|
|
|
pastdetail.MOULDCODE = strmouldcode;
|
|
|
|
|
|
|
|
string strprodtype = "";
|
|
|
|
if (pFisType == "01")
|
|
|
|
{
|
|
|
|
strprodtype = "( 左 )";
|
|
|
|
}
|
|
|
|
else if (pFisType == "02")
|
|
|
|
{
|
|
|
|
strprodtype = "( 右 )";
|
|
|
|
}
|
|
|
|
else if (pFisType == "03")
|
|
|
|
{
|
|
|
|
strprodtype = "( 前 )";
|
|
|
|
}
|
|
|
|
else if (pFisType == "04")
|
|
|
|
{
|
|
|
|
strprodtype = "( 后 )";
|
|
|
|
}
|
|
|
|
if (strvin.Substring(0, 3) == "770"|| strvin.Substring(0, 3) == "304")
|
|
|
|
nfpastecard.MbConfig = strvin.Substring(3, 3);
|
|
|
|
else
|
|
|
|
nfpastecard.MbConfig = strvin.Substring(4, 3);
|
|
|
|
nfpastecard.MbOrientation = strprodtype;
|
|
|
|
nfpastecard.CreateTime = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm");
|
|
|
|
|
|
|
|
nfpastecard.DetailsCardlist.Add(pastdetail);
|
|
|
|
nflist.Add(pastdetail);
|
|
|
|
dgvNF.DataMember = null;
|
|
|
|
dgvNF.DataSource = nflist;
|
|
|
|
strprodno = "";
|
|
|
|
nfindex++;
|
|
|
|
|
|
|
|
//int setdefaultSum = Convert.ToInt32(QM.Config.CustomConfig.GetItem("ShowDataCount"));
|
|
|
|
int setdefaultSum = Convert.ToInt32(QMAPP.WinForm.Common.LocalSetting.Settings["ShowDataCount",""]);
|
|
|
|
if (nfindex == setdefaultSum)
|
|
|
|
{
|
|
|
|
EFailLog log = new EFailLog();
|
|
|
|
log.TID = Guid.NewGuid().ToString();
|
|
|
|
log.FCT_DATE = DateTime.Now;
|
|
|
|
log.FCT_NO = nfpastecard.PASTE_CARD_KEY;
|
|
|
|
log.FCT_OPER = UserBuffer.UserCode;
|
|
|
|
log.FCT_OPERTYPE = 1;
|
|
|
|
log.FCT_REASON = "NF贴车单自动打印操作";
|
|
|
|
nfpastecard.DetailsCardlist = nflist;
|
|
|
|
nfpastecard.FailLog = log;
|
|
|
|
nfindex = 0;
|
|
|
|
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
DataTable tbl = agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_GetDaspssteCarIndexByPlanName.ToString(), nfpastecard.PLANTNAME.ToString());
|
|
|
|
|
|
|
|
if (tbl.Rows.Count == 0)
|
|
|
|
{
|
|
|
|
nfpastecard.PASTECARDNO = nfpastecard.PLANTNAME + DateTime.Now.ToString("yyyyMMdd") + "0001";
|
|
|
|
int delResult = agent.InvokeServiceFunction<int>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_InsertDaspssteCarIndexByPlanName.ToString(), nfpastecard);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
foreach (DataRow dr in tbl.Rows)
|
|
|
|
{
|
|
|
|
string PASTECARDNO = dr["PASTECARDNO"].ToString();
|
|
|
|
string PLANTNAME = dr["PLANTNAME"].ToString();
|
|
|
|
|
|
|
|
if ((Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString().Length < 4)
|
|
|
|
{
|
|
|
|
int num = 4 - (Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString().Length;
|
|
|
|
string value = (Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString();
|
|
|
|
string sumValue = "";
|
|
|
|
for (var i = 0; i < num; i++)
|
|
|
|
{
|
|
|
|
sumValue = sumValue + "0";
|
|
|
|
}
|
|
|
|
|
|
|
|
if (PASTECARDNO.Substring(PLANTNAME.Length, PASTECARDNO.Length - PLANTNAME.Length - 4).ToString() == DateTime.Now.ToString("yyyyMMdd"))
|
|
|
|
{
|
|
|
|
PASTECARDNO = PASTECARDNO.Substring(PLANTNAME.Length, PASTECARDNO.Length - PLANTNAME.Length - 4) + sumValue + value;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
PASTECARDNO = DateTime.Now.ToString("yyyyMMdd") + "0001";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (PASTECARDNO.Substring(PLANTNAME.Length, PASTECARDNO.Length - PLANTNAME.Length - 4).ToString() == DateTime.Now.ToString("yyyyMMdd"))
|
|
|
|
{
|
|
|
|
PASTECARDNO = PASTECARDNO.Substring(PLANTNAME.Length, PASTECARDNO.Length - PLANTNAME.Length - 4) + (Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
PASTECARDNO = DateTime.Now.ToString("yyyyMMdd") + "0001";
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
nfpastecard.PASTECARDNO = PLANTNAME + PASTECARDNO;
|
|
|
|
nfpastecard.OPERATOR = ClientContext.LoginInfo.UserName.ToString();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
int rowindex = agent.InvokeServiceFunction<int>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_AddNewPasteCard.ToString(), nfpastecard, setdefaultSum);
|
|
|
|
|
|
|
|
|
|
|
|
Print();//手动提交打印功能
|
|
|
|
|
|
|
|
ClearContainer();
|
|
|
|
GetInitData();
|
|
|
|
DGVRemoveRow(nflist, ref ncslist);
|
|
|
|
dgvNF.DataSource = new List<EPasteDetailsCard>();
|
|
|
|
nfpastecard = null;
|
|
|
|
nflist = null;
|
|
|
|
nfindex = 0;
|
|
|
|
dgvrowindex = 0;
|
|
|
|
|
|
|
|
//computenfncs();
|
|
|
|
//2016-01-07 增加1号位校验 - 清空1号位
|
|
|
|
//this.placeFirstPosition = "";
|
|
|
|
//this.placeFirstPositionTime = DateTime.MinValue;
|
|
|
|
//2016-01-07 增加1号位校验
|
|
|
|
GetLastPastCard();
|
|
|
|
SetPastNOConfirm(0);
|
|
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 创建贴车单(不满车提交)
|
|
|
|
/// <summary>
|
|
|
|
/// 创建贴车单(不满车提交)
|
|
|
|
/// </summary>
|
|
|
|
private void CreatePaste()
|
|
|
|
{
|
|
|
|
if (nflist == null)
|
|
|
|
{
|
|
|
|
Alert("无数据,请先按FIS顺序扫描产品!",false);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
EFailLog log = new EFailLog();
|
|
|
|
log.TID = Guid.NewGuid().ToString();
|
|
|
|
log.FCT_DATE = DateTime.Now;
|
|
|
|
log.FCT_NO = nfpastecard.PASTE_CARD_KEY;
|
|
|
|
log.FCT_OPER = UserBuffer.UserCode;
|
|
|
|
log.FCT_OPERTYPE = 1;
|
|
|
|
log.FCT_REASON = "NF贴车单自动打印操作";
|
|
|
|
nfpastecard.DetailsCardlist = nflist;
|
|
|
|
nfpastecard.FailLog = log;
|
|
|
|
nfindex = 0;
|
|
|
|
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
DataTable tbl = agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_GetDaspssteCarIndexByPlanName.ToString(), nfpastecard.PLANTNAME.ToString());
|
|
|
|
if (tbl.Rows.Count == 0)
|
|
|
|
{
|
|
|
|
nfpastecard.PASTECARDNO = DateTime.Now.ToString("yyyyMMdd") + "0001";
|
|
|
|
int delResult = agent.InvokeServiceFunction<int>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_InsertDaspssteCarIndexByPlanName.ToString(), nfpastecard);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
|
|
|
|
foreach (DataRow dr in tbl.Rows)
|
|
|
|
{
|
|
|
|
string PASTECARDNO = dr["PASTECARDNO"].ToString();
|
|
|
|
string PLANTNAME = dr["PLANTNAME"].ToString();
|
|
|
|
|
|
|
|
if ((Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString().Length < 4)
|
|
|
|
{
|
|
|
|
int num = 4 - (Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString().Length;
|
|
|
|
string value = (Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString();
|
|
|
|
string sumValue = "";
|
|
|
|
for (var i = 0; i < num; i++)
|
|
|
|
{
|
|
|
|
sumValue = sumValue + "0";
|
|
|
|
}
|
|
|
|
|
|
|
|
string ii = PASTECARDNO.Substring(PLANTNAME.Length, 8).ToString();
|
|
|
|
|
|
|
|
if (PASTECARDNO.Substring(PLANTNAME.Length, 8).ToString() == DateTime.Now.ToString("yyyyMMdd"))
|
|
|
|
{
|
|
|
|
PASTECARDNO = PLANTNAME + PASTECARDNO.Substring(PLANTNAME.Length - PLANTNAME.Length, 6) + sumValue + value;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
PASTECARDNO = PLANTNAME + DateTime.Now.ToString("yyyyMMdd") + "0001";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (PASTECARDNO.Substring(2, PASTECARDNO.Length - 6).ToString() == DateTime.Now.ToString("yyyyMMdd"))
|
|
|
|
{
|
|
|
|
PASTECARDNO = PASTECARDNO.Substring(2, PASTECARDNO.Length - 6) + (Convert.ToInt32(PASTECARDNO.Substring(PASTECARDNO.Length - 4, 4)) + 1).ToString();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
PASTECARDNO = DateTime.Now.ToString("yyyyMMdd") + "0001";
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
nfpastecard.PASTECARDNO = PASTECARDNO;
|
|
|
|
nfpastecard.OPERATOR = ClientContext.LoginInfo.UserName.ToString();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
int setdefaultSum = Convert.ToInt32(QMAPP.WinForm.Common.LocalSetting.Settings["ShowDataCount", ""]);
|
|
|
|
int rowindex = agent.InvokeServiceFunction<int>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_AddNewPasteCard.ToString(), nfpastecard, setdefaultSum);
|
|
|
|
|
|
|
|
Print();//手动提交打印功能
|
|
|
|
|
|
|
|
ClearContainer();
|
|
|
|
GetInitData();
|
|
|
|
DGVRemoveRow(nflist, ref ncslist);
|
|
|
|
dgvNF.DataSource = new List<EPasteDetailsCard>();
|
|
|
|
nfpastecard = null;
|
|
|
|
nflist = null;
|
|
|
|
nfindex = 0;
|
|
|
|
dgvrowindex = 0;
|
|
|
|
|
|
|
|
GetLastPastCard();
|
|
|
|
SetPastNOConfirm(0);
|
|
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 打印功能
|
|
|
|
/// <summary>
|
|
|
|
/// 打印功能
|
|
|
|
/// </summary>
|
|
|
|
private void Print()
|
|
|
|
{
|
|
|
|
int PrintDisable = Convert.ToInt32(QMAPP.WinForm.Common.LocalSetting.Settings["PrintDisable", "1"]);
|
|
|
|
|
|
|
|
if (PrintDisable == 1)
|
|
|
|
{
|
|
|
|
lberror.Text = "贴车单打印已禁用!";
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
TJPrintPasteCard prin = new TJPrintPasteCard();
|
|
|
|
string strprodtype = "";
|
|
|
|
if (pFisType == "01")
|
|
|
|
{
|
|
|
|
strprodtype = "( 左 )";
|
|
|
|
}
|
|
|
|
else if (pFisType == "02")
|
|
|
|
{
|
|
|
|
strprodtype = "( 右 )";
|
|
|
|
}
|
|
|
|
else if (pFisType == "03")
|
|
|
|
{
|
|
|
|
strprodtype = "( 前 )";
|
|
|
|
}
|
|
|
|
else if (pFisType == "04")
|
|
|
|
{
|
|
|
|
strprodtype = "( 后 )";
|
|
|
|
}
|
|
|
|
|
|
|
|
DataTable dt = new DataTable();
|
|
|
|
dt.Columns.Add("ROWINDEX");
|
|
|
|
dt.Columns.Add("VWSEQ");
|
|
|
|
dt.Columns.Add("VIN");
|
|
|
|
dt.Columns.Add("PRODNO");
|
|
|
|
dt.Columns.Add("CARSETDESCCN");
|
|
|
|
dt.Columns.Add("PASTECARDNO");
|
|
|
|
dt.Columns.Add("SCANDATE");
|
|
|
|
dt.Columns.Add("CP5A");
|
|
|
|
dt.Columns.Add("PRODUCTIONNAME");
|
|
|
|
dt.Columns.Add("LINENO");
|
|
|
|
dt.Columns.Add("MbConfig");
|
|
|
|
dt.Columns.Add("MbOrientation");
|
|
|
|
dt.Columns.Add("CreateTime");
|
|
|
|
dt.Columns.Add("PLAN_NO");
|
|
|
|
int index = 1;
|
|
|
|
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
//DataTable tbl = agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.FrmPlaceBLL_GetPastecardDeatis.ToString());
|
|
|
|
DataTable tbl = agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.TJFrmPlaceBLL_GetPascardDetailsByPid.ToString(), nfpastecard.PASTE_CARD_KEY);
|
|
|
|
|
|
|
|
//index = Convert.ToInt32(tbl.Rows[0][0].ToString());
|
|
|
|
|
|
|
|
|
|
|
|
//var TYPE1 = dgvMATChange.Rows[0].Cells[PLAN_NO.Name].Value.ToString();
|
|
|
|
//var TYPE2 = dgvMATChange.Rows[12].Cells[PLAN_NO.Name].Value.ToString();
|
|
|
|
//int defaultNum = Convert.ToInt32(QMAPP.WinForm.Common.LocalSetting.Settings["ShowDataCount"]);
|
|
|
|
//var materialcode1 = dgvNF.Rows[0].Cells[PRODNO_NF.Name].Value.ToString();
|
|
|
|
//var materialcode2 = dgvNF.Rows[12].Cells[PRODNO_NF.Name].Value.ToString();
|
|
|
|
|
|
|
|
//var count = defaultNum / 2;
|
|
|
|
for (var i = 0; i < tbl.Rows.Count; i++)
|
|
|
|
{
|
|
|
|
DataRow ncsdr = dt.NewRow();
|
|
|
|
ncsdr["ROWINDEX"] = index.ToString();
|
|
|
|
ncsdr["VWSEQ"] = tbl.Rows[i]["VWSEQ"].ToString();
|
|
|
|
ncsdr["VIN"] = tbl.Rows[i]["VIN"].ToString();
|
|
|
|
ncsdr["PRODNO"] = tbl.Rows[i]["PRODNO"].ToString();
|
|
|
|
ncsdr["CP5A"] = tbl.Rows[i]["CP5A"].ToString(); //门板位置
|
|
|
|
for(var a = 0;a< dgvNF.Rows.Count;a++)
|
|
|
|
{
|
|
|
|
if (dgvNF.Rows[a].Cells[CODE_NF.Name].Value.ToString().ToUpper() == tbl.Rows[i]["VIN"].ToString())
|
|
|
|
{
|
|
|
|
var CARSETDESCCN = dgvNF.Rows[a].Cells[CARSETDESC_CN_NF.Name].Value.ToString();
|
|
|
|
var Material_code = dgvNF.Rows[a].Cells[PRODNO_NF.Name].Value.ToString();
|
|
|
|
ncsdr["CARSETDESCCN"] = CARSETDESCCN;
|
|
|
|
tbl.Rows[i]["PRODNO"] = Material_code;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
//ncsdr["CARSETDESCCN"] = tbl.Rows[i]["CARSETDESC_CN"].ToString();
|
|
|
|
ncsdr["PASTECARDNO"] = tbl.Rows[i]["PASTECARDNO"].ToString();
|
|
|
|
ncsdr["SCANDATE"] = DateTime.Now.ToString();
|
|
|
|
ncsdr["PRODUCTIONNAME"] = strprodtype;
|
|
|
|
ncsdr["LINENO"] = tbl.Rows[i]["LINENO"].ToString();
|
|
|
|
|
|
|
|
if (strvin.Substring(0, 3) == "770"|| strvin.Substring(0, 3) == "304")
|
|
|
|
ncsdr["MbConfig"] = strvin.Substring(3, 3);
|
|
|
|
else
|
|
|
|
ncsdr["MbConfig"] = strvin.Substring(4, 3);
|
|
|
|
ncsdr["MbOrientation"]= strprodtype;
|
|
|
|
ncsdr["CreateTime"] = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm");
|
|
|
|
|
|
|
|
dt.Rows.Add(ncsdr);
|
|
|
|
index++;
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(_TJFYPrintName))
|
|
|
|
{
|
|
|
|
System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();
|
|
|
|
doc.PrinterSettings.PrinterName = _TJFYPrintName;
|
|
|
|
|
|
|
|
prin.Print(dt, _TJFYPrintName);
|
|
|
|
lberror.Text = "贴车单已打印;";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
prin.Print(dt);
|
|
|
|
lberror.Text = "贴车单已打印;";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 针对贴车单上的条码进行出库操作
|
|
|
|
|
|
|
|
var nor = string.Empty;
|
|
|
|
for (var i = 0; i < tbl.Rows.Count; i++)
|
|
|
|
{
|
|
|
|
#region 发运数据回冲
|
|
|
|
SaveCOMPLETE(tbl.Rows[i]["PRODNO"].ToString(), tbl.Rows[i]["VIN"].ToString());
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
if (string.IsNullOrEmpty(nor))
|
|
|
|
nor += tbl.Rows[i]["VIN"].ToString() + ",";
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (!nor.Contains(tbl.Rows[i]["VIN"].ToString()))
|
|
|
|
{
|
|
|
|
var DataResult = agent.InvokeServiceFunction<DataResult<int>>("StorageBLL_SelectCount", tbl.Rows[i]["VIN"].ToString());
|
|
|
|
|
|
|
|
//如果条码未入库,先进行入库操作
|
|
|
|
if (DataResult.Result <= 0)
|
|
|
|
{
|
|
|
|
Storage pi = new Storage();
|
|
|
|
pi.ProductCode = tbl.Rows[i]["VIN"].ToString();
|
|
|
|
pi.InStorageType = "发运入库";
|
|
|
|
|
|
|
|
agent.InvokeServiceFunction<DataResult<int>>("StorageBLL_Insert", pi);
|
|
|
|
}
|
|
|
|
|
|
|
|
var storage = new Storage();
|
|
|
|
storage.ProductCode = tbl.Rows[i]["VIN"].ToString();
|
|
|
|
storage.OutStorageType = "发运出库";
|
|
|
|
var result = agent.InvokeServiceFunction<DataResult>("StorageBLL_Update", storage);
|
|
|
|
if (!result.IsSuccess)
|
|
|
|
{
|
|
|
|
lberror.Text += tbl.Rows[i]["VIN"].ToString() + "出库失败;原因:" + result.Msg; ;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 定时刷新数据
|
|
|
|
/// <summary>
|
|
|
|
/// 定时刷新数据
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void timeRefew_Tick(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
//if (dgvNF.Rows.Count == 0)
|
|
|
|
//{
|
|
|
|
GetInitData();
|
|
|
|
//}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 扫描件状态框动作
|
|
|
|
/// <summary>
|
|
|
|
///
|
|
|
|
/// </summary>
|
|
|
|
public void InitContainer()
|
|
|
|
{
|
|
|
|
tpContainer.Controls.Clear();
|
|
|
|
tpContainer.RowStyles.Clear();
|
|
|
|
tpContainer.ColumnStyles.Clear();
|
|
|
|
|
|
|
|
int defaultNum = Convert.ToInt32(QMAPP.WinForm.Common.LocalSetting.Settings["ShowDataCount", "6"]);
|
|
|
|
int rowcount = Convert.ToInt32(QMAPP.WinForm.Common.LocalSetting.Settings["RowCount", "2"]);
|
|
|
|
|
|
|
|
tpContainer.RowCount = rowcount;
|
|
|
|
tpContainer.ColumnCount = defaultNum / rowcount + (defaultNum % rowcount > 0 ? 1 : 0);
|
|
|
|
|
|
|
|
for (int i = 0; i < tpContainer.RowCount; i++)
|
|
|
|
{
|
|
|
|
if (i == 0)
|
|
|
|
{
|
|
|
|
tpContainer.RowStyles.Add(new RowStyle(SizeType.Percent, 50));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
tpContainer.RowStyles.Add(new RowStyle(SizeType.Percent, 50));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (int i = 0; i < tpContainer.ColumnCount; i++)
|
|
|
|
{
|
|
|
|
tpContainer.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
|
|
|
|
|
|
|
|
for (int j = 0; j < tpContainer.RowCount; j++)
|
|
|
|
{
|
|
|
|
Label lblItem = new Label();
|
|
|
|
lblItem.Text = (i + j * tpContainer.ColumnCount + 1).ToString();
|
|
|
|
lblItem.Font = new Font("微软雅黑", 24, FontStyle.Bold);
|
|
|
|
lblItem.Dock = DockStyle.Fill;
|
|
|
|
lblItem.TextAlign = ContentAlignment.MiddleCenter;
|
|
|
|
tpContainer.Controls.Add(lblItem, i, j);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//for (int i = 0; i < tpContainer.ColumnCount; i++)
|
|
|
|
//{
|
|
|
|
// tpContainer.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
|
|
|
|
|
|
|
|
// for (int j = 0; j < tpContainer.RowCount; j++)
|
|
|
|
// {
|
|
|
|
// Label lblItem = new Label();
|
|
|
|
// lblItem.Text = (i*rowcount+j+ 1).ToString();
|
|
|
|
// lblItem.Font = new Font("微软雅黑", 24, FontStyle.Bold);
|
|
|
|
// lblItem.Dock = DockStyle.Fill;
|
|
|
|
// lblItem.TextAlign = ContentAlignment.MiddleCenter;
|
|
|
|
// tpContainer.Controls.Add(lblItem, i, j);
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
|
|
|
|
for (int i = 0; i < nfindex; i++)
|
|
|
|
{
|
|
|
|
SetContainerItem(i, true);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
|
|
///
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="itemindex"></param>
|
|
|
|
/// <param name="result"></param>
|
|
|
|
public void SetContainerItem(int itemindex, bool result)
|
|
|
|
{
|
|
|
|
if (itemindex == 0)
|
|
|
|
return;
|
|
|
|
if (itemindex == 1)
|
|
|
|
{
|
|
|
|
var label = tpContainer.GetControlFromPosition(0, 0) as Label;
|
|
|
|
label.BackColor = result ? Color.Lime : Color.Red;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
itemindex = itemindex - 1;
|
|
|
|
var columnindex = itemindex / (tpContainer.ColumnCount);
|
|
|
|
var rowindex = itemindex % (tpContainer.ColumnCount);
|
|
|
|
var label = tpContainer.GetControlFromPosition(rowindex, columnindex) as Label;
|
|
|
|
if (label != null)
|
|
|
|
{
|
|
|
|
label.BackColor = result ? Color.Lime : Color.Red;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
///
|
|
|
|
/// </summary>
|
|
|
|
public void ClearContainer()
|
|
|
|
{
|
|
|
|
foreach (var ctrl in tpContainer.Controls)
|
|
|
|
{
|
|
|
|
var label = ctrl as Label;
|
|
|
|
if (label != null)
|
|
|
|
{
|
|
|
|
label.BackColor = tpContainer.BackColor;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 重新扫描
|
|
|
|
/// <summary>
|
|
|
|
/// 重新扫描
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void btnResetCart_Click(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
ResetCart();
|
|
|
|
}
|
|
|
|
private void ResetCart()
|
|
|
|
{
|
|
|
|
if (!btnResetCart.Enabled)
|
|
|
|
{
|
|
|
|
lberror.Text = "您无权执行此操作!";
|
|
|
|
}
|
|
|
|
nflist = null;
|
|
|
|
nfindex = 0;
|
|
|
|
ClearContainer();
|
|
|
|
GetInitData();
|
|
|
|
//DGVRemoveRow(nflist, ref ncslist);
|
|
|
|
dgvNF.DataSource = new List<EPasteDetailsCard>();
|
|
|
|
nfpastecard = null;
|
|
|
|
|
|
|
|
dgvrowindex = 0;
|
|
|
|
if (dgvMATChange.RowCount > 0)
|
|
|
|
{
|
|
|
|
dgvMATChange.FirstDisplayedScrollingRowIndex = nfindex - nfindex % 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 混线单选按钮
|
|
|
|
/// <summary>
|
|
|
|
/// 混线单选按钮
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
//int signal = 0;
|
|
|
|
private void rb_hx_CheckedChanged(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
if (dgvNF.Rows.Count > 0)
|
|
|
|
{
|
|
|
|
lberror.Text = "已扫描数据区不为空,重置或者扫描整车后才能切换生产线!";
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
lberror.Text = "";
|
|
|
|
QMAPP.WinForm.Common.LocalSetting.Settings["FlashProCode"]= "01";
|
|
|
|
|
|
|
|
//混
|
|
|
|
pFisType = "01";
|
|
|
|
WORKCENTER_CODE = "IPFY01";
|
|
|
|
|
|
|
|
GetInitData();
|
|
|
|
GetLastPastCard();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
|
|
/// 右侧门板
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void rb_dx_CheckedChanged(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
if (dgvNF.Rows.Count > 0)
|
|
|
|
{
|
|
|
|
lberror.Text = "已扫描数据区不为空,重置或者扫描整车后才能切换生产线!";
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
lberror.Text = "";
|
|
|
|
QMAPP.WinForm.Common.LocalSetting.Settings["FlashProCode"] = "01";
|
|
|
|
|
|
|
|
//混
|
|
|
|
pFisType = "02";
|
|
|
|
WORKCENTER_CODE = "IPFY02";
|
|
|
|
|
|
|
|
GetInitData();
|
|
|
|
GetLastPastCard();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
|
|
/// 018前门
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void ra_hx_CheckedChanged(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
if (dgvNF.Rows.Count > 0)
|
|
|
|
{
|
|
|
|
lberror.Text = "已扫描数据区不为空,重置或者扫描整车后才能切换生产线!";
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
lberror.Text = "";
|
|
|
|
QMAPP.WinForm.Common.LocalSetting.Settings["FlashProCode"] = "03";
|
|
|
|
|
|
|
|
//混
|
|
|
|
pFisType = "03";
|
|
|
|
WORKCENTER_CODE = "IPFY03";
|
|
|
|
|
|
|
|
GetInitData();
|
|
|
|
GetLastPastCard();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
|
|
/// 018后门
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void ra_dx_CheckedChanged(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
if (dgvNF.Rows.Count > 0)
|
|
|
|
{
|
|
|
|
lberror.Text = "已扫描数据区不为空,重置或者扫描整车后才能切换生产线!";
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
lberror.Text = "";
|
|
|
|
QMAPP.WinForm.Common.LocalSetting.Settings["FlashProCode"] = "04";
|
|
|
|
|
|
|
|
//混
|
|
|
|
pFisType = "04";
|
|
|
|
WORKCENTER_CODE = "IPFY04";
|
|
|
|
|
|
|
|
GetInitData();
|
|
|
|
GetLastPastCard();
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 工作中心设置按钮
|
|
|
|
/// <summary>
|
|
|
|
/// 工作中心设置按钮
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void btnLineSetting_Click(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
TJfrmLineSetting frm = new TJfrmLineSetting();
|
|
|
|
frm.Owner = this;
|
|
|
|
frm.ShowDialog();
|
|
|
|
txtCode.Focus();
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 贴车单顺序校正按钮
|
|
|
|
/// <summary>
|
|
|
|
/// 贴车单顺序校正按钮
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void btnResetIndex_Click(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
TJResetSendIndexForm form = new TJResetSendIndexForm();
|
|
|
|
form.ShowDialog();
|
|
|
|
|
|
|
|
txtCode.Focus();
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 设置容器容量
|
|
|
|
/// <summary>
|
|
|
|
/// 设置容器容量
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void btnSetDatagroupType_Click(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
TJDefaultDataSetNum window = new TJDefaultDataSetNum();
|
|
|
|
window.Owner = this;
|
|
|
|
window.Show();
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 回冲
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 处理回冲数据
|
|
|
|
/// </summary>
|
|
|
|
public void SaveCOMPLETE(string MaterialCode,string ORDERNO)
|
|
|
|
{
|
|
|
|
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
|
|
|
|
|
|
|
|
TJCompleteStatisticsEntity model = new TJCompleteStatisticsEntity();
|
|
|
|
model.MATERIALNO = MaterialCode;
|
|
|
|
model.SYSCOMPLETECOUNT = 1;
|
|
|
|
model.COMPLETECOUNT = 1;
|
|
|
|
model.STARTTIME = DateTime.Now;
|
|
|
|
model.ENDTIME = DateTime.Now;
|
|
|
|
model.ORDERNO = ORDERNO;
|
|
|
|
model.line = "770B";
|
|
|
|
|
|
|
|
var ss = agent.InvokeServiceFunction<DataResult<int>>("CompleteStatisticsBLL_Insert", model);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
///
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void FrmPlace_Activated(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
SetRowColor();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
|
|
///
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="str"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
private string getTeShuBarcode(String str)
|
|
|
|
{
|
|
|
|
return str + " 4XR#" + DateTime.Now.ToString("MMddHH") + "#";
|
|
|
|
}
|
|
|
|
|
|
|
|
#region 不满车打印贴车单
|
|
|
|
/// <summary>
|
|
|
|
/// 不满车打印贴车单
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
/// <param name="e"></param>
|
|
|
|
private void btnCloseCart_Click(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
lberror.Text = "";
|
|
|
|
_CMDConfirm = "";
|
|
|
|
CreatePaste();
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
public static string CalculateChecksum(string barcode)
|
|
|
|
{
|
|
|
|
string chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%";
|
|
|
|
int sum = 0;
|
|
|
|
foreach (var c in barcode)
|
|
|
|
{
|
|
|
|
sum += chars.IndexOf(c);
|
|
|
|
}
|
|
|
|
int rem = sum % chars.Length;
|
|
|
|
return chars[rem].ToString();
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 位置名称转换code
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="Name"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
public static string Getmoulecodecode(string Name)
|
|
|
|
{
|
|
|
|
switch (Name)
|
|
|
|
{
|
|
|
|
case "左前":
|
|
|
|
return "LF";
|
|
|
|
case "左后":
|
|
|
|
return "LR";
|
|
|
|
case "右前":
|
|
|
|
return "RF";
|
|
|
|
case "右后":
|
|
|
|
return "RR";
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 查找配置表
|
|
|
|
/// </summary>
|
|
|
|
/// <returns></returns>
|
|
|
|
public string GetAppConfigValue(string pConfigCode)
|
|
|
|
{
|
|
|
|
var AppConfig = _agent.InvokeServiceFunction<AppConfig>(B9IPCService.AppConfigBLL_Get.ToString(), pConfigCode);
|
|
|
|
|
|
|
|
if (AppConfig != null)
|
|
|
|
return AppConfig.Value;
|
|
|
|
else
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|