杨张扬
2 天以前 6f89acbf74c6838db518a9f2b6c83f0ab0d97e7f
余料回库流程增加绑定和解绑,RFID校验必须校验开头
5个文件已修改
219 ■■■■■ 已修改文件
api/ApiHelper.cs 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/ApiModel.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/MoboxController.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
device/TcpServer.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/TN_CG_Detail.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/ApiHelper.cs
@@ -326,6 +326,162 @@
        }
        /// <summary>
        /// 余料解绑出库
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        internal static SimpleResult SurplusUnBind(SurplusUnBindInfo model)
        {
            LogHelper.Info("触发API:余料绑定入库" + JsonConvert.SerializeObject(model), "API");
            var result = new SimpleResult();//返回结果
            try
            {
                if (string.IsNullOrWhiteSpace(model.spec))
                {
                    result.resultCode = -1;
                    result.resultMsg = $"规格参数不能为空,也不能为空字符串";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
                if (string.IsNullOrWhiteSpace(model.loc))
                {
                    result.resultCode = -1;
                    result.resultMsg = $"货位参数不能为空,也不能为空字符串";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
                if (model.weight <= 0)
                {
                    result.resultCode = -1;
                    result.resultMsg = $"重量参数必须大于0";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
                var db = new SqlHelper<object>().GetInstance();
                var cgDetail = db.Queryable<TN_CG_Detail>()
                    .First(a => a.S_LOC_CODE == model.loc
                    && a.S_USE_TYPE == "余料"
                    &&(a.S_ITEM_SPEC == model.spec || a.S_SPE == model.spec)
                    && a.F_QTY == model.weight);
                if (cgDetail == null)
                {
                    result.resultCode = -1;
                    result.resultMsg = $"库位{model.loc}对应的物料明细不存在,无需出库";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
                using (var trans = db.Ado.UseTran())
                {
                    if (db.Deleteable<TN_CG_Detail>(cgDetail).ExecuteCommand() > 0 )
                    {
                        trans.CommitTran();
                        result.resultCode = 0;
                        result.resultMsg = $"出库成功,货位:{model.loc},解绑的货品为:{JsonConvert.SerializeObject(cgDetail)}";
                        LogHelper.Info(result.resultMsg);
                        return result;
                    }
                    else
                    {
                        trans.RollbackTran();
                        result.resultCode = -1;
                        result.resultMsg = $"出库失败,货位:{model.loc}";
                        LogHelper.Info(result.resultMsg);
                        return result;
                    }
                }
            }
            catch (Exception ex)
            {
                result.resultCode = -1;
                result.resultMsg = $"PDA满托复检判断,发生了异常:{ex.Message}";
                LogHelper.Info(result.resultMsg);
                return result;
            }
        }
        /// <summary>
        /// 余料绑定入库
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        internal static SimpleResult SurplusBind(SurplusBindInfo model)
        {
            LogHelper.Info("触发API:余料绑定入库" + JsonConvert.SerializeObject(model), "API");
            var result = new SimpleResult();//返回结果
            try
            {
                if (string.IsNullOrWhiteSpace(model.spec))
                {
                    result.resultCode = -1;
                    result.resultMsg = $"规格参数不能为空,也不能为空字符串";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
                if (string.IsNullOrWhiteSpace(model.loc))
                {
                    result.resultCode = -1;
                    result.resultMsg = $"货位参数不能为空,也不能为空字符串";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
                if (model.weight <= 0)
                {
                    result.resultCode = -1;
                    result.resultMsg = $"重量参数必须大于0";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
                var db = new SqlHelper<object>().GetInstance();
                var cgDetail = new TN_CG_Detail()
                {
                    S_ITEM_SPEC = model.spec,
                    S_SPE = model.spec,
                    F_QTY = model.weight,
                    S_LOC_CODE = model.loc,
                    S_USE_TYPE = "余料",
                };
                using (var trans = db.Ado.UseTran())
                {
                    if (db.Insertable<TN_CG_Detail>(cgDetail).ExecuteCommand() > 0 )
                    {
                        trans.CommitTran();
                        result.resultCode = 0;
                        result.resultMsg = $"入库成功,货位:{model.loc},已绑定货品,{JsonConvert.SerializeObject(cgDetail)}";
                        LogHelper.Info(result.resultMsg);
                        return result;
                    }
                    else
                    {
                        trans.RollbackTran();
                        result.resultCode = -1;
                        result.resultMsg = $"入库失败,货位:{model.loc}";
                        LogHelper.Info(result.resultMsg);
                        return result;
                    }
                }
            }
            catch (Exception ex)
            {
                result.resultCode = -1;
                result.resultMsg = $"PDA满托复检判断,发生了异常:{ex.Message}";
                LogHelper.Info(result.resultMsg);
                return result;
            }
        }
        /// <summary>
        /// 线边空托到空托堆叠区
        /// </summary>
        /// <param name="model"></param>
api/ApiModel.cs
@@ -487,5 +487,23 @@
            public int cntCount { get; set; }//容器数量
            public string staff { get; set; } = "None";//操作人
        }
        public class SurplusBindInfo
        {
            public string loc { get; set; }//货位点
            public string spec { get; set; }//规格
            public float weight { get; set; }//重量
        }
        public class SurplusUnBindInfo
        {
            public string loc { get; set; }//货位点
            public string spec { get; set; }//规格
            public float weight { get; set; }//重量
        }
    }
}
api/MoboxController.cs
@@ -237,5 +237,29 @@
        {
            return ApiHelper.EmptyLineToEmptyMax(model);
        }
        /// <summary>
        /// 余料绑定入库
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("SurplusBind")]
        public SimpleResult SurplusBind(SurplusBindInfo model)
        {
            return ApiHelper.SurplusBind(model);
        }
        /// <summary>
        /// 余料解绑出库
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("SurplusUnBind")]
        public SimpleResult SurplusUnBind(SurplusUnBindInfo model)
        {
            return ApiHelper.SurplusUnBind(model);
        }
    }
}
device/TcpServer.cs
@@ -147,13 +147,18 @@
                            saoMa[remote_ip] = 3;//未扫到码
                        }
                        if (messageBytes.Length >= 21 && isCheck[remote_ip])
                        if (messageBytes.Length >= 21
                            && isCheck[remote_ip]
                            && messageBytes[0] == 0xCC
                            && messageBytes[1] == 0xFF
                            && messageBytes[2] == 0xFF)
                        {
                            byte[] rfid = new byte[12];
                            Array.Copy(messageBytes, 9, rfid, 0, 12);
                            string rfids16 = BitConverter.ToString(rfid);
                            string rfids = Encoding.ASCII.GetString(rfid);
                            string rfids16 = BitConverter.ToString(messageBytes);
                            string rfids = Encoding.ASCII.GetString(rfid);//截取字符串
                            LogHelper.Info($"读卡器校验对应容器号:{rfids},其16进制形式:{rfids16}");
                            if (ScanCodeHelper.Analysis(remote_ip, rfids))//校验RFID
                            {
models/TN_CG_Detail.cs
@@ -43,5 +43,15 @@
        /// 拆盘时的唯一键,用于追踪被拆的物料
        /// </summary>
        public string S_Separate_ID { get; set; }
        /// <summary>
        /// 对应货位
        /// </summary>
        public string S_LOC_CODE { get; set; }
        /// <summary>
        /// 货品的使用状态,余料
        /// </summary>
        public string S_USE_TYPE { get; set; }
    }
}