SystemSetting_LabelMaintain.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. using LabelManager2;
  2. using System;
  3. using System.Data;
  4. using System.Drawing;
  5. using System.Text;
  6. using System.Threading;
  7. using System.Windows.Forms;
  8. using UAS_MES.CustomControl.TextBoxWithIcon;
  9. using UAS_MES.DataOperate;
  10. using UAS_MES.Properties;
  11. using UAS_MES.PublicMethod;
  12. namespace UAS_MES.SystemSetting
  13. {
  14. public partial class SystemSetting_LabelMaintain : Form
  15. {
  16. DataHelper dh;
  17. DataTable dt;
  18. //设置Grid中Combox的静态数据,这个格式是必须的,#前面是展示值,#后面是实际值
  19. string[] labeltype = { "机身标#机身标", "彩盒标#彩盒标", "卡通箱标#卡通箱标", "大箱标#大箱标", "栈板标#栈板标" };
  20. string[] defaultype = { "是#1", "否#0" };
  21. //用于拼接条件查询
  22. StringBuilder condition = new StringBuilder();
  23. LogStringBuilder sql = new LogStringBuilder();
  24. /*CodeSoft新建打印机引擎*/
  25. ApplicationClass lbl;
  26. Document doc;
  27. /*BarTender新建打印机引擎*/
  28. //private Engine engine = null;
  29. //private LabelFormatDocument format ;
  30. //点击行的LabelCode
  31. string LabelCode = "";
  32. //模板的路径
  33. string LabelPath = "";
  34. //参数个数
  35. int ParamNum;
  36. //标签参数的数组
  37. string[] ParamName;
  38. //模板编号的ID
  39. string pl_id1;
  40. //用于保存更新的模板ID
  41. string pl_id2 = "";
  42. //Label表的主键,用于弹窗的传参
  43. string La_id1;
  44. //添加在grid末列的操作列
  45. DataGridViewImageColumn PerviewColumn = new DataGridViewImageColumn
  46. {
  47. Image = Resources.preview_16px_25980_easyicon_net,
  48. Width = 40,
  49. Name = "预览",
  50. ToolTipText = "预览模板参数",
  51. Tag = "Read",
  52. AutoSizeMode = DataGridViewAutoSizeColumnMode.None
  53. };
  54. DataGridViewImageColumn OperateColumn = new DataGridViewImageColumn
  55. {
  56. Image = Resources.write_15_893687707641px_1181413_easyicon_net,
  57. Width = 40,
  58. Name = "编辑",
  59. ToolTipText = "编辑模板",
  60. Tag = "Read",
  61. AutoSizeMode = DataGridViewAutoSizeColumnMode.None
  62. };
  63. Thread thread;
  64. AutoSizeFormClass asc = new AutoSizeFormClass();
  65. public SystemSetting_LabelMaintain()
  66. {
  67. InitializeComponent();
  68. }
  69. //创建打印进程
  70. private void NewPrint()
  71. {
  72. lbl = new ApplicationClass();
  73. }
  74. private void 条码维护_Load(object sender, EventArgs e)
  75. {
  76. thread = new Thread(NewPrint);
  77. thread.Start();
  78. asc.controllInitializeSize(this);
  79. dh = new DataHelper();
  80. condition.Append(" ");
  81. LoadData();
  82. pr_code.FormName = Name;
  83. pr_code.SetValueField = new string[] { "pr_code" };
  84. pr_code.TableName = "product";
  85. pr_code.SelectField = "pr_code # 物料编号,pr_detail # 物料名称,pr_kind # 物料种类,pr_spec # 物料规格";
  86. la_code.FormName = Name;
  87. la_code.SetValueField = new string[] { "la_code" };
  88. la_code.TableName = "label";
  89. la_code.SelectField = "la_code # 标签编号,la_name # 标签名称";
  90. //加载下拉框的静态值
  91. BaseUtil.SetDgvColumnComboxData((DataGridViewComboBoxColumn)LabelDataGridView.Columns["pl_labeltype"], "pl_labeltype", "display", "value", labeltype);
  92. BaseUtil.SetDgvColumnComboxData((DataGridViewComboBoxColumn)LabelDataGridView.Columns["pl_isdefault"], "pl_isdefault", "display", "value", defaultype);
  93. ChooseAll.ChooseAll(LabelDataGridView);
  94. pr_code2.KeyDown += ScreenEvent;
  95. pr_detail.KeyDown += ScreenEvent;
  96. pr_spec.KeyDown += ScreenEvent;
  97. }
  98. private void LabelDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
  99. {
  100. if (LabelDataGridView.Columns[e.ColumnIndex].HeaderText == "预览")
  101. {
  102. //获取路径和标签名称
  103. LabelPath = LabelDataGridView.Rows[e.RowIndex].Cells["pl_labelurl"].Value.ToString();
  104. LabelCode = LabelDataGridView.Rows[e.RowIndex].Cells["pl_labelcode"].Value.ToString();
  105. pl_id1 = LabelDataGridView.Rows[e.RowIndex].Cells["pl_id"].Value.ToString();
  106. La_id1 = LabelDataGridView.Rows[e.RowIndex].Cells["la_id"].Value.ToString();
  107. if (CodeSoft.Checked)
  108. {
  109. string LabelName = LabelDataGridView.Rows[e.RowIndex].Cells["pl_labelname"].Value.ToString();
  110. doc = lbl.Documents.Open(BaseUtil.GetLabelUrl(LabelPath, LabelName));
  111. if (doc == null)
  112. {
  113. MessageBox.Show("指定位置文件不存在");
  114. return;
  115. }
  116. ParamNum = doc.Variables.FreeVariables.Count;
  117. //去除之前添加的控件
  118. for (int i = 0; i < (ParamName == null ? 0 : ParamName.Length); i++)
  119. {
  120. if (this.Controls["LabelParam"].Controls[ParamName[i] + "_label"] != null)
  121. {
  122. this.Controls["LabelParam"].Controls.Remove(this.Controls["LabelParam"].Controls[ParamName[i] + "_label"]);
  123. this.Controls["LabelParam"].Controls.Remove(this.Controls["LabelParam"].Controls[ParamName[i]]);
  124. }
  125. }
  126. ParamName = new string[ParamNum];
  127. for (int i = 0; i < ParamNum; i++)
  128. {
  129. ParamName[i] = doc.Variables.FreeVariables.Item(i + 1).Name;
  130. }
  131. int y = 20;
  132. for (int i = 0; i < ParamName.Length; i++)
  133. {
  134. //变量的名称Label
  135. Label Param = new Label();
  136. Param.Text = ParamName[i];
  137. Param.Name = ParamName[i] + "_label";
  138. Param.AutoSize = true;
  139. Param.Anchor = AnchorStyles.Left;
  140. Param.Anchor = AnchorStyles.Top;
  141. Param.Location = new Point(30, y + 5);
  142. this.Controls["LabelParam"].Controls.Add(Param);
  143. //维护变量的打印测试参数
  144. EnterTextBox TempParam = new EnterTextBox();
  145. TempParam.Anchor = AnchorStyles.Left;
  146. TempParam.Anchor = AnchorStyles.Top;
  147. TempParam.Name = ParamName[i];
  148. TempParam.Location = new Point(110, y);
  149. y = y + 30;
  150. TempParam.Size = new Size(170, 22);
  151. this.Controls["LabelParam"].Controls.Add(TempParam);
  152. y = y + 30;
  153. }
  154. doc.Close();
  155. }
  156. }
  157. if (LabelDataGridView.Columns[e.ColumnIndex].HeaderText == "编辑")
  158. {
  159. if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
  160. {
  161. LabelPath = LabelDataGridView.Rows[e.RowIndex].Cells["pl_labelurl"].Value.ToString();
  162. string LabelName = LabelDataGridView.Rows[e.RowIndex].Cells["pl_labelname"].Value.ToString();
  163. pr_code.Text = LabelDataGridView.Rows[e.RowIndex].Cells["pr_code1"].Value.ToString();
  164. la_code.Text = LabelDataGridView.Rows[e.RowIndex].Cells["pl_labelcode"].Value.ToString();
  165. la_name.Text = LabelDataGridView.Rows[e.RowIndex].Cells["pl_labelname"].Value.ToString();
  166. la_type.Text = LabelDataGridView.Rows[e.RowIndex].Cells["pl_labeltype"].Value.ToString();
  167. FolderPath.Text = ftpOperater.DownLoadTo;
  168. pl_id2 = LabelDataGridView.Rows[e.RowIndex].Cells["pl_id"].Value.ToString();
  169. System.Diagnostics.Process.Start(BaseUtil.GetLabelUrl(LabelPath, LabelName));
  170. }
  171. }
  172. }
  173. private void Screen_Click(object sender, EventArgs e)
  174. {
  175. sql.Clear();
  176. condition.Clear();
  177. //如果条件全部为空的时候
  178. if (pr_code2.Text == "" && pr_detail.Text == "" && pr_spec.Text == "")
  179. {
  180. LoadData();
  181. }
  182. else
  183. {
  184. sql.Append("select pl_labelurl,pl_labeltype,pl_isdefault,pl_prodcode,pl_id,pl_labelcode,pl_detno,pl_labelsoft,pr_detail,pr_spec,pr_code from productlabel left join product on pl_prodcode=pr_code");
  185. //设置筛选的条件
  186. condition.Append(BaseUtil.GetScreenSqlCondition(pr_code2, pr_detail, pr_spec));
  187. //最终刷选条件拼接成的sql
  188. LoadData();
  189. }
  190. }
  191. private void Update_Click(object sender, EventArgs e)
  192. {
  193. string LabelSoft = "";
  194. //需要处理新增的行和原有数据然后更新的行
  195. if (CodeSoft.Checked)
  196. {
  197. LabelSoft = "CodeSoft";
  198. }
  199. DataTable dt = (DataTable)LabelDataGridView.DataSource;
  200. //如果有改变的行才传递到后台
  201. if (dt.GetChanges() != null)
  202. {
  203. //如果是新增的默认加上Radio当前选中的打印软件
  204. for (int i = 0; i < LabelDataGridView.Rows.Count; i++)
  205. {
  206. if (LabelDataGridView.Rows[i].Cells["pl_labelsoft"].Value.ToString() == "")
  207. {
  208. LabelDataGridView.Rows[i].Cells["pl_labelsoft"].Value = LabelSoft;
  209. }
  210. }
  211. string sql = "Insert into productlabel (PL_ID,PL_PRODCODE,PL_LABELTYPE,PL_LABELCODE,PL_LABELURL,PL_DETNO,PL_LABELSOFT,PL_ISDEFAULT) values( ProductLabel_seq.nextval,'" + pr_code.Text + "',:PL_LABELTYPE,:PL_LABELCODE,:PL_LABELURL,:PL_DETNO,:PL_LABELSOFT,:PL_ISDEFAULT )";
  212. dh.SaveDataTable(dt.GetChanges(), "productlabel", "pl_id", sql.ToLower());
  213. LoadData();
  214. }
  215. }
  216. private void DeleteDetail_Click(object sender, EventArgs e)
  217. {
  218. string[] deleteid = new string[LabelDataGridView.RowCount];
  219. for (int i = 0; i < LabelDataGridView.RowCount; i++)
  220. {
  221. deleteid[i] = LabelDataGridView.Rows[i].Cells["pl_id"].Value.ToString();
  222. }
  223. dh.DeleteDataByID("productlabel", "pl_id", deleteid);
  224. LoadData();
  225. }
  226. private void OpenFolder_Click(object sender, EventArgs e)
  227. {
  228. //根据勾选的不同设置不同的文件后缀过滤
  229. if (CodeSoft.Checked)
  230. {
  231. openFileDialog1.Filter = "(*.lab)|*.lab";
  232. }
  233. DialogResult result = openFileDialog1.ShowDialog();
  234. if (result == DialogResult.OK)
  235. {
  236. string FullPath = openFileDialog1.FileName;
  237. FolderPath.Text = FullPath.Substring(0, FullPath.LastIndexOf("\\"));
  238. la_name.Text = FullPath.Substring(FullPath.LastIndexOf("\\") + 1);
  239. for (int i = 0; i < LabelDataGridView.Rows.Count; i++)
  240. {
  241. if (LabelDataGridView.Rows[i].Cells["Choose"].Value != null)
  242. {
  243. if ((bool)LabelDataGridView.Rows[i].Cells["Choose"].Value == true)
  244. {
  245. LabelDataGridView.Rows[i].Cells["pl_labelurl"].Value = FolderPath.Text;
  246. }
  247. }
  248. }
  249. }
  250. }
  251. private void LabelDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
  252. {
  253. if (LabelDataGridView.Columns[e.ColumnIndex].Name == "pl_isdefault")
  254. {
  255. if (e.Value != null)
  256. {
  257. switch (e.Value.ToString())
  258. {
  259. case "0":
  260. e.Value = "否";
  261. break;
  262. case "1":
  263. e.Value = "是";
  264. break;
  265. default:
  266. break;
  267. }
  268. }
  269. }
  270. }
  271. private void LabelDataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
  272. {
  273. //覆盖参数错误的事件,使得不会报错
  274. }
  275. private void LoadData()
  276. {
  277. //如果没有任何筛选条件直接选取productlabel的数据
  278. if (sql.GetString().Length == 0)
  279. {
  280. sql.Clear();
  281. sql.Append("select la_id,pl_labelname,pl_labelurl,pl_labeltype,pl_isdefault,pl_prodcode,pl_id,pl_labelcode,pl_detno,pl_labelsoft,pr_detail,pr_spec,");
  282. sql.Append("pr_code from productlabel left join product on pl_prodcode=pr_code left join label on pl_labelcode=la_code");
  283. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  284. }
  285. else
  286. {
  287. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  288. }
  289. BaseUtil.FillDgvWithDataTable(LabelDataGridView, dt, PerviewColumn, OperateColumn);
  290. string Field = BaseUtil.GetGridViewSelectContent(LabelDataGridView);
  291. pagination1.BindDataToNavigator(LabelDataGridView, "productlabel left join product on pl_prodcode=pr_code left join label on pl_labelcode=la_code", Field, "pl_id", "", condition.Replace("where", "").ToString(), PerviewColumn, OperateColumn);
  292. }
  293. private void PrintTest_Click(object sender, EventArgs e)
  294. {
  295. if (LabelCode != "")
  296. {
  297. doc.Save();
  298. doc.PrintDocument();
  299. doc.Close();
  300. }
  301. }
  302. private void 产品标签维护_FormClosing(object sender, FormClosingEventArgs e)
  303. {
  304. //关闭所有的打印文件
  305. if (lbl.Documents != null)
  306. lbl.Documents.CloseAll();
  307. }
  308. private void Save_Click(object sender, EventArgs e)
  309. {
  310. if (la_code.Text != "" && la_type.Text != "" && FolderPath.Text != "" && pr_code.Text != "")
  311. {
  312. if (FTPShare.Checked)
  313. {
  314. string SoftWare = "CodeSoft";
  315. ftpOperater ftp = new ftpOperater();
  316. ftp.UpLoadFile(FolderPath.Text, la_name.Text);
  317. if (pl_id2 != "")
  318. {
  319. sql.Clear();
  320. sql.Append("update productlabel set pl_labelcode=:pl_labelcode,pl_labeltype=:pl_labeltype,pl_labelname=:pl_labelname,");
  321. sql.Append("pl_prodcode=:pl_prodcode where pl_id='" + pl_id2 + "'");
  322. dh.ExecuteSql(sql.GetString(), "update", la_code.Text, la_type.Text, la_name.Text, pr_code.Text);
  323. }
  324. else
  325. {
  326. sql.Clear();
  327. sql.Append("insert into productlabel (pl_id,pl_labelcode,pl_labeltype,pl_labelurl,pl_labelsoft,pl_labelname,pl_prodcode) values( productlabel_seq.nextval, ");
  328. sql.Append("'" + la_code.Text + "','" + la_type.Text + "','" + ftpOperater.FTPAddress + la_name.Text + "','" + SoftWare + "','" + la_name.Text + "','" + pr_code.Text + "')");
  329. dh.ExecuteSql(sql.GetString(), "insert");
  330. }
  331. pl_id2 = "";
  332. MessageBox.Show("保存成功!");
  333. sql.Clear();
  334. LoadData();
  335. }
  336. }
  337. else
  338. MessageBox.Show("所有参数必须填写");
  339. }
  340. private void 产品标签维护_SizeChanged(object sender, EventArgs e)
  341. {
  342. asc.controlAutoSize(this);
  343. }
  344. private void ScreenEvent(object sender, KeyEventArgs e)
  345. {
  346. if (e.KeyCode == Keys.Enter)
  347. Screen.PerformClick();
  348. }
  349. private void Delete_Click(object sender, EventArgs e)
  350. {
  351. string[] deleteid = new string[LabelDataGridView.RowCount];
  352. for (int i = 0; i < LabelDataGridView.RowCount; i++)
  353. {
  354. deleteid[i] = LabelDataGridView.Rows[i].Cells["pl_id"].Value.ToString();
  355. }
  356. dh.DeleteDataByID("productlabel", "pl_id", deleteid);
  357. LoadData();
  358. }
  359. }
  360. }