| | |
| | | SN, |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 完成状态 |
| | | /// </summary> |
| | | public enum Statuss |
| | | { |
| | | /// <summary> |
| | | /// 扫描机器编码完成 |
| | | /// </summary> |
| | | [Description("机器编码完成")] |
| | | SmtCodeOK, |
| | | /// <summary> |
| | | /// 扫描槽位完成 |
| | | /// </summary> |
| | | [Description("槽位完成")] |
| | | SlotNoOK, |
| | | /// <summary> |
| | | /// 扫描飞达完成 |
| | | /// </summary> |
| | | [Description("Feeder完成")] |
| | | FeederOK, |
| | | /// <summary> |
| | | /// 扫描料盘SN完成 |
| | | /// </summary> |
| | | [Description("料盘码完成")] |
| | | SnOK, |
| | | /// <summary> |
| | | /// 当前机器完成 |
| | | /// </summary> |
| | | [Description("当前机器完成")] |
| | | CurrCompleted, |
| | | /// <summary> |
| | | /// 全部完成 |
| | | /// </summary> |
| | | [Description("全部完成")] |
| | | Completed, |
| | | } |
| | | |
| | | #endregion Propertys & Variables |
| | | |
| | | #region Functions |
| | |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | public async Task<ApiAction> ScanItem(SmtLoadingInput input) |
| | | public async Task<ApiAction<SmtLoadingReturn>> ScanItem(SmtLoadingInput input) |
| | | { |
| | | var action = new ApiAction(); |
| | | var action = new ApiAction<SmtLoadingReturn>(); |
| | | try |
| | | { |
| | | if (input.Code.IsNullOrEmpty()) |
| | |
| | | action = ExecuteSN(input); |
| | | break; |
| | | } |
| | | if (!action.IsSuccessed) { return action; } |
| | | |
| | | //02保存上料数据 |
| | | |
| | |
| | | return action; |
| | | } |
| | | |
| | | private ApiAction ExecuteSmtCode(SmtLoadingInput input) { |
| | | var action = new ApiAction(); |
| | | /// <summary> |
| | | /// 扫描机器编码操作 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | private ApiAction<SmtLoadingReturn> ExecuteSmtCode(SmtLoadingInput input) { |
| | | var action = new ApiAction<SmtLoadingReturn>(); |
| | | SmtLoadingReturn loadingReturn = new(); |
| | | try |
| | | { |
| | | if (Biz.Db.Queryable<SMT_WO_TABLE>().Where(x => x.WORK_ORDER == input.moCode && x.LINE_CODE == input.lineCode && x.PROD_CODE == input.prodCode && x.SMT_CODE == input.Code).Any()) |
| | |
| | | CurrSmtCode = input.Code; |
| | | action.IsSuccessed = true; |
| | | action.LocaleMsg = Biz.L($"机器编码验证通过!"); |
| | | loadingReturn.SmtCode = CurrSmtCode; |
| | | loadingReturn.Step = (int)Step_Types.SmtCode; |
| | | loadingReturn.Status = (int)Statuss.SmtCodeOK; |
| | | } |
| | | else |
| | | { |
| | | action.IsSuccessed = false; |
| | | action.LocaleMsg = Biz.L($"料站表中不存在此机器编码,请确认料站表是否正确上传!"); |
| | | } |
| | | action.Data = loadingReturn; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | return action; |
| | | } |
| | | |
| | | private ApiAction ExecuteSlotNo(SmtLoadingInput input) |
| | | /// <summary> |
| | | /// 扫描槽位操作 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | private ApiAction<SmtLoadingReturn> ExecuteSlotNo(SmtLoadingInput input) |
| | | { |
| | | var action = new ApiAction(); |
| | | var action = new ApiAction<SmtLoadingReturn>(); |
| | | SmtLoadingReturn loadingReturn = new(); |
| | | try |
| | | { |
| | | if (Biz.Db.Queryable<SMT_WO_TABLE>().Where(x => x.WORK_ORDER == input.moCode && x.LINE_CODE == input.lineCode && x.PROD_CODE == input.prodCode && x.SMT_CODE == CurrSmtCode && x.SLOT_NO == input.Code).Any()) |
| | |
| | | CurrSlotNo = input.Code; |
| | | action.IsSuccessed = true; |
| | | action.LocaleMsg = Biz.L($"槽位验证通过!"); |
| | | loadingReturn.SmtCode = CurrSmtCode; |
| | | loadingReturn.SlotNo = CurrSlotNo; |
| | | loadingReturn.Step = (int)Step_Types.SlotNo; |
| | | loadingReturn.Status = (int)Statuss.SlotNoOK; |
| | | loadingReturn.LoadingCount = Biz.Db.Queryable<SMT_LOADING>().Where(x=> x.WORK_ORDER == input.moCode && x.LINE_CODE == input.lineCode && x.PROD_CODE == input.prodCode && x.SMT_CODE == CurrSmtCode && x.SLOT_NO == input.Code).Count(); |
| | | } |
| | | else |
| | | { |
| | | action.IsSuccessed = false; |
| | | action.LocaleMsg = Biz.L($"此槽位[{input.Code}]不存在或料站表未上传!"); |
| | | } |
| | | action.Data = loadingReturn; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | return action; |
| | | } |
| | | |
| | | private ApiAction ExecuteFeeder(SmtLoadingInput input) |
| | | /// <summary> |
| | | /// 扫描飞达操作 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | private ApiAction<SmtLoadingReturn> ExecuteFeeder(SmtLoadingInput input) |
| | | { |
| | | var action = new ApiAction(); |
| | | var action = new ApiAction<SmtLoadingReturn>(); |
| | | try |
| | | { |
| | | |
| | | var _feeder = Biz.Db.Queryable<SMT_FEEDER>().Where(x => x.FEEDER_CODE == input.Code).First(); |
| | | //检查飞达保养维护情况 |
| | | if (_feeder.FEEDER_TYPE.IsNullOrEmpty()) |
| | | { |
| | | action.IsSuccessed = false; |
| | | action.LocaleMsg = Biz.L($"此飞达[{input.Code}]未维护类型信息!"); |
| | | return action; |
| | | } |
| | | if (_feeder.FEEDER_TYPE != input.feederType) |
| | | { |
| | | action.IsSuccessed = false; |
| | | action.LocaleMsg = Biz.L($"此飞达[{input.Code}]Feeder类型不一致!要求的类型:[{_feeder.FEEDER_TYPE}];当前Feeder的类型:[{input.feederType}]"); |
| | | return action; |
| | | } |
| | | if (_feeder.USED_COUNT >= _feeder.MAX_COUNT) |
| | | { |
| | | action.IsSuccessed = false; |
| | | action.LocaleMsg = Biz.L($"此飞达[{input.Code}]已达最大使用次数,请保养后再使用!"); |
| | | return action; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | return action; |
| | | } |
| | | |
| | | private ApiAction ExecuteSN(SmtLoadingInput input) |
| | | /// <summary> |
| | | /// 扫描物料条码操作 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | private ApiAction<SmtLoadingReturn> ExecuteSN(SmtLoadingInput input) |
| | | { |
| | | var action = new ApiAction(); |
| | | var action = new ApiAction<SmtLoadingReturn>(); |
| | | try |
| | | { |
| | | |