|
|
@@ -17,180 +17,6 @@ namespace UAS_MES.PublicMethod
|
|
|
//用于存放批量执行的SQL
|
|
|
static List<string> sqls = new List<string>();
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 检测当前工序是否正确,如果是第一道工序则进行插入MakeSerial表
|
|
|
- /// </summary>
|
|
|
- /// <param name="iSnCode"></param>
|
|
|
- /// <param name="iMakeCode"></param>
|
|
|
- /// <param name="iSourceCode"></param>
|
|
|
- /// <param name="oErrorMessage"></param>
|
|
|
- /// <returns></returns>
|
|
|
- public static bool CheckCurrentStepAndIfFirst(string iSnCode, string iMakeCode, string iSourceCode, string iCaller, out bool oIfFirst, out string oErrorMessage)
|
|
|
- {
|
|
|
- oErrorMessage = "";
|
|
|
- oIfFirst = false;
|
|
|
- if (iSnCode == "")
|
|
|
- {
|
|
|
- oErrorMessage = "序列号不能为空值";
|
|
|
- return false;
|
|
|
- }
|
|
|
- string StepCode = "";
|
|
|
- string StepName = "";
|
|
|
- string LineCode = "";
|
|
|
- //如果传入的工单为空的话
|
|
|
- if (iMakeCode == "")
|
|
|
- if (!GetMakeInfo(iSnCode, out iMakeCode, out oErrorMessage))
|
|
|
- return false;
|
|
|
-
|
|
|
- string cd_ifinput = "";
|
|
|
- string cr_code = "";
|
|
|
- //获取岗位资源对应的工序编号和名称
|
|
|
- GetStepCodeAndNameAndLineBySource(iSourceCode, ref StepCode, ref StepName, ref LineCode);
|
|
|
- string fo_class = dh.getFieldDataByCondition("cs_form", "fo_class", "fo_caller='" + iCaller + "'").ToString();
|
|
|
- if (fo_class != "")
|
|
|
- {
|
|
|
- DataTable dt1 = dh.getFieldsDataByCondition("makeserial", new string[] { "ms_makecode", "ms_status" }, "ms_sncode='" + iSnCode + "'");
|
|
|
- if (dt1.Rows.Count > 0)
|
|
|
- {
|
|
|
- string macode = dt1.Rows[0]["ms_makecode"].ToString();
|
|
|
- if (macode == "")
|
|
|
- {
|
|
|
- oErrorMessage = "序列号" + iSnCode + "未绑定工单";
|
|
|
- return false;
|
|
|
- }
|
|
|
- if (dt1.Rows[0]["ms_status"].ToString() == "2")
|
|
|
- {
|
|
|
- oErrorMessage = "序列号" + iSnCode + "对应工单已完工";
|
|
|
- return false;
|
|
|
- }
|
|
|
- if (macode != iMakeCode)
|
|
|
- {
|
|
|
- oErrorMessage = "该序列号已绑定到工单" + macode;
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- sql.Clear();
|
|
|
- sql.Append("select " + fo_class + ",cd_ifinput ifinput,cr_code from make left join craft on cr_code=ma_craftcode left join craftdetail on cd_crid=cr_id ");
|
|
|
- sql.Append("where ma_code='" + iMakeCode + "' and cd_stepcode='" + StepCode + "'");
|
|
|
- //获取的行号不等于0,存在记录检测通过
|
|
|
- dt1 = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
|
|
|
- if (dt1.Rows.Count > 0)
|
|
|
- {
|
|
|
- cd_ifinput = dt1.Rows[0]["ifinput"].ToString();
|
|
|
- cr_code = dt1.Rows[0]["cr_code"].ToString();
|
|
|
- if (dt1.Rows[0][fo_class].ToString() != "-1")
|
|
|
- {
|
|
|
- //返回具体的工单信息
|
|
|
- string serial = "";
|
|
|
- switch (fo_class)
|
|
|
- {
|
|
|
- case "cd_ifinput":
|
|
|
- serial = "上料采集";
|
|
|
- break;
|
|
|
- case "cd_ifoqc":
|
|
|
- serial = "OQC";
|
|
|
- break;
|
|
|
- case "cd_ifpack":
|
|
|
- serial = "包装采集";
|
|
|
- break;
|
|
|
- case "cd_ifsnchange":
|
|
|
- serial = "序列转换";
|
|
|
- break;
|
|
|
- case "cd_iftest":
|
|
|
- serial = "测试采集";
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- oErrorMessage = "当前岗位对应的工序不是" + serial + "工序";
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- oErrorMessage = "当前岗位资源对应的工序不属于工单号" + iMakeCode;
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- if (!CheckMakeStatus(iMakeCode, out oErrorMessage))
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- //验证当前执行的工序是否正确
|
|
|
- DataTable dt = (DataTable)dh.ExecuteSql("select ms_nextstepcode,ms_stepcode from makeserial where ms_sncode='" + iSnCode + "' and ms_makecode='" + iMakeCode + "'", "select");
|
|
|
- if (dt.Rows.Count > 0)
|
|
|
- {
|
|
|
- string CurrentStep = dt.Rows[0]["ms_nextstepcode"].ToString();
|
|
|
- string LastStepCode = dt.Rows[0]["ms_stepcode"].ToString();
|
|
|
- if (CurrentStep != "")
|
|
|
- {
|
|
|
- //工序不等于上一工序和本工序
|
|
|
- if (CurrentStep != StepCode && LastStepCode != StepCode)
|
|
|
- {
|
|
|
- oErrorMessage = "序列号" + iSnCode + "的当前工序是" + CurrentStep + ",当前岗位的工序是" + StepName;
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- oErrorMessage = "序列号" + iSnCode + "无可继续执行工序(已完工或者序列号不存在)";
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- //判断是否是第一道工序
|
|
|
- dt = (DataTable)dh.ExecuteSql("select min(mcd_detno) detno from makecraftdetail where mcd_macode='" + iMakeCode + "'", "select");
|
|
|
- string detno = dt.Rows[0]["detno"].ToString();
|
|
|
- //判断当前最小的执行顺序是否有记录
|
|
|
- if (dh.getRowCount("makecraftdetail", "mcd_stepcode='" + StepCode + "' and mcd_macode='" + iMakeCode + "' and mcd_detno ='" + detno + "'") > 0)
|
|
|
- {
|
|
|
- if (!dh.CheckExist("MakeSerial", "ms_sncode='" + iSnCode + "'"))
|
|
|
- {
|
|
|
- //判断当前工单的数量是否已经超出了完工数量
|
|
|
- int ma_qty = int.Parse(dh.getFieldDataByCondition("make", "ma_qty", "ma_code='" + iMakeCode + "'").ToString());
|
|
|
- //查询除了报废的之外的记录数量
|
|
|
- int ms_sncodecount = int.Parse(dh.getFieldDataByCondition("makeserial", "count(ms_sncode)", "ms_makecode='" + iMakeCode + "' and ms_status<>3").ToString());
|
|
|
- //如果MakeSerial表的记录数已经达到了工单数量
|
|
|
- if (ma_qty > ms_sncodecount)
|
|
|
- {
|
|
|
- sql.Clear();
|
|
|
- sql.Append("Insert into MakeSerial (ms_id, ms_code, ms_sncode ,ms_prodcode, ms_indate,");
|
|
|
- sql.Append("ms_wccode,ms_craftcode,ms_craftname,ms_nextstepcode,ms_status,ms_makecode) select MAKESERIAL_SEQ.NEXTVAL,");
|
|
|
- sql.Append("'" + iSnCode + "','" + iSnCode + "',ma_prodcode,sysdate,ma_wccode,ma_craftcode,ma_craftname,'" + StepCode + "',1,ma_code ");
|
|
|
- sql.Append("from make left join makecraftdetail on ma_code =mcd_macode where ma_code='" + iMakeCode + "' and mcd_stepcode='" + StepCode + "'");
|
|
|
- dh.ExecuteSql(sql.ToString(), "insert");
|
|
|
- oErrorMessage = "获取序列号" + iSnCode + "成功,";
|
|
|
- oIfFirst = true;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- oErrorMessage = "当前生产数量已达到完工数量";
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //判断岗位备料是否足够
|
|
|
- string Yes_No = dh.GetConfig("BatchNumber", "MESSetting").ToString();
|
|
|
- if (cd_ifinput != "0")
|
|
|
- {
|
|
|
- sql.Clear();
|
|
|
- sql.Append("select wm_concat(mss_prodcode) code,count(1) cn from (select sum(nvl(mss_remain,0))remain,mss_prodcode,max(mss_baseqty) mss_baseqty ");
|
|
|
- sql.Append("from makesourcestock where mss_makecode='" + iMakeCode + "' and mss_stepcode='" + StepCode + "' ");
|
|
|
- sql.Append("and mss_linecode='" + LineCode + "' group by mss_prodcode)T where T.remain<mss_baseqty and rownum<20");
|
|
|
- dt = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
|
|
|
- //如果配置的是Yes
|
|
|
- if (Yes_No != "0")
|
|
|
- {
|
|
|
- //如果批次料不足
|
|
|
- if (dt.Rows.Count > 0 && int.Parse(dt.Rows[0]["cn"].ToString()) > 0)
|
|
|
- {
|
|
|
- oErrorMessage += "批次物料:" + iSnCode + "," + dt.Rows[0]["code"] + "岗位备料不足";
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 检测当前的岗位资源对应的工序
|
|
|
/// </summary>
|
|
|
@@ -238,37 +64,6 @@ namespace UAS_MES.PublicMethod
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 判断当前工序是否是第一道工序
|
|
|
- /// </summary>
|
|
|
- /// <param name="iSnCode"></param>
|
|
|
- /// <param name="iMakecode"></param>
|
|
|
- /// <param name="iSourceCode"></param>
|
|
|
- /// <returns></returns>
|
|
|
- public static bool CheckIfFirstMakeSerial(string iSnCode, string iMakecode, string iSourceCode)
|
|
|
- {
|
|
|
- //选取当前的最小的执行顺序
|
|
|
- string CurrentStep = GetStepCodeBySource(iSourceCode);
|
|
|
- DataTable dt = (DataTable)dh.ExecuteSql("select min(mcd_detno) detno from makecraftdetail where mcd_macode='" + iMakecode + "'", "select");
|
|
|
- string detno = dt.Rows[0]["detno"].ToString();
|
|
|
- //判断当前最小的执行顺序是否有记录
|
|
|
- if (dh.getRowCount("makecraftdetail", "mcd_stepcode='" + CurrentStep + "' and mcd_macode='" + iMakecode + "' and mcd_detno ='" + detno + "'") > 0)
|
|
|
- {
|
|
|
- if (!dh.CheckExist("MakeSerial", "ms_sncode='" + iSnCode + "' and ms_makecode='" + iMakecode + "'"))
|
|
|
- {
|
|
|
- sql.Clear();
|
|
|
- sql.Append("Insert into MakeSerial (ms_id, ms_code, ms_sncode ,ms_prodcode, ms_indate,");
|
|
|
- sql.Append("ms_wccode,ms_craftcode,ms_craftname,ms_nextstepcode,ms_status,ms_makecode) select MAKESERIAL_SEQ.NEXTVAL,");
|
|
|
- sql.Append("'" + iSnCode + "','" + iSnCode + "',ma_prodcode,sysdate,ma_wccode,ma_craftcode,ma_craftname,'" + CurrentStep + "',0,ma_code ");
|
|
|
- sql.Append("from make left join makecraftdetail on ma_code =mcd_macode where ma_code='" + iMakecode + "' and mcd_stepcode='" + CurrentStep + "'");
|
|
|
- dh.ExecuteSql(sql.ToString(), "insert");
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
- else
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
public static void GetSerialNumByCaller(string iCaller, out string SerialNum)
|
|
|
{
|
|
|
SerialNum = "";
|