Example #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("1)futures_tick_data.csv");
            Console.WriteLine("2)spot_tick_data.csv");
            var    chose = Console.ReadKey(true).KeyChar;
            string path  = null;

            switch (chose)
            {
            case '1':
                path = "futures_tick_data.csv";
                break;

            case '2':
                path = "spot_tick_data.csv";
                break;

            default:
                Console.WriteLine("Не правильный ввод");
                Main(null);
                break;
            }
            var viewer = new ViewPart();

            do
            {
                Console.Clear();
                viewer.Lines = File.ReadAllLines(path).ToList();
                foreach (var item in viewer.GetPartLines())
                {
                    Console.WriteLine(item);
                }
                viewer.CommandKey(Console.ReadKey(true).Key);
            } while (true);
        }
Example #2
0
    protected void bindSelectedParts()
    {
        if (this.hidPartIDs.Value.Length == 0)
        {
            return;
        }
        string guids = this.hidPartIDs.Value;

        string[] gids = guids.Split('∑');

        //if (ViewState["Parts"] == null)
        //{
        //    ViewState["Parts"] = new List<ViewPart>();
        //}
        List <ViewPart> parts = GroupParts;

        foreach (object obj in gids)
        {
            ViewPart vp     = Service.GetViewPartByKey(obj.ToString());
            int      partid = int.Parse(obj.ToString());
            if (parts.Find(p => p.PartID == partid) == null)
            {
                parts.Add(vp);
            }
        }
        GroupParts = parts;
        bindGridViewTempPartResult();
    }
Example #3
0
    public static void BakeTexture(List <ViewPart> parts, Rect[] atlasUVOffsets, RenderTexture atlasRenderTexture)
    {
        BakeMaterialProperties bakeMaterialProperties = new BakeMaterialProperties();
        RenderTexture          active = RenderTexture.active;

        RenderTexture.active = atlasRenderTexture;
        GL.Clear(clearDepth: true, clearColor: true, new Color32(0, 0, 0, 0));
        for (int i = 0; i < parts.Count; i++)
        {
            ViewPart viewPart    = parts[i];
            Material material    = viewPart.GetMaterial(baking: true);
            Texture  maskTexture = viewPart.GetMaskTexture();
            viewPart.ApplyMaterialProperties(material);
            Rect rect = atlasUVOffsets[i];
            bakeMaterialProperties.AtlasOffsetU      = rect.x;
            bakeMaterialProperties.AtlasOffsetV      = rect.y;
            bakeMaterialProperties.AtlasOffsetScaleU = rect.width;
            bakeMaterialProperties.AtlasOffsetScaleV = rect.height;
            bakeMaterialProperties.Apply(material);
            atlasRenderTexture.DiscardContents();
            Graphics.Blit(maskTexture, atlasRenderTexture, material);
            viewPart.ResetMaterialProperties(material);
        }
        RenderTexture.active = active;
    }
Example #4
0
    private void GetParts()
    {
        // Auto generate the list of parts of the car
        foreach (Transform part in car.transform)
        {
            part.gameObject.AddComponent <MeshCollider>();
            part.gameObject.AddComponent <Highlight>();

            GameObject button = Instantiate(buttonPrefab);

            //Add the button to the Grid
            button.transform.SetParent(transform.Find("Grid").transform, false);
            button.transform.localScale = new Vector3(1, 1, 1);


            // Separate string by uppercase to generate name
            string[] splitName = Regex.Split(part.name, @"(?<!^)(?=[A-Z])");

            string name = string.Join(" ", splitName);


            button.GetComponentInChildren <TextMeshProUGUI>().SetText(name);

            Button tempButton = button.GetComponent <Button>();

            // Make 'click on button' have an System.Action to do the same thing as ViewPArt
            tempButton.onClick.AddListener(() => ViewPart?.Invoke(part.gameObject));
        }
    }
Example #5
0
    protected void lnkSelect_Click(object sender, EventArgs e)
    {
        string   partid = GetSelectedPartID(int.Parse((sender as LinkButton).CommandArgument));
        ViewPart vp     = Service.GetViewPartByKey(partid);
        string   str    = partid + "∑" + vp.PartCode + "∑" + vp.PartChineseName + "∑" + vp.PlantCode + "∑" + vp.DUNS;

        Page.RegisterStartupScript("Set", "<script>setReturnValue('" + str + "');</script>");
    }
Example #6
0
	public void SetViewPart(ViewPart viewPart)
	{
		mViewPart = viewPart;
		
		switch(mViewPart)
		{
		case ViewPart.VP_All:
			{
				mTargetTran = mTargetObj.transform;
				if(mTargetTran != null)
				{
					transform.parent = mTargetTran;
					transform.localPosition = new Vector3(0f,0.9f,2f);
				}
				GetComponent<Camera>().orthographic = false;
				GetComponent<Camera>().aspect = 190f / 232f;
				SetLightState(true);
				transform.LookAt(mTargetTran.position+Vector3.up*0.9f,Vector3.up);
				mBlurEffect.enabled = false;
			}
			break;
		case ViewPart.VP_Head:
			{
				mTargetTran = mTargetObj.transform.FindChild("Bip01/Bip01 Pelvis/Bip01 Spine1/Bip01 Spine2/Bip01 Spine3/Bip01 Neck/Bip01 Head");
				if(mTargetTran != null)
				{
					transform.parent = mTargetTran;
					transform.localPosition = -1 *new Vector3(0.06378798f,-0.2264594f,0.1151667f);
				}
				GetComponent<Camera>().orthographic = true;
				GetComponent<Camera>().orthographicSize = 0.19f;
				GetComponent<Camera>().aspect = 1;
				transform.LookAt(mTargetTran.position,Vector3.up);
				mBlurEffect.enabled = false;
			}
			break;
		case ViewPart.VP_BigHead:
			{
				mTargetTran = mTargetObj.transform.FindChild("Bip01/Bip01 Pelvis/Bip01 Spine1/Bip01 Spine2/Bip01 Spine3/Bip01 Neck/Bip01 Head");
				if(mTargetTran != null)
				{
					transform.parent = mTargetTran;
					transform.localPosition = new Vector3(-0.06070369f,0.6686818f,-0.03194972f);
					transform.localRotation = Quaternion.Euler(new Vector3(85.67319f,-0.7489014f,86.21811f)) ;
				}
				GetComponent<Camera>().orthographic = true;
				GetComponent<Camera>().orthographicSize = 0.12f;
				GetComponent<Camera>().aspect = 1;
				SetLightState(true);
				mBlurEffect.enabled = true;
				transform.LookAt(mTargetTran.position,Vector3.up);
			}
			break;
		}
	}
Example #7
0
 protected void bindCurrentPart()
 {
     if (this.hidCurrentPartID.Value.Length > 0)
     {
         ViewPart vp = Service.GetViewPartByKey(this.hidCurrentPartID.Value);
         this.labPartCode.Text  = vp.PartCode;
         this.labPartName.Text  = vp.PartChineseName;
         this.labPlantName.Text = vp.PlantName;
         this.labDUNS.Text      = vp.DUNS;
     }
     else
     {
         Response.Write("<script>alert('请选择零件');</script>");
     }
 }
Example #8
0
 public static Rect[] CalculateAtlasLayout(List <ViewPart> parts, out int curSize)
 {
     Rect[] array = new Rect[parts.Count];
     for (int i = 0; i < parts.Count; i++)
     {
         ViewPart viewPart = parts[i];
         float    y        = viewPart.GetTextureSize().y;
         y        = ((y > 0f) ? y : 16f);
         array[i] = new Rect(0f, 0f, y, y);
     }
     curSize = Pack(array, 0);
     for (int j = 0; j < array.Length; j++)
     {
         Rect rect = new Rect(array[j].x / (float)curSize, array[j].y / (float)curSize, array[j].width / (float)curSize, array[j].height / (float)curSize);
         array[j] = rect;
     }
     return(array);
 }
Example #9
0
    protected void gvParts_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //bind stocktake priority
            DropDownList tmpPriority = e.Row.FindControl("ddlPriority") as DropDownList;
            this.BindStocktakePriority(tmpPriority);
            tmpPriority.SelectedIndex = 2;
            DropDownList tmpStocktakeType = e.Row.FindControl("ddlStocktakeType") as DropDownList;
            this.BindStocktakeTypes(tmpStocktakeType, true);

            ViewPart part                = e.Row.DataItem as ViewPart;
            CheckBox cbSelect            = e.Row.FindControl("cbSelect") as CheckBox;
            View_StocktakeDetails detail = SelectedDetails.Find(d => d.PartID == part.PartID);
            if (detail != null)//SelectedDetails.Exists(d => d.PartID == part.PartID))
            {
                cbSelect.Checked = true;
                if (detail.StocktakeType != null)
                {
                    tmpStocktakeType.Items.FindByValue(detail.StocktakeType.ToString()).Selected = true;
                }
                if (detail.Priority != null)
                {
                    tmpPriority.Items.FindByValue(detail.Priority.ToString()).Selected = true;
                }
            }
            else
            {
                detail = RequestedDetails.Find(d => d.PartID == part.PartID);
                if (detail != null)
                {
                    cbSelect.Enabled = false;
                    LinkButton linkAdd = e.Row.FindControl("linkAdd") as LinkButton;
                    linkAdd.Enabled          = false;
                    tmpPriority.Enabled      = false;
                    tmpStocktakeType.Enabled = false;
                }
                cbSelect.Checked = false;
            }

            //if (gvParts.DataKeys[e.Row.RowIndex] != null)
            //{
            //    Guid partID = (Guid)gvParts.DataKeys[e.Row.RowIndex].Value;
            //    View_StocktakeDetails details = NewDetails.FirstOrDefault(d => d.PartID == partID);
            //    if (details != null)
            //    {
            //        CheckBox cbSelect = e.Row.FindControl("cbSelect") as CheckBox;
            //        cbSelect.Checked = true;
            //        if (details.StocktakeType != null)
            //        {
            //            tmpStocktakeType.Items.FindByValue(details.StocktakeType.ToString()).Selected = true;
            //        }
            //        if (details.Priority != null)
            //        {
            //            tmpPriority.Items.FindByValue(details.Priority.ToString()).Selected = true;
            //        }
            //    }

            //}
        }
    }
Example #10
0
    void UCFileUpload1_OnUpload(object sender, EventArgs e)
    {
        string noticeNo = txtNoticeNo.Text.Trim();

        if (string.IsNullOrEmpty(noticeNo))
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "selectNotiMsg", "alert('请选择通知单');", true);
            return;
        }

        UploadEventArgs ue        = e as UploadEventArgs;
        DataTable       dtStorage = ue.ContentTable;

        dtStorage.Columns["序号"].ColumnName          = "No";
        dtStorage.Columns["零件号"].ColumnName         = "PartNo";
        dtStorage.Columns["工厂代码"].ColumnName        = "PlantCode";
        dtStorage.Columns["物流系统存储区域"].ColumnName    = "StoreLocation";
        dtStorage.Columns["系统Available"].ColumnName = "Available";
        dtStorage.Columns["系统QI"].ColumnName        = "QI";
        dtStorage.Columns["系统Block"].ColumnName     = "Block";
        dtStorage.Columns["单价"].ColumnName          = "Price";

        bool hasError = false;
        List <S_StorageRecord>       recordList       = new List <S_StorageRecord>();
        List <ViewPart>              partList         = new List <ViewPart>();
        List <View_StocktakeDetails> stocktakeDetails = new List <View_StocktakeDetails>();

        dtStorage.DefaultView.Sort = "PartNo";
        dtStorage = dtStorage.DefaultView.ToTable();
        //get part by code, plant
        List <StorageRecordView> storageRecords = new List <StorageRecordView>();

        for (int i = 0; i < dtStorage.Rows.Count; i++)
        {
            StorageRecordView record = new StorageRecordView
            {
                PartCode  = dtStorage.Rows[i]["PartNo"].ToString(),
                PlantCode = dtStorage.Rows[i]["PlantCode"].ToString(),
                SLOC      = dtStorage.Rows[i]["StoreLocation"].ToString()
            };
            if (!storageRecords.Exists(r => r.PartCode == record.PartCode && r.PlantCode == record.PlantCode && r.SLOC == record.SLOC))
            {
                storageRecords.Add(record);
            }
            else
            {
                string msg = string.Format("库存信息零件号{0},工厂{1},存储区域{2}重复", record.PartCode, record.PlantCode, record.SLOC);
                UCFileUpload1.AddErrorInfo(msg);
                hasError = true;
            }
        }
        storageRecords.Clear();
        if (!hasError)
        {
            //partList = Service.QueryPartsByCodePlant(partList);//Key(partList);
            for (int i = 0; i < dtStorage.Rows.Count; i++)
            {
                if (i % 5000 == 0)
                {
                    string startCode = dtStorage.Rows[i]["PartNo"].ToString();
                    int    end       = i + 4999;
                    if (end >= dtStorage.Rows.Count)
                    {
                        end = dtStorage.Rows.Count - 1;
                    }
                    //View_StocktakeDetails filterStocktakeDetails = new View_StocktakeDetails { NotificationCode = noticeNo };
                    string endCode = dtStorage.Rows[end]["PartNo"].ToString();
                    partList         = Service.QueryPartCodeScope(null, startCode, endCode);
                    stocktakeDetails = Service.QueryStocktakeDetailsScope(new View_StocktakeDetails {
                        NotificationCode = noticeNo
                    }, startCode, endCode);
                }
                string        sloc          = dtStorage.Rows[i]["StoreLocation"].ToString();
                StoreLocation storeLocation = this.StoreLocations.FirstOrDefault(l => l.LogisticsSysSLOC == sloc);
                if (storeLocation == null)                                //storeLocation invalid
                {
                    string msg = string.Format("物流系统存储区域【{0}】不存在", sloc); //i + 2,
                    UCFileUpload1.AddErrorInfo(msg);
                    hasError = true;
                }

                View_StocktakeDetails tmpStocktakeDetails = new View_StocktakeDetails
                {
                    PartCode         = dtStorage.Rows[i]["PartNo"].ToString(),
                    NotificationCode = noticeNo
                };

                List <View_StocktakeDetails> tmpStocktakeDetailsList = stocktakeDetails.Where(s => s.NotificationCode == tmpStocktakeDetails.NotificationCode && s.PartCode == tmpStocktakeDetails.PartCode).ToList();
                //if (tmpStocktakeDetailsList == null || tmpStocktakeDetailsList.Count == 0)
                //{
                //    string msg = string.Format("通知单【{0}】中不存在零件【{1}】", tmpStocktakeDetails.NotificationCode, tmpStocktakeDetails.PartCode);
                //    UCFileUpload1.AddErrorInfo(msg);
                //    hasError = true;
                //}

                ViewPart tmpPart = new ViewPart
                {
                    PlantCode = dtStorage.Rows[i]["PlantCode"].ToString(),
                    //DUNS = dtStorage.Rows[i]["DUNS"].ToString(),
                    PartCode = dtStorage.Rows[i]["PartNo"].ToString()
                };

                //ViewPart part = partList.SingleOrDefault(p => p.PartCode == tmpPart.PartCode && p.PlantCode == tmpPart.PlantCode && p.DUNS == tmpPart.DUNS);
                List <ViewPart> tmpPartList = partList.Where(p => p.PartCode == tmpPart.PartCode && p.PlantCode == tmpPart.PlantCode).ToList();
                //if (part == null)//part is invalid
                if (tmpPartList == null || tmpPartList.Count == 0)
                {
                    //string msg = string.Format("工厂【{0}】中不存在零件【{1}】", tmpPart.PlantCode, tmpPart.PartCode);// i + 2,
                    //UCFileUpload1.AddErrorInfo(msg);
                    //hasError = true;
                }
                else
                {
                    //storeLocation is valid
                    if (storeLocation != null)
                    {
                        foreach (var part in tmpPartList)
                        {
                            S_StorageRecord tmpRecord = new S_StorageRecord
                            {
                                SLOCID = storeLocation.LocationID,
                                PartID = part.PartID
                            };

                            tmpRecord.Available = SGM.Common.Utility.Utils.GetDecimalDbCell(dtStorage.Rows[i]["Available"]);
                            tmpRecord.QI        = SGM.Common.Utility.Utils.GetDecimalDbCell(dtStorage.Rows[i]["QI"]);
                            tmpRecord.Block     = SGM.Common.Utility.Utils.GetDecimalDbCell(dtStorage.Rows[i]["Block"]);
                            tmpRecord.Price     = SGM.Common.Utility.Utils.GetDecimalDbCell(dtStorage.Rows[i]["Price"]);
                            if (tmpStocktakeDetailsList == null || tmpStocktakeDetailsList.Count == 0)
                            {
                                tmpRecord.DetailsID = 0;
                            }
                            else
                            {
                                tmpRecord.DetailsID = Convert.ToInt32(tmpStocktakeDetailsList.FirstOrDefault().DetailsID);
                                recordList.Add(tmpRecord);
                            }
                        }
                    }
                }
            }
        }



        if (!hasError)
        {
            //fill in items
            Service.ImportStorage(recordList);
            BindDataControl(gvStoreage, dtStorage);
            //show information
            this.UCFileUpload1.AddSuccessInfo("上传文件成功", string.Empty, string.Empty);
        }
    }
Example #11
0
    protected void ucFileUpload_Upload(object sender, EventArgs e)
    {
        List <long> notiList = new List <long>();

        foreach (GridViewRow row in gvNotification.Rows)
        {
            if (gvNotification.DataKeys[row.RowIndex] != null)
            {
                CheckBox cbSelect = row.FindControl("cbNotiSelect") as CheckBox;
                if (cbSelect.Checked)
                {
                    long notiID = (long)gvNotification.DataKeys[row.RowIndex]["NotificationID"];
                    notiList.Add(notiID);
                }
            }
        }
        if (notiList.Count == 0)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "selectNotiMsg", "alert('请选择通知单');", true);
            return;
        }
        UploadEventArgs ue = e as UploadEventArgs;

        DataTable dtDetails = ue.ContentTable;

        dtDetails.DefaultView.Sort = "零件号";
        dtDetails = dtDetails.DefaultView.ToTable();
        bool            isValid  = true;
        List <ViewPart> partList = new List <ViewPart>();

        //get part by code, plant, duns
        for (int i = 0; i < dtDetails.Rows.Count; i++)
        {
            ViewPart tmpPart = new ViewPart
            {
                PlantCode = dtDetails.Rows[i]["工厂代码"].ToString(),
                DUNS      = dtDetails.Rows[i]["供应商DUNS"].ToString(),
                PartCode  = dtDetails.Rows[i]["零件号"].ToString()
            };
            if (!partList.Exists(p => p.PartCode == tmpPart.PartCode && p.PlantCode == tmpPart.PlantCode && p.DUNS == tmpPart.DUNS))
            {
                partList.Add(tmpPart);
            }
        }
        //partList = Service.QueryPartsByKey(partList);

        List <View_StocktakeDetails> detailsList = new List <View_StocktakeDetails>();

        for (int i = 0; i < dtDetails.Rows.Count; i++)
        {
            bool hasError = false;

            View_StocktakeDetails details = new View_StocktakeDetails
            {
                PartCode      = dtDetails.Rows[i]["零件号"].ToString(),
                DUNS          = dtDetails.Rows[i]["供应商DUNS"].ToString(),
                PartPlantCode = dtDetails.Rows[i]["工厂代码"].ToString(),
                UnRecorded    = dtDetails.Rows[i]["未入账"] + ""
            };
            details.Wip  = SGM.Common.Utility.Utils.GetDecimalDbCell(dtDetails.Rows[i]["Wip"]);
            details.M080 = SGM.Common.Utility.Utils.GetDecimalDbCell(dtDetails.Rows[i]["M080"]);

            string msg;
            if (i % 5000 == 0)
            {
                string startCode = details.PartCode;
                int    end       = i + 4999;
                if (end >= dtDetails.Rows.Count)
                {
                    end = dtDetails.Rows.Count - 1;
                }
                string endCode = dtDetails.Rows[end]["零件号"].ToString();
                partList = Service.QueryPartCodeScope(null, startCode, endCode);
            }
            ViewPart part = partList.FirstOrDefault(p => p.PartCode == details.PartCode && p.PlantCode == details.PartPlantCode && p.DUNS == details.DUNS);
            if (part == null)//part is invalid
            {
                msg = string.Format("工厂为【{0}】,供应商为【{1}】的零件【{2}】不存在", details.PartPlantCode, details.DUNS, details.PartCode);
                UCFileUpload1.AddErrorInfo(msg);
                hasError = true;
            }
            else
            {
                details.PartID = part.PartID;
            }

            if (!hasError)
            {
                if (detailsList.Exists(d => d.PartPlantCode == details.PartPlantCode && d.DUNS == details.DUNS && string.Equals(d.PartCode, details.PartCode)))
                {
                    msg = string.Format("工厂为【{0}】,供应商为【{1}】的零件【{2}】数据重复", details.PartPlantCode, details.DUNS, details.PartCode);
                    UCFileUpload1.AddErrorInfo(msg);
                    hasError = true;
                }
                else
                {
                    detailsList.Add(details);
                }
            }
            isValid = isValid && !hasError;
        }

        if (isValid)
        {
            Service.ImportAnalyseRef(detailsList, notiList);
            BindDataControl(gvResult, detailsList);
            //show information
            this.UCFileUpload1.AddSuccessInfo("导入成功", string.Empty, string.Empty);
        }
    }
Example #12
0
	public void SetTarget(GameObject targetObj,ViewPart viewPart = ViewPart.VP_Head)
	{
		mTargetObj = targetObj;
		SetViewPart(viewPart);
	}
Example #13
0
    protected void ucFileUpload_Upload(object sender, EventArgs e)
    {
        UploadEventArgs ue        = e as UploadEventArgs;
        DataTable       dtDetails = ue.ContentTable;

        dtDetails.DefaultView.Sort = "零件号";
        dtDetails = dtDetails.DefaultView.ToTable();
        bool            isValid  = true;
        List <ViewPart> partList = new List <ViewPart>();

        //get part by code, plant, duns
        //for (int i = 0; i < dtDetails.Rows.Count; i++)
        //{
        //    ViewPart tmpPart = new ViewPart
        //    {
        //        PlantCode = dtDetails.Rows[i]["工厂代码"].ToString(),
        //        DUNS = dtDetails.Rows[i]["供应商DUNS"].ToString(),
        //        PartCode = dtDetails.Rows[i]["零件号"].ToString()
        //    };
        //    if (!partList.Exists(p => string.Equals(p.PartCode , tmpPart.PartCode, StringComparison.OrdinalIgnoreCase) && string.Equals(p.PlantCode ,tmpPart.PlantCode , StringComparison.OrdinalIgnoreCase)&& string.Equals(p.DUNS ,tmpPart.DUNS, StringComparison.OrdinalIgnoreCase)))
        //    {
        //        partList.Add(tmpPart);
        //    }
        //}

        List <View_StocktakeDetails> detailsList = new List <View_StocktakeDetails>();

        for (int i = 0; i < dtDetails.Rows.Count; i++)
        {
            bool hasError = false;
            View_StocktakeDetails details = new View_StocktakeDetails
            {
                RowNumber     = int.Parse(dtDetails.Rows[i]["序号"].ToString()),
                PartCode      = dtDetails.Rows[i]["零件号"].ToString(),
                DUNS          = dtDetails.Rows[i]["供应商DUNS"].ToString(),
                PartPlantCode = dtDetails.Rows[i]["工厂代码"].ToString(),
                TypeName      = dtDetails.Rows[i]["申请类别"].ToString(),
                PriorityName  = dtDetails.Rows[i]["紧急程度"].ToString(),
                Description   = dtDetails.Rows[i]["备注"].ToString()
            };
            string msg;
            if (i % 5000 == 0)
            {
                string startCode = details.PartCode;
                int    end       = i + 4999;
                if (end >= dtDetails.Rows.Count)
                {
                    end = dtDetails.Rows.Count - 1;
                }
                string endCode = dtDetails.Rows[end]["零件号"].ToString();
                partList = Service.QueryPartCodeScope(null, startCode, endCode);
            }
            ViewPart part = partList.FirstOrDefault(p => string.Equals(p.PartCode, details.PartCode, StringComparison.OrdinalIgnoreCase) && string.Equals(p.PlantCode, details.PartPlantCode, StringComparison.OrdinalIgnoreCase) && string.Equals(p.DUNS, details.DUNS, StringComparison.OrdinalIgnoreCase));
            if (part == null)//part is invalid
            {
                msg = string.Format("第{0}行,该零件不存在", i + 2);
                UCFileUpload1.AddErrorInfo(msg);
                hasError = true;
            }
            else
            {
                details.PartID = part.PartID;
            }
            StocktakePriority priority = Priorities.FirstOrDefault(p => string.Equals(p.PriorityName, details.PriorityName, StringComparison.OrdinalIgnoreCase));
            if (priority == null)
            {
                msg = string.Format("第{0}行,紧急程度信息非法", i + 2);
                UCFileUpload1.AddErrorInfo(msg);
                hasError = true;
            }
            else
            {
                details.Priority = priority.PriorityID;
            }
            StocktakeType type = StocktakeTypes.FirstOrDefault(t => string.Equals(t.TypeName, details.TypeName, StringComparison.OrdinalIgnoreCase));
            if (type == null)
            {
                msg = string.Format("第{0}行,申请类别信息非法", i + 2);
                UCFileUpload1.AddErrorInfo(msg);
                hasError = true;
            }
            else
            {
                details.StocktakeType = type.TypeID;
            }
            if (!hasError)
            {
                if (detailsList.Exists(d => string.Equals(d.TypeName, details.TypeName, StringComparison.OrdinalIgnoreCase) && string.Equals(d.PriorityName, details.PriorityName, StringComparison.OrdinalIgnoreCase) && string.Equals(d.PartPlantCode, details.PartPlantCode, StringComparison.OrdinalIgnoreCase) && string.Equals(d.DUNS, details.DUNS, StringComparison.OrdinalIgnoreCase) && string.Equals(d.PartCode, details.PartCode, StringComparison.OrdinalIgnoreCase)))
                {
                    msg = string.Format("第{0}行,数据重复", i + 2);
                    UCFileUpload1.AddErrorInfo(msg);
                    hasError = true;
                }
                else
                {
                    detailsList.Add(details);
                }
            }
            isValid = isValid && !hasError;
        }

        if (isValid)
        {
            NewStocktakeRequest newRequest = new NewStocktakeRequest
            {
                IsStatic     = (rblIsStatic.SelectedIndex == 1),
                RequestBy    = CurrentUser.UserInfo.UserID,
                IsCycleCount = false,
                Details      = (from d in detailsList
                                select new NewStocktakeDetails
                {
                    PartID = d.PartID.ToString(),
                    StocktakePriority = d.Priority.Value,
                    StocktakeTypeID = d.StocktakeType.Value,
                    Description = d.Description
                }).ToList()
            };
            int currentDynAmount = 0;
            int currentStAmount  = 0;
            foreach (var item in UserGroups)
            {
                currentDynAmount += item.CurrentDynamicStocktake ?? 0;
                currentStAmount  += item.CurrentStaticStocktake ?? 0;
            }
            int maxUserCount;
            int currentCount;
            int maxCount;
            if (!newRequest.IsStatic)
            {
                BizParams param = BizParamsList.Find(p => p.ParamKey == "MaxDynamic");
                maxCount     = int.Parse(param.ParamValue);
                maxUserCount = CurrentUser.UserInfo.UserGroup.MaxDynamicStocktake ?? 0;
                currentCount = CurrentUser.UserInfo.UserGroup.CurrentDynamicStocktake.Value;
                int dynOverflowAmount = currentCount + newRequest.Details.Count - maxUserCount;
                if (dynOverflowAmount > 0)
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "maxOverflow", "alert('超过当前用户组动态盘点上限" + dynOverflowAmount + "个')", true);
                    return;
                }
                dynOverflowAmount = currentDynAmount + newRequest.Details.Count - maxCount;
                if (dynOverflowAmount > 0)
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "maxOverflow", "alert('超过动态盘点总数上限" + dynOverflowAmount + "个')", true);
                    return;
                }
            }

            if (newRequest.IsStatic)
            {
                BizParams param = BizParamsList.Find(p => p.ParamKey == "MaxStatic");
                maxCount     = int.Parse(param.ParamValue);
                maxUserCount = CurrentUser.UserInfo.UserGroup.MaxStaticStocktake.Value;

                currentCount = CurrentUser.UserInfo.UserGroup.CurrentStaticStocktake.Value;
                int stOverflowAmount = currentCount + newRequest.Details.Count - maxUserCount;
                if (stOverflowAmount > 0)
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "maxOverflow", "alert('超过当前用户组静态盘点上限" + stOverflowAmount + "个')", true);
                    return;
                }

                stOverflowAmount = currentStAmount + newRequest.Details.Count - maxCount;
                if (stOverflowAmount > 0)
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "maxOverflow", "alert('超过静态盘点总数上限" + stOverflowAmount + "个')", true);
                    return;
                }
            }
            //fill in items
            StocktakeRequest request = Service.RequestStocktake(newRequest);
            BindDataControl(gvResult, detailsList);
            CurrentUser.RefreshUserProfile();
            CacheHelper.RemoveCache(Consts.CACHE_KEY_USER_GROUPS);
            //show information
            this.UCFileUpload1.AddSuccessInfo("盘点申请成功,申请单号" + request.RequestNumber, string.Empty, string.Empty);
        }
    }
Example #14
0
    void UCFileUpload1_OnUpload(object sender, EventArgs e)
    {
        UploadEventArgs ue     = e as UploadEventArgs;
        DataTable       dtPart = ue.ContentTable;

        dtPart.Columns["序号"].ColumnName       = "RowNumber";
        dtPart.Columns["零件号"].ColumnName      = "PartCode";
        dtPart.Columns["零件名称"].ColumnName     = "PartChineseName";
        dtPart.Columns["工位"].ColumnName       = "WorkLocation";
        dtPart.Columns["库位"].ColumnName       = "Dloc";
        dtPart.Columns["循环盘点级别"].ColumnName   = "LevelName";
        dtPart.Columns["已循环盘点次数"].ColumnName  = "CycleCountTimes";
        dtPart.Columns["车型"].ColumnName       = "Specs";
        dtPart.Columns["FollowUp"].ColumnName = "Followup";
        dtPart.Columns["工厂"].ColumnName       = "PlantCode";
        dtPart.Columns["车间"].ColumnName       = "Workshops";
        dtPart.Columns["工段"].ColumnName       = "Segments";
        dtPart.Columns["物料类别"].ColumnName     = "CategoryName";
        dtPart.Columns["物料状态"].ColumnName     = "StatusName";
        dtPart.Columns["DUNS"].ColumnName     = "DUNS";

        dtPart.Columns.Add("UserName", typeof(string));
        dtPart.DefaultView.Sort = "PartCode";
        dtPart = dtPart.DefaultView.ToTable();
        bool            hasError = false;
        List <ViewPart> partList = new List <ViewPart>();
        List <ViewPart> list     = new List <ViewPart>();

        for (int i = 0; i < dtPart.Rows.Count; i++)
        {
            DataRow  row      = dtPart.Rows[i];
            bool     rowError = false;
            ViewPart part     = new ViewPart();
            if (!BatchUpdate)
            {
                Plant plant = this.Plants.SingleOrDefault(p => string.Equals(p.PlantCode, dtPart.Rows[i]["PlantCode"].ToString(), StringComparison.OrdinalIgnoreCase));

                CycleCountLevel cycleClevel = this.CycleCountLevels.SingleOrDefault(c => c.LevelName == dtPart.Rows[i]["LevelName"].ToString());
                PartStatus      partstatus  = this.PartStatus.SingleOrDefault(p => p.StatusName == dtPart.Rows[i]["StatusName"].ToString());
                Supplier        supplier    = this.Suppliers.SingleOrDefault(s => string.Equals(s.DUNS, dtPart.Rows[i]["DUNS"].ToString()));

                part.PartCode = dtPart.Rows[i]["PartCode"].ToString();
                if (supplier == null)
                {
                    string msg = string.Format("零件【{0}】的供应商DUNS【{1}】不存在", part.PartCode, dtPart.Rows[i]["DUNS"] + "");
                    UCFileUpload1.AddErrorInfo(msg);
                    hasError = true;
                    rowError = true;
                }
                else
                {
                    part.SupplierID = supplier.SupplierID;
                }

                if (plant == null)
                {
                    string msg = string.Format("零件【{0}】的工厂【{1}】不存在", part.PartCode, dtPart.Rows[i]["PlantCode"] + "");
                    UCFileUpload1.AddErrorInfo(msg);
                    hasError = true;
                    rowError = true;
                }
                else
                {
                    part.PlantID = plant.PlantID;
                }
                if (cycleClevel == null)
                {
                    string msg = string.Format("零件【{0}】的循环盘点级别【{1}】不存在", part.PartCode, dtPart.Rows[i]["LevelName"] + "");
                    UCFileUpload1.AddErrorInfo(msg);
                    hasError = true;
                    rowError = true;
                }
                else
                {
                    part.CycleCountLevel = cycleClevel.LevelID;
                }

                if (dtPart.Rows[i]["CategoryName"] != DBNull.Value && !string.IsNullOrEmpty(dtPart.Rows[i]["CategoryName"].ToString().Trim()))
                {
                    PartCategory partcategory = this.PartCategorys.SingleOrDefault(p => string.Equals(p.CategoryName, dtPart.Rows[i]["CategoryName"].ToString(), StringComparison.OrdinalIgnoreCase));
                    if (partcategory == null)
                    {
                        string msg = string.Format("零件【{0}】的物料类别【{1}】不存在", part.PartCode, dtPart.Rows[i]["CategoryName"] + "");
                        UCFileUpload1.AddErrorInfo(msg);
                        hasError = true;
                        rowError = true;
                    }
                    else
                    {
                        part.CategoryID = partcategory.CategoryID;
                    }
                }
                if (partstatus == null)
                {
                    string msg = string.Format("零件【{0}】的物料状态【{1}】不存在", part.PartCode, dtPart.Rows[i]["StatusName"] + "");
                    UCFileUpload1.AddErrorInfo(msg);
                    hasError = true;
                    rowError = true;
                }
                else
                {
                    part.PartStatus = partstatus.StatusID;
                }

                part.PartChineseName = dtPart.Rows[i]["PartChineseName"].ToString();
                part.WorkLocation    = dtPart.Rows[i]["WorkLocation"].ToString();
                part.Dloc            = dtPart.Rows[i]["Dloc"].ToString();
                part.Specs           = dtPart.Rows[i]["Specs"].ToString();
                part.FollowUp        = dtPart.Rows[i]["Followup"].ToString();
                part.Workshops       = dtPart.Rows[i]["Workshops"].ToString();
                part.Segments        = dtPart.Rows[i]["Segments"].ToString();
                if (!string.IsNullOrEmpty(dtPart.Rows[i]["CycleCountTimes"].ToString()))
                {
                    part.CycleCountTimes = short.Parse(dtPart.Rows[i]["CycleCountTimes"].ToString());
                }

                part.UpdateBy = CurrentUser.UserInfo.UserID;
                dtPart.Rows[i]["UserName"] = CurrentUser.UserInfo.UserName;
            }
            else
            {
                string plantCode = row["PlantCode"] + "";
                string partCode  = row["PartCode"] + "";
                string duns      = row["DUNS"] + "";
                //ViewPart tmpPart = new ViewPart { PlantCode = plantCode, PartCode = partCode, DUNS = duns };

                if (i % 1000 == 0)
                {
                    string startCode = partCode;
                    int    end       = i + 999;
                    if (end >= dtPart.Rows.Count)
                    {
                        end = dtPart.Rows.Count - 1;
                    }
                    string endCode = dtPart.Rows[end]["PartCode"].ToString();
                    list = Service.QueryPartsOfScope(startCode, endCode);
                }


                //List<ViewPart> list = new List<ViewPart> { tmpPart };
                //list = Service.QueryPartsByKey(list);
                part = list.Find(p => p.PartCode == partCode && p.PlantCode == plantCode && p.DUNS == duns);
                if (part == null)//(list == null || list.Count == 0)
                {
                    string msg = string.Format("工厂为【{0}】,供应商为【{1}】的零件【{2}】不存在", plantCode, duns, partCode);
                    UCFileUpload1.AddErrorInfo(msg);
                    hasError = true;
                    rowError = true;
                }
                else
                {
                    //part = list[0];
                    part.UpdateBy = CurrentUser.UserInfo.UserID;
                    switch (rblFields.SelectedIndex)
                    {
                    case 0:
                        part.FollowUp = row["Followup"].ToString();
                        break;

                    case 1:
                        part.Specs = row["Specs"].ToString();
                        break;

                    case 2:
                        part.Segments     = row["Segments"].ToString();
                        part.WorkLocation = row["WorkLocation"].ToString();
                        if (row["CategoryName"] != DBNull.Value && !string.IsNullOrEmpty(row["CategoryName"].ToString().Trim()))
                        {
                            PartCategory partcategory = this.PartCategorys.SingleOrDefault(p => string.Equals(p.CategoryName, row["CategoryName"].ToString(), StringComparison.OrdinalIgnoreCase));
                            if (partcategory == null)
                            {
                                string msg = string.Format("零件【{0}】的物料类别【{1}】不存在", part.PartCode, row["CategoryName"] + "");
                                UCFileUpload1.AddErrorInfo(msg);
                                hasError = true;
                                rowError = true;
                            }
                            else
                            {
                                part.CategoryID = partcategory.CategoryID;
                            }
                        }
                        else
                        {
                            part.CategoryID = null;
                        }
                        break;

                    default:
                        break;
                    }
                }
            }

            if (!rowError)
            {
                partList.Add(part);
            }
        }

        if (!hasError)
        {
            Service.ImportPart(partList);

            BindDataControl(gvParts, dtPart);
            this.UCFileUpload1.AddSuccessInfo("上传文件成功", string.Empty, string.Empty);
        }
    }
Example #15
0
        public IQueryable <ViewPart> QueryFilteredParts(View_StocktakeDetails filter, List <ViewPart> filterParts)
        {
            Part part = new Part
            {
                PartCode        = filter.PartCode,
                PartChineseName = filter.PartChineseName,
                FollowUp        = filter.FollowUp,
                Specs           = filter.Specs
            };

            if (filter.PlantID != null)
            {
                part.Plant = new Plant
                {
                    PlantID = filter.PlantID.Value
                };
            }

            var partQry = QueryParts(part);

            //exclude parts in given request
            if (filter != null && filter.RequestID != null)
            {
                List <View_StocktakeDetails> requestDetails = Context.View_StocktakeDetails.Where(d => d.RequestID == filter.RequestID).ToList();;
                var exceptParts = requestDetails.Select(d => new ViewPart {
                    PartID = d.PartID.Value
                });
                List <ViewPart> exceptPartList = exceptParts.ToList();

                for (int i = filterParts.Count - 1; i >= 0; i--)
                {
                    ViewPart tmpPart = filterParts[i];
                    int      index   = exceptPartList.FindIndex(p => p.PartID == tmpPart.PartID);
                    if (index >= 0)
                    {
                        filterParts.RemoveAt(i);
                        exceptPartList.RemoveAt(index);
                    }
                }
                foreach (var item in filterParts)
                {
                    exceptPartList.Add(item);
                }

                //partQry = (from p in partQry join d in Context.View_StocktakeDetails on p.PartID equals d.PartID where d.RequestID != filter.RequestID select p).Distinct();
                //var removedPartsQry = filterParts.AsQueryable();
                //removedPartsQry = (from f in removedPartsQry join d in Context.View_StocktakeDetails on f.PartID equals d.PartID where d.RequestID == filter.RequestID select f).Distinct();
                //partQry = partQry.Union(removedPartsQry);

                //var addedPartsQry = filterParts.AsQueryable().Except(removedPartsQry);
                //List<ViewPart> addeParts = addedPartsQry.ToList();
                if (exceptPartList != null && exceptPartList.Count > 0)
                {
                    foreach (var item in exceptPartList)
                    {
                        int partID = item.PartID;
                        partQry = partQry.Where(p => p.PartID != partID);
                    }
                }
                //if (filterParts != null && filterParts.Count > 0)
                //{
                //    partQry = partQry.Union(filterParts).Distinct();
                //}
            }
            else
            {
                if (filterParts != null && filterParts.Count > 0)
                {
                    foreach (var item in filterParts)
                    {
                        int partID = item.PartID;
                        partQry = partQry.Where(p => p.PartID != partID);
                    }
                }
            }

            return(partQry);
        }
Example #16
0
 public abstract void ApplyToViewPart(ViewPart partView);