using System; using System.Collections.Generic; using System.Data; using AutoMapper; using DataTransfersLibs.Models; using SysBaseLibs; using SysDataLibs.TableClass; namespace DataTransfersLibs.Service { public class TransDataService : Sys_Users_info { public TransDataService(DataRow poRow, DBConnSql poDbConn) : base(poRow) { if (poRow != null && poDbConn != null && poDbConn.IsOpened) { DbConn = poDbConn; if (IsMarketSys) { string lcSql = "select * from vwUserHasAllMarkets where UserId='" + UserID + "'"; rsQuery loQuery = DbConn.OpenQuery(lcSql); if (loQuery != null && loQuery.IsOpened && loQuery.RecCount > 0) { loQuery.MoveFirst(); MarketId = loQuery.GetString("MarketID"); } } } } public DBConnSql DbConn { get; } public string MarketId { get; } = ""; rsQuery _checkProTypes; private rsQuery CheckProTypes { get { if (_checkProTypes == null || !_checkProTypes.IsOpened) { string lcSql = " select * from CheckProjectType "; _checkProTypes = DbConn.OpenQuery(lcSql); } return _checkProTypes; } } rsQuery _checkItems; private rsQuery CheckItems { get { if (_checkItems == null || !_checkItems.IsOpened) { string lcSql = " select * from CheckItem"; _checkItems = DbConn.OpenQuery(lcSql); } return _checkItems; } } rsQuery _checkMethods; private rsQuery CheckMethods { get { if (_checkMethods == null || !_checkMethods.IsOpened) { string lcSql = " select * from CheckMethod"; _checkMethods = DbConn.OpenQuery(lcSql); } return _checkMethods; } } rsQuery _habitQuery; private rsQuery HabitQuery { get { if (_habitQuery == null || !_habitQuery.IsOpened) { string lcSql = "select " + Habitat_info.cHabitatID + "," + Habitat_info.cNames + " from " + Tn.Habitat; _habitQuery = DbConn.OpenQuery(lcSql); } return _habitQuery; } } //rsQuery _specialsQuery = null; //private rsQuery SpecialsQuery //{ // get // { // if (_specialsQuery == null || !_specialsQuery.IsOpened) // { // string lcSql = "select * from " + Tn.Specials; // _specialsQuery = DbConn.OpenQuery(lcSql); // } // return _specialsQuery; // } //} rsQuery _varietyCategoryQuery; private rsQuery VarietyCategoryQuery { get { if (_varietyCategoryQuery == null || !_varietyCategoryQuery.IsOpened) { string lcSql = "select * from " + Tn.VarietyCategory; _varietyCategoryQuery = DbConn.OpenQuery(lcSql); } return _varietyCategoryQuery; } } public string GetCheckProTypeIdByItemAndMothed(string pcItemId, string pcMothedId, string pcValueField, string pcItem = null, string pcMothed = null) { string lcRetVal = ""; pcItemId = string.IsNullOrEmpty(pcItemId)? TransCheckItem(pcItem): pcItemId; pcMothedId = string.IsNullOrEmpty(pcMothedId) ? TransCheckMothed(pcMothed): pcMothedId; if (CheckCach.CheckProjectCach.ContainsKey(pcItemId + "_" + pcMothedId)) { lcRetVal = CheckCach.CheckProjectCach[pcItemId + "_" + pcMothedId]; return lcRetVal; } if (pcItemId != null && pcMothedId != null && CheckProTypes != null && CheckProTypes.IsOpened) { if (CheckProTypes.GoToRecordByFieldsAndValues(CheckProjectType_info.cCheckItemId + "," + CheckProjectType_info.cCheckMethodId, pcItemId + "," + pcMothedId)) { lcRetVal = CheckProTypes.GetString(pcValueField); } else if (CheckProTypes.GoToRecordByFieldsAndValues(CheckProjectType_info.cCheckItemId, pcItemId)) { lcRetVal = CheckProTypes.GetString(pcValueField); } } if (!string.IsNullOrEmpty(lcRetVal)) { CheckCach.CheckProjectCach.Add(pcItemId + "_" + pcMothedId, lcRetVal); } return lcRetVal; } public string GetHabitIdByHabitName(string pcHabitName) { string lcRetVal = ""; if (HabitQuery != null && HabitQuery.IsOpened) { if (HabitQuery.GoToRecordByFieldsAndValues(Habitat_info.cNames, pcHabitName)) { return CheckProTypes.GetString(Habitat_info.cHabitatID); } } return lcRetVal; } public string TransResult(string pcValue) { pcValue = UtilStr.UAndT(pcValue); if (pcValue == "1" || pcValue == "合格") { return "合格"; } else { return "不合格"; } } public string TransCheckMothed(string pcValue) { string lcRetVal = null; if (pcValue == "速测法" || pcValue == "检测卡") { pcValue = "速测灵"; } if (pcValue == "检测仪") { pcValue = "速测仪"; } if (CheckCach.CheckMethodCach.ContainsKey(pcValue)) { lcRetVal = CheckCach.CheckMethodCach[pcValue]; return lcRetVal; } if (CheckMethods.GoToRecordByFieldsAndValues(CheckMethod_info.cCheckMethodName, pcValue)) { lcRetVal = CheckMethods.GetString(CheckMethod_info.cCheckMethodId); } if (!string.IsNullOrEmpty(lcRetVal)) { CheckCach.CheckMethodCach.Add(pcValue, lcRetVal); } return lcRetVal; } public string TransCheckItem(string pcItem) { string lcRetVal = null; if (pcItem == "残留农药") { pcItem = "农药残留"; } if (CheckCach.CheckItemCach.ContainsKey(pcItem)) { lcRetVal = CheckCach.CheckItemCach[pcItem]; return lcRetVal; } if (CheckItems.GoToRecordByFieldsAndValues(CheckItem_info.cCheckItemName, pcItem)) { lcRetVal = CheckItems.GetString(CheckItem_info.cCheckItemId); } if (!string.IsNullOrEmpty(lcRetVal)) { CheckCach.CheckItemCach.Add(pcItem, lcRetVal); } return lcRetVal; } public string GetSampleId(string pcSampleName) { string lcRetVal = ""; //if (SpecialsQuery != null && SpecialsQuery.IsOpened) //{ // if (SpecialsQuery.GoToRecordByFieldsAndValues(Specials_info.cName, pcSampleName)) // { // lcRetVal = SpecialsQuery.GetString(Specials_info.cName); // } //} if (CheckCach.VarietyCategoryCache.ContainsKey(pcSampleName)) { lcRetVal = CheckCach.VarietyCategoryCache[pcSampleName]; return lcRetVal; } if (VarietyCategoryQuery.GoToRecordByFieldsAndValues(VarietyCategory_info.cVarietyCategoryName, pcSampleName)) { lcRetVal = VarietyCategoryQuery.GetString(VarietyCategory_info.cVarietyCategoryNo); } if (!string.IsNullOrEmpty(lcRetVal)) { CheckCach.VarietyCategoryCache.Add(pcSampleName, lcRetVal); } return lcRetVal; } //public string GetLittleKindName(string pcSampleName) //{ // string lcRetVal = ""; // if (SpecialsQuery != null && SpecialsQuery.IsOpened) // { // if (SpecialsQuery.GoToRecordByFieldsAndValues(Specials_info.cName, pcSampleName)) // { // string lcLittleId = SpecialsQuery.GetString(Specials_info.cLittleKindID); // LittleKind_info loLittleKind = new LittleKind_info(lcLittleId, DBConn); // lcRetVal = loLittleKind.Name; // } // } // return lcRetVal; //} public CheckData GetCheckData(SingleCheckData poCheckData) { CheckData loCheckData = null; string lcSampleId = string.IsNullOrEmpty(poCheckData.SampleId) ? GetSampleId(poCheckData.SampleName) : poCheckData.SampleId; string lcCheckProTypeId = GetCheckProTypeIdByItemAndMothed(poCheckData.CheckItemNo, poCheckData.CheckMethodNo, CheckProjectType_info.cCheckProjectTypeID, poCheckData.CheckItem, poCheckData.CheckMethod); if (poCheckData.IsValid && lcCheckProTypeId != "") { loCheckData = new CheckData { BarCode = poCheckData.BarCode, CheckProjectTypeID = lcCheckProTypeId, CheckLimit = lcCheckProTypeId, CheckValue = poCheckData.Rate, CheckResult = TransResult(poCheckData.Result), CheckTime = poCheckData.CheckTime, CheckTotal = poCheckData.ChackTotal, CheckUnit = poCheckData.CheckOrg, CheckUser = poCheckData.Operator, ClientIndexID = poCheckData.SampleNo, CorpKind = poCheckData.CheckedOrgType, CorpName = poCheckData.CheckedOrg, GreatKindName = "", //【New】 CardIndex = poCheckData.CheckedOrgCardIndex, LicenseNo = poCheckData.CheckedOrgLicenseNo, UnitName = poCheckData.CheckedOrgUnitName, IdCode = poCheckData.CheckedOrgIdCode, CorpNameName = poCheckData.CheckedOrgName, PositionNo = poCheckData.CheckedOrgStallNo, HabitatID = string.IsNullOrEmpty(poCheckData.CheckDistrictNo)? GetHabitIdByHabitName(poCheckData.CheckDistrict): poCheckData.CheckDistrictNo, //默认自检 IsSelf = "1", MachineID = poCheckData.HardwareNo, MachineMaker = poCheckData.MachineMaker, MarketID = MarketId, Memo = poCheckData.Memo, ProduceDate = poCheckData.ProduceDate, ProduceUnit = poCheckData.ProduceOrg, SampleName = poCheckData.SampleName, SampleId = lcSampleId, SendDate = poCheckData.SendDate, UserID = UserID, UploadTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; } return loCheckData; } public CheckData_info GetCheckDataInfo(SingleCheckData poCheckData) { var loCheckData = GetCheckData(poCheckData); CheckData_info loCheckDataInfo = Mapper.Map(loCheckData); return loCheckDataInfo; } public bool InsertCheckData(SingleCheckData poCheckData) { bool lbRetVal = false; try { if (poCheckData != null) { CheckData_info loCheckData = GetCheckDataInfo(poCheckData); string lcSql = loCheckData.InsertSql() + ";\r\n"; var lcSampleId = loCheckData.SampleId; if (!string.IsNullOrWhiteSpace(lcSampleId)) { lcSql += " UPDATE VarietyCategory SET [CheckCount]=[CheckCount]+1 WHERE [VarietyCategoryNo]='" + lcSampleId + "'"; } if (DbConn.ExcuteSqlTran(lcSql)) lbRetVal = true; } } catch (Exception e) { this.LogError(e); } return lbRetVal; } } public static class CheckCach { public static Dictionary CheckProjectCach = new Dictionary(); public static Dictionary CheckItemCach = new Dictionary(); public static Dictionary CheckMethodCach = new Dictionary(); public static Dictionary VarietyCategoryCache = new Dictionary(); } }