💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
## **业务逻辑** 平板端包装产品组托的业务,已经有一个栈板码,现在扫一个内盒或者外箱(一个外箱有多个内盒)码,加入到栈板中,表示将一箱子组进了 一个托里面。组完后会播放一个提示音,界面上列表信息会多加一栏 ## **未优化源代码如下** ~~~ /// <summary>         /// 扫码一个箱码加入到栈板中         /// </summary>         public void btnTestSacn_Click()         {             //判断是移除箱号 还是 加入箱号             if (cb_delelte.Checked == true)             {                 //移除一个箱号                 try                 {                     TaskHelper.TaskRun(this, async () =>                     {                         if (currentPalletDetailDto == null || currentPalletNo == "")                         {                             ShowMessageInvoke("请先创建或选择栈板号,再进行删除箱码");                             throw new Exception("请先创建或选择栈板号,再进行删除箱码");                         }                         PalletDetailDto isExist = currentPalletDetailDto.FirstOrDefault(e => e.CARTONNO == txtOutBoxCode.Text);                         if (isExist == null)                         {                             ShowMessageInvoke("当前栈板内无该箱码,无法删除");                             throw new Exception("当前栈板内无该箱码,无法删除");                         }                         if (txtOutBoxCode.Text.Contains("IN"))                         {                         }                         else if (txtOutBoxCode.Text.Contains("OUT"))                         {                         }                         else                         {                             ShowMessageInvoke("标签类型出现错误");                             throw new Exception("标签类型出现错误");                         }                         DeletePalletDetailInput deletePalletDetailInput = new DeletePalletDetailInput()                         {                             CartonNo = txtOutBoxCode.Text,                             PalletNo = currentPalletNo                         };                         ApiResultDto<DeletePalletDetailDto> ret = await RemoteService.palletCartonPackAppService.deletePalletDetails(deletePalletDetailInput);                         if (!string.IsNullOrEmpty(ret.ErrorInfo.Message))                         {                             ShowMessageInvoke(ret.ErrorInfo.Message);                             throw new Exception(ret.ErrorInfo.Message);                         }                         if (ret.Result == null)                         {                             ShowMessageInvoke($"箱号条码为:【" + txtOutBoxCode.Text + "】无法删除");                             throw new Exception($"箱号条码为:【" + txtOutBoxCode.Text + "】无法删除");                         }                         TaskHelper.ThreadInvokerControl(this, () =>                         {                             PalletDetailDto remoteDeleteItem = ret.Result.DeleteList.First();                             PalletDetailDto localDeleteItem = null;                             foreach (PalletDetailDto item in currentPalletDetailDto)                             {                                 if (item.CARTONNO.Equals(remoteDeleteItem.CARTONNO))                                 {                                     localDeleteItem = item;                                     break;                                 }                             }                             currentPalletDetailDto.Remove(localDeleteItem);                             int location = -1;                             for (int i = 0; i < _dtDetail.Rows.Count; i++)                             {                                 if (_dtDetail.Rows[i]["RCard"].ToString().Equals(remoteDeleteItem.CARTONNO))                                 {                                     location = i;                                 }                             }                             if (location != -1)                             {                                 _dtDetail.Rows.RemoveAt(location);                             }                             //System.Media.SystemSounds.Exclamation.Play();                             playScanVoice();                             currentInstalledNumber -= remoteDeleteItem.Qty;                             currentInstalledOutBoxNumber -= 1;                             txtOutBoxCode.Text = "";                             txtInstalledNumber.Text = currentInstalledNumber.ToString();                             txtInstalledBoxNumber.Text = currentInstalledOutBoxNumber.ToString();                         });                     }, (obj) => { TaskCallback(obj); });                 }                 catch (Exception ex)                 {                     ShowMessageInvoke(ex.Message);                 };             }             else {                 //往托里 加入一个箱号                 try                 {                     TaskHelper.TaskRun(this, async () =>                     {                         if (currentPalletDetailDto == null || currentPalletNo == "")                         {                             ShowMessageInvoke($"请先创建或选择栈板号,再进行扫码组栈");                             throw new Exception("请先创建或选择栈板号,再进行扫码组栈");                         }                         PalletDetailDto isExist = currentPalletDetailDto.FirstOrDefault(e => e.CARTONNO == txtOutBoxCode.Text);                         if (isExist != null)                         {                             ShowMessageInvoke($"当前栈板内已有该箱码,无法扫码");                             throw new Exception("当前栈板内已有该箱码,无法扫码");                         }                         AddPalletDetailInput addPalletDetailInput = new AddPalletDetailInput()                         {                             CartonNo = txtOutBoxCode.Text,                             PalletNo = currentPalletNo                         };                         // 判断是内盒  还是 外箱                         if (txtOutBoxCode.Text.Contains("IN"))                         {                             addPalletDetailInput.Type = "内箱";                         }                         else if (txtOutBoxCode.Text.Contains("OUT"))                         {                             addPalletDetailInput.Type = "外箱";                         }                         else                         {                             ShowMessageInvoke("标签类型出现错误");                             throw new Exception("标签类型出现错误");                         }                         //当前箱号 和 栈板做关联,并返回条码信息 // 这是一个非常耗时的操作                         ApiResultDto<PalletDetailDto> ret = await RemoteService.palletCartonPackAppService.deleteOldAndAddPalletDetails(addPalletDetailInput);                         if (!string.IsNullOrEmpty(ret.ErrorInfo.Message))                         {                             throw new Exception(ret.ErrorInfo.Message);                         }                         if (ret.Result == null)                         {                             ShowMessageInvoke($"箱号条码为:【" + txtOutBoxCode.Text + "】无效");                             throw new Exception($"箱号条码为:【" + txtOutBoxCode.Text + "】无效");                         }                         TaskHelper.ThreadInvokerControl(this, () =>                         {                             DataRow dr = _dtDetail.NewRow();                                                          if (ret.Result.Type.Equals("外箱"))                             {                                 currentInstalledNumber += ret.Result.Qty;//总数统计                             }                             else                             {                                 currentInstalledNumber += 1;//内盒每次只增加一个                             }                             dr["RItemName"] = ret.Result.ItemName;                             dr["ROem"] = ret.Result.OemNo;                             dr["RCard"] = ret.Result.CARTONNO;                             dr["RelationQty3"] = ret.Result.Qty;                             _dtDetail.Rows.Add(dr);                             currentInstalledOutBoxNumber = _dtDetail.Rows.Count;//盒子个数,就是条码个数                             //System.Media.SystemSounds.Exclamation.Play();                             //播放声音                             playScanVoice();                             currentPalletDetailDto.Add(ret.Result);                             txtInstalledNumber.Text = currentInstalledNumber.ToString();                             txtInstalledBoxNumber.Text = currentInstalledOutBoxNumber.ToString();                         });                     }, (obj) => { TaskCallback(obj); });                 }                 catch (Exception ex)                 {                     ShowMessageInvoke(ex.Message);                 };             }         } // 提示音 public void playScanVoice()         {             System.Media.SoundPlayer player = new System.Media.SoundPlayer(FTP.SourcePath);             player.Play();         } ~~~