public void updateIPQCDetails(RepairDetailRequest param) { DateTime now = SSGlobalConfig.Now; CV_QM_REPAIR_ORDER order = param.repairOrder; using (TransactionScope ts = new TransactionScope()) { //明细 foreach (CV_QM_REPAIR_IPQC_DETAIL detail in param.detailList) { QM_REPAIR_IPQC_DETAIL tmp = new QM_REPAIR_IPQC_DETAIL() { PK = detail.PK, QualityDecision = detail.QualityDecision }; ipqc_detailbo.UpdateSome(tmp); //string sql = ""; //if (detail.QualityDecision.Equals("OK")) //{ // //修改SN状态为prcs(2),并将LocPK改成包装 // sql = string.Format(CultureInfo.InvariantCulture, ipqcSql2, 2,order.ReportLine, "TP06", detail.SN); //} //else //{ // //修改SN状态为qc(6) // sql = string.Format(CultureInfo.InvariantCulture, ipqcSql1, 6, detail.SN); //} //log.Info("updateIPQCDetails Sql : " + sql); //bscbo.ExecuteNonQueryBySql(sql); if (detail.QualityDecision.Equals("OK")) { //修改SN状态为prcs(2),并将LocPK改成包装 string sql = string.Format(CultureInfo.InvariantCulture, ipqcSql2, 2, order.ReportLine, "TP06", detail.SN); log.Info("updateIPQCDetails Sql : " + sql); alt_bscbo.ExecuteNonQueryBySql(sql); } } QM_REPAIR_IPQC ipqc = new QM_REPAIR_IPQC() { TGuid = order.TGuid, Status = "关闭", ModifiedBy = param.user, ModifiedOn = now }; //IPQC单状态 ipqcbo.UpdateSome(ipqc); ts.Complete(); } }
public RepairOrderResponse getRepairBySN(CV_QM_REPAIR_ORDER param) { param.Type = 1;//离线维修 RepairOrderResponse response = new RepairOrderResponse(); //获得拼板的其余SN string cmd_pcbSql = string.Format(CultureInfo.InvariantCulture, pcbSql, param.AbnormalitySN); DataTable pcbDt = alt_bscbo.GetDataTableBySql(cmd_pcbSql); if (pcbDt == null || pcbDt.Rows.Count == 0) { //不是拼板 -- 按原有逻辑 //判断SN是否已经关联IPQC string cmd_detailSql = string.Format(CultureInfo.InvariantCulture, detailSql, param.AbnormalitySN); DataTable dt = alt_bscbo.GetDataTableBySql(cmd_detailSql); if (dt == null || dt.Rows.Count == 0) { IList <CV_QM_REPAIR_ORDER> list = cv_repair_orderbo.GetEntities(param); if (list == null || list.Count == 0) { response.message = "序列号[" + param.AbnormalitySN + "]尚未报修"; } else { //判断最新的报修单维修结果是否为OK if (list[0].Result == null || !list[0].Result.Equals("OK")) { response.message = "序列号[" + param.AbnormalitySN + "]未维修OK"; } else if (!string.IsNullOrEmpty(list[0].ReportWorkshop) && !list[0].ReportWorkshop.Equals("SMT")) { response.message = "序列号[" + param.AbnormalitySN + "]报修车间不是SMT"; } else if (!string.IsNullOrEmpty(param.OrderID) && !param.OrderID.Equals(list[0].OrderID)) { response.message = "序列号[" + param.AbnormalitySN + "]的工单[" + list[0].OrderID + "]与现有SN的工单不一致"; } else { response.orderList = new List <CV_QM_REPAIR_ORDER>(); response.orderList.Add(list[0]); } } } else { response.message = "序列号[" + param.AbnormalitySN + "]已经存在质量判定OK或者未质量判定的IPQC送检单"; } } else { string lotIDs = "";//拼板 拼接查出来的SN 格式为:'M1801FGS','M1801FGT','M1801FGU','M1801FGV' IList <string> lotIdList = new List <string>(); string pcbID = ""; foreach (DataRow row in pcbDt.Rows) { if (!string.IsNullOrEmpty(lotIDs)) { lotIDs += ","; } else { pcbID = row["pcbID"].ToString(); } lotIDs += "'" + row["LotID"] + "'"; lotIdList.Add(row["LotID"].ToString()); } //1.获得拼板对应的最新维修单 string cmd_repairSql = string.Format(CultureInfo.InvariantCulture, repairSql, lotIDs, param.Type); DataTable repairDt = alt_bscbo.GetDataTableBySql(cmd_repairSql); List <CV_QM_REPAIR_ORDER> list = new List <CV_QM_REPAIR_ORDER>(); ModelHandler <CV_QM_REPAIR_ORDER> modelHandler = new ModelHandler <CV_QM_REPAIR_ORDER>(); list = modelHandler.FillModel(repairDt); if (list == null || list.Count == 0) { response.message = "拼板PCB[" + param.AbnormalitySN + "]尚未报修"; } else { bool flag = true; //2.判断维修单的维修结果是否OK foreach (CV_QM_REPAIR_ORDER cvOrder in list) { if (!"OK".Equals(cvOrder.Result)) { response.message = "拼板PCB[" + cvOrder.AbnormalitySN + "]未维修OK"; flag = false; break; } if (!"SMT".Equals(cvOrder.ReportWorkshop)) { response.message = "拼板PCB[" + cvOrder.AbnormalitySN + "]报修车间不是SMT"; flag = false; break; } if (!string.IsNullOrEmpty(param.OrderID) && !param.OrderID.Equals(cvOrder.OrderID)) { response.message = "拼板PCB[" + cvOrder.AbnormalitySN + "]的工单[" + cvOrder.OrderID + "]与现有SN的工单不一致"; flag = false; break; } if (lotIdList.Contains(cvOrder.AbnormalitySN)) { lotIdList.Remove(cvOrder.AbnormalitySN); } cvOrder.Attribute10 = pcbID;//PCB拼板号 } if (flag) { //3.判断拼板PCB是否已经关联IPQC string cmd_pcbDetailSql = string.Format(CultureInfo.InvariantCulture, pcbDetailSql, lotIDs); DataTable pcbDetailDt = alt_bscbo.GetDataTableBySql(cmd_pcbDetailSql); if (pcbDetailDt == null || pcbDetailDt.Rows.Count == 0) { //4.没有维修单的---SN没坏 foreach (string lotId in lotIdList) { CV_QM_REPAIR_ORDER order = new CV_QM_REPAIR_ORDER() { AbnormalitySN = lotId, DefID = list[0].DefID, DefDescript = list[0].DefDescript, OrderID = list[0].OrderID, ProductDecision = "OK", QualityDecision = "OK", Attribute10 = pcbID }; list.Add(order); } list[0].Attribute09 = "edit"; //第一个有值 list[0].Attribute08 = "" + list.Count; //PCB拼板数 response.orderList = list; } else { response.message = "拼板PCB[" + pcbDetailDt.Rows[0]["SN"] + "]已经存在质量判定OK或者未质量判定的IPQC送检单"; } } } } return(response); }